從“野路子”到“正規軍”的軟件開發之路

大家好,我是寶玉。我的專欄《軟件工程之美》剛剛上線,很開心看到了很多同學對軟件工程的理解和期待。

有同學說是從自學編程出身的,碰到過很多的問題,和很多人一樣,我也是野路子出身的,2000年自學Asp編程,大學期間兼職給別人做了不少網站。但那時候拿到一個項目,上手就是寫代碼,沒有對需求進行梳理分析,也沒有設計,直接就是想到哪寫到哪。

這種邊寫邊改的模式看起來開發速度很快,但是後面遇到了不少問題。比如說因爲沒有分析需求,所以做出來的東西不是客戶想要的結果,就得要多次返工重寫,浪費不少時間;寫之前也沒有設計,邏輯都混在一起。最誇張的一個代碼文件有上萬行代碼,最大的函數有一千多行的邏輯。可以想像維護這樣一個項目是多麼的痛苦!因爲很多邏輯也沒有抽象,都是重複的,修改的時候得一個個查找替換,一不小心漏了就出bug了。

有一件事我一直沒好意思提起,就是大二暑假還給別人山寨過一個“金領辦公系統”,如果你搜索一下“金領辦公系統 asp源碼”估計還能找到下載,可以看看我當年作爲一個野路子程序員是什麼水平了,各種拼音+英文混合的命名、意大利麪條式代碼、重複代碼到處複製……

幸運的是,我大三轉到了軟件工程專業,重新學習了軟件工程、數據結構、面向對象這些基礎課程,畢業也順利的成爲一個程序員。

經過專業學習後,對我後面成長還是幫助很大的,這個幫助主要體現在兩個方面。

第一個,就是學習新技術的時候,很快能領悟和融會貫通。比如說我學過瀑布模型,後來去看微軟的MSF,去看敏捷開發,就能根據以前的理論基礎,去看它們共通的地方、不一樣的地方、各自的優缺點,這樣很快就能掌握。

第二個呢就是做事的時候,會更有章法,有理論指導。寫程序前會先注意對需求進行梳理,搞清楚產品經理想要的是什麼,這樣就不用有太多的反覆。寫代碼之前我會先做設計,思考有哪些共同的模塊,應該怎麼抽象。

後來到飛信的時候,因爲表現出色,我開始有機會去管項目。

我還記得第一次作爲項目經理去管一個小項目,我一時之間還真有點懵,不知道該怎麼做。好在學過軟件工程,尤其對瀑布模型、軟件生命週期特別熟悉,於是就嘗試着按照生命週期模型,先把項目拆分成幾個階段,然後在每個階段裏面,按照模塊再去細分,再去制定項目計劃。

幸運的是,我還找到了當初的項目計劃表,分享給大家看看。

在制定計劃的過程中,也幫助我做了一個很重要的轉變,那就是不再是像以前只盯着一個小模塊,不是再只想着技術實現,而是站在項目的整體去思考。

這個項目後來按照我當時制定的計劃進展的很順利。如果之前沒有軟件工程的這些理論基礎,也許我後來還會轉型做管理,但是一定沒有當時那麼順利,要多走很多彎路。

所以我其實一直在微博上、微信上,很多地方都說過,軟件工程是大學裏最重要的一門課程。

我希望《軟件工程之美》專欄能幫大家重新理解軟件工程,從苦鑽技術不得法變得行有章法。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章