程序员:脚下的路在何方?一个奋斗者的感受!(转载。。。)
2004-12-06 14:08
483 查看
单枪匹马
我是一个可以单枪匹马解决很多问题的程序员,事实上,很多时候我确实是在单枪匹马的工作。
历经中国十几年的“标准”教育,我学会了独立解决问题。在学校里,很多时候协作行为都会被视为不正当的行径而遭到批判,比如考试时候的协作会被称为作弊。掌握了独立思考能力的同时,协作能力一点点的流失着。协作能力的流失往往伴随有自私的产生,我历经千辛万苦解决的问题为什么要告诉你,这可是我值得炫耀的资本啊!个体对面的集体也时常被人忽略,“鹤立鸡群”的感觉可远胜于“共同富裕”。
软件开发的历史几乎就是一部个人英雄主义的连续剧,从Bill Gates到Linus Torvalds,哪个不是可以凭借一己之力就让世界改变的人物。试问,我们这些作为后来者的程序员,哪位心中没有几个用来崇拜的高手,也许差别就是水平越高崇拜的越少罢了。和那些成为追星族的懵懂少年一样,对偶像崇拜带来的常常是对偶像的模仿,有意或无意。对个人英雄的崇拜带来往往是希望自己拥有独立创造一个世界的能力。
校园的氛围鼓励这种“独立”,而真实世界的软件开发更多的需要“协作”,毕竟我们面对的问题已经不是一个人可以在最后期限之前能够解决的。虽然我处在一个需要协作的环境之中,但由于工作分配的原因,我很少与人协同开发,因此,大多数时间里,我依然处于独立工作的状态之中。也正是由于独立工作,锻炼了我解决问题的能力,随着对我解决问题能力的放心,负责人更多让我负责一个单独模块的开发,于是我也就越来越“独”。
近来和几个朋友合作开发一个东西,考虑这几个朋友的实际水平和对目标的了解程度,在前期,需要我带领他们一起来做。和平时一样,我一开始就进入到解决各种疑难杂症的阶段,之后,我会把自己的心得告诉他们。
一天,我问其中的一个朋友,对我讲的东西有什么感觉。出乎我意料的是,他给我的答案并不是关于我所讲解的内容:“我觉得你太累了”。这倒是引起了我的兴趣。他认为,既然是大家合作开发,就应该大家共同来承担责任,现在的情况是我一个抗起了所有担子,而其他人则处于一种比较闲的状态,对于一支团队来说,这绝对是一种不合理的。在目前的状态中,我实际上担当的是一个负责人的角色,应该懂得把工作分配给别人,而不是一力承担,这样会造成累死一个、闲死一群的悲惨结果。
他的话对我打开了一扇门,让我进入到一个完全不同的世界。之前,我从未想过这样的问题。我从未真正承担过负责人,从未考虑过把工作分配给别人,在我原来的视野里,我所遇到的问题都需要我自己解决。经他点拨,我豁然开朗。固然,我相信我可以解决自己遇到的绝大多数问题,但并非所有这些一定要自己来做。
在实际的工作中,我也确实感觉到自己的时间有些不够用,既要设计,又要编码,还要考虑下一步的方向。
从另一方面来看,这种做法也是对同伴的不信任,虽然可能是无意识的。在一支团队中,彼此的信任才能让大家来共同承担责任。对于现在的开发,同伴目前的能力并不足以很好的完成,但如果不给他们足够的机会,他们永远不能达到要求,差距只会越来越大。个人能力也是在开发过程中逐渐提高的。
最终,我决定接纳这个朋友的建议,把自己承担的一部分工作完全交给他们负责,而我则继续向前走,为下一步工作做一些技术上的探索。软件开发并不是一个人的工作,独立解决问题并不等于一切由一个人来做,一个人的小聪明无法与集体智慧媲美。
我是一个可以单枪匹马解决很多问题的程序员,事实上,很多时候我确实是在单枪匹马的工作。
历经中国十几年的“标准”教育,我学会了独立解决问题。在学校里,很多时候协作行为都会被视为不正当的行径而遭到批判,比如考试时候的协作会被称为作弊。掌握了独立思考能力的同时,协作能力一点点的流失着。协作能力的流失往往伴随有自私的产生,我历经千辛万苦解决的问题为什么要告诉你,这可是我值得炫耀的资本啊!个体对面的集体也时常被人忽略,“鹤立鸡群”的感觉可远胜于“共同富裕”。
软件开发的历史几乎就是一部个人英雄主义的连续剧,从Bill Gates到Linus Torvalds,哪个不是可以凭借一己之力就让世界改变的人物。试问,我们这些作为后来者的程序员,哪位心中没有几个用来崇拜的高手,也许差别就是水平越高崇拜的越少罢了。和那些成为追星族的懵懂少年一样,对偶像崇拜带来的常常是对偶像的模仿,有意或无意。对个人英雄的崇拜带来往往是希望自己拥有独立创造一个世界的能力。
校园的氛围鼓励这种“独立”,而真实世界的软件开发更多的需要“协作”,毕竟我们面对的问题已经不是一个人可以在最后期限之前能够解决的。虽然我处在一个需要协作的环境之中,但由于工作分配的原因,我很少与人协同开发,因此,大多数时间里,我依然处于独立工作的状态之中。也正是由于独立工作,锻炼了我解决问题的能力,随着对我解决问题能力的放心,负责人更多让我负责一个单独模块的开发,于是我也就越来越“独”。
近来和几个朋友合作开发一个东西,考虑这几个朋友的实际水平和对目标的了解程度,在前期,需要我带领他们一起来做。和平时一样,我一开始就进入到解决各种疑难杂症的阶段,之后,我会把自己的心得告诉他们。
一天,我问其中的一个朋友,对我讲的东西有什么感觉。出乎我意料的是,他给我的答案并不是关于我所讲解的内容:“我觉得你太累了”。这倒是引起了我的兴趣。他认为,既然是大家合作开发,就应该大家共同来承担责任,现在的情况是我一个抗起了所有担子,而其他人则处于一种比较闲的状态,对于一支团队来说,这绝对是一种不合理的。在目前的状态中,我实际上担当的是一个负责人的角色,应该懂得把工作分配给别人,而不是一力承担,这样会造成累死一个、闲死一群的悲惨结果。
他的话对我打开了一扇门,让我进入到一个完全不同的世界。之前,我从未想过这样的问题。我从未真正承担过负责人,从未考虑过把工作分配给别人,在我原来的视野里,我所遇到的问题都需要我自己解决。经他点拨,我豁然开朗。固然,我相信我可以解决自己遇到的绝大多数问题,但并非所有这些一定要自己来做。
在实际的工作中,我也确实感觉到自己的时间有些不够用,既要设计,又要编码,还要考虑下一步的方向。
从另一方面来看,这种做法也是对同伴的不信任,虽然可能是无意识的。在一支团队中,彼此的信任才能让大家来共同承担责任。对于现在的开发,同伴目前的能力并不足以很好的完成,但如果不给他们足够的机会,他们永远不能达到要求,差距只会越来越大。个人能力也是在开发过程中逐渐提高的。
最终,我决定接纳这个朋友的建议,把自己承担的一部分工作完全交给他们负责,而我则继续向前走,为下一步工作做一些技术上的探索。软件开发并不是一个人的工作,独立解决问题并不等于一切由一个人来做,一个人的小聪明无法与集体智慧媲美。
新的开始 | |||||||
今天是新项目开始的日子,我企盼已久的新开始。 我们项目2.0版从去年年底一直做到今年年中,因为是我第一个担纲设计的项目,我对它有着非同一般的感情。也正是因为是第一个,所以,难免会存在一些不甚理想的地方。之前的1.0版中,我只是覆盖到自己所负责的几个模块,对于系统整体虽然有着一定的了解,但毕竟那不是自己亲历亲为,所能看到的问题非常有限。2.0的设计中,我竭尽所能把我所能看见的1.0中存在的问题一一避免。从后来的实际情况来看,相对于1.0,2.0确实是一个进步,无论是整体结构还是开发方式上。虽然2.0向好的方向迈进了,但由于我缺乏对整体的认识,现在看来2.0系统依然存在着许多让我心痛的问题。对于我们的系统,我心中最大的理想便是开发3.0。 软件行业似乎存在着一个第三个版本才能走向成熟的规律,Windows的火爆是从3.0开始,Unix前面也倒下了两位前辈。由此推算,我们系统的第三个版本还是非常值得期待的。 为了给自己一个新的开始,项目负责人希望给项目起一个新的名字。下午的会上,一个议题就是给项目起名字。早上翻字典的时候,翻到了一个单词“LAMA”(喇嘛),这也是我觉得今天所有名字中最具搞笑意味的。不过,这个名字没有最终入选。入选的名字是“CLAP”(鼓掌),基于这个名字,我做了一次顺水推舟的选择,再下个项目叫“CHEERS”(干杯)。给项目起一个比较有意思的code name可是一个非常不错的开始。 不管名字是什么,在我心中,它依然是我的3.0,我会把2.0中的积累在3.0中释放。除了编写针对3.0的代码之外,这次项目我最大的目标就是形成一个可以从项目中分离出来进行重用的框架结构。在我们部门中,C组有一套比较稳定的开发库,而Java组则一直没有形成很好的复用,所谓的复用更多停留在代码级上。之前的一个同事进行了一定的尝试,只是后来离开了部门,所有的工作便也停止了。 在我看来,通常所说的框架,包括基础库和框架两个部分。基础库可以简化代码的编写工作,而框架则相当定义了一套开发模式。基础库和框架最大区别便在于谁调用谁:基础库通常是我们来调用,而框架则是调用我们的代码。正是因为这样,Martin Fowler才会说是个框架都是IoC,才会为“IoC”改名为Dependency Injection。 这次目标之一便是形成一个这种框架——既包括基础库,也包括框架。框架是不能凭空产生的,因此,我会依托于3.0来产生这个框架,并在开发过程中对其逐步的完善。我曾经在项目组内部提到过一个复用资产生成的过程,其中包括一个孵化过程,借鉴于Apache的Incubator。任何进入准备复用的内容必须经过一段时间的孵化,在代码稳定文档完备之后,才能成为正式的复用内容。 在这次开发过程中,我依然会承担主要的设计工作,不过这次的范围要更大一些,面对的是整个系统,而不仅仅是原来的业务系统。对我而言,这又是一次意义非凡的锻炼。也许经历了这一次的开发,我对软件开发会有一个更加完整的认识。
|
相关文章推荐
- 一个程序员的奋斗史
- 30岁,我的程序员梦想
- .net程序员需要掌握的技能
- 软件开发组的团队精神--- 一个程序员在IBM的开发经验
- 鲍岳桥:一个程序员的成功路线图
- [转贴]让人头疼的微软公司面试题目从哪里来?
- 【收藏】写给想当程序员的朋友——一个还不太老的程序员的体会 (初稿)
- 【收藏】一个假程序员的心里话
- 一个收到MS offer的写的面试经历
- [转载] JAVA面试题集合
- JAVA面试题集
- 中兴的一道面试题
- [ZT]程序员的用户界面设计手册1-9章(作者: Joel Spolsky 译: 梅普华 MSWord繁简转换)
- JAVA面试题集(欢迎补充)
- 2005年应届大专生-----个人求职简历
- 推荐程序员的求爱技巧
- 又一道面试题,难为人的,俺说说自己的方法,大家看看还有什么好方法?
- [ZT]软件开发成功 12 法则
- 推荐程序员的求爱技巧
- IT人士35岁之前“职业转型”的四大选择【转贴】