高效能程序员的修炼-Jeff Atwood
作为一名谦逊的程序员,应该承认的事实是:你写的代码在任何时候出了问题,那一定都是你的错!
还有一句话:任何诡异的问题背后总会犯有低级的错误!
不要浮躁,代码得慢慢写!
生命中最困难的,是想清楚你真正想要做的事情,而不是学上一堆假设将来有用的东西。
程序员的八种境界
-
不朽的程序员
最高境界,人虽死了,但代码仍活着,为后人景仰
代表人物:Dijkstra, Knuth, Kay
-
成功的程序员
广泛知名度,运营着不错的公司,控制着产业链
代表人物:比尔, 马化腾
-
知名的程序员
有份不错的工作,在圈子里很有名
-
胜任的程序员
有不错的能力,有份满意的工作
-
普通程序员
应付一般的编程工作
-
业务程序员
热衷于编码,利用闲暇时间开发一些好玩的东西,有想法、充满激情
-
低调程序员
比较有个性,但不张扬
-
烂程序员
技能极其匮乏,通常是阴差阳错地干上这一行。没有金刚钻,却偏偏揽了瓷器活
杰出程序员与普通程序员最关键的差别不是在于他们掌握了多少种语言,而是他们能不能把自己的想法表达清楚。
所以,作者强烈推荐程序员去多书写,写博客。
如果你只顾着写代码,连讨论、反思的时常都没有,将得不到真正的进步,你必须在磨炼工艺与思考如何提高工艺之间找到一个适当的平衡点。
只要有可能,请远离干扰,并且避免同时做多个项目。如果实在避免不了,关于你在任务并行的情况下能做多少事,请保持清醒认识,也坦率地让其他项目人知晓。你要知道,你很可能力不从心!
成功很少是由创意的质量决定的,但它时常由你执行的质量来决定。
如果你把一个好创意给一个普通的团队,他们会把它搞砸;如果你把一个普通的创意给一个好的团队,他们会对它加以完善,或者,他们会把那个创意丢掉,想出更棒的
Jeff 认为招聘程序员的步骤:
- 首先要求通过几个简单的 hello,world 在线测试
- 提出要看看他们的文件夹
- 只雇佣认同公司文化的人
- 进行一个周详的结构化电话面试(重点是筛选淘汰,用简单的方式 pass 掉滥竽充数的人)
面试程序员时,Jeff 的方式是让***对他们的专业领域做 15 分钟的演讲与展示,他认为很有效,因为能很快看出来:
这个人对他正在做的事是否有激情?
他能在小组里有效地沟通吗?
他对他的专业领域是否有很好的认识?
你的团队会喜欢跟这个人一起工作吗?
每个程序员都应该学会一件事,那就是推销自己、推销自己的代码和项目。
如果想从优秀发展到卓越,你必须培养起有效沟通能力,与同事、与老板,与用户,最终与全世界。