你是优秀程序员吗?

标签: 程序员 | 发表时间:2011-08-20 17:52 | 作者:kneep Dexter.Yy
出处:http://www.yeeyan.org

原作者:
来源Are You a Good Programmer? | techiferous
译者kneep

If someone asks you to recommend a good programmer, who comes to mind? Do you consider yourself a good programmer? What criteria do you use to judge?

如果有人要你推荐一名优秀的程序员,你会想到谁?你认为你自己是吗?你的评判标准是什么?

In thinking about this, I realized that there are different ways that a programmer can be good. So I present to you The Four Kinds of Good Programmers. And in celebration of Whyday, I include quirky Why-styled illustrations* for your viewing pleasure!

思考了这个问题,我意识到程序员可以以各种方式做到优秀。所以我向你推出“四种类型的优秀程序员”并附上插图。


  
The Philosopher

哲学家


The philosopher loves to write well-defined, well-structured, beautiful code. That the program will be implemented is assumed; the elegance, robustness, and flexibility of the solution is where the philosopher’s energy goes. The philosopher cannot go an entire week without mentioning “best practices”.

哲学家喜欢编写定义良好、结构良好的漂亮代码。程序构思好后,哲学家会花大量时间在方案的优雅性、健壮性和灵活性上。一个星期不谈“最佳实践”,哲学家就会觉得浑身不爽。

Motivation

动力

The philosopher is ultimately driven by a need for safety and security which is expressed through tight control. A well-ordered, predictable system that always follows clear principles is the philosopher’s beautiful vision of heaven. Chaos is anathema. Beauty is found in order.

严密控制带来安全,哲学家的终极动力源于此。组织良好的,可预测的系统,清晰的设计原则是哲学家的理想境界。混乱是绝对不能容忍的。秩序产生美。

Superpowers

超能力

can build code that you can bet your life on

●能写出超级稳定的代码,稳定到你敢把命压上

can create an environment where the codebase stays in pristine shape, regardless of the skills of other team members

凭一人之力就能保持代码的清晰,不管其他团队成员的水平如何

if they build it, it will scale

代码的伸缩性好

The Dark Side

劣根性

is always right

自认为总是正确的

gets into petty arguments about 80-column line limits

连80列这种问题也要争论(译者注:老计算机的终端只能显示80列,为了让这些古老的终端阅读方便,写代码一般每行不超过80个字符,但随着显示器越来越大,这个原则变得可有可无)

cares more about test coverage than customers’ problems

关注测试覆盖率多于关注用户问题

is never finished

没完没了

Pull Their Chain

忌讳

mix spaces and tabs

空格和Tab混着用

avoid atomic commits

不遵守原子提交(译者注:原子提交的意思是,如果解决某个问题所修改的代码包含在多个文件中,那么这些文件需要一次性一起提交,这样可以保证任一时刻代码库的状态都是一致的)

sign them up for improv

给他们报名参加即兴表演

  
  
The Inventor

发明家


Something quirky and cool is always coming out of the incessantly prolific inventor’s lab. No one asked for it, but that didn’t stop the inventor from making it.

发明家的实验室源源不断地出产异想天开的好东西。没人求他们,他们就是自己想做。

Motivation

动力

The inventor is driven by a need to explore and to birth something completely new and unique into the world. Curiosity compels the “what ifs” to actualize.

发明家的动力来自探索和发明全新的事物。强烈的好奇心促使他们把假设变成现实。

Superpowers

超能力

creates novel technology that is (sometimes) useful

经常发明有用(或者将来有用)的新技术

has infectious enthusiasm

有感染力的狂热

makes you say, “Gee, I never thought of using it in that way!”

让你赞叹:“哇靠,这样玩也行?”

The Dark Side

劣根性

not invented here

非我发明症(译者注:是一种文化,指不信任、不使用非自己发明的技术)

Pull Their Chain

忌讳

knock down their ideas by saying, “but that’s not the industry standard”

用这句话来打击他们的创意:“这不是工业标准”


  
The Conqueror

征服者


No problem is too hard for the conqueror. To them, programming is an odyssey of increasingly demanding Herculean challenges to overcome. The conqueror is driven and competitive, but not necessarily competitive with other people.

征服者没有难题。对他们来说,编程只是一场征服之旅,不断去克服各种挑战。征服者很争强好胜,但不一定是和别人争。

Motivation

动力

The harder the puzzle, the bigger the rush.

题目越难,冲得越猛。

Superpowers

超能力

can solve provably unsolvable problems

能解决那些不可能解决的问题

sharper focus than a laser, more endurance than a marathon runner

比激光更敏锐的注意力,比马拉松选手更好的耐力

is a walking encyclopedia of algorithms

算法活辞典

The Dark Side

劣根性

will turn a trivial problem into a complex one to make solving it more pleasurable

容易化简为繁,因为这样解决起来更爽

is always bored

永远很无聊

Pull Their Chain

忌讳

assign them work on a CRUD web app

让他们去做一个CRUD网页应用(译者注:CRUD指Create、Read、Update、Delete,文件系统最基本的操作,这里引申为过分简单的应用)

force them to use only imperative languages
强迫他们只能用命令式编程语言
give them a sudoku puzzle book

给他们一本“数独”谜题集(译者注:数独是一种填字游戏)


  
The Problem Solver

问题解决者


The problem solver is goal-oriented and ruthlessly pragmatic. A well-defined problem will be solved, and solved quickly by whatever means necessary.

问题解决者是目标驱动的,冷酷的实用主义者。每个有明确定义的问题都会被他解决,诡异地不择手段地解决。

Motivation

动力

