1. 初嘗禁果
第一次寫代碼至今已20年光陰子檀,那是1998年苍蔬,老爸給我買了一臺裕興學(xué)習(xí)機(紅白機的一種,下附圖)洒忧。按照配套的“編程手冊”使用Basic語言實現(xiàn)圖形繪制运授、設(shè)定超級瑪麗行走路線等等烤惊,編程結(jié)果可以保存在軟盤中(90后估計都不知道是什么東東,一張軟盤的容量只有1.44MB徒坡,附圖中藍(lán)色的物體)撕氧。
當(dāng)時的我感覺自己帥呆了,其興奮程度不雅于發(fā)現(xiàn)新大陸喇完,可惜老爸認(rèn)為我“玩物喪志”伦泥,從此就冰封了我的寶貝,直到我高考結(jié)束后才給解封锦溪,不過幾年后的我早已移情別戀了——電腦不脯,正真的電腦。
2. 從Hello World開始
真正的編程生涯是從大一開始的刻诊,先是用Dreamweaver做給班級做最佳團日的網(wǎng)頁防楷,那時也機緣巧合地加入了學(xué)校的“微軟技術(shù)俱樂部”。后來開始學(xué)習(xí)VB6.0则涯、VB.NET复局、C#.NET冲簿、SQL Server等微軟陣營的技術(shù),從Hello World的開始了真正的編程生涯亿昏。再后來又學(xué)習(xí)了PHP峦剔、JAVA、Python角钩、Go等語言吝沫,就這樣伴隨著各種編程語言經(jīng)過了四年的大學(xué)生涯。
3. 誤入歧途
畢業(yè)后我進(jìn)入了政府部門递礼,做的也算是專業(yè)相關(guān)的工作惨险,但也就三個月的時間,鬼使神差的在單位開始了信息化建設(shè)的工作脊髓,從此也正式進(jìn)入了編程工作的事業(yè)階段辫愉,這條路一下子就走到了2018年。
4. 反思短板
在編程職業(yè)的這一路上我在不斷的學(xué)習(xí)供炼,也在不斷的提升一屋,當(dāng)然還在不斷的收獲。不過這時間長了袋哼,短板就凸顯出來冀墨,最凸顯是就是在管理能力方面,其主要原因在我花費了更多的時間在技術(shù)本身上涛贯,從而忽視了管理的重要诽嘉。為了彌補這一短板,我開始了相應(yīng)的充電工作弟翘。
5. 《人月神話》
在研發(fā)管理的書單中虫腋,不得不提小費雷德里克·布魯克斯的《人月神話》這本書,此書出版于1975年稀余,講的是上世紀(jì)60年代的軟件故事悦冀,盡管這是一本老書,但它卻是軟件工程師的圣經(jīng)睛琳。我手上這一本是《人月神話》40周年的中文紀(jì)念版盒蟆,之前沒有好好讀,最近計劃認(rèn)真重讀一遍师骗。
我將分為多次將讀《人月神話》的感受历等、心得寫出來,以便自我促進(jìn)和同行借鑒辟癌。
6. 為什么喜歡編程
我喜歡編程寒屯,不是酷愛,否則不會在這條路上走這么多年黍少,投入這么多時間寡夹,而且到現(xiàn)在還在寫代碼处面。但是我到底喜歡編程什么呢?以前并沒有深思過這個問題要出,淺顯來說是能夠通過編程實現(xiàn)自我價值和靈魂的追求鸳君,就像有人喜歡抽煙,而我喜歡編程患蹂。
在《人月神話》一書中,作者早在40多年前就進(jìn)行了相關(guān)的總結(jié)砸紊,這些總結(jié)至今對我都是受用的传于。
6.1. 創(chuàng)建事物
這種快樂是一種創(chuàng)建事物的純粹快樂。如同小孩在玩泥巴時感到的快樂一樣醉顽,成年人喜歡創(chuàng)建事物沼溜,特別是自己進(jìn)行設(shè)計。
我是一個創(chuàng)造者游添,通過編程系草,我創(chuàng)建了我的王國。
6.2. 對他人有用
這種快樂來自于開發(fā)對他人有用的東西唆涝。內(nèi)心深處找都,我們期望我們的勞動成果能夠被他人使用,并能對他們所有幫助廊酣。如同小孩用粘土為“爸爸的辦公室”捏制鉛筆盒能耻。
每當(dāng)我開發(fā)的軟件在幫助到別人的時候,我的內(nèi)心在竊喜亡驰,這將成為我下一次前進(jìn)的動力晓猛。
6.3. 迷人魅力
快樂來自于整個過程提現(xiàn)出的一股強大的魅力——將相互嚙合的零部件組裝在一起,看到它們以精妙的方式運行著凡辱,并收到了預(yù)期的效果戒职。
將復(fù)雜的問題進(jìn)行分解,然后進(jìn)行分別處理透乾,最后進(jìn)行組裝并讓其良好的運行洪燥,這一過程完全是在享受。
6.4. 持續(xù)學(xué)習(xí)
這種快樂是持續(xù)學(xué)習(xí)的快樂续徽,它來自于這項工作的非重復(fù)特性蚓曼。人們所面臨的問題總有這樣那樣的不同,因而解決問題的人可以從中學(xué)習(xí)新的事物钦扭,有時是實踐上的纫版,有時是理論上的,或者兼而有之客情。
如果是讓我做重復(fù)性的工作其弊,剛畢業(yè)的我只能堅持3個月癞己,現(xiàn)在的我會久一些,不過我會開始迷失梭伐。但是編程的路上痹雅,我需要不停的學(xué)習(xí),我總能拿到新鑰匙糊识,來打開探索未來的新大門绩社。
6.5. 容易實現(xiàn)
這種快樂還來自于在易于駕馭的介質(zhì)上工作。程序員赂苗,就像詩人一樣愉耙,幾乎僅僅在單純的思考中工作。很少有創(chuàng)造介質(zhì)如此靈活拌滋,如此易于精煉和重建朴沿,如此容易實現(xiàn)概念上的設(shè)想。
如果我的職業(yè)是建筑師败砂,我可能需要花一輩子去實現(xiàn)一個宏偉的建筑物赌渣,而通過編程模擬一個建筑將容易的很多。
這5點事作者的總結(jié)昌犹,也是我快樂的源泉坚芜,是它們支持者我一路向前。
7. 編程的苦惱
盡管對編程我是如此的熱愛祭隔,但也逃脫不了快樂的另一面——苦惱货岭。不過當(dāng)我們認(rèn)清苦惱的根源后,當(dāng)它出現(xiàn)時疾渴,我們便能坦然面對千贯。它們并不能阻止我前進(jìn)的步伐,反而讓我更加強壯搞坝。
7.1. 追求完美
因為計算機是以這樣的方式來變戲法的:如果咒語中的一個字符搔谴、一個停頓,沒有與正確的形式一致桩撮,魔術(shù)就不會出現(xiàn)敦第。實際上,我認(rèn)為店量,學(xué)習(xí)編程最困難的部分芜果,是將做事的方式向追求完美的方向調(diào)整。
很多時候為了最后的1%融师,我可能會花費好幾天的右钾、上千次的嘗試。
7.2. 對他人的依賴
對于系統(tǒng)編程人員而言,對其他人的依賴是一件非常痛苦的事情舀射。他依靠其他人的程序窘茁,而往往這些程序設(shè)計的并不合理,實現(xiàn)拙劣脆烟,發(fā)布不完整山林,或者文檔記錄的很糟。所以邢羔,系統(tǒng)編程人員不得不花費時間去研究和修改驼抹,而他們在理想的情況下本應(yīng)該是可靠完整的。
這是一個不可逾越的鴻溝拜鹤,但我可以一步一步的向前砂蔽,在這個過程,我學(xué)會了包容署惯,學(xué)懂了規(guī)則,也更明白TeamWork的重要镣隶。
7.3. 無處不在的Bug
人們發(fā)現(xiàn)調(diào)試和查錯往往是線性收斂的极谊,或者更糟糕的是,具有二次方的復(fù)雜度安岂。結(jié)果轻猖,測試一個托再拖,尋找最后一個錯誤比第一個錯誤將花費更多的時間域那。
Bug與程序是共存的咙边,因為Bug本身就是程序的一部分,我們只能控制Bug的數(shù)量和它的嚴(yán)重性次员、影響范圍败许。零Bug基本上是在一個理想的范疇。
7.4. 陳舊過時
當(dāng)投入了大量辛苦的勞動淑蔚,產(chǎn)品在即將完成或者終于完成的時候市殷,卻已顯得陳舊過時。
其實這種情況是很少的刹衫,大多數(shù)情況會好很多醋寝。
8. 結(jié)束語
快樂也罷,苦惱也好带迟,我選擇了編程音羞,她也選擇了我,我們會不離不棄仓犬、長久相伴嗅绰。
在“焦油坑”這一章,作者還闡述了一個非常重要但很多人并沒有認(rèn)知的觀點:
編程系統(tǒng)產(chǎn)品開發(fā)的工作量是供個人使用的、獨立開發(fā)的構(gòu)件程序的9倍办陷。
所以如果要做成一個產(chǎn)品貌夕,完成它至少是可使用Demo的9倍工作量。
下一次我將分享本書的核心章節(jié)民镜,人月神話到底是什么啡专?結(jié)合我們現(xiàn)在的項目應(yīng)該注意什么?如何改進(jìn)制圈?
敬請大家期待们童!