技术开发 频道

自行其是的牛仔也必须认可团队价值

牛仔程序员撰写程序时,他们最重视完成的速度,所以会竭尽所能地缩短完成的时间,他们喜欢单打独斗,不受开发程序限制,也不遵守开发规范,成为管理的一大难题。

英雄程序员在软件开发团队中担负起救世主的角色,这样的特质,使他试着一肩扛起整个开发项目的重责大任与成败,即使燃烧自己也毫无怨言。

除了英雄程序员之外,还有一类的程序员,同样是我们在软件开发中时常会遭遇到,而且特色相当鲜明,这一类的程序员就是「牛仔程序员(Cowboy Programmer)」。

爱用黑技、不作设计

我们大多数人从西部电影中获得对「牛仔」的典型印象──独来独往、视法律如无物、冲劲十足、速度飞快。软件开发领域里的「牛仔程序员」差不多就是这样。撰写程序时,他们最重视完成的速度,所以会竭尽所能地抄小路、走快捷方式,即使只是一时取巧的方法,只要能缩短完成的时间。心里放不进其它的考虑。

牛仔程序员不会关心这样的程序,别人是否能够轻易地读懂,也不会深谋远虑,在意日后这样的程序是否好维护、容易扩充,只要在当下能够达成目的就成了。

牛仔程序员喜欢独来独往、单打独斗,不喜与他人打交道,更不喜欢结群成队,他不容易融入团体开发,喜欢凭自己的力量解决问题。当然,他更不会受开发程序所限制、也不会遵守「别人订下」的开发规范、命名惯例,他有自己的一套,开发方法自成一格。

这种人热爱冒险、有冲劲、喜欢尝试新鲜的事物,一旦设定了目标,便不顾一切地往前直奔,直到解决问题为止。他们某种程度都能称得上高手,而且对程序设计充满热情。

虽然牛仔程序员能解决问题,但所采用的方法,有时候充满太多的黑技(Hacks),只能取巧一阵子。一旦要在这薄弱不甚坚固的基础上继续发展,便会像是在危楼上再加盖,整个系统便摇摇欲坠。

这些黑技有时艰深难解,不仅他人难以明白,而且日子久了,连原作者自己,可能都回忆不起来。

虽然牛仔程序员解决问题的速度很快,但是因为写死(Hardcode)太多应用时的条件,使得解决方案不易扩充成为通用性的方案,只能适用于十分狭窄的问题情境。也因为一心追求完成的速度,更使得他们时常不做设计,拿到问题立即埋头苦干,直接开始撰写程序代码。

自由不受拘束是他们的重要信仰

牛仔程序员独来独往、喜做化外之民的性格,也使得他们不易被管理。这些人通常有自己的时程表版本,而不受到别人时程规画的影响。

自由不受拘束,是牛仔程序员重要的信仰价值之一。他当然也不会理会开发方法论、开发程序、程序代码版本控制,因为那样实在太受拘束了,所以他有自己的一套。此外,牛仔程序员也不喜欢和其它人沟通,因为那样实在太麻烦、太浪费时间了。

牛仔程序员有自己独立的价值判断,他多半能做出你需要的东西,但是作法可能会大大出乎你意料之外。有些人会觉得自己所采用的方法最理想,自己写下的程序代码是最为优雅、最具自我说明力的。
倘若别人不能读懂他所写下的程序代码,代表对方的能力不足,不能理解如此美好的事物,因而不具备和他共事的资格。

具有上述特质的程序员,偶而会在我们的开发生活中出现。说实在的,大多数人在初学程序设计时,多半都具有牛仔程序员的特质,因为未经太多的团体开发经验及训练。随着团体开发的经验日渐增加,牛仔程序员的特质也就日渐减弱。

但是,仍有一些个人性格突出且鲜明的程序员,并不会因此而改变,他还是他自己,而这也正是牛仔的精神特征之一。

喜欢单兵作战,使得牛仔程序员难以管理

很明显的,牛仔程序员会是团体开发里的一大难题。对于这种人而言,其实他不需要其它人,他自己也会尽可能地避掉和别人相介接的机会。团体和个人,对他来说并没有太大的分别,因为他最喜欢的还是单兵作战,团队形同绊脚之石。

对团队来说,牛仔程序员难以管理。你无法预期指派给他一份工作,究竟何时能够完成、会以什么方式完成。而牛仔程序员的产出,也都具备它独有的型式,和团队所订定的规范不尽相同,也不易为其它成员所使用、修改,以及扩充,甚至只能暂时解决问题。

现代的软件开发,几乎不可避免都以团队的形式进行。这并不代表非得要团队才能开发出卓越的软件,而是代表着一种从手工业迈向工业的型态转移。牛仔程序员也能开发出好软件,但他的个人战力,通常胜不过集结成军的开发团队。面对软件需求的快速变化,只注重眼前,而不预见未来的牛仔式程序设计风格,更让牛仔们不容易针对变化做出因应。

0
相关文章