軟件工程:從嗤之以鼻到視若法寶

若是非讓我來回憶大學軟件工程課的相關內容,我只能拜託大哥大姐您們別爲難我了好嗎,我對本課程的惟一印象就是這門課是開卷考試的。那麼做爲一個計算機專業、而且做爲當時班級裏爲數很少會編寫一些程序的學生,我對這門課程爲什麼如此的無感呢?程序員

首先,大學一系列枯燥的理論課功不可沒,咱們在學習不少的理論知識,但是卻不瞭解這些知識的應用場景或者說是沒法深入體會其應用場景。計算機能夠說是一門實踐出真知的學問,你能夠把一些經典的理論看成是真知,但由於缺乏實踐,不少同窗對這些真知視而不見,甚至厭惡而刻意遠離,對學校爲什麼如此安排課程感到困惑、憤憤不平、嗤之以鼻。在咱們尚未寫出過幾個像樣的程序的時候,對軟件的理解還很是膚淺的時候,真不知道爲何要去學習軟件工程。微信

其次,並非全部學生都是這樣的,怪就怪本身沒有足夠的領悟力,缺少高人指點和引導,不知道大學裏學的那些知識如何被真正運用到以後的工做中,所以對學校裏學習的內容重視不夠,對於像我這樣沒有以保研爲目標的部分學生來講,及格萬歲。所以,不少人在最有時間精力、最應該努力打好理論基礎的年華,把熱血奉獻給了遊戲或一些虛幻的東西。若是本文的讀者有學生的話,我真心建議你在學生時代好好學習理論基礎,總有一天你會用得上的。框架

由於以上的緣由,軟件工程這門課程只給我留下了開卷考試這麼一個印象。後來隨着工做經歷的增多和視野的開闊,我很快就意識到這個問題,也曾花不少時間去補學校裏學的更多理論知識,但由於工做的繁忙,老是難以靜下心來學習。關於軟件工程,大概十年前還剛畢業不久的時候,我看了林銳的《軟件工程思想》和周愛民的《大道至簡–軟件工程實踐者的思想》,看的時候以爲挺爽,事後又什麼都忘了。後來通過反思,我認爲本身當時還稱不上一個合格的讀者。爲何呢?由於實踐仍是不夠多,我可能還處在熟悉框架、基本工具使用的階段,在項目中只負責某一個模塊的開發,沒有造成全局視野等等,都致使我沒法理解軟件工程知識在項目中的做用。而隨着閱歷的增加,本身也成爲了一些公司的技術負責人,對項目的成敗擔負更大的責任時,才漸漸以爲須要一些流程和方法論,才能更好地將項目推向成功。固然,我也知道一些大神級的人物,好比大學時代就獨立開發出遊戲引擎「風魂」而名聲在外的雲風,聲稱本身對軟件工程沒有興趣。我想或許一些工程相關的東西早就固化在他們那類人的腦子裏了,他不用再去學什麼軟件工程照樣能夠把大項目作成,但不該該讓大多數人去效仿。工具

林銳的《軟件工程思想》雖然是二十年前的做品了,但今天閱讀仍是能有所啓發。在書中他把軟件工程包含的主要環節畫在一個圖上,以下:學習

那麼軟件工程模型就是要將圖上的各個環節串聯起來,而後以必定的規範去執行,成爲一條生產線。關於生產流水線,我在拙做《漫談中小企業研發技術棧》中也有說起,通常來講,閉環的生產線是高效率產出的必要條件。具體的好比線性模型、漸增式模型、快速原型模型等等,能夠去參考具體的軟件工程教程。cdn

在《大道至簡–軟件工程實踐者的思想》中,周愛民說道:blog

在我現在看來,語言實際上是開發的細微未節,而在大學時代、在課桌上使人昏昏欲睡的《軟件工程》纔是軟件開發中的髓質與靈魂。十年的軟件開發實踐中,其實在不少時間裏我都落入了細節陷阱。教程

「實現」的慾望是從程序員出身的管理者的通病。所以若是你仍然在思考選擇什麼語言、如何重構,以及在開發部裏爭論一段代碼有沒有或應不該該採用某種模式,那麼請你暫時沉寂下來,聽我說:那是細節。遊戲

—《大道至簡-軟件工程實踐者的思想》開發

這樣的觀點,簡直不能贊成更多了。我未嘗不是在至關長的時間裏,陷入了實現的細節而不自知,對本身熟悉的東西習覺得常以爲沒價值,對別人作的本身暫時不瞭解的東西,即便再簡單,也總覺得高深莫測,從而做繭自縛缺少自信。

從對軟件工程的嗤之以鼻到視若法寶,是一我的對客觀事物認知不斷變化的一個過程。人的一輩子中會有許許多多這樣的過程在並行着,好比咱們不少年前堅信的東西,隨着閱歷的增長已經變得不那麼堅信了,這是由於咱們對本身、對事物等等的見解發生了變化,你們常說的三觀發生了變化。那這樣是否是意味着過去的本身對不少東西的認知是錯誤的呢?其實我以爲有時候也不能分對錯,多是有偏頗,那麼咱們能作的,就是不管處於哪一個階段,都應該汲取更多的知識,進行更多的實踐,使本身對這個世界的認知儘可能地接近真相,這樣有助於在每一個十字路口都能作出相對正確的選擇。

此文是對我本身經歷的總結剖析,若是還能給剛上船的年輕朋友們一點點啓發,那將倍感榮幸!

微信掃碼,進入【技術人成長】社羣逛逛。

相關文章
相關標籤/搜索