我的軟件開發(fā)生涯開始于15年前。
但是直到最近的5年,我才真正開始看到自己在軟件開發(fā)領(lǐng)域的巨大進(jìn)步。
這里有一些感悟是我希望能夠在我進(jìn)入軟件開發(fā)領(lǐng)域時(shí)所知道的事情,如果我早一些領(lǐng)悟到,相信會(huì)比現(xiàn)在更加成功,也更節(jié)省一些時(shí)間。
軟件開發(fā)工作沒有“正確方法”
在軟件開發(fā)生涯的早期,我曾經(jīng)浪費(fèi)了大量的時(shí)間在學(xué)習(xí)和爭辯,錯(cuò)誤的相信有一條“絕對(duì)正確的方法”能夠應(yīng)付軟件開發(fā)的很多方面。
結(jié)果證明我曾經(jīng)認(rèn)為關(guān)于軟件開發(fā)的每一件正確的事情到最后都是錯(cuò)誤的。
但是更重要的是,我發(fā)現(xiàn)很少有事情是黑白分明的。在寫代碼和開發(fā)軟件時(shí)所做的幾乎每一個(gè)決定都取決于當(dāng)時(shí)所處的環(huán)境。
我曾經(jīng)討論過關(guān)于技術(shù)的宗教式信仰是如何對(duì)軟件開發(fā)者不利的,但這個(gè)話題已超出技術(shù)范疇。
沒有萬能的最佳實(shí)踐方式,這句話很對(duì)。甚至像“是否應(yīng)該進(jìn)行單元測試”、“敏捷開發(fā)和瀑布模型哪個(gè)最好”這種高熱度的話題都不會(huì)有一個(gè)直截了當(dāng)?shù)暮唵未鸢浮?/p>
在我的職業(yè)生涯中,我已經(jīng)浪費(fèi)了大量時(shí)間在這種“正確方法”上以至于最終一無所獲,而不是探尋可以讓我走更遠(yuǎn)的“實(shí)用主義”道路。
一頁一頁看書不是最佳的學(xué)習(xí)方式
當(dāng)我第一次想提升自己的編程水平和各種技術(shù)水平時(shí),我花了非常多的時(shí)間一頁一頁地讀具體的技術(shù)類的書。
讀書并沒有錯(cuò),但是要有選擇那些重要的書和重要的章節(jié)讀。
比如,我記得我曾經(jīng)讀過一本非常厚的關(guān)于Visual C++的書(我非常確定是《Beginning Visual C++ 2012》的早期版本),總之,這本書是一本包含了海量知識(shí)的好書,但是一頁一頁讀并不是學(xué)習(xí)Visual C++的最佳途徑。
早知道我就應(yīng)該像過流水賬一般地粗略地看下這本書的所有章節(jié),以了解Visual C++包括哪些知識(shí)點(diǎn),然后再考慮哪些部分是最重要的,是應(yīng)該首先讀的。
如果我坐下來實(shí)際練習(xí)下書中的基礎(chǔ)練習(xí)題而不是僅僅看過或跳過這些例子的話,會(huì)有更多的收獲。除非你實(shí)際用你的所學(xué)解決了實(shí)際的問題,否則算不上你學(xué)會(huì)了這門技術(shù)。
深入學(xué)習(xí)特別技術(shù)是浪費(fèi)時(shí)間
我不僅僅浪費(fèi)時(shí)間在一頁一頁的讀書,還經(jīng)常選擇了那些錯(cuò)誤的書讀。
曾經(jīng)的我花費(fèi)了大量的時(shí)間讀諸如ASP.NET或Hibernate等特別技術(shù)的書,而不是讀像《代碼大全》、《代碼整潔之道》、《敏捷軟件開發(fā):原則、模式與實(shí)踐(C#版)》(順便說一句,如果你還沒有讀過這些書,我推薦你讀一讀)。
比起知道你所用的技術(shù)的重要性,成為某一特別領(lǐng)域的專家是不重要的。知道某一個(gè)具體API調(diào)用一點(diǎn)好處都沒有,當(dāng)你需要它的時(shí)候只要查詢下就好了。
我曾經(jīng)花費(fèi)大量時(shí)間深入學(xué)習(xí)的許多技術(shù)中,到最后要不這技術(shù)逐漸沒落,要不就是太過技術(shù)以至于我自己放棄了它。這些特別技術(shù)中的絕大多數(shù)最終都證明是在浪費(fèi)時(shí)間。
只要是我正在使用,無論什么語言,成為這種編程語言方面的專家都是很重要的,因?yàn)樵谝婚T特殊語言方面的專業(yè)知識(shí)能夠讓你活躍在軟件開發(fā)領(lǐng)域許多年。當(dāng)然,我仍然在花時(shí)間深入學(xué)習(xí)C++、C#和JAVA,但是,對(duì)于現(xiàn)在的我來說,可能多花一點(diǎn)時(shí)間在C++的各種紛繁難懂之處并沒有什么好處。
技術(shù)社區(qū)在軟件生涯中及其重要
在我早年的職業(yè)生涯中,我犯過的一個(gè)錯(cuò)誤就是沒有投入到技術(shù)社區(qū)中求助或幫助他人。
我總是樂于幫助我的同事,并和我所接觸的各類職業(yè)打交道,但從來超出我所在公司的人員和崗位范圍。
曾經(jīng)我花了大量時(shí)間將自己投入在所在公司的職業(yè)生涯中,而沒有在軟件開發(fā)社區(qū)中投入一點(diǎn)時(shí)間,這點(diǎn)非常的不劃算。
曾經(jīng)我花時(shí)間致力于內(nèi)部技術(shù)建設(shè)的分享或?qū)嵺`原本也可以在技術(shù)社區(qū)中做同樣的分享和交流,也同樣會(huì)給我?guī)砉ぷ魃系恼J(rèn)可。
我也錯(cuò)誤的認(rèn)為我沒有什么有價(jià)值的事情貢獻(xiàn)給技術(shù)社區(qū)。
現(xiàn)在的我會(huì)和很多軟件開發(fā)的新手們聊天,有時(shí)候我想相比我們他們一定花了很多精力貢獻(xiàn)在技術(shù)社區(qū),因?yàn)楹推渌率窒啾容^,他們看起來沒有懂的更多,也沒那么抓狂。
如果時(shí)光能夠倒流,我確信年輕時(shí)候的自己一定會(huì)投入很多時(shí)間在技術(shù)會(huì)議和用戶群組上,我會(huì)盡早地開始寫自己的博客并創(chuàng)建自己的項(xiàng)目和資源與其他人分享,而不是呆呆地讀書。
永遠(yuǎn)有編外項(xiàng)目在做
影響我職業(yè)生涯最大的選擇可能就是杜絕看電視、《無盡的任務(wù)》和《魔獸世界》游戲了,取而代之的是將這些時(shí)間用在我的編外項(xiàng)目上。
在過去的生活中我已經(jīng)浪費(fèi)了很多時(shí)間在做娛樂活動(dòng),而不是那些能夠充實(shí)我生活的事情。
在大約3-4年前,我已經(jīng)基本和看電視這種活動(dòng)決絕了,現(xiàn)在的我甚至都很少看電影。看電視和看絕大多數(shù)電影都是一種時(shí)間浪費(fèi),浪費(fèi)那些原本可以做一些有用之事的時(shí)間。多數(shù)的電視游戲也是如此,但至少玩電視游戲收獲的也不僅僅只是無用信息。
我非常喜歡玩電視游戲,而且恐怕也不會(huì)有停手的那一天,但是我著實(shí)希望我能夠把花費(fèi)在玩游戲、看電視的時(shí)間投入在自有的項(xiàng)目上。
不幸的是,我真正開始自己的第一個(gè)項(xiàng)目卻是在大約3年以前,那時(shí)的我開始著手創(chuàng)建一個(gè)Android應(yīng)用程序。
當(dāng)你為別人工作時(shí),能夠花時(shí)間在自己的項(xiàng)目上非常重要,否則就是在犧牲自己的精力為別人建造帝國。
在過去的幾年間,我不僅從編外項(xiàng)目中學(xué)習(xí)到了不少東西,而且也從其中得到了巨大的利益。事實(shí)上,其中的一個(gè)編外計(jì)劃:創(chuàng)建Pluralsight課程,是我現(xiàn)在正全職在在做的事情。
將所學(xué)揉合起來
以上所說是少數(shù)我后悔沒有在自己職業(yè)生涯開始時(shí)不知道的感悟,但從一開始我仍然做了很多正確的事情。
-
開發(fā)工程師
+關(guān)注
關(guān)注
1文章
91瀏覽量
14946
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論