我希望在軟體開發生涯初期就知道的 4 件事

IDF實驗室部落格發表於2013-10-17

  我的軟體開發生涯開始於15年前。

  但是直到最近的5年,我才真正開始看到自己在軟體開發領域的巨大進步。

  這裡有一些感悟是我希望能夠在我進入軟體開發領域時所知道的事情,如果我早一些領悟到,相信會比現在更加成功,也更節省一些時間。

  軟體開發工作沒有“正確方法”

  在軟體開發生涯的早期,我曾經浪費了大量的時間在學習和爭辯,錯誤的相信有一條“絕對正確的方法”能夠應付軟體開發的很多方面。

  結果證明我曾經認為關於軟體開發的每一件正確的事情到最後都是錯誤的。

  但是更重要的是,我發現很少有事情是黑白分明的。在寫程式碼和開發軟體時所做的幾乎每一個決定都取決於當時所處的環境。

  我曾經討論過關於技術的宗教式信仰是如何對軟體開發者不利的,但這個話題已超出技術範疇。

  沒有萬能的最佳實踐方式,這句話很對。甚至像“是否應該進行單元測試”、“敏捷開發和瀑布模型哪個最好”這種高熱度的話題都不會有一個直截了當的簡單答案。

  在我的職業生涯中,我已經浪費了大量時間在這種“正確方法”上以至於最終一無所獲,而不是探尋可以讓我走更遠的“實用主義”道路。

  一頁一頁看書不是最佳的學習方式

reading-book_thumb

  當我第一次想提升自己的程式設計水平和各種技術水平時,我花了非常多的時間一頁一頁地讀具體的技術類的書。

  讀書並沒有錯,但是要有選擇那些重要的書和重要的章節讀。

  比如,我記得我曾經讀過一本非常厚的關於Visual C++的書(我非常確定是《Beginning Visual C++ 2012》的早期版本),總之,這本書是一本包含了海量知識的好書,但是一頁一頁讀並不是學習Visual C++的最佳途徑。

  早知道我就應該像過流水賬一般地粗略地看下這本書的所有章節,以瞭解Visual C++包括哪些知識點,然後再考慮哪些部分是最重要的,是應該首先讀的。

  如果我坐下來實際練習下書中的基礎練習題而不是僅僅看過或跳過這些例子的話,會有更多的收穫。除非你實際用你的所學解決了實際的問題,否則算不上你學會了這門技術。

  深入學習特別技術是浪費時間

  我不僅僅浪費時間在一頁一頁的讀書,還經常選擇了那些錯誤的書讀。

  曾經的我花費了大量的時間讀諸如ASP.NET或Hibernate等特別技術的書,而不是讀像《程式碼大全》、《程式碼整潔之道》、《敏捷軟體開發:原則、模式與實踐(C#版)》(順便說一句,如果你還沒有讀過這些書,我推薦你讀一讀)。

  比起知道你所用的技術的重要性,成為某一特別領域的專家是不重要的。知道某一個具體API呼叫一點好處都沒有,當你需要它的時候只要查詢下就好了。

  我曾經花費大量時間深入學習的許多技術中,到最後要不這技術逐漸沒落,要不就是太過技術以至於我自己放棄了它。這些特別技術中的絕大多數最終都證明是在浪費時間。

  只要是我正在使用,無論什麼語言,成為這種程式語言方面的專家都是很重要的,因為在一門特殊語言方面的專業知識能夠讓你活躍在軟體開發領域許多年。當然,我仍然在花時間深入學習C++、C#和JAVA,但是,對於現在的我來說,可能多花一點時間在C++的各種紛繁難懂之處並沒有什麼好處。

  技術社群在軟體生涯中及其重要

community_thumb

  在我早年的職業生涯中,我犯過的一個錯誤就是沒有投入到技術社群中求助或幫助他人。

  我總是樂於幫助我的同事,並和我所接觸的各類職業打交道,但從來超出我所在公司的人員和崗位範圍。

  曾經我花了大量時間將自己投入在所在公司的職業生涯中,而沒有在軟體開發社群中投入一點時間,這點非常的不划算。

  曾經我花時間致力於內部技術建設的分享或實踐原本也可以在技術社群中做同樣的分享和交流,也同樣會給我帶來工作上的認可。

  我也錯誤的認為我沒有什麼有價值的事情貢獻給技術社群。

  現在的我會和很多軟體開發的新手們聊天,有時候我想相比我們他們一定花了很多精力貢獻在技術社群,因為和其他新手相比較,他們看起來沒有懂的更多,也沒那麼抓狂。

  如果時光能夠倒流,我確信年輕時候的自己一定會投入很多時間在技術會議和使用者群組上,我會盡早地開始寫自己的部落格並建立自己的專案和資源與其他人分享,而不是呆呆地讀書。

  永遠有編外專案在做

  影響我職業生涯最大的選擇可能就是杜絕看電視、《無盡的任務》和《魔獸世界》遊戲了,取而代之的是將這些時間用在我的編外專案上。

  在過去的生活中我已經浪費了很多時間在做娛樂活動,而不是那些能夠充實我生活的事情。

  在大約3-4年前,我已經基本和看電視這種活動決絕了,現在的我甚至都很少看電影。看電視和看絕大多數電影都是一種時間浪費,浪費那些原本可以做一些有用之事的時間。多數的電視遊戲也是如此,但至少玩電視遊戲收穫的也不僅僅只是無用資訊。

  我非常喜歡玩電視遊戲,而且恐怕也不會有停手的那一天,但是我著實希望我能夠把花費在玩遊戲、看電視的時間投入在自有的專案上。

  不幸的是,我真正開始自己的第一個專案卻是在大約3年以前,那時的我開始著手建立一個Android應用程式。

  當你為別人工作時,能夠花時間在自己的專案上非常重要,否則就是在犧牲自己的精力為別人建造帝國。

  在過去的幾年間,我不僅從編外專案中學習到了不少東西,而且也從其中得到了巨大的利益。事實上,其中的一個編外計劃:建立Pluralsight課程,是我現在正全職在在做的事情。

  將所學揉合起來

  以上所說是少數我後悔沒有在自己職業生涯開始時不知道的感悟,但從一開始我仍然做了很多正確的事情。

  實際上我在一個絕密專案中正將這些資訊結合起來幫助開發者開始他們的職業生涯並讓他們學會推銷自己。

  如果你想成為這個專案正式啟動後的第一個參與者,在這裡註冊,到時我會通知你。

  你有什麼感悟?

  當你開始自己的軟體開發生涯時你希望有哪些經驗與大家分享呢?請留言讓我知道。

  英文原文:4 Things I Wish I Would Have Known When I Started My Software Development Career

相關文章