The problem solver is motivated by creating value, and so is less focused on the creative process and more focused on delivering the desired outcome.

问题解决者的动力来自创造价值,所以他们关注结果多于关注过程。

Superpowers

超能力

listens

倾听

launches

付诸行动

uses technology to solve business problems instead of to create business problems

利用技术来解决现实问题,而不是乱上添乱

The Dark Side

劣根性

angers programmer purists

容易激怒纯粹主义程序员

can be opportunistic

机会主义者

Pull Their Chain

忌讳

give them busy work

给他们繁忙的工作

assign them programming tasks with no context whatsoever

分配给他们没头没脑的任务

Becoming a Good Programmer

成为一个优秀的程序员

Of course, programmers don’t neatly fit into these four arbitrary categories. The point is that there are different ways to be a good programmer, and as a programmer, take the time to nurture all four of these types of programmers in yourself. You are a good programmer when, for any given situation, you are able to summon the appropriate “inner programmer”.

当然,不可能每个程序员都能简单地对号入座。重点是,优秀的途径有很多种。作为一个程序员,这四种人才都需要大力培养。当你面对任何困境,都能找到合适的人来解决,这才是真正的优秀。

添加新评论

相关文章:

  是什么成就一个伟大的程序员?

  人们最初厌恶编程的10个原因

  划分软件开发人员的两种尺度

  为什么新人不会编程

  技术面试能发挥多大效用呢?

相关 [程序员] 推荐:

普通程序员、文艺程序员、2B程序员

- 可可 - 宇宙的心弦
希望能引起广大苦逼的正在学或者已经学过c++人的共鸣和会心一笑吧. 如何辨别自己在现实还是虚拟世界.

如何面试程序员?

- bluesnail - 阮一峰的网络日志
你要面试一个程序员,应该问他什么问题. 有人在Hacker News的讨论区里,请求指点,怎么才能在面试中发现合格的人. 众人纷纷出主意,有很多高质量的回帖,我觉得挺有启发,就整理出了下面这篇文章. 首先,最重要的是,你自己一开始就应该想清楚:. 哪些途径和方法可以发现这样的人. 只有明确这些根本性的问题,才能正确高效地完成面试.

程序员的本质

- Allen - 译言-电脑/网络/数码科技
来源What do programmers really do?.   很多人(包括我岳母)认为计算机变得如此智能,所以在不久的未来将不再需要程序员. 另外一些人认为程序员是天才,他们在电脑前能不断地解决复杂的数学难题. 甚至不少程序员对他们是做什么的都没有清晰的概念.   在这篇文章中,我想给不知情的人解释一下程序员到底是做什么的:.

程序员人生之路

- myartings - 博客园-首页原创精华区
   程序员人生之路(强烈推荐,分析的透彻. ),某程序达人的人生感悟,估计没有半个甲子的时间,是绝对不可能感悟出来的.    相对同时刚出校门同学从事其它行业而言优厚的薪水,以及不断学习更新的专业知识不仅仅让你感到生活的充实,更满足了你那不让外人知的虚荣心. 在刚出校门的几年中,你经常回头看看被你落在后面的同学们,在内心怜悯他们的同时,你也会对自已天天加班的努力工作感到心里平衡:“有付出才会有回报”这句话在那几年中你说的最多,不管是对自已的朋友们还是自已的爱人.

程序员装B指南

- Qing-Run - 博客园-首页原创精华区
1.电脑不一定要配置高,但是双屏是必须的,越大越好,能一个横屏一个竖屏更好. 一个用来查资料,一个用来写代码. 总之要显得信息量很大,效率很高. 2.椅子不一定要舒服,但是一定要可以半躺着. 3.大量的便签,各种的颜色的,用来记录每天要完成的事务,多多益善. 沿着电脑屏幕的边框,尽量贴满,显出有很多事情的样子.

程序员收入报告

- diaoxsh - cnBeta.COM
最近,波兰的程序员Chris(也叫KreCi)公布了他的第十四期程序员收入报告. 数据显示,上月是目前为止他收入最多的一个月. Chris的收入并不是指他的工资或薪水,Chris是一个自由职业者. 他的收入也不是来自个人承包软件工程的收入,他更像是一个果农,种了优良的果树,只要不断的给这些果树施肥浇水,这些果树会给他带来源源不断的财富.

程序员的利器-SourceInsight

- Alex - 博客园-首页原创精华区
作为程序员,大部分时间是在已有的代码上代码工作. 要对已有的代码进行调整,首先就要搞清楚当前代码中蕴含的逻辑关系. 所以常常有程序员调侃说花了大半天时间看代码,最后写代码的时间只有几分钟. 所以,对已有代码的分析质量将影响(甚至会决定)最终代码修改的质量. SourceInsight在代码分析上给予程序员极大的帮助.

程序员?还是小丑?

- Vingel - cnBeta.COM
和你从不认识的人坐在一起,试图弄清楚他是个程序员还是个小丑. 我没有想侮辱任何人的意思,而且,我是第一个要感谢这么多年的教育和努力终于把我变成一个专业小丑的人. 对于程序员新手,我充满怜悯,为了和缓的帮他热热身,我给了他一道温和的问题来消解我们之间的陌生. 我让Ada写一段程序,在纸上,打印出“hello“这个词10次.

程序员必读经典

- - 搜索引擎技术博客
你面试微软前必须要读的十本书:. Code: The Hidden Language of Computer Hardware and Software (《编码的奥秘》). Computer System: A Programmer’s Perspective (《深入理解计算机系统》) /Windows via C/C++ (《Windows核心编程》 / 《程序员的自我修养》.