這篇文章的原文來自:A Little Printf Story
譯文出處 削微寒
文章略長(zhǎng)酬滤,但是耐心讀完盯串,你肯定會(huì)受益良多体捏!
第一章
(推薦看完整篇文章耗拓,再回過頭看一遍第一章)
我非常幸運(yùn)出生在一個(gè)電腦和電子游戲還沒有普遍的時(shí)代乔询。所以我可以和我的小伙伴們一起玩耍竿刁,同時(shí)發(fā)明屬于我們的游戲。
我們十分會(huì)玩:用樹枝做成'???'负甸。我們可以用樹枝做出任何東西呻待,除'回旋鏢'蚕捉。因?yàn)槟惆褬渲θ映鋈ィ阈枰约簱旎貋砹舶尽#ㄗ髡哌@個(gè)故事是活躍氣氛嗎荸型???)
當(dāng)我們長(zhǎng)大了,上面說的游戲變得很幼稚辕狰。你不能把一個(gè)松塔當(dāng)成一個(gè)手榴彈蔓倍;假裝擁有神奇的魔法默勾;當(dāng)其他孩子覺得作為一個(gè)成年人很酷母剥。你最終會(huì)迫于壓力而長(zhǎng)大。不過總的來說這也是一個(gè)非常幸運(yùn)的童年炫隶。
偶然的一次機(jī)會(huì)我接觸了電子游戲和電腦伪阶。你可能想沉浸在這個(gè)虛擬的世界,這會(huì)毀了你筹误。
大多數(shù)電子游戲:你不能創(chuàng)造厨剪,只能反應(yīng),浪費(fèi)你的時(shí)間直晨。我在十多歲的時(shí)候勇皇,參加過'即興表演'。在哪里我可以發(fā)揮我的創(chuàng)造性兄淫。
我大學(xué)的專業(yè)是'多媒體'慨丐,但是我最終卻從事'編程'工作房揭。我覺得編程is amazing浅役!我可以發(fā)揮我的創(chuàng)造性觉既,同時(shí)又可以掙錢瞪讼!之后我做了我的第一個(gè)游戲嫡霞。
"這不是一個(gè)真正的電子游戲。"別人跟我說:"它只是一個(gè)html的表單端姚,而且代碼需要簡(jiǎn)化。"
這席話使我有一些沮喪昏鹃,它花費(fèi)了很多心思和時(shí)間盆顾。但是奈懒,我意識(shí)到如果我想做出被人們認(rèn)可的東西的話磷杏,我還需要學(xué)習(xí)更多知識(shí)。
我需要學(xué)習(xí)真正的編程遥金。從GUI工具里的JS,轉(zhuǎn)到更好的語言:像PHP美莫。所以我先學(xué)習(xí)了Js,后來又去學(xué)習(xí)PHP襟铭,但是一切并不是很順利,其他人給我的建議去試試python入撒。最后,我學(xué)習(xí)的是python(??我也是這樣走上python之路的??)献雅。
但是python中高深一些的東西:'lambdas'和'面向?qū)ο缶幊?挺身,讓我云里霧里的墙贱。后來別人建議我去讀一下《計(jì)算機(jī)程序的構(gòu)造和解釋》,因?yàn)樗蔷幊痰幕A(chǔ)入門圣經(jīng)魁衙。
就這樣,我知道了Scheme纤房,后來我又去學(xué)習(xí)C語言纵隔。因?yàn)榇蠖鄶?shù)的程序員都會(huì)C,同時(shí)我旁聽了我們學(xué)校的計(jì)算機(jī)課程帆卓,跟著他們一起學(xué)習(xí)巨朦。因?yàn)槊浊穑嬲某绦騿T都知道數(shù)據(jù)結(jié)構(gòu)和數(shù)學(xué),但是這些我只略懂皮毛拄查。我開始讀技術(shù)文章和書吁津,因?yàn)槌绦騿T的知識(shí)更新太快。
經(jīng)過一段時(shí)間堕扶,我掌握了Erlang碍脏,從而開始了我的職業(yè)生涯。(這篇文章的作者寫了一本:Erlang入門書)稍算。十分奇怪的是:我這個(gè)沒有用Erlang做過任何生產(chǎn)級(jí)別的開發(fā)的人典尾,卻得到了一份教Erlang的工作。
第二章
所以我忙于到世界各地演講糊探,教別人(夸夸其談)钾埂。但是,大家似乎都相信我是一個(gè)真正的程序員科平。因?yàn)槿熳希抑v的這些事情大多都和編程無關(guān)。
一天瞪慧,我結(jié)束了一個(gè)會(huì)議回家髓考,飛機(jī)晚點(diǎn)。我憤怒的敲擊著鍵盤弃酌,一個(gè)柔弱的聲音打斷了我:
"你好氨菇,能請(qǐng)你給我設(shè)計(jì)一個(gè)系統(tǒng)嗎儡炼?"
我:"什么?"
"給我設(shè)計(jì)一個(gè)系統(tǒng)查蓉!"
我對(duì)這個(gè)請(qǐng)求很驚訝射赛。我環(huán)視四周,發(fā)現(xiàn)一個(gè)渴望成為開發(fā)者的孩子奶是。他叫'printf'(主角閃亮登場(chǎng))楣责。我覺得這個(gè)名字很傻。他的樣子如下圖:
"我還不是很了解計(jì)算機(jī)聂沙,但是你好像是計(jì)算機(jī)方面的專家秆麸。我希望寫一個(gè)blog程序,人們可以使用和訪問它及汉。求求你幫我設(shè)計(jì)一個(gè)系統(tǒng)沮趣!"
這是個(gè)令人驚訝的請(qǐng)求,并且我已經(jīng)二十多個(gè)小時(shí)沒睡了坷随。我不是完全理解他所說的房铭。我告訴他,做一個(gè)系統(tǒng)十分困難温眉。我不知道他想要做什么:需要支持多少訪問者缸匪;在哪里部署;所以我無法根據(jù)他提供的少量信息类溢,設(shè)計(jì)一個(gè)合適的系統(tǒng)凌蔬。
"沒有關(guān)系,給我設(shè)計(jì)一個(gè)系統(tǒng)吧闯冷。"
所以我做了下面這幅結(jié)構(gòu)圖:
他看了之后說:"不砂心,這個(gè)系統(tǒng)還不夠好。請(qǐng)給我再設(shè)計(jì)一個(gè)別的蛇耀。"
所以我又做了下面這個(gè):
然后我給他講解這個(gè)系統(tǒng)的工作原理辩诞。
我的新朋友 (printf)十分禮貌的說:"這不是我想要的,它又太復(fù)雜而且好多東西都是我不需要的纺涤。"
我感到十分不爽译暂,我設(shè)計(jì)的這個(gè)系統(tǒng)考慮到了:冗余、監(jiān)控洒琢、備份秧秉、緩存、負(fù)載衰抑、支付象迎、故障轉(zhuǎn)移、部署簡(jiǎn)單等等。我設(shè)計(jì)的這個(gè)系統(tǒng)都已經(jīng)可以獲得一份可觀的咨詢費(fèi)用了砾淌!我已經(jīng)失去耐心了啦撮,所以我就畫了這個(gè):
我又告訴他:"這是你設(shè)計(jì)的系統(tǒng),你要的系統(tǒng)在這個(gè)黑盒子里汪厨。"我希望這個(gè)滑稽的答案赃春,可以打發(fā)他。但是他的回復(fù)讓我十分驚訝:
"這正是我想要的劫乱!"
這就是我和小printf相識(shí)的過程织中。
第三章
過了一段時(shí)間,我知道了這個(gè)小鬼的編程水平衷戈。在他的代碼倉(cāng)庫(kù)只有些小程序狭吼、網(wǎng)站的小demo、瑣碎的程序片段殖妇。都是些不值得一提的東西刁笙。
之后他開始著手做一個(gè)需要很多模塊的大型程序。這個(gè)程序需要socket谦趣、磁盤讀寫疲吸、用到真正的數(shù)據(jù)庫(kù)。當(dāng)它第一次跑起來的時(shí)候前鹅,小printf十分興奮摘悴。但是,這個(gè)程序還不夠好嫡纠。
這個(gè)程序需要重構(gòu)烦租、更好的測(cè)試延赌、文檔除盏、分析。它只運(yùn)行了一段時(shí)間就崩潰了挫以。然后一次者蠕,又一次的崩潰!
程序的設(shè)置是錯(cuò)誤的掐松,日志不工作踱侣、磁盤速度不穩(wěn)定、網(wǎng)絡(luò)卡頓大磺、有bug抡句、編碼混亂、數(shù)據(jù)庫(kù)需要清理杠愧、證書過期待榔、沒有異常處理導(dǎo)致問題找不到根源。
真的想面條一樣一團(tuán)糟。
小printf跟我說:"通過這件事锐锣,我發(fā)現(xiàn)自己簡(jiǎn)直是一無所知腌闯!這個(gè)程序本來是根據(jù)我的需要寫的。我原來的想法太天真了雕憔,后來我修復(fù)bug的時(shí)間和這個(gè)程序給我?guī)淼谋憷静怀烧茸丝ィ∽詈螅兊酶以瓉硐氲囊稽c(diǎn)都不一樣斤彼。雖然這樣分瘦,我仍然認(rèn)為這件事情讓我收獲了很多。"
一天早上琉苇,他決定離開我這里擅腰。"再見。"小printf跟我做了最后的道別翁潘。他想要出去看看世界趁冈,看看其他人寫的程序。
小printf寫的應(yīng)用拜马,最后因?yàn)椴粩嘣黾拥娜罩旧保瑢?dǎo)致硬盤沒有空間,徹底的崩潰了俩莽。
第四章
小printf走進(jìn)了一個(gè)辦公樓旺坠,想尋找有經(jīng)驗(yàn)的程序員取經(jīng),獲得一些建議和幫助扮超。
他遇到一個(gè)驕傲的高級(jí)程序員取刃,而且自我感覺良好。
傲慢的高級(jí)程序員說:"哎出刷,過來新手璧疗!歡迎來到我所擅長(zhǎng)領(lǐng)域,在這個(gè)領(lǐng)域我是專家馁龟!"
"專家崩侠?"小printf問到:"專家的意思是:可以編寫任何程序嗎?"
"是的坷檩!"傲慢的高級(jí)程序員回答道却音,接著他又說:"準(zhǔn)確的說,應(yīng)該是大多數(shù)程序矢炼。因?yàn)槲抑痪帉懹袃r(jià)值的程序系瓢,我不會(huì)浪費(fèi)我的時(shí)間在沒有意義的小程序上。很多程序我都沒有寫過句灌,但是他們都難不倒我夷陋!"
"額,所以你可以幫我完善我的程序?"小print問到肌稻,之后他開始闡述他的網(wǎng)站系統(tǒng)清蚀,但是傲慢的高級(jí)程序員打斷了他:
"對(duì)不起,我覺得你的網(wǎng)站系統(tǒng)沒有一點(diǎn)價(jià)值爹谭。"
小printf:"為什么枷邪?"
"經(jīng)驗(yàn),我擅長(zhǎng)編寫我開發(fā)的東西诺凡,我也只做我擅長(zhǎng)的領(lǐng)域的開發(fā)东揣。我需要確保我在我的領(lǐng)域的永遠(yuǎn)有價(jià)值。這叫做工作保障腹泌,也叫做適者生存嘶卧。但這就是我的風(fēng)格。我只專注于我的領(lǐng)域凉袱!"
小printf:"那你為什么不幫我呢芥吟?"
"花費(fèi)我的時(shí)間去幫助你,意味著我需要花費(fèi)精力去幫助別人专甩,而不是提高自己----這對(duì)我來說不是一個(gè)好的主意钟鸵。我的建議是:自己多努力,自己弄懂涤躲。還可以塑造你自己的心性"
小printf:"你說的方法棺耍,好想不是很高效。种樱。蒙袍。"
"你可以到學(xué)校去學(xué),或者自學(xué)嫩挤。事實(shí)上這種方法可以淘汰那些懶惰害幅,只喜歡簡(jiǎn)單的事情的人。真正渴望知識(shí)的人才能成功俐镐!"
小printf:"你認(rèn)為合作和同事不能幫助你嗎矫限?"
"不,我并不是這個(gè)意思佩抹。我做好的工作狀態(tài)是:獨(dú)立空間,沒有讓我分心的事取董。每次我和同事合作的時(shí)候棍苹,都是一次不好的經(jīng)歷。以往的經(jīng)驗(yàn):最好的辦法是:把他們的代碼拿過來重寫茵汰。然后就可以了枢里!"
小printf對(duì)這個(gè)不喜歡幫助別人的專家感到十分驚訝,不僅如此,他還因人為別人的技術(shù)不行而惱火栏豺。這個(gè)專家眼界是狹隘的彬碱,他只關(guān)心自己擅長(zhǎng)的領(lǐng)域“峦荩活在自己的世界里巷疼。
小printf:"我明白了,我想我很慶幸你沒有幫助我灵奖。"
"你什么意思嚼沿?"傲慢的專家問到,貌似他的權(quán)威受到了威脅:"你不認(rèn)可我瓷患,你是在質(zhì)疑我嗎骡尽?"
小printf:"并不是這樣,就像你覺得我是一個(gè)累贅擅编,令人惱怒的一樣攀细。我是來尋找?guī)椭模皇莵碚伊R的爱态。"
說完之后辨图,小printf飛快的跑出了傲慢專家的辦公室。當(dāng)小printf離開后肢藐,這個(gè)專家又重新找回了他所擅長(zhǎng)領(lǐng)域的權(quán)威故河,同時(shí)自我感覺良好。
第五章
然后吆豹,小printf又走進(jìn)了另外一個(gè)辦公室鱼的。里面有一個(gè)男士,他的座位周圍都是精裝厚厚的書籍(例如代碼大全這種書)痘煤。
小printf:"先生凑阶,你有好多書啊衷快!"
"是的宙橱,我想這些都是程序員必看的書籍,如果你沒看過這些蘸拔,你很難成為'大牛'(專業(yè)人士)师郑。"
小printf:"我想我現(xiàn)在還是很菜,請(qǐng)問這些書里面你最喜歡哪本调窍?"
"哦宝冕,是這樣的這些書大多數(shù)我還沒有讀過。"
小printf:"那你現(xiàn)在是個(gè)'大牛'嗎邓萨?"
"不地梨,我還不是菊卷。"這個(gè)程序員很驕傲的說:"我其實(shí)是一個(gè)很垃圾的程序員。"
小printf:"這太丟人了宝剖,我正在努力變強(qiáng)洁闰。"
"你聽過'達(dá)克效應(yīng)'嗎?"
小printf:"那是什么万细?"
"簡(jiǎn)單的說就是:能力強(qiáng)的人總是低估自己扑眉,能力弱的人總是高估自己。"
小printf:"也就是說雅镊,如果我覺得自己在變強(qiáng)襟雷,其實(shí)我并沒有變強(qiáng)。"
"是的仁烹,你說的非常正確耸弄。你很可能在原地踏步。另一方面卓缰,我宣揚(yáng)我是一個(gè)很糟糕的程序員计呈,但根據(jù)'達(dá)克效應(yīng)'。我是低估了我自己征唬,所以我是一個(gè)好的程序員捌显,你怎么看?"
小printf:"我总寒。扶歪。。額"
"這就是為什么程序員都喜歡自嘲(稱自己是碼農(nóng)也算吧摄闸?)善镰。當(dāng)你認(rèn)為你足夠好了,你就放松了年枕,也就沒有前進(jìn)的動(dòng)力炫欺。"(這句話我還是很贊同的??)
小printf:"你的意思是:一旦自我感覺良好,也就是正在走向失敗熏兄,因該時(shí)刻覺得自己還不夠好品洛。"
"是的,但是用著這種方式應(yīng)對(duì)所有的事很危險(xiǎn)摩桶,如果你還沒有拿到offer桥状。這種方式會(huì)讓你顯的聰明,但是沒有任何實(shí)際用途典格,別人不會(huì)因?yàn)槟泔@的聰明就雇傭你岛宦。"
小printf:"你的意思是?"
"比方說:我在網(wǎng)上看到一個(gè)我不喜歡的項(xiàng)目。我留言說項(xiàng)目一無是處个绍,但是不明確的指出哪里不好碟贾。最后你還可以說這個(gè)項(xiàng)目的作者是笨蛋,也沒有人管你变汪。"
小printf:"但是這樣做有什么好處呢?"
"我想讓他們知道他們走上歧途了蚁趁,卻又不明確的指出來裙盾。這表現(xiàn)的我比他們厲害。然而他們毫無頭緒他嫡,像霧里看花番官。沒有人能明白我的意思。哇咔咔"
小printf:"當(dāng)別人請(qǐng)教你的問題钢属,你不會(huì)的時(shí)候徘熔,你會(huì)怎么辦?"
"這種情況下你就說到處都是問題淆党,還有很多的不完善的事情要做酷师,總之就是轉(zhuǎn)移話題。然他們感覺絕望染乌,最后還是要他們自己解決山孔。"
小printf:"所以這就是你的立場(chǎng)?這是你的一貫作風(fēng)荷憋?你會(huì)的問題裝作對(duì)此無能為力台颠,使得真正無法解決這個(gè)問題的人抓狂;當(dāng)你遇到不會(huì)的問題時(shí)勒庄,你裝作很了解串前,使得別人根據(jù)你的建議改善其它的地方,而與真理相行漸遠(yuǎn)锅铅,浪費(fèi)時(shí)間"
"很多情況下酪呻,才能不是最重要的。但口碑很重要盐须。人們雇傭朋友玩荠,不被喜歡的人和無關(guān)緊要的人會(huì)被第一個(gè)被炒魷魚(??MLGB)。要不就改變環(huán)境贼邓,改不了就要適應(yīng)阶冈,適應(yīng)不了就被淘汰。這就是'社會(huì)'塑径。企業(yè)中就是這樣女坑,學(xué)術(shù)屆沒準(zhǔn)也是。做這行统舀,你認(rèn)識(shí)誰匆骗,學(xué)會(huì)推銷自己劳景,建立自己的聲望。這樣你才能在企業(yè)里站住腳碉就。"
小printf:"如果在企業(yè)中工作是這么惡心盟广,要給別人'使絆'。那么我真不想在這種環(huán)境下工作N驮俊(黑暗的辦公室政治筋量,還好我還沒有遇到??)"
第六章
到了吃午飯的時(shí)間,小printf打斷了一個(gè)貌似忘記吃午飯的人碉熄。他桌子上的三明治已經(jīng)涼了桨武,但是他還是坐在桌子前面盯著他的屏幕。
他好像十分的忙锈津,但是沒人知道他在做什么呀酸。
小printf:"如果主數(shù)據(jù)庫(kù)掛掉了,從數(shù)據(jù)庫(kù)也會(huì)掛掉嗎一姿?"(創(chuàng)建主從數(shù)據(jù)庫(kù)是為了減少DOWN機(jī)時(shí)間七咧,讓數(shù)據(jù)庫(kù)可以一直處于工作狀態(tài)中)
"你運(yùn)行的所有東西,或早或晚都會(huì)掛掉叮叹。"
小printf:"你以往的經(jīng)歷告訴你這一切都會(huì)失敯啊?"
"是的蛉顽,不僅如此蝗砾。所有的大系統(tǒng),都會(huì)在特定的時(shí)間出現(xiàn)問題携冤。"(就像千年蟲問題悼粮???)
小printf:"那么,做一個(gè)可靠的系統(tǒng)曾棕,都需要做什么扣猫?"
那個(gè)人忙于他自己的事情,沒有理會(huì)小printf翘地。
小printf又問了一次:"做一個(gè)可靠的系統(tǒng)申尤,都需要做什么?"
那個(gè)人正在嘗試解決產(chǎn)品中的一個(gè)問題衙耕,但是小printf還一直問個(gè)不停昧穿,同時(shí)他還沒有吃午飯。
所以他不耐煩甚至粗魯?shù)暮鸬溃?這根本不可能橙喘,編程就是shit??时鸵。"
小printf倒吸了一口氣,半天說不出一句話厅瞎。
小printf??憤怒的回?fù)舻溃?我不相信你說的饰潜。程序是脆弱的沒錯(cuò)初坠,但是程序員可以改善這一點(diǎn),同時(shí)做出更好和有用的東西"
那個(gè)人沒有任何回答囊拜,他在翻閱文檔某筐,嘗試重新啟動(dòng)一個(gè)新的集群比搭,但是情況卻越來越糟糕冠跷。
小printf:"并且你應(yīng)該相信有好的可靠的程。身诺。"
"不可能"那個(gè)人打斷了小printf蜜托,接著說道:"我不相信有可靠或者好的的程序!根本不可能霉赡!這是我的第一個(gè)感覺橄务,因?yàn)槲艺谔幚硪粋€(gè)垃圾的系統(tǒng)。你沒看見我想法設(shè)法地讓這個(gè)東西跑起來嗎穴亏?事實(shí)如此蜂挪!"
小printf很震驚的看著他說道:"事實(shí)如此?說的好像自己是個(gè)專家嗓化!是你自己把一切都搞的很糟糕棠涮。這世界上有上百萬的和久經(jīng)考驗(yàn)的程序,它們也有bug刺覆,也崩潰严肪。但是人們還是需要它們,使用它們谦屑。據(jù)我所知很多程序是沒有問題的驳糯。出現(xiàn)問題的原因大多是因?yàn)殡娔X的環(huán)境配置問題,或者一個(gè)錯(cuò)誤的操作造成的氢橙。你不認(rèn)為這才是問題的所在嗎酝枢?"
那個(gè)人聽完啞口無言。
第七章
小printf來到了第四個(gè)地方悍手,遇到了一個(gè)人帘睦,他的電腦幾乎被便簽蓋滿了,沒有人知道他在干什么谓苟。
"motor-mvc, quadrangular JS, GoQuery, cometeor, some japanese soundy thing, ..."
小printf打斷了他的自言自語說道:"你好官脓,你在干什么?"
"alchemist, bongodb, mochascript, walktime.js, portasql, ..."涝焙,哪個(gè)男士繼續(xù)自言自語
小printf提高了音量又問了一次:"你在干什么卑笨?"
"哦,我正在嘗試新的框架仑撞,工具和語言赤兴。"
小printf:"哇妖滔,你接觸的東西好新鮮啊桶良!大多數(shù)人還都沒有聽說過這些座舍。"
"是的,這個(gè)行業(yè)跟新很快陨帆!"他看了一眼他的手機(jī)接著又說到:"看曲秉,cardboard.io框架又推出了3.5版本,它宣布不兼容3.4了疲牵。于此同時(shí)社區(qū)中已經(jīng)有4個(gè)衍生版本了承二。我必須從他們之中挑一個(gè)。"
小printf:"你這么做為了什么纲爸?"
"我是最早的嘗鮮者亥鸠,如果你不保持更新技能樹,還是用老掉牙的:COBOL或者M(jìn)UMPS(兩門老掉牙的編程語言??)识啦。你還想抓住成功的契機(jī)负蚊,搶占先機(jī),乘勢(shì)而起颓哮?"
小printf:"你成功的預(yù)測(cè)過以后的熱門技術(shù)嗎家妆?"
"是的!我發(fā)現(xiàn)Rails的時(shí)候它還很小题翻,我學(xué)會(huì)Node.js的時(shí)候它還沒有流行揩徊。我是redis,mongodb和riak的內(nèi)測(cè)用戶嵌赠。我是第一批試用vagrant的用戶塑荒,然后我轉(zhuǎn)去使用docker,但是現(xiàn)在我全身心的關(guān)注unikernels姜挺。齿税。"
小printf:"太酷了!你是第一批試用這些的技術(shù)的人炊豪,你從中得到了什么回報(bào)凌箕?"
"額,并沒有词渤。當(dāng)Rails壯大的時(shí)候牵舱,我就去關(guān)注另外的新鮮東西了。同樣的缺虐,其他的幾門技術(shù)我也是這樣的(他不獨(dú)寵一個(gè)芜壁,而是雨露均沾??)。我現(xiàn)在把希望寄托在unikernels上。"
小printf沉思了一會(huì)說到:"你用這些框架和工具都解決了什么問題慧妄?"
"我每次都確保不使用不成熟的東西顷牌,因?yàn)椴荒苡霉咀鲑€注。這一點(diǎn)十分重要塞淹,因?yàn)槿绻闶褂米钚碌募夹g(shù)窟蓝,你就可能招不到人,而不關(guān)注新的技術(shù)饱普,有可能脫離時(shí)代的步伐运挫。所以我們鼓勵(lì)學(xué)習(xí)新的技術(shù)。"
小printf:"這非常有趣费彼。"
"在這個(gè)飛速發(fā)展的世界中滑臊,如果你想?yún)⒓舆@場(chǎng)游戲,你需要有先進(jìn)的技術(shù)箍铲。否則你就會(huì)被時(shí)代淘汰,沒有人想被時(shí)代淘汰鬓椭。"
小printf:"不颠猴,你誤解我的意思了,我的意思是:好的工具是為了解決問題而被制造出來的小染。但是你卻盲目追求新的技術(shù)翘瓮,而不是為了什么實(shí)際的目的。"
聽完這些話裤翩,哪個(gè)人呆住了资盅,小printf跳躍著離開了這個(gè)房間。
第八章
小printf來到了下一個(gè)辦公室踊赠,這里又一個(gè)疲憊的女員工呵扛。桌子上雜亂無章,整個(gè)人無精打采筐带,瘋狂的打字今穿。
小printf:"你好。"
這個(gè)女士沒有停下了她的手頭工作伦籍,繼續(xù)瘋狂的打字蓝晒。
小printf又打了一遍招呼:"你好?"
女士這次停下了帖鸦,拿起一瓶咖啡猛灌了一口芝薇。
"我有一份十分糟糕的工作。"她說:"我是devops(開發(fā)作儿,運(yùn)維洛二,測(cè)試于一體的職位)。剛開始的時(shí)候還好,原來我大多數(shù)時(shí)間進(jìn)行開發(fā)灭红,然后抽出一些時(shí)間修復(fù)bug侣滩。但是,情況變的越來越糟糕变擒,bug開始接連不斷君珠。為了擺脫這種情況,同時(shí)在規(guī)定時(shí)間內(nèi)完成娇斑。我不得不使用一些'奇技淫巧'策添。"
小printf:"你為什么不顧人來幫你?"
"我很擅長(zhǎng)做這些事情毫缆。我已經(jīng)習(xí)慣這一切都在我的的掌控之下唯竹。還有因?yàn)樗麄円呀?jīng)習(xí)慣我可以hold一切,如果我提出我自己無法繼續(xù)掌控全局的以后苦丁,他們很容易認(rèn)為我在偷懶浸颓。"
小printf:"這真是叫人悲傷的故事。"
"事實(shí)就是這樣子旺拉。因?yàn)槟闶亲钍煜み@些問題(bug??)的人产上,你只能變的越來越累,直到你的boss招了一個(gè)人頂替你原來的工作蛾狗,這是唯一出路晋涣。但如果你擔(dān)心其他人修改你寫的東西時(shí)候遇到問題,你只能幫助別人改一個(gè)又一個(gè)的bug沉桌,當(dāng)然這些都是你討厭的事情谢鹊。直到你對(duì)這一切感到麻木。"
小printf:"你真不幸留凭。"
這位女士又被叫去工作了佃扼。
小printf自言自語道:"這個(gè)女人會(huì)被我原來遇到的那些人嘲笑的:那個(gè)高級(jí)專家(只專注于自己擅長(zhǎng)的領(lǐng)域),搖滾開發(fā)者(過分追求新技術(shù)的人)冰抢,故做高深的程序員(那個(gè)周圍都是大頭書的裝X程序員)松嘶。盡管他是這些人里面唯一樂于助人的】嫒牛或許是因?yàn)榇涠J(rèn)為一切事情還是親力親為的好。"
第九章
小printf發(fā)現(xiàn)在這棟大樓里發(fā)現(xiàn)了一個(gè)有著巨大落地窗并且寬敞的辦公室遵倦。這里坐著一個(gè)德國(guó)老頭尽超,他面前堆了一堆的文件。
"拔嗵伞似谁!來了一個(gè)開發(fā)者傲绣。"德國(guó)老頭驚呼道同時(shí)招呼小printf說:"快進(jìn)來!"
小printf環(huán)視四周的窗戶巩踏,發(fā)現(xiàn)上面寫滿了東西秃诵。上面畫了各種圓圈,箭頭塞琼,圓柱和云彩(就是圖片中玻璃上的圖形)菠净。真是搞不懂這個(gè)老頭畫這些東西有什么用。
小printf:"窗戶上的都是些什么彪杉?"
"哦毅往,這些?這是我們的線上系統(tǒng)派近!"那個(gè)老頭隨口說到:"我是一個(gè)軟件架構(gòu)師攀唯。"
小printf:"什么是軟件架構(gòu)師?"
"總的來說渴丸,就是知道如何構(gòu)建大型系統(tǒng)并且讓系統(tǒng)中的每個(gè)部分都非常穩(wěn)定的人侯嘀。架構(gòu)師還會(huì)數(shù)據(jù)庫(kù),編程語言曙强,框架残拐,編寫程序,協(xié)議碟嘴,封裝和降低耦合等知識(shí)。"
小printf:"聽起來都叫人興奮囊卜!終于有人能回答我的所有問題了娜扇!"小printf瞥了一眼玻璃上的結(jié)構(gòu)圖說到:"你們的系統(tǒng)真大,他跑的快嗎栅组?"
"我沒法告訴你雀瓢。"架構(gòu)師說;"應(yīng)該會(huì)很快吧玉掸。"
小printf:"那它的代碼怎么樣呢刃麸?"
"我沒法告訴你。"
小printf:"用戶喜歡這個(gè)系統(tǒng)嗎司浪?"
"這個(gè)我恐怕也沒法告訴你泊业。"
小printf:"但是你是軟件架構(gòu)師啊啊易!"
"我的確是架構(gòu)師吁伺,但是我不是開發(fā)者。架構(gòu)師不做租谈,例如:功能模塊篮奄,類,整合lib等。這種工作的窟却。架構(gòu)師最重要的不是寫代碼昼丑。他是指引程序員和開發(fā)者的人。如果遇到棘手的夸赫,無法解決的問題菩帝,架構(gòu)師才會(huì)接手。"
小printf:"這是為什么呢憔足?"
"因?yàn)槲覀兘?jīng)驗(yàn)十足胁附。我們了解系統(tǒng)并且能解決它的一切問題。開發(fā)者可以根據(jù)我們的經(jīng)驗(yàn)和指導(dǎo)滓彰,開發(fā)出好的系統(tǒng)控妻。"
小printf:"但是你不寫,不看代碼怎么知道這將是個(gè)好的系統(tǒng)揭绑?"
"我們相信開發(fā)者弓候。"
小printf:"所以,所你們相信開發(fā)者們可以正確的實(shí)現(xiàn)你們的想法他匪,但是開發(fā)者們沒有機(jī)會(huì)提出他們自己的想法菇存?"
這個(gè)軟件架構(gòu)師明顯的愣了一下:"我想。邦蜜。依鸥。"他最終承認(rèn)了:"你剛才提出的這個(gè)問題,其實(shí)工作中很多的提議是沒有被證實(shí)悼沈,或者實(shí)驗(yàn)的贱迟。。絮供。"他停頓衣吠,并沉思了一下說道:"有些時(shí)候軟件架構(gòu)師看起來既不是軟件工程師,也不是架構(gòu)師(是老師壤靶?)缚俏。"
小printf離開了這個(gè)房間,結(jié)束了他的旅行贮乳。走出了這棟樓
第十章
小printf走到外邊忧换,發(fā)現(xiàn)了一個(gè)為慈善機(jī)構(gòu)募集錢的男士。
"你好"那個(gè)男士說道:"你覺得幫助一些需要幫助的人的感覺怎么樣塘揣?"
小printf:"那樣可能會(huì)讓我感覺更好包雀,我在那棟建筑(遇到了各種各樣的程序員的大樓)呆了一整天,尋求幫助亲铡。但是現(xiàn)在才写,我感覺比以前更加迷惑了葡兑。"
"嗯,我?guī)湍惴治鱿拢耗切┤硕际情_發(fā)者赞草,他們并沒有真正幫到你是嗎讹堤?他們喜歡說"程序員改變世界",實(shí)時(shí)也是這樣的厨疙。"
小printf:"那為什么我卻毫無收獲呢洲守?"
"是這樣的,他們最擅長(zhǎng)做的事情是幫助把人們的工作變成程序沾凄,使人們變的輕松梗醇。軟件正在吞噬整個(gè)世界,使世界改革換面撒蟀。但是事實(shí)上還這還是個(gè)舊的世界叙谨。因?yàn)橐赃@種方式的改變,并不意味著事情變好保屯。我們還是有些根深蒂固的問題(例如:思想的問題手负,或是缺乏創(chuàng)造性。)姑尺。"
小printf焦急的說:"怎么做才能讓我感覺更好竟终?"
那個(gè)難事深思了一會(huì),最后提出讓小printf幫助他切蟋,為需要幫助的人募捐统捶。因?yàn)檫@個(gè)男士認(rèn)為這種方式可以讓他感覺更好。用一下午的時(shí)間柄粹,小printf把他的問題和他的經(jīng)歷都告訴了這個(gè)男士瘾境。
這個(gè)男士沉思了很長(zhǎng)時(shí)間說道:"在個(gè)游戲中,他們從解決復(fù)雜的問題而得到快樂和他們看重的名聲和身份镰惦,這種快樂是片刻的。因?yàn)樽罱K犬绒,如果你解決的問題沒有實(shí)際價(jià)值(為了解決問題而解決問題)旺入,忽略了'以人為本'。那么你永遠(yuǎn)不會(huì)的到真正的滿足凯力!"(說的真好R瘃)
他接著又說:"隨著你的成長(zhǎng),可能找到一家比之前更好的單位咐鹤∞置兀可能是錢多,或者是因?yàn)檫@個(gè)工作更趣祈惶,這都很正常雕旨。只要你知道你自己想要的是什么扮匠!"
他最后補(bǔ)充道:"最后,當(dāng)你解決了人們真正面臨的問題的時(shí)候凡涩,你會(huì)覺得真正的滿足棒搜!有的時(shí)候根本不需要計(jì)算機(jī)。"
"你花費(fèi)了大量的時(shí)間在你的系統(tǒng)上活箕。最重要的是:你忘記當(dāng)初為什么創(chuàng)建這個(gè)系統(tǒng)力麸,反而花費(fèi)時(shí)間在優(yōu)化系統(tǒng)上面,那么它就變成了一場(chǎng)炫耀的游戲育韩。這才是最可悲的克蚂。"
"開發(fā)者經(jīng)常忘記最開始的初衷(真正有意義的事情)。如果你失去做這件事意義筋讨,而是為了解決系統(tǒng)的問題埃叭,才花時(shí)間在這上面。這就是問題的所在(如果你只是為了做好的系統(tǒng)版仔,而不是解決實(shí)際問題游盲,那你就應(yīng)該自我反思了)"
小printf不斷重復(fù)這句話,想要印在腦子里:"只有在解決人們真正面對(duì)的問題的時(shí)候蛮粮,才能獲得真正的滿足益缎!"
第十一章
小printf坐在我的前面,和他聊天讓我開始認(rèn)真思考:我為什么走上編程的道路然想。小printf之前遇到的每個(gè)人莺奔,仿佛我將來的某一天會(huì)成為他們中的一員(這真是個(gè)悲傷的情景)。我被這樣的人(小printf之前遇到的那些程序員)鼓勵(lì)成為像他們一樣的程序員变泄。
我也被拖進(jìn)令哟,小printf不喜歡的那個(gè),成為'真正程序員'的游戲中妨蛹。小printf曾說過:相比于'真正的程序員'屏富,我更想成為能夠?yàn)槿藗兘鉀Q真正需要解決的問題的程序員(解決真正問題的程序員,而不是解決編程問題的程序員)蛙卤。
今天我呆坐在這里狠半,回顧我的整個(gè)編程生涯,我想弄清:成為解決真正問題的程序員颤难,還是一切都這是完成工作神年。這兩者是完全不同的。
不管怎么樣行嗤,小printf認(rèn)為他不需要成為一個(gè)真正的程序員已日。我現(xiàn)在,也是這樣認(rèn)為的栅屏!
我的感受
翻譯完這篇文章飘千,我覺得這篇文章寫的非常好堂鲜,他讓我意識(shí)到:編程為了什么?到底什么才是真正的程序員占婉。
自我反思了下泡嘴。我一只在忙于追求技術(shù)棧的數(shù)量,一直是為了追求技術(shù)(或者說工作)而學(xué)習(xí)逆济。
這就好像酌予,我毫無目的收集樹枝,猛然的一個(gè)點(diǎn)奖慌。我低頭看手邊一困困的樹枝抛虫,卻忘記了我為什么要去撿樹枝。我學(xué)習(xí)python中的框架就是這種感覺简僧,為了工作建椰,我學(xué)習(xí)flask,bottle岛马,tornado框架棉姐。但是,一切都是為了工作啦逆。導(dǎo)致我想從零寫一個(gè)web app都毫無頭緒伞矩,不知道如何下手。
對(duì)于以后的編程之路:我以后應(yīng)該以目的為驅(qū)動(dòng)力夏志,不盲目的追求技術(shù)乃坤。經(jīng)常問自己,我這么做有什么意義沟蔑。