成为核心程序员的一些建议

jopen 9年前

成为核心程序员的一些建议

英文原文:Some Advice On Becoming a Lead Developer

成为核心程序员或技术榜样既是一个伟大的责任,也是一个很好的职业机遇,但中间的过程却是艰辛的。

对自己和自己的工作负责,与尽可能地推卸团队的责任是有着很大区别的。

许多程序员做起自己的工作来很是得心应手,却在晋升到首席开发这个领导职位时,因为对所涉及的额外责任没有准备而焦头烂额无所适从。

作为一个有着多年职业经验的首席开发人员,我想向大家分享一些我认为有用的东西。

你为什么想成为一名首席开发人员?

在你想要处理成为首席开发人员产生的问题之前,首先你得成为首席开发人员。

而在你成为一个首席开发人员之前,首先你需要回答为什么。

你为什么想成为首席开发人员?

这是自我的追求吗?

是因为你觉得可以赚更多的钱,或者拥有更高的声望吗?

还是说,是因为你想关心、领导和激励大家更好地完成工作?

你可以是因为自我的追求,也可以是因为想赚更多的钱或者爬上更高的地位,但如果你想获得成功——并维持这个职位——那么你的动机应该基于是为了帮助他人,领导他们取得胜利,并激励他们尽可能地做好工作。

如果你的目标只是金钱和权力,那么你不但只能是一个糟糕的首席开发人员,而且也不会喜欢这份工作,因为额外的工作和责任会渐渐湮灭你获得新职位的欣喜。

我这么说不是为了打击你,有野心有抱负是没有错的,关键是要适度,要有正确的方向。

要想成为最有效率的首席开发人员的途径是让你的团队更优秀,然后各种奖励也会随之而来。

而将奖励和声望放在第一位,只会让你的团队受到不良影响。

成为首席开发人员

好,那么你真的想要成为首席开发人员吗——即使它可能是一个吃力不讨好的工作,甚至可能还没得加薪?

如果你的答案是肯定的,那么下面我们就来说一说该怎么做。

首先,你必须认识到,即使没有正式授予称号,你也可以成为首席开发人员。

领导地位不是挂上头衔就能具备的。

领导者之所以是领导者,是因为有人会追随他们,而不是因为他们被任命了某个职位。权力可以被授予得到,但领导力却只能靠自己。你可以是一个没有 领导力的权威,也可以成为未经授权的领导者。事实上,一些最有效的领导者,其实却并没有被上级授予任何权力,因为他们并不需要。

按照这种说法,成为一名首席开发人员更多的是要赢得团队的尊重和信任,这比什么都重要。

为了成为首席开发人员,你需要证明你不仅具有技术能力,还具备促进关系、鼓励、构建协同感,以及启发大家的能力。

一个真正的领导者,无论任何形式,都能够把大家团结在一起,拧成一股绳朝着共同的方向前行。

下面这些特点是我认为一个好的技术领导人所应该具备的:

  • 负责
  • 充满动力
  • 擅长技术
  • 谦逊
  • 有坚定的信仰
  • 良好的沟通技巧
  • 可靠

如果你想成为首席开发人员,那么你需要专注于开发这些特性,还需要提升你的软技能。

而最优秀的首席开发人员不但能指点我们正确的技术方向,还能启迪我们成长,让我们更好地完成工作,并且能做到将团队利益牢记于心,不徇私,能够让我们放心信赖。

最成功的领导者能帮助大家更加成功。

如果你想成为首席开发人员,那么首先你可以想象一下你想要什么样的团队领导者,然后将自己当成那个人去做。

忘记政治博弈,设法为他人给予有用的服务,现在就开始采取行动,不要颐指气使,也不要自以为是,保持谦逊和真诚的态度来帮助团队中的其他成员。

成为首席开发人员的意义

如何担任首席开发人员以及如何成为首席开发人员其实是同一件事,所以,下面的建议不但适用于那些已经成为首席开发人员的登顶者,也适用于那些想要成为首席开发人员的攀登者。

现在我们就来说一说首席开发人员最重要工作…

…让他或她的团队取得成功。

不光团队要取得成功,而且尽可能地也要让团队中的每一个个体取得成功。

如果你想成为一名优秀的首席开发人员,那么你的主要工作——也是你最重要的事情——就是尽可能多地让你身边人取得成功。

如果你能做到这一点,那么你就成功了。

但是,该怎么做呢?

以身作则

一开始一定要以身作则。

不要指挥别人怎么做,要做给他看。你希望别人做什么,那么首先你自己先做,然后让他们明白为什么这样做是有益的。

不要威逼利诱,也不要争得面红耳赤,如果你真的想激励大家,那么你先做给大家看,用实际行动和得出的结果证明给大家你的方法是最好的。

如果你想要团队中的开发人员写出更好的代码,那么首先你自己的代码要写得更好,并且为此你付出的努力有眼可见。只有这样,你制订的编码标准才能令人信服。因为他们看到你的代码,会受到鼓舞,会心甘情愿地写出和你一样质量和可理解的代码。

如果你想要团队中的开发人员编写单元测试或实践测试驱动开发,那么你最好不但能先做出表率,还能用具体的结果表明你所推荐的方法是最好的。这需要言出必行和脚踏实地,光是传教式地说你听到或读到所谓最好的方式是行不通的。

如果你想要团队中的开发人员能够开发他们的技能和个人发展,那么你最好能够做个榜样。你应该比别人花更多的时间用于学习新的东西,与其他人分享你所学到的内容。你应该写一些博客分享你的学习进展,并鼓励大家一起来学习。

