|
英文原文:All Programmers Are Self-Taught
在我十幾歲的時(shí)候就開始玩甲級棒球。我水平很差,但當(dāng)我決定要做好什么事時(shí),最終總能如我愿。現(xiàn)在我是計(jì)算機(jī)專業(yè) 3 年級的學(xué)生。在編程上,有些事情和體育是截然不同的:棒球教練可以教會(huì)你如何打棒球,但一個(gè)計(jì)算機(jī)教授卻不能教你如何編程。
我很吃驚,在整個(gè)大一期間,我的老師或教授從來不點(diǎn)評我的代碼,大二時(shí)更是如此。我們的作業(yè)很多,題目很難,但在完成了數(shù)據(jù)結(jié)構(gòu)課上的 2000 行的代碼后,我從來沒有收到過老師的任何一條評論——只要程序能編譯通過,單元測試顯示沒有錯(cuò)誤,這就行了。直到遇到了一個(gè)小組開發(fā)的項(xiàng)目,我才認(rèn)識到我的代碼寫的多爛,我才開始詢問:好的程序應(yīng)該如何寫。
但是,什么樣的代碼才是好的代碼?我花了大量的時(shí)間來提高代碼的可讀性,添加注釋。我努力模仿 UNIX 的哲學(xué)觀,力求簡約,首先讓程序能跑起來,在此基礎(chǔ)之上,在需要的情況在進(jìn)行優(yōu)化。復(fù)雜的東西要逐步增加。除非必要,我不使用線程。但是,說實(shí)話,我不知道這是不是好的代碼(說實(shí)話,我覺得自己水平很差)。
我很幸運(yùn),能和一群優(yōu)秀同學(xué)一起工作,他們都是出色的程序員,他們在微軟、谷歌、亞馬遜等公司實(shí)習(xí)。他們的觀點(diǎn)都很一致,認(rèn)為自己的知識都是自己總結(jié)或從其他程序員那里學(xué)到的。即使是非常資深的軟件工程師也有這樣的看法。所以,我的結(jié)論是:
所有程序員都是自學(xué)成才的。
我受的教育給了我很好的基礎(chǔ):數(shù)據(jù)結(jié)構(gòu),算法,數(shù)據(jù)庫設(shè)計(jì),并行計(jì)算,網(wǎng)絡(luò)編程,敏捷開發(fā)以及各種編程模式。但所有的這些,即使是它們使得編程更高效和更精巧,你仍然可能用錯(cuò)它們——我曾經(jīng)看過一些學(xué)生在這些課程上學(xué)習(xí)成績非常好,但寫的代碼卻讓人想哭。
我并不認(rèn)為學(xué)過計(jì)算機(jī)科學(xué)、軟件工程或得到一個(gè)大學(xué)文憑會(huì)有多大的用處,如果你想靠寫代碼為生,自學(xué)是你不可缺少的途徑。
it知識庫:所有的程序員都是自學(xué)成才,轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時(shí)間聯(lián)系我們修改或刪除,多謝。