悲催的程序員悖論
題目中所指的程序員悖論的定義如下:
優(yōu)秀的程序員常常會(huì)花大部分的時(shí)間去做他厭惡的工作,使用他同樣厭惡的工具和技術(shù)。 |
這從某種意義上來說是個(gè)悖論。通常我們的直覺是,差勁的程序員才會(huì)把時(shí)間花在蹩腳的技術(shù)上,而優(yōu)秀的程序員的時(shí)間是用在高新技術(shù)上的。沒錯(cuò)吧?我在實(shí)踐中發(fā)現(xiàn)了這個(gè)悖論,而直到后來我才明白原因。且聽我一一道來。
程序員鄙視什么樣的工作?
對(duì)于那些有經(jīng)驗(yàn)的程序員而言,簡(jiǎn)直就是明知故問,不過在這里我主要是給非編程人士解釋一下。
如果一件事完全可以自動(dòng)化完成,那么那些優(yōu)秀的程序員通常是對(duì)此不屑一顧的。如果強(qiáng)迫程序員去做完全可以讓機(jī)器(通常是計(jì)算機(jī))就可以辦到的事,他會(huì)氣得想揍你一頓。程序員的愿望是能讓機(jī)器來干完所有的活,是所有哦,哈哈。而只有那些機(jī)器辦不到的事,程序員才會(huì)有興趣去搗鼓一下。
這是任何一個(gè)身心健康的程序員的本能想法。
下面給一個(gè)需要自動(dòng)化完成的事例。假如程序員在瀏覽代碼文檔的時(shí)候,需要修正791行的bug。文件總共有1000行,但是他的文件編輯器只能顯示30行。大多數(shù)人會(huì)直接選擇向下滾動(dòng)——滾動(dòng)——滾動(dòng),然后一直到791行。但是作為優(yōu)秀的程序員,能干這么愚蠢的事嗎?他會(huì)寫一個(gè)能自動(dòng)跳轉(zhuǎn)到具體行數(shù)的編輯器。例如,“Ctrl-L -> 791 -> Enter” 就是我所用的編輯器。
這個(gè)例子很簡(jiǎn)單,復(fù)雜的也有。
究其原因就是,一個(gè)優(yōu)秀的程序員討厭去做這種機(jī)械的、重復(fù)的事情,因?yàn)檫@些繁瑣的小事會(huì)打斷他們的思維過程。思維是那么的脆弱,一旦被打斷,就像火車一樣,需要整理一段時(shí)間之后才能再次啟動(dòng)。如果每隔5分鐘就需要做點(diǎn)手動(dòng)的工作,那么你的思維火車恐怕到不了任何地方。在日復(fù)一日的工作中,程序員需要使用各種工具各種技術(shù)來完成各種項(xiàng)目。所以無怪乎他們會(huì)喜歡那些“體力勞動(dòng)”相對(duì)較小的工作,并且特別厭惡需要大量手動(dòng)操作的項(xiàng)目工作。他們喜歡幾乎都不需要手動(dòng)的技術(shù)和工具(比如Python,Django 和git),討厭需要大量手動(dòng)的技術(shù)(這個(gè)我就不給例子了,大家自由發(fā)揮)。
但是因?yàn)楣ぷ餍枰?,程序員在使用可愛迷人的自動(dòng)技術(shù)的同時(shí),也不得不使用面目可憎的需要手動(dòng)操作的技術(shù)。這時(shí)候區(qū)別就來了,優(yōu)秀的那些程序員會(huì)試著不去運(yùn)用這些惱人的技術(shù),但是也有他根本無法避免的時(shí)候。有時(shí)是因?yàn)樗龑懼能浖男枰?,比如,所有程序員在做WEB程序時(shí),無法避免的要使用令人頭大的HTML語言。有時(shí)候這些落伍的技術(shù)不能被淘汰的原因僅僅只是因?yàn)榇蠹叶荚谟?,而程序員需要和大家協(xié)作這么簡(jiǎn)單。
時(shí)間都被浪費(fèi)在這些落伍的技術(shù)上
從這個(gè)角度來看文章開頭提出的悖論就容易理解了。這種差勁的技術(shù)占用了程序員大部分的時(shí)間和精力,而那些好的技術(shù)則不是。每個(gè)程序員每天的時(shí)間和精力都是有限的,就因?yàn)檐浖旧淼膯栴},使得他們把大部分的時(shí)間精力致力于那些讓他們討厭的技術(shù)和工作上。就是這個(gè)原因,那些優(yōu)秀的程序員苦不堪言!
我特別希望能在文章的***提出解決這個(gè)問題的方法什么的,但是很遺憾沒有。我們能做的就是盡量減少不好的技術(shù),讓它們滾出我們的生活,而對(duì)于那些不能避免的,牢記一個(gè)字——忍吧。