导读：有人在 dzone 网站上提交一篇旧文 The Day Programmer vs. The Night Programmer（须翻墙） ，还是 Mitch Denny 写于2006年的文章。成了一个热帖，引发了不少程序员的讨论。 Mitch Denny 是一家公司的 CTO。伯乐在线编译此文，文章如下。
- 1. Day Programmers 白天工作型程序员
- 2. Night Programmers 夜晚工作型程序员
- 1. 通常处于被领导，很少担当领导；
- 2. 难以应对处理复杂情况；
- 3. 很难想象出解决方案；
- 4. 不会在家打开开发工具；
- 5. 通常不参与技术开发社区；
- 6. 把编程仅当为“一份工作”；
- 1. 通常都担当领头角色
- 2. 对复杂事情，有深刻理解；
- 3. 可以构想出解决方案，并有设计相关的第六感；
- 4. 会在家打开 alpha/ctp/beta 版本的工具；
- 5. 参与用户群组和邮件列表；
- 6. 把编程视为生命中的重要部分，如同生命所需的空气；
补充：Mitch Denny 的原文后面有很多精彩回复，由于得翻墙，挑选转摘一些评论：
You forgot to say that Night Programmers often spend nights fixing the problems day programmers cause (hence partially disagreeign with an earlier comment).
Day programmers do participate in newsgroups – whining how there’s no work for them in the skills they haven’t bothered to update.
i won’t agree with the post, i am a programmer and i have seen some geeks and nerds come up with awesome solutions, be it day or night, it depends upon the prgrammer at work, some geeks are early morning sparrows and some are night owls, what ever time your thinking potential is active, its about that.
Personally, I think you are wrong… In my opinion the ‘day’ programmer definition you have, applies to stupid people who have managed to slip through an interview process. In my experience, there are plenty of these types around, and tend to be the types who like to drag and drop, place all of their domain logic in an anonymous inner listener, or on the code behind file.
The ‘night’ programmer definition sounds like the sort of guy who wants to solve the world in code, when all that is required is a simple web page. He over engineers every solution to the point that it is so complex, noone else on his team understands it. He architects a solution in his head and refuses to budge on it… even when it is wrong. He likes to put down other more simple solutions to his, because they are not as ‘impressive’.
To be honest, in these cases, the night programmer is the guy who will cause you the most trouble.
I see the distinction between programmers lying along a different line… the one’s who can solve problems in a simple way, and the one’s who cannot.
This states two things, 1) They are clever enough to solve the problem, and 2) they are clever enough avoid complexity.
The Real Scoop：
We need both, and we suffer with both. Don’t appluade yourself becuase, your either. The Problem with Night programmers is that they rarely finish anything. they’re great at introducing new concepts, bleeding edge technologies, and novel solutions, but rarely actually able to apply to completion or within the timeframe of the actual task or project at hand.
In the real world programming is used to make task more efficient or create a product to sell. Both which equivalate \(\)$. Day programmers on the other hand are able to focus and produce within a defined set of parameters, they are the ones who though often lack creativity or ability to quickly grasp or apply new concept neccessary to optimize a task/project, or independently troubleshoot, but who actually write the code neccesary to complete the task/project.
Thus creating a viable product or solution that may actually produce income to pay both thier salaries and that of the prima dona’s who love to create and play with all the toys but forget that everything still cost money. So what’s the trump, I appluade the hybrid, those scarse individuals who are able to both find and create novel solutions, as well as actually apply them and actually complete the project or task at hand. We need them all. So don’t over-rate yourself becuase you are one or the other, nor berate the other. Strive to reach the next level, the hybrid capable of working anytime of day, with a passion and preserverance to program.
This is not about the time of day people program. It is not about competence. There are a few competent day programmers. There are many incompetent night programmers.
The difference is the passion.
A night programmer was born to write software. He learned how to program on his own. He went to college because he heard college let the students play with really cool technology, and failed out because he spent all his time playing with really cool technology. If he gets a corporate job, he makes waves by suggesting things could be better and gets fired for not appearing 9 AM Monday morning after his Friday programming marathon did not end until 4 AM on Monday.
A day programmer chose computers as his major in college because he heard programmers were paid well. He graduated without knowing how to use a command line. He makes a good corporate employee, working nine-to-five and not thinking about the job at home. He does not make suggestions about how to improve technology; he does not know enough to think of one.
Businesses survive because they occasionally accidentally hire a night programmer who fixes everything the day programmers wrote before he gets fired.