我以前說過一段話:“花費6/7的工作量,去保證那1/7的,有價值的工作。這不是太浪費了嗎?”
結果純粹思維居然不同意:“老大,你真的是孤陋寡聞了。人均900行/月,已經是比較高的productivity了。我們公司人均300行,照樣是500強,照樣銷售幾百億美刀。“花費6/7的工作量,去保證那1/7的,有價值的工作。這不是太浪費了嗎?”,你又錯了,如果那1/7的工作有問題的話,你恐怕花100/7都補不回來。好好看看軟件工程的書吧,特別是和software cost相關的章節?!?/DIV>
代碼才是真正有價值的東西!
還有這么一段話:“老大,你的思維不會還停留在認為只有代碼才是真正有價值的東西,或者說只有編碼才是真正的開發工作,或者打心眼里還是認為一來就開始編碼最好的層次上吧。”
我的確是比較無言以對,只能抄點東西給他看看,鑒于純粹思維同志,比較喜歡中英文夾雜式的表述,我也搞點花樣:
個體與交互過程 over processes and tools
能夠工作的軟件 over comprehensive documentation
客戶合作 over contract negotiation
隨機應變 over following a plan
能夠工作的軟件 over comprehensive documentation
客戶合作 over contract negotiation
隨機應變 over following a plan
為什么要這樣中英文夾雜呢?因為那些英文是純粹思維同志相當熟悉的,而這些中文可能是他根本沒有想到過的!
關于PMP,我倒是從來沒有覺得一個PMP有什么了不起,學習PMP,只是讓我更加深刻的認識到,以“工程方式管理軟件開發項目”,是何等的緣木求魚!
至于PV、EV、AV這種紙上談兵的東西,我都已經忘光了。所以呢,你不認我是個PMP,就不認吧,我現在也的確不是個夠格的PMP了。

