要給優秀的程式師下一個明確的定義無疑是一件非常困難的事情。 擅長抽象思維、動手能力強、追求效率、喜歡自動化、願意持續學習、對代碼品質有很高的追求等等。
首先看看這些人:為何說人人都將成為程式師?
史蒂夫·約伯斯
每個人都應該學習給電腦編寫程式的技術, 因為這一過程能夠教你如何去思考!
Mark Zuckerberg:Facebook創始人
“Facebook的政策是只要你是一個有才能的工程師, 我們都會錄用你。 不過現在看來, 具備這樣條件的高素質、高技能的人並不多。 也就是說, 你還有機會!”
Eric Schmidt:Google執行主席
“對於這個地球上大多數人來說,
Sheryl Sandberg:Facebook首席運營官
“在今天的世界裡, 很好的理解電腦科學變得越來越必不可少。 國家的綜合競爭力取決於我們在孩子身上的教育能力的——包括對女孩的教育投入, 這是一個關鍵領域。 ”
為什麼優秀的程式師都會多種程式設計語言?
簡單地說程式設計是一種表達方式體現的是思想與解決問題的經驗和個人的數學、工程相關的知識,
而程式設計語言只是一種工具。
為了使電腦能夠理解人的意圖, 人類就必須將需解決的問題的思路、方法、和手段通過電腦能夠理解的形式告訴電腦, 使得電腦能夠根據人的指令一步一步去工作, 完成某種特定的任務。 這種人和電腦之間交流的過程就是程式設計。
如果你精通某門程式設計語言, 比如C++,那麼你必然能輕鬆學會其同類的任何一種語言比如, Java、python、C#等。 但如果你做不到, 那麼只能說你的菜鳥, 距離精通還十萬八千里。
那麼優秀的程式師還具備哪些超能力呢?
1、對程式設計有激情
很多程式師幹這一行只是為了掙錢, 如果有更好的職業, 他們會毫不猶豫的辭掉程式師的工作。 而優秀的程式師熱愛程式設計, 喜歡鑽研代碼中的問題, 他們感到能指揮電腦來幫助人們和自己解決現實生活中的問題是一種神奇的能力。 當遇到問題無法解決時, 他們會茶不思、飯不想, 無法入睡。
2、不僅關心技術方面的知識, 同時關注非技術方面的知識
不稱職的程式師喜歡臨時抱佛腳, 只有在需要的時候才去學習。 而優秀的程式師會去主動學習各種相關知識, 對各種知識來源都有一種開放的心態, 而不會象有的人那樣固步自封。 而且, 並不只局限在跟職業相關的技術類知識, 同時他也會學習任何感到有趣的知識, 比如溝通技巧等。
3、如何構造代
在學習了一門程式設計語言之後——或者最好是在學習的同時——我堅信, 你需要知道的下一件事就是如何正確地構造你的代碼。
有一個很好的資源來幫助你學習這個非常寶貴的技能:Steven McConnell的《Code Complete 》。
所說的構造代碼是什麼意思呢?
意思是,要寫出好的,清晰的,易於理解的代碼,不需要大量注釋,因為代碼本身就是一種表達方式。
很多軟體發展者在他們整個職業生涯都不曾去學習這個技能,這是不幸的,因為這是我——以及其他許多人——判斷一個軟體發展人員技術和能力的主要方式。
良好的代碼結構展示了對這種技藝的熱衷,而不僅僅是為了完成工作。
構建代碼是軟體發展真正的藝術部分,但它也是至關重要的,因為你和你的同事得花費相當多的時間來維護現有的代碼,而不是編寫新的代碼。
具體應該如何正確地組織代碼我就不說了,因為我已經給出了一個很好的資源,但是要努力學習如何從一開始就寫出好的、乾淨的代碼,而不是事後學習這個技能。
4、好的代碼總是盡可能地精簡
好的代碼旨在創造優雅的解決方案,做它應該做的事情,不重複代碼,並且經過很好地組織。最大的專案膨脹是由於方法重複,組織不良以及分解事物要點的關注點混雜而造成的。好的代碼會精簡化事情,簡化到核心功能,然後合併這些核心功能以建立軟體。
另外還有一點可以通過自身的學習來獲取一大進步。
究竟有哪些乾貨呢?
你需要知道的下一件事就是如何正確地構造你的代碼。有一個很好的資源來幫助你學習這個非常寶貴的技能:Steven McConnell的《Code Complete 》。
所說的構造代碼是什麼意思呢?
意思是,要寫出好的,清晰的,易於理解的代碼,不需要大量注釋,因為代碼本身就是一種表達方式。
很多軟體發展者在他們整個職業生涯都不曾去學習這個技能,這是不幸的,因為這是我——以及其他許多人——判斷一個軟體發展人員技術和能力的主要方式。
良好的代碼結構展示了對這種技藝的熱衷,而不僅僅是為了完成工作。
構建代碼是軟體發展真正的藝術部分,但它也是至關重要的,因為你和你的同事得花費相當多的時間來維護現有的代碼,而不是編寫新的代碼。
具體應該如何正確地組織代碼我就不說了,因為我已經給出了一個很好的資源,但是要努力學習如何從一開始就寫出好的、乾淨的代碼,而不是事後學習這個技能。
4、好的代碼總是盡可能地精簡
好的代碼旨在創造優雅的解決方案,做它應該做的事情,不重複代碼,並且經過很好地組織。最大的專案膨脹是由於方法重複,組織不良以及分解事物要點的關注點混雜而造成的。好的代碼會精簡化事情,簡化到核心功能,然後合併這些核心功能以建立軟體。
另外還有一點可以通過自身的學習來獲取一大進步。
究竟有哪些乾貨呢?