要突破技術瓶頸?80% 的人忽略了這個因素
大學時候學的軟體工程有用嗎?這是很多人經常問我的問題。大多數人覺得這門課很虛,似乎都是一些條條框框的知識點。比如說書中提到的軟體過程、敏捷方法、需求分析等等內容,讀起來有些道理,但細想又覺得是正確的廢話。
當我們結束學生時代,開始投入軟體開發工作,回過頭來想想,是不是經常遇到這樣的場景:
- 你接到一個開發任務,想開發出需求的功能,你是不是先要做需求分析;
- 你接手一個複雜的、大的功能模組,是不是先要做設計,才能把複雜的拆成簡單的,才能和大家一起分工去開發;
- 你完成一個功能模組,如果要保證質量,是不是需要寫一些測試程式碼,還要做一些功能測試;
- 還有日常用的那些工具,像原始碼管理、Bug 跟蹤;
可以確定的說,不管你用什麼開發語言,不管是前端和後端,現代軟體專案開發,都離不開軟體工程知識的應用。
既然工作中在用,為什麼很多人會覺得大學時候學的軟體工程很“虛”, 卻又能作為國家教育體系中的一門必修學科呢?
那是因為大學期間的“軟體工程”更側重理論,缺少問題導向意識,理解起來枯燥乏味,很難學以致用,但眾所周知“程式 = 資料結構 + 演算法”,而“軟體 = 程式 + 軟體工程”,跟資料結構、演算法一樣, 軟體工程也是技術人的“基本功”。
從當下考慮,學好了軟體工程,你的 工作可以按時完成 ,你的 軟體質量有保證 ,你做 開發的時間和成本都可控。
經常有人說程式設計師是吃“青春飯的”,“中年危機、碼農、搬磚”,這些程式設計師的日常焦慮,究其根本,是計算機技術更新迭代太快,大家總在追趕潮流,擔心被淘汰。
更長遠的去想,在軟體開發領域,有哪些知識是 10 年前很重要,現在仍然重要,未來可能同樣重要的?哪些知識會決定你發展的高度?
相信大家心裡是有答案的,無外乎就是資料結構與演算法、作業系統、計算機網路、編譯原理,以及 軟體工程這些“基本功”。
技術更新迭代速度再快,軟體開發背後的邏輯和知識體系卻萬變不離其宗,這些過去在用,現在在用,未來還會用的知識, 就是經典的價值,就是行業最為本質的東西。
2019 年 1 月,任正非還發表了一封刷屏朋友圈的公開信《全面提升軟體工程能力與實踐,打造可信的高質量產品》,相信大家都不陌生。越是優秀的技術公司就越強調軟體工程的應用,Google、Facebook、百度、阿里巴巴、華為、微軟這些公司的方法論和軟體開發流程裡處處滲透著軟體工程的影子。
我經常會跟身邊的朋友“安利”軟體工程的重要性,絕大部分人對這門學科的印象是枯燥、難學。2015 年,我到美國攻讀計算機的碩士學位,學校經常會聘請企業的專家作為兼職講師,他們總能把一些知識點和鮮活的案例結合起來,和學生一起探討這些知識點背後的歷史和邏輯。
受此啟發,經過數月打磨,我在極客時間的專欄 《軟體工程之美》 上線了,與學校常規的軟體工程學科不同的是,希望它既有趣又有用,我將結合國內外前沿的、典型的專案案例進行講解,教你如何將軟體工程運用在實際專案開發中,真正地解決程式設計師在軟體開發全流程中的疑難雜症。
我是誰?
我是寶玉,碩士畢業於美國德保羅大學,現在是團購鼻祖網站 Groupon 的資深開發工程師,出國前是上海眾遊的技術總監,曾深度參與過中國移動飛信專案的核心研發,也是微軟最有價值技術專家。我的個人從業經歷比較獨特,做過普通程式設計師,也做過技術總監,參與過大大小小很多的專案, 這些豐富的經歷,讓我更好地理解了軟體工程的價值,也知道如何應用它可以發揮最大的功效。 我希望將我這些年的思考,系統分享給你。
如何學習拿來即用的軟體工程?
我會從道、術、器三個維度來講解軟體工程的知識內容。
- “器”就是軟體工程中的各種工具。
- “術”就是軟體工程中的各種方法。
- “道”就是軟體工程知識的核心思想、本質規律。
我做了張軟體工程的思維導圖,把各個關鍵知識點展示出來,結合專欄學習中的 日常工作真實場景,及谷歌、微軟等公司的最佳實踐案例 ,幫你係統化的學習,真正做到即學即用。