这周拿到了离职证明,离开了呆了近21个月的公司BrightCreek, 一家以人为本,以创造力为盈利筹码的高新企业。在过去的1年多,我见证了公司的发展和变更,参与了各种各样的软件项目,写过各种各样的程序语言。
想当初在20世纪五六十年代,那时候的程序被记录在打孔卡片上,我从来没有见过这种卡片,但是听说那时候的程序非常严谨,不仅精简,而且优美,出错极少。因为当时运行程序的代价十分昂贵,有限的主机时间需要预约,所以程序的返工和修改都是不应该发生的。那时候的软件开发如同神话一样充满了传奇色彩。
反观今日,程序的编写不再那么难以进行,打开电脑就可以轻易地进行软件开发,Windows,Mac OS, GUN/Linux各种操作系统下都有成熟的IEDIDE, 软件开发不再那么遥不可及,甚至任何人都可以通过简单的拖拽动作来完成了一个软件界面。但是如今软件的质量不再那么可靠,软件崩溃愈演愈烈,软件垃圾愈来愈多,项目经常被延期,挂起和终止,而造成这一现象的原因却着实令人费解。
我开始回忆在所做项目中自己有用到的语言,印象中有ActionScript, HTML, CSS, JavaScript, PHP, ColdFusion, Java, C#, SQL, 其中JavaScript这块用到的Ajax库有jQuery, Ext, Mootools, Dojo. 想到这里,我也略微知道项目经常失败的原因了:当项目中重要的部分由不称职的人担当着是极其危险的。
某种语言出身的程序员会被投入到另一种语言相关的项目中去,这种情况经常会发生,不是发生在别人身上,就是发生在自己身上。刚开始该程序员会本着依赖于原有程序的思维模式去写新的语言,加上不熟悉新语言的API,写出惨不忍睹的程序真是太容易了,更加杯具的是,这个时候要是没有一个老鸟在旁边指正指导,对于该程序员和项目都是一种灾难。从成本价值的角度去分析,这是一次失败的投资战略,程序员花了时间和精力去越过一条陡峭的学习曲线,得到的只是三流的经验;项目在前期表面上进行的顺利,中后期将越来越杂乱,最后变得难以维护。
如果不幸你成为了上面那个程序员,我想说的是:请寻找正确的学习途径,切忌盲目操刀,不求甚解。
项目遇到缺少专业人员的情况时,最有效的对策应该是找一个合适的人。招人简单吗?很不简单。至少从实际效果上看是这样。招一个自己满意甚至准满意的人都是十分困难的。我面过6、7个前端的职位(是能立马做事的那种),却发现没一个合格的,那时候觉得HR真是神了,每次电话请过来面试的人都是服务器端的程序员。而且从招聘网站上,我也发现很多小公司会对某个职位持续地招聘2、3年,这显然是招人难的侧面表现。
如果觉得招人困难的时候就要花时间去培养了。培养简单吗?也不简单。特别是对于小公司来讲,具备软件技能培养能力的人少之又少,,而且这种人都被拉去做事了,哪有时间去培养其他人。而且软件领域里各个层面都充斥着领域专家。要一个Java程序员心甘情愿地去受一个JavaScript程序员的培训很可能就不是一样很顺利的事情。
如果公司缺少优秀的人才就去赶紧招聘,猎头很多时候是不靠谱的,我这么说可能引起了猎头们的不满,那换一种说法,猎头极少时候是靠谱的。如果没有资金和条件吸引优秀的人才,就花时间和能力去培养,如果连培养的时间和能力也不具备,那就等着杯具吧。