《软件工艺师:专业、务实、自豪》一第1章

本节书摘来华章计算机《软件工艺师:专业、务实、自豪》一书中的第1章 ,[英]桑德罗·曼卡索(Sandro Mancuso)著 爱飞翔 译, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

第1章

21世纪的软件开发
我还记得自己刚工作时的情景,那是20世纪90年代。上了三年班之后,我觉得自己已经是资深开发者(senior developer)了。我当时已经可以把汇编指令和Pascal代码混在一起写,博得友人赞赏,而且熟练使用至少四门编程语言。更重要的是,我可以写出难懂的Delphi代码:只用几行语句和几个晦涩的Windows应用程序编程接口(Application Programming Interface,API)就可以把程序写好,而这样写出来的代码很少有人能看懂。
当时的人就是那么看待编程资历的。没法理解一段代码通常表明你的编程水平还不够高。能写出谁都看不懂的代码,你立刻就成为高端开发者了。当时的人经常能听见项目经理和开发者在说这样的话:“我们现在还不能修改这段代码,必须要等Henry Hacker度假回来才行。他写的代码别人都看不懂。”
工作七年之后,我已经不满足于做一个资深开发者了,我觉得自己应该往更高的级别努力。我不想再被当成开发者了,更不想被人冠以程序员(programmer)、码农(coder)等名头。从那时起,我决心自称软件架构师(architect)。我觉得这个称呼很好。当时我已经在一家大型咨询公司上班了,我们的产品全都是大型企业级Java程序(当时叫作J2EE程序)。而且我们也采用了Rational统一流程(Rational Unified Process,RUP)——先绘制用例图、类图及序列图,然后再写代码。
在这家大公司工作了一段时间后,我升入架构团队,在那里,我们必须首先查阅《设计模式》(Design Patterns)那本书,然后才敢创建自己的类模型。我非常熟悉GoF设计模式及Core J2EE模式,而且也懂得运用UML(Unified Modeling Language,统一建模语言)和Rational Rose来建模,此外,还获得了一些Java认证。我能力、经验及所获认证都远远超过了对软件架构师的要求,这种感觉不错。
身为一名架构师,我要和业务分析师沟通,理解功能及非功能需求,并绘制图表,精确地指明开发者必须要完成的任务。有时我也会反复思量:到底应该怎样建立抽象模型,才能令系统在不影响其他事物的情况下顺利演进呢?想这种问题时,我通常会凭着感觉在心里来回盘算。这时我并不知道系统在五年内需要添加哪些具体功能,所以不太可能准确判断出系统的走向。于是我加入抽象层,到处运用设计模式。这种愚蠢的做法在今天看来是过度设计(overengineering),但在当时看来,却是一种高端的架构技术。
在架构组待了几个月后,我发现自己经常需要和原来所在的开发团队成员相沟通,沟通的次数远远多于和本团队架构师打交道的次数。我要经常和开发者一起吃午餐,谈论他们的代码,并叫他们告诉我程序的不同部分是如何实现的。我也发现自己在空余时间要花比从前更多的精力来写代码。后来,我终于明白出现这种状况的原因了:上班的时候根本没写代码,所以必须用下班后的时间把欠的那部分代码补上。
几乎有一年时间,每天上班都在画图、写文档,这种工作我厌倦了。于是我告诉老板,自己想回到开发团队。他听了很惊讶,因为他根本就不明白我当时的想法。他说:“你在技术架构师的职位上表现得很好啊。你知道吗,很多开发者都想来架构团队呢。你这个位置,很多人想坐呢。”这些我当然知道,我原来就是个开发者。我当然知道很多开发者都想成为架构师。我告诉老板:“那问题很好解决嘛,你从这么多开发者里挑一个跟我对换就行了。”一周后,我又回到了开发团队。这次,感觉依然很好。
今天回想起来,我意识到这个决定是多么重要。记得当时我花了几周时间来衡量到底应不应该回到开发团队。如果继续留在架构团队,那我就在一家大公司里拥有架构师这个头衔,我在别人眼中会显得很有资历,我会容易受到赏识(架构师都是老手,没有听过“初级架构师”(junior architect),对吧?),有指挥别人的权力,比其他开发者地位高,容易受到管理层注目,容易升职,职权也更大(架构师谈论的都是些大话题)。可是回到开发团队我就会变得很开心。架构师这个工作我感觉不太有意思,架构师整天画图并讨论一些长远的目标,但那些目标基本上都经不起时间的考验。于是,我决定选择快乐一些的工作,每天写写代码就很开心。我从此发誓,自己只选那种让我早晨一醒来就很乐意去上班的工作和职位。
这种决定会彻底而永久地改变你的职业生涯。假如当时继续留在架构团队,不写代码,我再想重新当一名开发者可能就难得多了。越不写代码,就越难重拾开发者的身份。
问题的重点不在于架构师和开发者哪个更好。今天我甚至都不认为自己当年在那家公司里面做的是架构工作。我的意思是,应该根据自己的兴趣来选择职业道路,做自己喜欢的事。无论是架构、软件开发、测试、业务分析、管理还是其他工作,你都应该在喜欢的前提下去做,这一点相当重要。
本章接下来要讨论究竟什么样的开发者才是资深开发者,21世纪的开发者又要面对哪些新挑战。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值