說起程序員住拭,在我心目中的形象本來是這個(gè)樣子的:
冷靜挪略、酷炫历帚、聰明,沉浸在代碼的世界里杠娱,容不下其他任何事情的干擾挽牢,充滿魔性的雙手在鍵盤上來回敲打著,就能創(chuàng)造出改變世界摊求、改變生活的互聯(lián)網(wǎng)產(chǎn)品禽拔。
但是不知道從什么時(shí)候開始,“程序猿”這個(gè)詞進(jìn)入了我們的視線室叉,于是一直勤勤懇懇睹栖、為人低調(diào)的程序員們一下子成為了“黑”的代名詞,他們的畫風(fēng)突然就變成了這個(gè)樣子:
然后茧痕,就是無盡的被黑野来、被調(diào)侃:
這樣黑程序猿,我覺得很不公平踪旷,因?yàn)樗麄冋娴暮芘α褐弧⒑苄量唷MǔG闆r下埃脏,程序猿的生活好像只有寫代碼這件事搪锣。就算加班改bug到深夜,依舊跟打了雞血一樣彩掐。就算滿眼的疲憊构舟、滿眼的紅血絲,只要面對(duì)代碼堵幽,空洞的雙眼立馬變得風(fēng)情萬種狗超。不要嘲笑他們沒有女朋友,他們的時(shí)間都用去跟鍵盤“打情罵俏”朴下、跟bug“相愛相殺”努咐、跟代碼“濃情蜜意”了……甚至,面對(duì)美女殴胧,也不為所動(dòng)渗稍。
程序猿的生活也很簡(jiǎn)單,電腦团滥、可樂竿屹、泡面、餓了么灸姊,就可以是他們生活的全部拱燃,盡可能簡(jiǎn)單的生活,他們才能把更多的時(shí)間貢獻(xiàn)給代碼力惯,很多時(shí)候碗誉,在代碼面前召嘶,睡眠的優(yōu)先級(jí)是很低的,于是哮缺,每次他們緩緩把頭轉(zhuǎn)過來看著我的時(shí)候苍蔬,場(chǎng)面往往是這樣的:
因?yàn)殚L(zhǎng)期的熬夜、勞累蝴蜓,程序猿都老得特別快碟绑,無意中看到一個(gè)程序猿五年間的三張工作證,我忍不住哭了茎匠。
除了高強(qiáng)度的工作格仲,程序猿往往也背負(fù)著巨大的壓力,不多說诵冒,看下圖凯肋,自己去感受:
伴隨著這些壓力,伴隨著無休無盡的修改需求汽馋,為了自保侮东、為了生存,程序猿的“謊言”隨之而來豹芯,在老板悄雅、產(chǎn)品經(jīng)理、項(xiàng)目經(jīng)理铁蹈、策劃宽闲、客戶等這幾座大山的重壓下,程序猿究竟說過哪些謊握牧?讓我們一起走進(jìn)程序猿的世界容诬。
“謊言一
That's easy, it'll just take a couple of days.
這個(gè)很簡(jiǎn)單,只需要幾天的時(shí)間就可以完成沿腰。
“謊言二
It's just a temporary solution, it won't be used in production.
這只是一個(gè)臨時(shí)的解決方案览徒,它不會(huì)被用于正式的產(chǎn)品開發(fā)。
“謊言三
It's not a bug, it's a feature!
這不是bug颂龙,這是一個(gè)特征跋芭睢!
“謊言四
It's done. I just need to clean up a few things.
已經(jīng)完成了厘托。我現(xiàn)在只需要再清理一些東西就好友雳。
“謊言五
I am 90% finished.
已經(jīng)差不多完成90%了稿湿。
“謊言六
It will just take 2 minutes to fix !
這個(gè)只要兩分鐘就可以修復(fù)好铅匹!
“謊言七
Dev: This will take 10 days.
Boss: Can you do it in 5?
Dev: Sure!
程序猿: 完成這個(gè)需要10天。
老板:能在5天內(nèi)完成嗎饺藤?
程序猿:當(dāng)然包斑!
“謊言八
Yeah, it is a known bug.
對(duì)的流礁,這是一個(gè)已知的bug。
“謊言九
This is a hardware issue. Nothing to do with software.
這是硬件問題罗丰,跟軟件沒關(guān)系神帅。
“謊言十
"How much time do you need?"
"2 hours."
Then, 4 hours' gone, 1 day's gone.
"I'm on it, and very close to the end, but need more time."
“你需要多少時(shí)間?”
“兩個(gè)小時(shí)萌抵≌矣”
然后,4個(gè)小時(shí)過去了绍填,1天過去了霎桅。
“我正在做,已經(jīng)快完成了讨永,但還需要一點(diǎn)時(shí)間滔驶。”
“謊言十一
The code was working few minutes ago.
這代碼明明在幾分鐘之前是可行的卿闹。
“謊言十二
You forgot to clear your cache.
你忘記清你的緩存了揭糕。
“謊言十三
Lie: "It's just a prototype."
謊言:“這只是一個(gè)原型《亡”
Translation: This code is totally going to be used in the final project, unless it clogs up so much that we are literally forced to rewrite it (which won't take nearly as much time and is always worth it anyways).
真相:此代碼將完全被用于最終的項(xiàng)目中著角,除非它“阻塞”了進(jìn)程讓我們不得不在字面上重寫它(這不會(huì)占用同樣多的時(shí)間,但反正這么做是值得的)旋恼。
Lie: "I can totally have that out in like 3 days, tops."
謊言:“我完全可以在3天左右出樣雇寇。”
Translation: Two weeks.
真相:需要兩周蚌铜。
Lie: "I can't do that."
謊言:“我沒法做這件事锨侯。”
Translation: I probably can, and it may actually not take me that long, but I have no clue how at the moment so I don't want to sign myself up for it if I can help it.
真相:我應(yīng)該能完成冬殃,并且這件事實(shí)際上可能不會(huì)花費(fèi)我太長(zhǎng)時(shí)間囚痴,但是此時(shí)此刻我不知道該怎么做所以我暫時(shí)不想向別人保證我能完成它。
“謊言十四
Yeah, I tested it.
是的审葬,我測(cè)試過了深滚。
“其他更多的謊言
That's weird...
這太怪異了......
It's never done that before.
這以前從來沒有發(fā)生過。
How is that possible?
這怎么可能涣觉?
What did you type in wrong to get it to crash?
你輸錯(cuò)什么了以至于系統(tǒng)崩潰了痴荐?
I haven't touched that module in weeks!
我已經(jīng)好幾個(gè)禮拜沒有碰過這個(gè)模型了!
You must have the wrong version.
你用的版本肯定是錯(cuò)誤的官册。
It's just some unlucky coincidence.
這只是一些不幸的巧合罷了生兆。
I can't test everything!
我不可能測(cè)試所有的事情!
It works, but it hasn't been tested.
這個(gè)已經(jīng)完成了膝宁,但是還沒被測(cè)試過鸦难。
Somebody must have changed my code.
一定有人改了我的代碼根吁。
Did you check for a virus on your system?
你系統(tǒng)里的病毒檢測(cè)過了嗎?
You can't use that version on your system.
這個(gè)版本在你的系統(tǒng)上是不可運(yùn)行的合蔽。
It works on my machine.
這在我的機(jī)器上是正常的击敌。
“其他觀點(diǎn)
一、
If by 'lies', you are talking about intentional deceit, most of these answers describe a lack of experience. ... or self-delusion at worse.
如果說是“謊言”拴事,那么你們?cè)谡務(wù)摰氖枪室馄鄄m沃斤,但這里的大多數(shù)答案都在形容一種缺乏經(jīng)驗(yàn)的狀態(tài),或者說是嚴(yán)重的自欺欺人
But if you want ‘lies’; I'd saythe most common lies told by programmers are never verbalized. The most common lie is 'going dark'.
但是如果你想要謊言:我想說的是程序猿最喜歡說的謊言并不會(huì)用語言表達(dá)刃宵,而是直接“進(jìn)入休眠”狀態(tài)轰枝。
Going dark is when the programmer is thinking "I can't tell anybody my current status, so I'm not going to say anything until I get myself out of the jam I'm in. Then nobody will know the difference." Then they stop responding to all communication. The programmer might've been slacking ... or, more than likely, they're just really embarrassed about their honest lack of progress.
當(dāng)程序猿在想“我不能告訴任何人我的現(xiàn)狀,所以在我還沒走出我身陷的泥潭之前我什么都不能說组去。這樣就沒有人會(huì)發(fā)現(xiàn)我的異樣鞍陨。”于是他們停止所有的溝通从隆。程序員可能已經(jīng)懈怠诚撵,或者,更有可能的是键闺,他們只是對(duì)于當(dāng)前真實(shí)的項(xiàng)目進(jìn)度感覺到很尷尬寿烟。
二、
There are many times when I give an estimate, my project manager would slyly say, "2 days? OK, it will take 4 days." "1 week? It will take 2 weeks."
很多次當(dāng)我給出一個(gè)預(yù)計(jì)完成時(shí)間的時(shí)候辛燥,我的項(xiàng)目經(jīng)理總會(huì)狡猾得說筛武,“2天?好吧挎塌,應(yīng)該會(huì)是4天徘六。”“1周榴都?好吧待锈,應(yīng)該會(huì)是兩周∽旄撸”
He thinks doubling my estimate is a smart thing to do.
他覺得把我的預(yù)估時(shí)間翻個(gè)倍是一項(xiàng)聰明的決策竿音。
Then, after doubling it, sometimes, the estimate becomes unrealistic:
但是,當(dāng)他翻倍之后拴驮,有時(shí)候春瞬,這樣的預(yù)估就會(huì)變得不切實(shí)際:
Him: "2 weeks. It's a no go -- that takes too long."
Me: "I said 1 week. Not 2."
他:“2周,這不行啊套啤,時(shí)間太久了宽气。”
我:“我說的是1周,不是2周抹竹∠吆保”
More often than not, I do deliver on the estimate. But of course, there are times my estimates are off. But that's normal since estimates are estimates.
通常情況下止潮,我能在預(yù)估時(shí)間內(nèi)完成工作窃判。當(dāng)然也有估計(jì)錯(cuò)誤的時(shí)候。但是這也是正常的喇闸,畢竟預(yù)估只是預(yù)估而已袄琳。
All I know is: it's annoying to categorically double all estimates and assume that developer estimates are "lies."
我只知道:總是斷然地去把預(yù)估的時(shí)間翻倍以及總是臆斷程序猿的預(yù)估是謊言,這些很讓人困擾燃乍。
三唆樊、
A programmer can never test their own code. Because they know how it works, it makes no sense to try and use it wrong. "People" are not programmers, and they will ALWAYS try and use it wrong. This is usually not by intent, but because of lack of knowledge, inexperience, laziness, obstinacy, and because it's not what they are used to doing.
程序猿都不會(huì)自己測(cè)試他們寫的代碼。因?yàn)樗麄冎肋@怎么運(yùn)行刻蟹,所以試圖用錯(cuò)誤的方式去運(yùn)行它是沒有意義的逗旁。其他的人并不是程序猿,他們經(jīng)常試圖用錯(cuò)誤的方式去運(yùn)行它舆瘪。當(dāng)然他們不是故意的片效,而是因?yàn)樗麄內(nèi)狈χR(shí)、經(jīng)驗(yàn)不足英古、懶惰淀衣、牛脾氣,因?yàn)檫@不是他們習(xí)慣做的事情召调。
So the biggest lie of a programmer is "I tested my code and it always works correctly."
所以程序猿最大的謊言就是“我已經(jīng)測(cè)試過我的代碼了沒有任何問題膨桥。”
總結(jié)
無意中在一個(gè)國(guó)外的網(wǎng)站上看到了“程序猿都說過哪些謊”這個(gè)話題唠叛,覺得很有趣只嚣,于是就想到了寫這樣一篇文章,讓大家進(jìn)一步了解程序員這個(gè)職業(yè)艺沼。作為互聯(lián)網(wǎng)行業(yè)的創(chuàng)業(yè)者介牙,程序員對(duì)我們來說,是工作上最親密的伙伴之一澳厢,我們的idea环础、我們對(duì)產(chǎn)品的期許,都要靠他們幫我們實(shí)現(xiàn)剩拢。因此线得,他們真的很辛苦,多少個(gè)加班的深夜徐伐,都是程序員們陪我們共同度過贯钩,改bug、趕進(jìn)度,無怨無悔角雷、任勞任怨祸穷,真心覺得程序員是一種值得尊敬的職業(yè)。他們才是真正的造夢(mèng)師勺三,通過他們的雙手和鍵盤雷滚,我們創(chuàng)業(yè)者的夢(mèng)想就這樣實(shí)現(xiàn)了。
所以不管你是老板還是產(chǎn)品經(jīng)理還是策劃還是客戶吗坚,或者說是程序員的另一半祈远,請(qǐng)給予程序員多一點(diǎn)的關(guān)愛,請(qǐng)理解他們的工作商源,然后车份,對(duì)于他們說過的“謊言”,也就一笑置之吧牡彻,仔細(xì)品味扫沼,謊言里盡是心酸。
最后庄吼,想要推薦給程序猿們一本好書缎除,絕對(duì)是你們用得到的,不用謝霸褒。