“當(dāng)你50歲時(shí),還愿意編程嗎?”這個(gè)話題在Hacker News上眾說紛紜,不過我們能夠看到,那些真正成功的程序員,如John Carmack、Peter Norvig、Jeff Dean,即使他們不再年輕,但依然對(duì)編程充滿熱情,他們身上有哪些與眾不同之處,又有哪些值得我們學(xué)習(xí)?有人進(jìn)行了總結(jié)。 1. 選擇當(dāng)前科技領(lǐng)域的一個(gè)小子集,親近它、擁抱它,并且嘗試推進(jìn)這個(gè)小領(lǐng)域的發(fā)展。 2. 理解不同數(shù)據(jù)結(jié)構(gòu)和算法的優(yōu)缺點(diǎn),不單是內(nèi)存中,還有磁盤上的表現(xiàn)。 3. 首先深刻理解你所在的領(lǐng)域,然后拋開計(jì)算機(jī),像普通用戶那樣觀察和體會(huì)。 4. 時(shí)刻準(zhǔn)備好(包括能力和心理上)向深層探索,不僅僅是一兩層,而是好幾層。要知道,是否能在編程時(shí)勢(shì)如破竹,與你所能達(dá)到的技術(shù)深度關(guān)聯(lián)緊密。 5. 運(yùn)用你的想象力,總是問這樣的問題“還有更好的辦法嗎?”跳出固有的思維模式,最好的實(shí)現(xiàn)方式也許還沒有人嘗試過。 6. 永遠(yuǎn)不要過早退出,不要兩次編寫同一段代碼,不要將一個(gè)變量命名為另一個(gè)變量的子集。如果不理解這些規(guī)則,也許你會(huì)爭(zhēng)辯,不過一旦你這么做了,它們就能幫助你寫出更好的代碼,否則你將永遠(yuǎn)停留在初級(jí)程序員的水平。 7. 學(xué)習(xí)如何進(jìn)行基準(zhǔn)測(cè)試,學(xué)會(huì)的那一天,你會(huì)發(fā)現(xiàn)世界將變得不同。 8. 學(xué)會(huì)如何分辨瑣事和細(xì)節(jié),只將精力集中于細(xì)節(jié)。 9. 不要總是向你的用戶和管理者妥協(xié),有時(shí)應(yīng)該讓他們知道,他們自以為的并不是那么重要。 10. 寫一個(gè)框架,無論你是否計(jì)劃使用它。這個(gè)過程會(huì)讓你學(xué)到靠其他方式無法學(xué)到的東西。 11. 把學(xué)到的東西教給別人,無論是口口相授還是文以載道,你都會(huì)發(fā)現(xiàn)自己也能從這個(gè)過程中收獲良多。 12. 找到旁人寫的這樣一些代碼——它們實(shí)現(xiàn)了重要的功能,但寫得并不夠聰明。重寫它們,然后告訴自己永遠(yuǎn)不要犯相同的錯(cuò)誤。 13. 在人生的某個(gè)時(shí)候,運(yùn)營(yíng)你自己的事業(yè)(服務(wù)或產(chǎn)品)。你能從中學(xué)到當(dāng)職員時(shí)無法領(lǐng)悟的編程技巧。 |
|