避免成为优秀程序员

oschina
 oschina
发布于 2016年07月25日
收藏 35

我曾经和我认为优秀的程序员一起工作,但是他们是真正优秀的程序员吗?是什么让他们如此优秀?(或者,他们只是普通的程序员?)

最近读到Mark Pearl博客里一篇名为《Programming, a Subset of Writing》的文章,其中的观点让我十分推崇,尤其是下面这段:

优秀程序员和普通程序员最大的区别在于,优秀的程序员会使用整洁、易于理解的方式进行编程,任何不必要的复杂代码均不会出现。和我工作过的那些真正优秀的程序员总是尊学这样的编程步骤:写代码、重构、进一步重构。

就像日常生活技能一样,提高自己的办法唯有不断练习, 但是除了重构和进一步重构之外,你还能做些什么?

还有一种提升自我的方法,很简单,只需要对编程的其他重要要素保持开放的心态就好了。如单元测试、异常处理甚至交流技巧都非常重要。如果忽略或轻视这些因素也许会导致你过度自信,甚至成为一个自负的人。

我认为鼓吹“忽略实际情况,循规蹈矩地遵守软件开发实践就能成为一个优秀程序员”的说法非常荒谬。有时我会认为他们只是些 “自负的程序员”,虽然,老实说,他们中的一些人还是很优秀的。

我非常赞同我以前的同事 Russell Politzky 曾经说过的一句话:

那些自负的程序员往往是教条、狭隘和不切实际的。在我们的业务中,这会导致他们做出不合适的和有缺陷的设计。

如下是一些程序员经常挂在嘴边的话:

  • 所有的测试必须是单元测试

  • 要不惜代价达到100%的代码测试覆盖率

  • 所有使用mocks/stubs的测试,必须基于mock库进行实现

  • 不管业务目标是什么,所有的应用程序都必须建立在DDD模式之上

  • 所有使用数据库的程序必须使用ORM来操作数据

  • 不使用ORM是非常糟糕的,而且难于维护

  • 代码注释不应该存在于代码中,因为存在注释表明代码不够清楚明了,不能直接表达其含义,应该总是使用代码来表达程序的含义而不是注释

  • 任何一个你产出的文档,比如说设计文档,总是会过时的,用处很少

  • 你唯一需要的文档就是代码

  • 你唯一需要的模型也是代码

  • 自顶向下的设计是不会成功的,这种尝试总会失败,拥护这种设计的人只是没找着门路,最终他们还是会折服于“演进式设计”所带来的优越性,没错,就是TDD

  • 除了面向对象,你用别的编程范式根本写不出好的软件,因为只有OO能降低复杂度

你认识这类程序员吗?如果是,你认为他们的水平如何?经验表明这类极端的思维,既不是完全正确也不是完全错误,只是不合逻辑。

更加切实的考虑和合理的推理才能帮助你成为一名优秀的程序员。磨练技艺,增强技能固然很好,但是当我们在做这些事情的时候,应该从实际情况出发,认真考虑实施其所需的范围、成本、环境等各种因素。将这些合理的因素纳入考虑范畴需要成熟的思考,才能成为优秀的程序员。

当然,也需要大量的练习。

稿源:ThoughtWorks洞见

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 OSCHINA 社区 [http://www.oschina.net]
本文标题:避免成为优秀程序员
加载中

最新评论(25

一只囧蟹
一只囧蟹
做菜做得好,要饭要到老~~~周星驰
冬天之雪
冬天之雪
这篇文章的作者想表达什么?
sidney9111
sidney9111
还有就是joel on software,
也不一定是国外的月亮才是圆的,但是你真的了解什么是自上而下的设计么?只要有几年经验你也会了解的,我只是普通程序员,其它程序猿也可能了解
自上而下,规格文档,这是比尔盖茨定下的规矩,据说他老妈是ibm总裁,这是30~40年前的规矩
其实早已过时
但是不是过时就没用了?现在大把程序猿在学,大把公司在用?那是不是就不能改变,不能推行改进?
答案是否定的
重构本身是一个改进
那是不是重构就解决软件开发所有问题?
或者是不是单元测试就解决软件开发所有问题?
又或者单元测试+重构就能解决所有问题了吧
答案还是否定的
真正的答案只有发生在你思考并实现的过程,并不在书本中
12叔
12叔
没有模式没有套路
罗先生

引用来自“笔阁”的评论

版本更新真快。

之前写的vue.js free内容可以边学边练的,感觉跟不上了快。
http://www.hubwiz.com/course/566e67417e7d40946afc5ddc/
广告吗? 看网站 还挺好的。
sgq0085
sgq0085
作者很牛逼 然后写东西随便写的 后来发现太乱了 开始归纳自己的方法 后来又发现方法不够全面 又开始各种参照现有的模式 再搞个新的东西出来 然后各种推介 再被另外一批人看不起
sweeeeeet
sweeeeeet
关于写代码、重构,说的还是很中肯的
飞天奔月
飞天奔月
观点比较新颖,建议 标题 加上引号 避免成为"优秀程序员"

因为 真正的 "优秀程序员" 会从实际出发, 不是一根筋的
wffger
wffger
我的脑子就没有模式,太赖了,没看过套路
jQer
jQer
所以,你选择成为一个垃圾,写出一大堆垃圾代码,然后和公司一起倒闭,到大街上卖水果
返回顶部
顶部