问题的关键是,如果你希望大家能跟随你,那么你必须先带头,以身作则。

敢于承担责任

当领导者犯错的时候,谁该承担责任?

对,是领导者。

当团队成员犯错的时候,谁该承担责任?

对,还是领导者。

如果你想成为首席开发人员,那么你必须敢于承担责任,不仅要敢于承担自己的错误,还包括团队其他人犯的错误。

我知道这一点很多人打心眼里是不认同的。我也知道,当我建议大家为别人的失误承担责任时,大多数人是嗤之以鼻的,但我依然要实话实说。

如果你不愿意承担责任——我的意思是全部的责任——不愿意承担团队的失误,那么你就不应该成为首席开发人员。

不过这并不意味着你就不能成为一个好的团队成员。也不能说明你不能为团队的成功做出贡献和帮助别人进步。

我只是说,如果你想成为首席开发人员,那么你必须做好准备——心甘情愿地——承担团队失败的责任。

一个好的领导者会欣然接受这个责任。

一个好的领导者敢于一力承担责任,保护团队免受指责,这样团队成员就可以自由地冒险,这样团队成员就不会浪费多余的时间为别人擦屁股。

就像我之前说的,领导职位并不适合每一个人。

哦,现在又多了一个承担责任。

猜猜团队的成功会归功于谁?

领导者?

No。这是一种约定俗成的单边协议。

是的,领导者是团队成功的主要负责人,但他或她从不将功劳占为己有。

相反,一个好的领导者会将成功归功于团队。

还记得我有说过成为首席开发人员是一个吃力不讨好的工作吧?

促进交流

一个良好的首席开发人员不仅要为团队的行为负责,而且还应该充当与其他团队、管理人员、业务人员及其他任何需要进行交互的人的代言人。

这并不意味着,首席开发人员就是唯一一个与团队外的人交流的人,但首席开发人员往往是负责传达团队的愿景和想法给他人,特别是非技术人员的人。

作为首席开发人员,你得能清楚有效地与非技术人员交流技术解决方案,同时避免冲突。

这不是一件容易的事,特别是当你要说的是坏消息的时候。人们往往喜欢迁怒于报信者。

与“业务”进行沟通的最佳方式是,首先确保自己能够清楚地了解正在构建的软件的具体进展,以及正面临的技术挑战。

你越明白这是怎么回事,就越容易传达给别人。

这意味着,你需要不断地去了解大家都在做什么,以及面临着什么样的挑战,并且在解说的时候你还需要转化成非技术术语。

这需要练习,但却是首席开发人员必备的技能,因为大部分正在构建的软件需要与利益相关者和客户进行沟通。

特别是当你需要指出为什么“业务”的某个点子不可行或不是手头问题的正解时,情况变得更加困难了。

人是很容易屈服于权威之下的——然后要么承诺交付不了的东西,要么同意一个不认同的解决方案——当然也有人敢于大胆反对那些站在你技术优势对面的任何人,但你得坚持立场无所畏惧。

优秀的首席开发人员能够理解业务需求,能够与决定或立场背后的非技术推理产生共鸣,然后提出一个明确,理性的论点,以促成提议的解决方案。

优秀的首席开发人员知道什么时候可以妥协——可能不是最优的,但会避免不必要的冲突,也知道什么时候应该坚定立场,为了不让团队不堪重负或不承诺那些不能交付的任务。

优秀的首席开发人员能促进团队和其他部门间的交流。

帮助大家做到最好

首席开发人员对团队造成的最有利的影响是,他们的存在能够提高其他开发人员的执行水平。

如果你想成为一个好的首席开发人员,那么你不仅需要不断促进自己的个人发展,还必须激励其他人和你一起进步。

作为首席开发人员,你应该每天花时间学习和阅读最新的技术和趋势,以便于尽可能地跟上技术技能当前的发展脚步。你应该确保你对于你的团队正在使 用的技术理解得最为透彻——如果可能的话——这样你就可以成为你的团队的可靠支持,你就可以自信地引导他们往更好的技术方向前进。

同样地,你应该鼓励你的团队成员开发和提升他们自己的技能。你应该给他们资源来做到这一点。你应该分享你正在学习的东西,并指引团队成员以帮助鼓励他们专业化地成长。

你应该尽一切可能来确保你的团队具备成功所需的要素,同时你还应该表现出你就自己而言非常关心他们个人的成功和成长。

你的关心会引起他们的重视,更高水平地完成工作任务的可能性也会更大。

成为一个首席开发人员并不是一件容易的事

我在这篇文章的开头就提到,你必须得问问自己你是否真的知道成为首席开发人员意味着什么,或者你是否真的想成为一名首席开发人员。

这工作不容易,甚至可能是吃力不讨好的,它可以涉及到很多的牺牲,但如果你关心其他人的成功,并愿意投入时间和精力来帮助大家做到这一点,那么你有潜力成为一名伟大的首席开发人员。

但是,如果你只是追求更高的职位,或者是可以指挥别人怎么做的权力,或者如果你的动机完全是基于成为首席开发人员之后的加薪,那么你会发现自己在这个位置上步履维艰。

所以,好好地想一想,你是否真的想成为首席开发人员,如果你已经下定决定的话,那么要谦虚,要敢于承担责任,要尽你的力量使你的团队——以及团队成员——尽可能地成功。

-

译文链接:http://原网站已经失效/article/tips-for-leader-programmer.html

翻译作者:码农网 – 小峰