Wednesday, July 30, 2008

软件公司(Software House)

一间软件公司该有什么人?让我们先来看看维基的说法《Software house》。
A professional software house normally consists of at least three dedicated sub-teams :
  • business analysts who define the business needs of the market
  • software designers/programmers who creates the technical specification and next do a coding
  • software testers who are responsible for the whole process of quality management

一间软件公司基本上要有:
  • 分析员
  • 程序员
  • 测试员

所以,程序员只是一部分而已。在软件开发有经验的人都晓得,分析员和程序员尚且有时可以让同一个人兼任,或者分析员和测试员兼任,但是程序员和测试员往往就不能是同一个人了。程序员为最了解系统内部的人,对整个系统操作、流程都很清楚,做起测试员的工作时,就无法更天马行空,从各不同角度去对系统进行不一样的测试,以找出系统可能有的问题了。
所以,就算是小软件,最好,还是有起码两个人,一个写,一个试才能。
A software house basically requires:
  • Analyst
  • Programmer
  • Tester
, thus, programmer is just part of software development. For those experienced with software development will normally know that, is acceptable for analyst and programmer to be a same person, or to have analyst and tester to be a same person, but it must not to have programmer and tester to be same person. This is because programmer is the person who know the most about the internal design of the system, thus, when doing testing, the he/she will not be able to think out of the box, and test the system from different possible angles. To conclude, even a small software, is better to have at least 2 persons, one to analsis/code, one to analysis/test.

Sunday, July 27, 2008

程序员的迷思-人多就好?(Mystery of Programmers-Quantity is the key?)

一般上,需要软件时,往往都会说:“我找程序员做。”规模较大的公司,多有聘请一群的程序员,常常当软件无法制作出来,或常逾期交货时,老板们总会一句:“做不来,再请多些程序员,我给你多些预算(budget)。”这样就行了吗?
如果请多些程序员就可以把软件制造出来,我们应该可以看到,欧美软件大厂如微软、SAP等早已相续倒闭,或失去优势,主宰世界软件业的,应该是劳工较便宜的中国、印度、印尼等国,为什么没发生呢?
如果请多些程序员就可以把软件制造出来,只要中国拿出一百万个程序员,相等于0.077%人口而已,就可以完美复制视窗、甲骨文、等超级软件了,不是吗?
多请程序员的方式,往往是行不通的。而往往到最后,被怪罪的,就是“程序员不够好”,或是“项目管理不够好”,而事实往往也不是这样。
也许有人会说软件大厂早有在劳工较便宜的国家设生产线,这是无可否认,但核心的软件还是没有转移不是吗?
When people need software, normally he would said:"I will get a programmer to do it." Big companies normally will hire a group of programmers to maintain their in house software. Whenever the software is not able to deliver, or to deliver on time, the senior management would normally come out with :"Go hire more programmers, I give you budget." Is this the right way?
If with more programmers will do, what we will see in today's world? Microsoft, SAP might be already bankrupt or lose their advantages. The leaders of world software industries, would be those from cheaper-labour cost countries such as China, India, Indonesia, etc. But this doesn't happen.
If with more programmers will do, then China can simply hire 1 million programmers (equivalent to 0.077% of China population), and they can perfectly duplicate the world class software like Windows, Oracle, etc.
"Hire more programmers" is always not the right way, and most of the time, eventually, the reason given to the failures are, "The programmers are no good.", or "Project management is no good." Of course, this is also not correct.
Some may said many software giants already move some of their productions to cheaper-labor cost countries, but the core software, still not been transferred, isn't it?

Wednesday, July 23, 2008

好软件,三选二(Good Software, Select Two of the Three)

攻读电脑科学的朋友,必定会读到这一句话,只是会有多少人记得?
“好,快,便宜,选二。”=>快在这里,是软件开发时间短。
要又好又便宜的软件,慢工出细祸,就不会快交货!
要又快又便宜的软件,软件素质就不会好!
要又快又好的软件,当然要更多高素质的工作人员,更有效的管理,当然,就不便宜了!
当然,现实上并没有这么极端,所以开发软件往往就在这三个中找一个接受点,比如:90%好,70%快,40%便宜等等。又快又好又便宜,说实在,不存在吧?所谓又快又“好”又便宜的东西,有一天,可能你就知道,并不好,只是太迟了。
坏的软件,选零,或选一吧!
Computer science graduates normally will come across to this statement: "Good, Fast, Cheap, Select Two!" (Fast, is short software development time.)
A good and cheap software, the development will be slow!
A fast and cheap software, the quality will not be good!
A fast and good software, requires greater developers, and more effective management, thus of course, not cheap!
In real life, we will not choosing two, but in fact, finding a accepting point among the three, for example, 90% good, 70% fast, and 40% cheap, etc. Software that is fast, good, and cheap, we should said, not exist! Even someone claimed that it exist, one day you may know, he was just want to close the sales, the software isn't good, but it will be too late!
Bad Software, Select None, or Select One!

Friday, July 18, 2008

软件的艺术(The Arts of Software)

程序语言是一种科学,程序编写却是一种艺术。同样的问题,有些程序员写了几十行代码,有些却要写几百行代码。几十行的比较好吗?可是,可能几百行的跑得快,几十行的跑得慢!几百行比较好吗?可能,跑得快却问题多,运行结果错误,跑得慢的,可能运行结果正确!同样的问题,有些程序编写员花了两个月写了程序,运行两个多小时,运行结果:错误。有些程序编写员花了两个小时写了程序,运行六、七秒,运行结果:正确。(这是一个活生生的例子哦!)要如何才能制造出优秀的软件呢?
Programming Language is a Science, Programming itself is an art. For the same issue, some programmers write tens lines of codoes, but some programmers need to write hundreds of codes. Is former better? But, it might be the latter's code execute faster, while the former's code execute slower. Is latter better? May be, former, has bugs or generates wrong result, and the latter alwawys generates correct result! Same issue, some programmers spend 2 months to write a code, execute for more than 2 hours, and the result is wrong. Some programmers spend 2 hours to write the code, execute for less than 10 seconds, and the result is correct! (This is a real life example!) So, how to produce great software?