10種阻礙程序員職業生涯發展的行爲

1. 太懼怕學不會新的工具、語言和框架程序員

通常的程序員會墨守他們最喜歡的工具,而不但願學習新的,由於他們認爲,離開了那些語言和工具,多年的經驗就會付諸東流。而強大的程序員會擁抱那些挑戰和機會,積極地學習新的工做方式。web

2. 直到特性「完成」的時候纔會提交。(但永遠都不會完成!)編程

他在MarkedUp公司中把這種行爲叫作「囤積提交(commit hoarding)」。有些程序員沒有足夠的信心來承受團隊中其餘成員的批評和審查,所以會把本身的工做藏起來,直到「完成」狀態才提交。多線程

這種開發者會損害團隊中其餘人員的生產力,由於團隊看不到他天天的成果,並且他也不會在正常開發的過程當中尋求幫助,這樣就會形成不少「最後一分鐘」的缺陷,從而讓交付延遲。而強大的程序員會知道,代碼並非他們本身,所以會把代碼常常自信地呈如今其餘團隊成員的眼前,得到批評和建議。框架

3. 只是「知其然」會很危險asp.net

在這裏Aaron舉了微軟最近在C# 5.0中引入的async和await關鍵字爲例,這兩個關鍵字會讓建立和管理異步調用變得很容易,可是也會形成上下文切換、對共享資源進行多線程訪問的成本,僅僅對此有基本瞭解的程序員會盲目地使用這些特性,把全部I/O調用都封裝成C#中的Task對象,這會建立出危險的、不可預測的並且很是難以測試的代碼。異步

好的開發者不只「知其然」,並且會了解爲何這麼作以及應該在什麼樣的條件下使用。async

4. 分析癱瘓(Analysis paralysis)工具

分析癱瘓是指在程序開發初期進行系統分析,常由於太過執着於控制全部可能的變化和意外,而形成大量時間的浪費,裹足不前。這是一種很經典的問題,會影響不少通常的程序員。它一般是由過分分析形成的,可是Aaron認爲其根本緣由在於不敢作出壞的決定。通常的程序員會擔憂犯錯,只想一次成功。單元測試

而強大的程序員不會懼怕,他們會編寫很爛的代碼,對其進行單元測試,若是認爲沒法達到目的,就會在45分鐘以內把它拋棄。強大的程序員會積極地限制用來研究的時間,由於他們知道那是個陷阱——看起來是有效的,但常常都無效。

5. 沒有對工具和開發過程投入

若是你想要成爲天才程序員,那麼就須要投入時間提高技能和知識,而將你和普通的代碼工人區分開來的是快速編寫出生產級別代碼的能力。你能夠同時擁有好的代碼和速度,可是你須要先對你用於構建的過程投入。

通常的程序員不會對工具、過程和環境投入,只會使用大量的時間學習新的語言特性和API如何工做,但那並不會改變什麼。

一般,你做爲程序員所可以作出的最大改進並非專一於你所編寫的代碼,而是優化你編寫代碼的過程。

6. 羞於請求幫助

通常的程序員羞於或者不想讓人知道本身不懂,因此他們裝做什麼都知道,但這樣就有可能提交某種很是可怕的代碼到庫中。說「我不知道怎麼作。」沒什麼錯,強大的程序員知道這一點,因此當被問題難住的時候就會請求幫助。

7. 不知道如何讓其餘程序員更容易使用你的代碼

在全部技術團隊中,工做很重要的一部分就是人員的並行(human parallelism),也就是多我的可以同時對同一代碼庫工做的能力。可是對於團隊來講,可以異步工做也很重要,當你不在的時候我能夠修改你的代碼,反之亦然。

通常的開發者並不這麼認爲,他們會開始對一項任務編寫代碼,認爲他們會永遠擁有這段代碼。而強大的開發者會知道技術債務的說法,從而試圖經過設計代碼來對其限制,讓它儘量可維護和自解釋。

編寫可讀的代碼須要程序員改變他們的見解——你的代碼要比你在組織中存在的時間長。

8. 不知道如何閱讀其餘人的代碼(或者不想讀)

當一位通常程序員看到用他所不熟悉的語言或框架編寫的代碼庫時,就想馬上重寫,而不考慮業務價值或者推向市場的時間。而強大的程序員會接受這樣的觀點,重寫所致使的業務成本一般是不可接受的,因此應該避免這種行爲。他們會試圖坐在計算機前,理解、學習而後修改現有的代碼。

閱讀代碼要比編寫代碼還難,可是強大的程序員會投入時間來學習如何超越。

9. 不能從最終用戶的角度編碼(你考慮的範圍太狹窄)

有句話說得好:做爲程序員,你的工做不是解決技術問題,你之因此解決技術問題,是爲了解決業務問題。

通常的程序員只會陷在技術問題之中,而不知道最初是爲何要解決這個問題。更嚴重的是,通常程序員沒法從頭開始建立出具備業務價值的東西。當被要求基於簡單的用戶設計新特性的時候,他們會死板地、照着字面對故事或者說明書作出解釋,這樣交付的產品用戶根本沒法使用。由於他們不會考慮相關的用例;不會考慮最終用戶的體驗;而且在作面向用戶的內容時,設計都會很笨重。這致使他們沒法編寫業務應用,只能作產品。

好的程序員會從最終用戶的角度來看他們的代碼。我怎樣才能讓它更輕鬆地解決用戶的問題呢?故事的文字內容以外有哪些方面會讓這個特性給用戶帶來更多收益呢?

10. 沒法判斷任何編程任務的業務價值

這個問題和上一個是相關的,不少技術上很強的程序員之因此沒法意識到本身的潛力,是由於他們不會停下來,從業務或者組織自己的角度去看一下他們的工做。

強大的程序員可以自我管理,對選擇如何投入時間作出很好的業務決定,他們會問這樣的問題:這是我如今應該作的最有價值的事情嗎?我應該爲之投入多少時間?離交付日期有兩個星期,我如今能作什麼,從而更容易知足那個日期呢?

通常的程序員不會,他們只會拿着說明書,而後盲目地實現,直到結束,不關心他們的工做和公司的業務目標有什麼關係,以及對其餘團隊和業務組會產生什麼樣的影響。這樣,他們就會在業務價值很低的技術任務上浪費大量開發時間。

相關文章
相關標籤/搜索