我現在的已經進步了,我的確是認為:
代碼才是真正有價值的東西!
FeedBack:
# re: 軟件開發項目中的成本比例
# re: 軟件開發項目中的成本比例
# re: 軟件開發項目中的成本比例
# re: 軟件開發項目中的成本比例
# re: 軟件開發項目中的成本比例
# re: 軟件開發項目中的成本比例
2007-11-28 00:25 | longtimeago
With 11 years plus intensive work expensive in U.S., I have been working in some fortune 500 companies, startup and consulting companies, here is some thoughts from me about software engineer.
0. Requirements collection is the most important part. It defines the scope for the project. It will be a nightmare if you contantly change requirements during development. If it's the case, you need to have several release cycles intead of one and you have to cut requirement changes at certain point for each cycle. In practical, you cannot stop customer to add a requirement if it's really important.
1. A functional software is much more important than the documentation. Many system never worked and only stoped at the spec level.
A design may seems fine and cover its drawbacks, it cannot prove it unless you have a funcational system running.
2. For a released software, you don't need to write one page document to fix a bug or say make a change. A bug tracker tool is enough, open a bug, put some description there, make code change and close the bug. The difference inbetween good enigneers and bad enigineers is the former usually only fix a problem and the later introduce another problem.
3. Without a good team, without good programmers and domain experts, no matter how good the requirements are and no matter how good the spec/design is, the implemented system will be useless. If it ever be able to be implemented, it could be slow and very buggy.
3.5. The implementation will never be exactly same as the original spec. For system software development, usually you align the spec with the implementation during the dev process. The cost to implement the system software(operating system, for example) is much more expensive than the application softare due to high quality requirement. For application software developments, usually the actual system ends without sync of spec.
4. Managers job is hiring good technical people. IT managers shall have many years domain experience before moving up. Development managers shall have many years of coding experience. Product managers(collecting functional requirements) shall have some years of coding experience and some years of business analyst experience. Etc.
5. For all managers, the first line managers shall have less years away from coding/requiements collection, etc. The higher level, the longer years can away from the IT actual development life.
6. The first line archetects, team leaders, senior developers are the actual people to control the quality of the software. Every team member counts. If you have a less experience member writing very low performance code, you won't be able to get anything out from him, considering the customer complains you will get, considering the time other team memebers will spend to fix his bugs. Peel code review is very important and that's how you find out low performance programmers.
6.5 For a bad programmer, no matter how less is his/her salary, he/she does not worth the salary.
6.6 The difference inbetween a good programer and very good programmer is when you meet a very hard problem.
6.7 You need to have somebody who has done it before in your team, otherwise your project is doomed at the very beginning.
6.8 A group junior developer will not be able to get a system implemented, no matter how many of them.
7. Money talks. The first version of software always buggy. The company needs money to for future release. The first version cannot be too buggy, otherwise it will die on the very beginning.
8. India has more CMM5 companies in the world. Have you heard any bigger software company from India? The actual software implelmentation will never same as stated on the books.
9. The difference inbetween the mountain and the hill is the sheer volume. Every line of code is not that hard, million lines of code make a huge difference. To have a true software industry, you need to have some bigger companies with operating system softwares or very large business usuage software.
10. Software shall be self documented. A good software engineer or programmer with domain business knowledge shall be able to fix a bug just by looking at source.
15. Without control of hardware, software is fundamental not secure. Without control of operating system, the application software is fundamental not secure. It's a huge mistake to exchange dometic high tech market with oversea low tech market. 回復 更多評論
0. Requirements collection is the most important part. It defines the scope for the project. It will be a nightmare if you contantly change requirements during development. If it's the case, you need to have several release cycles intead of one and you have to cut requirement changes at certain point for each cycle. In practical, you cannot stop customer to add a requirement if it's really important.
1. A functional software is much more important than the documentation. Many system never worked and only stoped at the spec level.
A design may seems fine and cover its drawbacks, it cannot prove it unless you have a funcational system running.
2. For a released software, you don't need to write one page document to fix a bug or say make a change. A bug tracker tool is enough, open a bug, put some description there, make code change and close the bug. The difference inbetween good enigneers and bad enigineers is the former usually only fix a problem and the later introduce another problem.
3. Without a good team, without good programmers and domain experts, no matter how good the requirements are and no matter how good the spec/design is, the implemented system will be useless. If it ever be able to be implemented, it could be slow and very buggy.
3.5. The implementation will never be exactly same as the original spec. For system software development, usually you align the spec with the implementation during the dev process. The cost to implement the system software(operating system, for example) is much more expensive than the application softare due to high quality requirement. For application software developments, usually the actual system ends without sync of spec.
4. Managers job is hiring good technical people. IT managers shall have many years domain experience before moving up. Development managers shall have many years of coding experience. Product managers(collecting functional requirements) shall have some years of coding experience and some years of business analyst experience. Etc.
5. For all managers, the first line managers shall have less years away from coding/requiements collection, etc. The higher level, the longer years can away from the IT actual development life.
6. The first line archetects, team leaders, senior developers are the actual people to control the quality of the software. Every team member counts. If you have a less experience member writing very low performance code, you won't be able to get anything out from him, considering the customer complains you will get, considering the time other team memebers will spend to fix his bugs. Peel code review is very important and that's how you find out low performance programmers.
6.5 For a bad programmer, no matter how less is his/her salary, he/she does not worth the salary.
6.6 The difference inbetween a good programer and very good programmer is when you meet a very hard problem.
6.7 You need to have somebody who has done it before in your team, otherwise your project is doomed at the very beginning.
6.8 A group junior developer will not be able to get a system implemented, no matter how many of them.
7. Money talks. The first version of software always buggy. The company needs money to for future release. The first version cannot be too buggy, otherwise it will die on the very beginning.
8. India has more CMM5 companies in the world. Have you heard any bigger software company from India? The actual software implelmentation will never same as stated on the books.
9. The difference inbetween the mountain and the hill is the sheer volume. Every line of code is not that hard, million lines of code make a huge difference. To have a true software industry, you need to have some bigger companies with operating system softwares or very large business usuage software.
10. Software shall be self documented. A good software engineer or programmer with domain business knowledge shall be able to fix a bug just by looking at source.
15. Without control of hardware, software is fundamental not secure. Without control of operating system, the application software is fundamental not secure. It's a huge mistake to exchange dometic high tech market with oversea low tech market. 回復 更多評論
只有注冊用戶登錄后才能發表評論。 | ||
![]() |
||
網站導航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
|
||