`
guoyiqi
  • 浏览: 1010248 次
社区版块
存档分类
最新评论

程序员是这样炼成的(5)-海纳百川

 
阅读更多

做程序员要"海纳百川",其实就是建议各位要做一个通才。当然做通才是有条件的,我总结了下前提有三:

1.你已经是一个专才。熟练操作学一门像样的编程语言。
2.有稳定的工作和收入支持。
3.想得更多的挑战和机会。

作为项目经理和管理者而言,坦白的说,比较喜欢的还是专才,因为专才听话,你在他知晓的领域划一个圈,他能保证帮你完成任务,而且还不给你添麻烦,专才们在各自的领域的努力才会推动项目前进。那在项目中,通才的表现又如何呢?你给他画一个圈,他会给你考虑到圈子以外的事,甚至跳到别人的圈里子耍弄一番。他就像润滑剂一样,提出很多创新的idea,虽然老是给项目管理者带来不少的麻烦,但是总能让整个项目更加协调。其实项目管理者讨厌他,但又离不开通他,他的鬼点子时常能优化各个结构和模块。更重要的是当管理者被提升,要选择接替者一般是一个会顾大局,协调众多专才的通才。


在所有的项目管理者或者teamlead的心里,肯定都有一种软件工厂的构思或者布局。大意就是整个部门各个人都各施其职,让整个软件开发的过程,就像一个生产工厂一样运转。招来的程序员都是生产线上的工人。他们不需要想太多,照任务单做就是。客户需求就像产品订单一样进来,需求分析师开始根据订单安排我们要生产的产品规格满足客户的需求,系统架构是开始把这些规格加工成工厂生产计划或者价格框架。设计师拿着详细的设计文档来往这个框架里面套,剩下的就交给代码机器人们填充内容,然后到质量工位,检查贴牌,然后出厂。整个过程每个工位都是专才,在领导的构想中,他们每天都只需要做重复的劳动就好了,如果他们想辞职了,也不会带走我们全部的生产机密,更重要的是这样的工人很廉价,找一个替换品不难。但是实际上管理者的春秋大梦很难实现,原因是软件这个产品具有可复制性,也就是软件可以copy. 在软件工厂里,生产两个完全一模一样的产品是没有意义的。客户的需求都是很柔性的,每次都会不一样,大大小小的改变是避免不了的,管理者们费尽了心血设计的一套生产流程,竟然只能生产一件产品?(去过生产线的朋友应该都知道,一旦生产的流程有所变化,线上的工人们基本上都不知道怎么开始干活了,要重新培训上岗,因为他们从来就没有想过,半成品是从哪来的,又是干什么去,一直都在做机械的劳动。)但是我们的管理者们,他们肯定不会罢休焦头烂额,会再一次优化生产流程。到下一个新的产品,又会继续把生长线从头至尾优化一下。某一天管理者突然顿悟,我们为什么每次都手把手的跟每一个人安排任务,每次都亲自设计整个流程,我应该去办公室里面喝喝茶,上上网。这个时候他会想到谁?毫无疑问,肯定不是专门,他需要的是一个能走通每一个环节的通才。


小时候我经常听我老爸说:"不要半桶水,不要什么都懂点,什么都不专"这句话就是用来贬低通才的,在这里我要为通才平凡。我的一个软件项目曾经出了一次事故,整个汽车的生产线面临停产,几次电话支持的效果都不理想,需要一个技术人员立马去现场解决问题。软件用delphi开发在windows平台运行,oracle数据库,通过进口的硬件,用客户的线束跟汽车通信,操作员是个新手,电脑硬件是我们提供的,现场环境恶劣。我思索了每个可能出现问题的可能,客户能提供的有效信息太少,连软件的日志文件都无法取出来(USB端口封闭,车间信息严格保密)。我不可能同时派一个软件工程师,数据库DBA,IT,或者硬件工程师奔赴现场。最后我选择去的是一位软件工程师,他很快找出来原因,是客户的线路没有按照我们的电路图制作,关键线一条线是断开状态。我相信他,不是因为他是我们公司最厉害的程序员的,而是他懂技术领域的比其他人要多。


其实在整个项目开发过程,除项目经理外,不可能每个人都会一直忙忙碌碌,无论是程序员,测试员,设计师,架构师,你总会有一段时间无所事事,除非你同时加入很多的项目。希望你能在有空的时候关注下你的同事们在做什么?你能不能帮助下或者学习下。做了这么多年的程序员,我们可能都常有一个共同的担心,这个担心是什么呢?我们一个项目或者我们公司的的关注点,研发的中心开始转移出我擅长的技术领域。我们害怕自己发挥不了作用和特长,害怕我们对公司没有价值,也就是意味着我们涨工资的幅度要比别人小了,或者没有工资加了。其实这个担心还不是最要命的,最要命的是,我们要精简团队的时候,你才发现自己比较单纯,只会测试或者编码,很多平时做其他工作的同事都能做你的替代者,那么你就要被over了。


说了这么多的苦口婆心劝大家做一个海纳百川的通才,大家肯定会问,我觉得我在我的team里面已经算了百事通,万事通了,我应该怎么继续丰富我们的技术领域呢? 夜深了,还没洗澡,我在这里不打算多说了,我请问各位几个问题,希望可以为你指点方向:


1.你有没有想过在公司里,你计划的职业阶梯的各个领导每天都在干什么吗? 你的boss,你boss'boss.....?(拿破仑不是说过将军和士兵之类的名言....)
2.你知道你的一个组的同事在干什么吗,每天?
3.你知道哪几种操作系统平台,软件开发平台?你会通过别的路径走到罗马吗?
4.软件工程师你知道你要用的数据是哪来的怎么来的吗? 数据库管理员你知道你的数据是去哪里的吗?为什么人家装个oracle一下就搞定,我写了一辈子连oracle的程序连个listener.ora都不会配。
5.程序员知道你开发的软件,打包后是怎么安装注册的吗? 那般客户的是什么折腾你的宝贝软件的吗?
6.有没有约个骂你的杰作的客户出来吃吃饭,听听他的用户体验?
希望我们都能明白自己缺少的是什么?如果程序员想找一份工作,做一个专才足矣,如果想把事业做好你最好做一个通才。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics