你是优秀程序员吗?
原作者:
来源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”.
当然,不可能每个程序员都能简单地对号入座。重点是,优秀的途径有很多种。作为一个程序员,这四种人才都需要大力培养。当你面对任何困境,都能找到合适的人来解决,这才是真正的优秀。
相关文章: