個人軟件開發生涯開始於15年前。編程
可是直到最近的5年,我才真正開始看到本身在軟件開發領域的巨大進步。編程語言
這裏有一些感悟是我但願可以在我進入軟件開發領域時所知道的事情,若是我早一些領悟到,相信會比如今更加成功,也更節省一些時間。ide
軟件開發工做沒有「正確方法」單元測試
在軟件開發生涯的早期,我曾經浪費了大量的時間在學習和爭辯,錯誤的相信有一條「絕對正確的方法」可以應付軟件開發的不少方面。學習
結果證實我曾經認爲關於軟件開發的每一件正確的事情到最後都是錯誤的。測試
可是更重要的是,我發現不多有事情是黑白分明的。在寫代碼和開發軟件時所作的幾乎每個決定都取決於當時所處的環境。spa
我曾經討論過關於技術的宗教式信仰是如何對軟件開發者不利的,但這個話題已超出技術範疇。orm
沒有萬能的最佳實踐方式,這句話很對。甚至像「是否應該進行單元測試」、「敏捷開發和瀑布模型哪一個最好」這種高熱度的話題都不會有一個直截了當的簡單答案。cdn
在個人職業生涯中,我已經浪費了大量時間在這種「正確方法」上以致於最終一無所得,而不是探尋可讓我走更遠的「實用主義」道路。遊戲
一頁一頁看書不是最佳的學習方式
當我第一次想提高本身的編程水平和各類技術水平時,我花了很是多的時間一頁一頁地讀具體的技術類的書。
讀書並無錯,可是要有選擇那些重要的書和重要的章節讀。
好比,我記得我曾經讀過一本很是厚的關於Visual C++的書(我很是肯定是《Beginning Visual C++ 2012》的早期版本),總之,這本書是一本包含了海量知識的好書,可是一頁一頁讀並非學習Visual C++的最佳途徑。
早知道我就應該像過流水帳通常地粗略地看下這本書的全部章節,以瞭解Visual C++包括哪些知識點,而後再考慮哪些部分是最重要的,是應該首先讀的。
若是我坐下來實際練習下書中的基礎練習題而不是僅僅看過或跳過這些例子的話,會有更多的收穫。除非你實際用你的所學解決了實際的問題,不然算不上你學會了這門技術。
深刻學習特別技術是浪費時間
我不只僅浪費時間在一頁一頁的讀書,還常常選擇了那些錯誤的書讀。
曾經的我花費了大量的時間讀諸如ASP.NET或Hibernate等特別技術的書,而不是讀像《代碼大全》、《代碼整潔之道》、《敏捷軟件開發:原則、模式與實踐(C#版)》(順便說一句,若是你尚未讀過這些書,我推薦你讀一讀)。
比起知道你所用的技術的重要性,成爲某一特別領域的專家是不重要的。知道某一個具體API調用一點好處都沒有,當你須要它的時候只要查詢下就行了。
我曾經花費大量時間深刻學習的許多技術中,到最後要不這技術逐漸沒落,要不就是太過技術以致於我本身放棄了它。這些特別技術中的絕大多數最終都證實是在浪費時間。
只要是我正在使用,不管什麼語言,成爲這種編程語言方面的專家都是很重要的,由於在一門特殊語言方面的專業知識可以讓你活躍在軟件開發領域許多年。 固然,我仍然在花時間深刻學習C++、C#和JAVA,可是,對於如今的我來講,可能多花一點時間在C++的各類紛繁難懂之處並無什麼好處。
技術社區在軟件生涯中及其重要
在我早年的職業生涯中,我犯過的一個錯誤就是沒有投入到技術社區中求助或幫助他人。
我老是樂於幫助個人同事,並和我所接觸的各種職業打交道,但歷來超出我所在公司的人員和崗位範圍。
曾經我花了大量時間將本身投入在所在公司的職業生涯中,而沒有在軟件開發社區中投入一點時間,這點很是的不划算。
曾經我花時間致力於內部技術建設的分享或實踐本來也能夠在技術社區中作一樣的分享和交流,也一樣會給我帶來工做上的承認。
我也錯誤的認爲我沒有什麼有價值的事情貢獻給技術社區。
如今的我會和不少軟件開發的新手們聊天,有時候我想相比咱們他們必定花了不少精力貢獻在技術社區,由於和其餘新手相比較,他們看起來沒有懂的更多,也沒那麼抓狂。
若是時光可以倒流,我確信年輕時候的本身必定會投入不少時間在技術會議和用戶羣組上,我會盡早地開始寫本身的博客並建立本身的項目和資源與其餘人分享,而不是呆呆地讀書。
永遠有編外項目在作
影響我職業生涯最大的選擇可能就是杜絕看電視、《無盡的任務》和《魔獸世界》遊戲了,取而代之的是將這些時間用在個人編外項目上。
在過去的生活中我已經浪費了不少時間在作娛樂活動,而不是那些可以充實我生活的事情。
在大約3-4年前,我已經基本和看電視這種活動決絕了,如今的我甚至都不多看電影。看電視和看絕大多數電影都是一種時間浪費,浪費那些本來能夠作一些有用之事的時間。多數的電視遊戲也是如此,但至少玩電視遊戲收穫的也不只僅只是無用信息。
我很是喜歡玩電視遊戲,並且恐怕也不會有停手的那一天,可是我着實但願我可以把花費在玩遊戲、看電視的時間投入在自有的項目上。
不幸的是,我真正開始本身的第一個項目倒是在大約3年之前,那時的我開始着手建立一個Android應用程序。
當你爲別人工做時,可以花時間在本身的項目上很是重要,不然就是在犧牲本身的精力爲別人建造帝國。
在過去的幾年間,我不只從編外項目中學習到了很多東西,並且也從其中獲得了巨大的利益。事實上,其中的一個編外計劃:建立Pluralsight課程,是我如今正全職在在作的事情。
將所學揉合起來
以上所說是少數我後悔沒有在本身職業生涯開始時不知道的感悟,但從一開始我仍然作了不少正確的事情。
實際上我在一個絕密項目中正將這些信息結合起來幫助開發者開始他們的職業生涯並讓他們學會推銷本身。
若是你想成爲這個項目正式啓動後的第一個參與者,在這裏註冊,到時我會通知你。
你有什麼感悟?
當你開始本身的軟件開發生涯時你但願有哪些經驗與你們分享呢?請留言讓我知道。