不写代码,祸兮?适应市场,福兮!
类似的演讲我也在其它城市进行过,听众反应也比较类似。对于能够不编写代码就能进行软件开发,第一反应都很兴奋,在平静下来后马上意识到一个问题:如果开发软件不编写代码,那程序员干什么?程序员会不会失业?
要回答这个问题我们从程序员的职业角度,和软件开发的行业角度两方面入手。
程序员是什么?在英语中程序员是Programmer。Programmer有两个含义,一个是“节目编排者;订计划者”,另一个是自动化专业用语,“【自动化】程序设计员;程序设计器”。可见程序员的全称应该是程序设计员。
对软件开发,大家已经形成了基本的共识,软件开发大致可以分为:需求(Requirement),设计(Design),编码(Coding),测试(Test)四个阶段。每个阶段分别由分析员(Analyst),设计师(Designer),程序员(Coder),和测试人员(Tester)进行。
由此我们可以看到我们常说的程序员其实有两个含义,一个是Programmer,一个是Coder。然而,Programmer≠Coder。
写代码并不是程序员的专职工作。程序员应该做的是更富有创造性的工作。程序员应该是艺术家,而不是匠人。不编写代码或少编写代码可以让程序员更好的工作,将精力投入到更有价值的工作上,而不是使程序员失业。
对于软件开发来说,在软件工程理论中,编码工作应该只占30%的工作量。我个人认为可以将一个项目中编码工作量所占的比例作为衡量这个项目软件工程实施情况的一个参考标准。其概念类似于经济领域中的恩格尔系数。
应该说目前软件行业正在孕育着一场革命,也许.Net2.0和Windows Vista就是导火索。软件就是程序,开发就是写代码这种旧的观念正在发生变化。面向对象也不再是唯一的标准,面向服务(SOA),面向方面,设计模式,对象关系影射,关联查询语言(LINQ)等等新名词,新概念,新标准也层出不穷。
每当有变化产生的时候,必然伴随着优胜劣汰。如何能够在这场变化中独立鳌头,保持生存,是我们面临的问题。其实不论技术如何变化我们要做得都是一样的,这就是:满足市场需求。所以无论是微软提出的增强用户体验,还是IBM提出的随需而变都是同样的道理。增强用户体验和快速开发本身就是一对矛盾。所以我们需要更强大的工具帮助我们完成简单、重复、繁琐的工作,让我们能够有更多的时间和精力分析用户的需求。因此程序员也要将注意力从学习编程转移到学习社会,学习市场,学习用户所在的行业。其实如果真的不写代码,程序员要面临的挑战更大,但是机遇也更多了。
毕竟软件就是服务,适应市场才是我们的目标,让我们一起迎接变化,迎接挑战,迎接机遇。