转自伯乐在线,至少在我身上是应验的

 

导读:有人在 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. 把编程视为生命中的重要部分,如同生命所需的空气;

如果你是白天工作型程序员,你看到夜晚工作型程序员,会认为他们不会享受生活。当他们在工作中遇到一些很酷的新技巧而兴奋时,你还会嗤之以鼻。

去年12月份,swizec.com 的博主写了一篇文章:《为什么程序员喜欢在深夜工作?》,其中是这样写的:

有句还挺受欢迎的话是,程序员就是把咖啡变成代码的机器。

果然,随便问一个程序员什么时候效率最高,很有可能他们会说大多是深夜的时候。有些早点,有些晚点。常见的是:在凌晨4点起床,赶在吵闹的一天开始前完成一些工作。另外一些喜欢在凌晨4点睡觉。这种做法的目的是避免干扰。但是你可以锁上门啊,为什么夜晚这么特别呢?

 

不光是程序员,对不少行业的从业人员(作家、编辑等)来说,夜深人静时,往往是最容易找到灵感,效率也很高。并且一般进入工作状态后,精神状态甚 佳,也不怎么困,不知不觉就到三四点了。记得在网上看过消息,说晚上11点到凌晨1点这两个小时的睡眠效果最佳。如果这两个小时没睡,白天再补觉,常常也 还是晕乎乎的。熬夜对身体的危害,前天转发的一篇文章已有说明,也无须多言,大家在微博上经常看到不少年纪轻轻的IT或创业人士英年早逝的资讯。如果遇到那种非得通宵加班的项目时,那该怎么办呢?不妨在晚上11点就睡觉,过1点后再起来干活。

 

补充:Mitch Denny 的原文后面有很多精彩回复,由于得翻墙,挑选转摘一些评论:

 

James Denning:

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.

 

suhail:

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.

 

Stuart:

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.

 

solprovider:

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.

 

如果你还想看更多评论,还是翻墙吧。另外,建议程序员平常得自备一把梯子。