在教育方面,有句话是“十年树木,百年树人“,道出了人才培育的困难。在软件研发上,其实更是如此,即便中国人口众多,高校林立,真正合格的训练有素的人员并不丰富,而且地域上分布不均衡,人才多聚集于北、上、广、深,二三线城市合格人才稀缺,如我所在的三线城市,基本是几大当地培训机构的学生占据90%左右的就业职位,其素质水平到什么程度不用详述。
不但地域分布不均匀,开发语言和领域也同样存在,在二三线城市,多用微软的平台和技术: windows server, ASP, ASP.net, c#,如果要寻找unix/linux, c/c++, Java方面的公司或人才都不容易,看看几家招聘网情况即可知晓。
当然这种情况也是相辅相成的,招不到相关的人才,就不敢采用相关的技术和平台;反之,没有这些采用相关技术和平台的公司存在,人才自然呆不住,要么转学本地流行技术,要么去北、上、广、深谋求发展。
系统开发是需要具有一定规模的,是根据要开发的对象成比例的,当然不是人越多越好,我们碰到的实际情况常常不是开发人员太多了,人浮于事,而是相对面对的项目和系统,人员要么数量不足,要么技能和熟练程度根本达不到要求,但种种原因导致公司并没有解决这个问题,依然采取死猪不怕开水烫态度继续下去,特别是那些通过”关系“围标得来的项目,没有任何技术上竞争性,最后,系统是按时或拖延上线了,但系统维护基本就是噩梦。
从而,重构有了广阔的市场,谁能搞定这个烂摊子,他就是公司的"英雄人物",最后说不定得到一个技术主管职位。
当面对一堆烂代码,烦燥之时,要明白这是你做”塞翁“的好时候。
当你去一家有相当开发历史的公司,有面对老系统需要维护和二次开发,记得好好阅读揣摩<<重构>>和<<修改代码的艺术>>,<<代码大全2>>也不错,太厚了:).
再说说公司在技术选型和业务领域上的问题,对一个中大型公司来说,你可以搞多语言多平台环境,开拓多个业务领域方向,毕竟有这么多部门这么多人员,而对于小公司,如果也搞这种模式,时间稍稍长一点,问题就出来了,技术根本跟不上,或者说从一开始就跟不上。
但公司决策人物常常掌握市场业务,他们如果采取一两套系统到处卖,那么开发部门就相对轻松,不过在慢慢推进核心技术水平过程中,伴随着各种客户特色化需求开发,但技术领域大方向不变,相对来说还好一点。但是,如果市场部门抓住一两个客户,不停挖掘他们的不同需求,为他们开发不同的系统,从ERP系统、OA系统、门户网站、网络安全、音视频系统等,那开发部门就是日子一天比一天难过,有些技术领域不是你一时半刻能理解并运用好的。比如有这样一个案例,以前公司从来不招美工,也不做门户网站,突然有一天接了一个门户网站,而在这个地区也很难招到一般的美工,急忙就准备叫那些开发后台的人,甚至搞c++出身的人边学边搞,结果会怎样?
道理在口头上容易讲容易理解,而在实际中常常就出现这种不合理的现象,但依然会继续下去。
这些年来技术管理工作上有一点体会,那就是技术管理的成绩好坏,受公司市场业务策略的影响很大,如果开发领域和人员配备是合理的,你多努力一些自然效果明显,这是顺势而为; 如果开发领域如上面描述的一样糟糕,即便你努力再多,你亲自参与具体开发以填补人员不足,也是无济于事,说不定你做的实事越多,反而越乱。
<<孙子兵法>>在讲”形“与”势“时,举了一个例子:把一个圆圆的大石头放到平地上,用力推也动不了; 如果把它放到高高的山坡上,轻轻一推,这个滚下去不知道会砸死山谷下多少军士。这就是同样的形,但势不同,效果就大不一样。