受限于经验与知识,本来不想写这个话题,不过今天突然想到,用时间思考了这个问题,权将自己的观点写出来和大家交流,欢迎讨论。
“代码民工”这个词可能是程序员的无奈的自嘲,也可能是自谦,反正来源已无法可考。
“代码民工”即是指那些编写程序、敲打代码的底层程序开发人员,是IT行业中干得最多、干得最累、却挣得最少的那一群人。
这其中可能有公司的原因,也可能有个人的原因,但我认为最根本的原因可能是技术的限制——技术的水平限制了程序员们的生产力。我们很多人都在重复的做很多的事情。
做个对比,现在很多城市的工地上都可以看到建筑工人——相对于他们,我感觉我们的生产力远没有他们强。如果那建筑工人来做比喻,那我们现在所处的阶段可能机械化时代之前,应该是刚刚脱离手工制作砖头,要用手用一些低级的工具来制作砖头,然后在将这些砖头改成房子——注意,是房子,不是大厦,我们现在的生产力还没有到达那种程度。不同的是,他们进行的体力劳动,而我们进行的脑力劳动。
我们现在的优势是,从代码民工向更高层的发展相对比较容易。只要你对编程充满兴趣,并且有成为优秀程序员的目标,努力学习,善于学习,你肯定能够成为一个有含量的程序员。
低生产力时代也有伟大的建筑——比如万里长城,金字塔,就好像我们现在有google,微软。
技术的原因,使代码民工的存在成为必然,因为底层的劳动总要有人来完成。要想解放他们的生产力,技术的革新是唯一的途径。这个过程是漫长的,而且也充满 了阵痛,就像机械化时代很多人面临失业一样——但总的趋势是好的。
如何提高生产力?工人需要强大的工具和大粒度的模块——也许盖一座大厦就像用使用工具将机械制造好的一层层的楼玩积木一样堆在一起就可以了。
程序需要更强大的工具和更大颗粒度的封装。以后程序的开发可能会两极分化——底层程序员专注于构建强大的工具和更大颗粒度的封装,而高层的程序员专注于用户的业务需求,这个时候,他其实可以不被叫做程序员,或许叫产品设计师更合适——因为他们更多的是设计产品,而不是编程。
在一个领域工作多年后,会慢慢的发现,其实我们可以工作在更高的抽象之上,更粗粒度的封装之上,也许效率会更高。更高的生产力基于更加完善,更加强大的基础设施之上。个人感觉,DSL(领域专用语言(Domain Specific Language/DSL))也许是其中的一部分。为此,我为自己选择了一个模板,Martin Fowler,希望能够在同样的领域能够有所建树。
期待这一天的到来。