有人在 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. 編譯:伯樂在線 – 黃利民 |