1. 程式人生 > >如何成為一名真正專業的程式設計師

如何成為一名真正專業的程式設計師

關於如何學習程式碼,各種聲音很多,然後很多人就被誤導為成為專業開發人員懂得一門程式語言就夠了?!呵呵,就像其他工作一樣,光會一個技能那是遠遠不夠的。要想成為一名專業的程式設計師,僅僅會寫程式碼是不夠的。從團隊合作去解決問題到版本控制,你還得具備其他關鍵技能的工具包。當我們詢問相關的專業開發人員,那些必備的關鍵技能都是什麼的時候,下面是我們瞭解到的情況。



如果你想要成為一名開發人員,下面就是一些你必須要掌握的最重要的技能(編碼這個要求就不贅述了,這太理所當然了)。

學會並擅長溝通


雖然一些媒體上面將程式設計描述為一種“閉門造車”的行為,但事實上,它涉及到很多與人溝通和協作的事宜。如果你工作於一家公司,那麼你會成為開發團隊的一部分,並且得和其他人交流和合作。

然而,Jeff Bargmann,Lifehacker最喜歡Fences和Bins的開發人員強調,知道如何清晰可信地說話和寫作對於那些獨立的開發人員甚至更加重要:
學校課程一點也沒有教我們學習必要的書面表達技巧。(就教我們程式設計,對不?)在你的職業生涯中——如果你以後想繼續晉升的話——那麼你需要花大量的時間用於清楚簡潔、令人信服的溝通交流——從你需要發電子郵件給同事、經理、客戶/合作伙伴、甚至有一天可能是高管僅這個方面想,就足夠說服人的了。但是由於我們開發人員習慣於比其他人做事快兩倍(我們都很聰明,對吧?!),所以令人沮喪的是,這樣會導致需要多花上兩倍的時間才能順利地表達清楚。而作為一名獨立的開發人員,用一句話來說就是“不在沉默中爆發就在沉默中滅亡”——再怎麼難也必須掌握這重要的技巧。

Jeff也針對溝通技巧提出了一些建議:
要麼跨過這個障礙,要麼在過程中學習,總之你需要的是真實的社會實踐(我們要想擅長編碼也是如此!)。可以試著釋出一些簡短的文章、大聲閱讀電子郵件、勇於面對批評教育,建立適合自己的經驗教訓。

如果你現在還沒有機會加入到一個團隊中一起開發,那不妨考慮一下一些高校的溝通、演講和寫作班輔導。此外還有各種課外的網路資源供君採擷。

提升解決問題的能力


很多開發人員說了解一門程式語言只是編碼的一小部分。解決問題則是另一個重要的技能,而這也是那些新手開發人員所缺乏的。如果將軟體開發比作是一個巨大的謎團:那麼你需要弄清楚如何將你的一個程式片段連線到另一個上面,而這一過程往往並不簡單。有讀者Jsimon作了如下解釋:
我有碰到過那種據悉已經完全掌握整一門程式語言所謂的“牛人”,但是想出來的解決方案居然只能往廢紙簍那裡扔。最好的例子就是在大學中,那個時候我們正在開發一個專案。有人要我來看看某部分程式碼,因為這片程式碼的負責人不能將之連線到伺服器的介面上了。原因是他竟然沒有設定埠。所以說,解決問題的能力很重要。

不過,解決問題確實是一個很難學習的技能。實踐是其關鍵所在。可以先拿小專案試手,比如說開發一個便籤app、計算器,只要你感興趣的都可以。在開發過程中,你需要關注程式碼背後的邏輯,學會像計算機一樣思考,而不僅僅只是理解這門程式語言。

事先學習計算機的工作原理也是有幫助的。這個技巧來自於Jacobm001這位讀者:
解決問題是我們要做的最多的一部分。計算機的思維和我們是不一樣的,你往往需要重新學習其思考問題的方式。為了提高效率,你需要真正地理解計算機是如何運作的以及是如何處理CPU資訊的。我個人非常討厭計算機編譯,不過幸虧我學過有關於這方面內容的課程。只要你稍微懂點編譯知識,往往能想出更棒的點子來正確地實現一些事情。

正如Jsimon所說,既知道如何寫程式碼又懂得解決連線件的相關問題是我們學習的關鍵。一旦你真正邁進了開發程式的大門,那麼就需要專注於形成一種系統的方法來解決你面臨的各種問題。

起來,到了學習版本控制的時候了


如果是在大學裡,你可以和程式設計課上的團隊一起合作開發專案。WindowsSVN和GitHub是很多開發團隊常用的用於共同建立和更新開源app的兩個工具。而且這兩工具沒有限制,誰都可以使用。但是企業更青睞於Subversion和Apache SVN。所以在開始新工作以前,你最好先了解一下這些系統是如何工作的,這樣能夠讓你在那些新隊友面前“一鳴驚人”。學習工具是需要一定的時間和實踐的,但是如果你一點也不懂的話,那就會遠遠落後於其他人的進度。

真正掌握系統的唯一途徑是實踐。如果你還在大學中,學習這些工具有助於你進入以團隊為導向的大型課堂專案中。如果是這種情況,可以要求使用GitHub或其他形式的儲存庫,即使老師並沒有對此提出要求。如果你是自學的,那先找個合作的團隊,既可以通過GitHub上的專案,也可以找一些你希望與之工作的同伴共同開始一個新的專案。

開發學習的技巧


技術就像歷史的巨輪總是在不斷向前翻滾,開發人員對於知識的態度也應該如此。如果你想要繼續留在相關的領域中,關鍵是要跟上發展的腳步,不斷地更新程式語言、軟體和硬體技術。讀者Wakers01對此的看法是:
……你需要不斷地學習新的語言、技術和工具。你必須花心力去研究新的技術,分析它的優點和缺陷,並迅速消化。請注意,這裡我之所以用“消化”,而非“學習”是因為,我想表達的意思是,你必須得充分吸收、理解,並將這個新的東西融入到你的技能系列中,而不僅僅只是獲得一些有關於如何工作的新知識。只要你能保持這種學習新事物的勁頭,那麼你一定會越來越強。

我們還可以通過一些技巧快速地學習技能。例如,如果你能先花點時間去了解記憶體的工作原理,那麼你將更高效地使用它們。學習還包括理解,所以除了上面提到的溝通能力,專注於提高閱讀理解的能力也是不可或缺的,這個可以通過閱讀相關技術文件和其他書面資源獲取。好記性不如爛筆頭,有一個良好的筆記系統有助於你迅速找到你所需要的參考資訊。

從基礎開始:將學習看作是一個你應該重點掌握的技能。一旦你這樣做了,你就能更快地跟上技術發展的腳步,在此領域內超前於你的競爭對手。程式設計其實還包括很多內容,而不是你原先想的只需要坐在計算機前寫程式碼就ok了。如果你比其他人早明白這一點,那麼你將會有更多的機會掌握一些僱主和客戶需要你知道的關鍵技能,領先於他人一步。

譯文連結:http://www.codeceo.com/article/how-to-professional-programmer.html
英文原文:What It Really Takes to Be a Professional Programmer
翻譯作者:碼農網 – 王國峰