本文的主要内容来自于《极客与团队》。
与人合作很重要
作者写这本书目的是帮助程序员改进理解他人、与人沟通以及与人合作的能力,进而让开发软件变得更有效率。
在作者维护开源项目的过程中发现,一个项目成功的关键不仅仅是写出漂亮的代码,所有人向着一个目标一起合作也是同样重要的,然而学校中却没有任何一个课程教工程师如何与人高效的合作。《人件》是一本好书,不过它是一本教管理人员怎么带领团队成功的著作。
编写软件是集体项目,人的因素对结果的影响不亚于技术因素。只要你能在这个“软技能”上下点功夫,就能达到事半功倍的效果。
天才程序员的传说
如果你喜欢篮球,你可能会崇拜乔丹,科比和库里等篮球明星,程序员也一样,也有自己的偶像,如Linus Tovalds、Richard Stallman和Bill Gates等。这些英雄很了不起,Linus自己就写出了整个Linux,对吧?
但其实Linus只写出了一个初级版本,虽然也是一项了不起的成就,但和Linux的规模相比也只是冰山一角,有几百名顶尖的程序员参与了开发,Linus真正的成就在于领导并协调他们的工作,Linux之所以如此耀眼是这些人通力合作的结果。
人们本能的会去寻找领导者和榜样,崇拜他们,然后模仿。编程世界也不例外,“技术英雄”的现象都要被神化了。我们都希望写出Linux那样改变世界的东西,或者设计一门了不起的编程语言。
我们都希望自己是天才,获得一个激动人心的灵感,然后闭关数周甚至数月将它完美地实现出来,最后向全世界发布自己的作品,名动天下。
但实际上你可能并不是天才,就算你是天才,也容易犯错,而且好点子和高超的技术并不是软件成功的充分条件,你的职业生涯能否成功完全要看你能不能与人合作。
事实上所谓的天才传说只是我们缺少安全感的一种表象罢了,很多人都害怕分享自己刚开始做的东西,因为他们害怕同行发现自己的错误,知道代码背后的作者并非天才。所以产品完善之前还是先藏拙吧。
隐藏是有害的
你不确定自己做的事情是对的,方法也是对的,而不是在重复劳动。越早征求意见和反馈,就能把风险降低。记住一个原则:确保失败尽早发生,尽快发生,经常发生。
团队才是王道
改变世界的成就几乎都是集体智慧努力的结晶,因此建立一个全明星团队才是真正的目标,记住一点就是软件开发是集体项目。自己一个人躲在小黑屋,靠自己神神秘秘的搞发明创造不可能改变世界,另亿万用户受益。你需要合作,告诉别人你的想法,让别人帮你分担劳动,打造一支出色的团队。
社交技巧“三支柱”
打造一个优秀的团队很难,而团队合作是开发成功软件的捷径,我们需要了解社交技巧“三支柱”(HRT),让团队中人与人之间有良好的互动。
谦虚(Humility)
人不是万能的,谁都会犯错,我们必须不断提高自己。
尊重(Respect)
必须真心实意的关心同事,他们都是活生生的人。
信任(Trust)
要相信别人的能力和判断力,懂得放权。
如何更好的应用HRT
放下自负
谦逊和懦弱是两回事,自信没什么错,只要别搞得好像自己什么都知道一样而过了头,更好的思路是想办法促成集体荣誉感。
学会批评和接受批评
学会批评的一个例子:
不要说:“老兄,你完全把这个方法的控制流程给弄错啦。你应该用xyz模式才对。”
而要说:“Hi,我有点看不懂这段代码的控制流程,要是用xyz模式会不会更清楚一点?”
要学会接受批评,要知道一般对方是针对代码,而不是针对你本人。
快速失败;学习;迭代
不要等到完美的时候再发布软件,把不完美的软件展示给用户是可以接受的,通过反馈可以快速的接受反馈,总结失败经验,学习和迭代。
为学习预留时间
就算成为一个领域的专家也不要停止学习,技术领域变化很快,如果不持续进步,那很容易落伍。
学习保持耐心
每个人的编程习惯不一样,要有耐心,以完成目标为导向。
对影响保持开放的态度
接受意见改变自己没什么大不了,如果不知道一件事,有时候最好的答案就是:我不知道。因为用不着提防别人会攻击你,你的同事是合作者,不是竞争者。
金句
- 计算机编程里最难的问题:和其他程序员打交道。
- 十倍程序员:影响力不仅来自技术,也来自同事和用户的共鸣感。
- 编程技术能让你混口饭吃,但要是能把它和与人合作的能力结合起来,你就可以改变世界。
网友评论