《軟體工藝師 專業 務實 自豪》一1 2 新的挑戰

2021-09-23 15:09:00 字數 1930 閱讀 3080

良好的程式設計實踐與技巧可以運用在各種環境和各類系統中,然而對目前的開發者來說,只會寫**是不夠的。要想成為開發高手,不僅要寫**、熟悉程式語言及框架,還要學會其他技能。如今的開發者要學會與客戶溝通、自動測試並部署、選擇可能影響整個業務的技術、與分布式團隊協作、幫客戶決定需求並排定優先順序、匯報工作進度、應對需求的變更與新提出的需求、向潛在客戶或合作方展示產品、協助售前活動、評估時間與成本、招納新的團隊成員、設計並更新軟體架構、處理非功能性的需求及服務級別協議(service level agreement,sla)、理解業務目標、做出權衡、關注新技術並尋找更好的工作方式、思考所交付產品對客戶的價值,以及其他很多事項。

有人可能會說,優秀的開發者不是一直都在做著上面這些事情嗎?也許某些開發者是這樣的,但大多數肯定不是。過去,各種工作人員在軟體專案中的角色和責任要比今天更具體。開發者不會涉及應用程式的設計與架構,也很少和終端使用者打交道,更不會有人放心地叫開發者去做業務分析。

軟體開發者只需專注一種工作的好日子很快就要結束了。軟體開發者原來的態度是:與編碼無關的事情和我無關。現在這種想法已經不受歡迎了。公司變得更加精簡,組織結構變得更為扁平,原來那些只有一項專長的人,已經為同時具備多項特長的人所取代。公司想要招募那種不只能把**寫好,而且還能在很多業務領域裡幫上忙的開發者。

過去二十年間,隨著網際網路、移動裝置、雲端服務及常規技術的發展,很多事情都發生了變化。客戶現在需要公司更快地提供產品,而公司在發布軟體產品上也變得比原來更加積極。又快又好地修改軟體並提公升客戶所購產品的價值,可以大幅提公升公司競爭力。那些極度依賴軟體來構建其核心業務的公司,如亞馬遜(amazon)、谷歌(google)、推特(twitter)、臉譜網(facebook)等,很快成為市場主導者。客戶不再喜歡開發流程僵化且架構龐大的服務公司,而是偏好小巧而靈活的服務公司。與傳統管理風格相結合的瀑布式開發流程已經跟不上市場步伐了。以「快速生產-取得回饋-持續迭代」為特徵的精益創業模型(lean startup model)徹底改變了局面。

專案的規模也有變化。現在很少有不與其他應用程式相結合的程式。你通常不會看見哪個新專案採用客戶端-伺服器架構(client-server architecture),在每台電腦上部署胖客戶端(fat client),並把單一的巨型資料庫用作整合點(integration point)。當前的應用程式使用多項技術來構建,有多個整合點,而且以迭代方式開發。原來經常會有僅限內部員工使用的程式製作出來,而現在,更多可供全球成百上千萬使用者使用的程式製作出來。對許多公司來說,軟體產品裡出現bug的代價十分高昂,可能會令公司業務崩潰,導致公司聲譽大幅受損。

軟體業出現的這種新情況,使得軟體開發這項職業迫切需要進化。公司想要專業的軟體開發者,而不是只會按命令照做的廉價碼農。

工業革命過後,產業界形成了一種傳統,那就是:強調命令與管控,崇尚深層架構,明確劃分管理者與流水線工人。所幸軟體業已經不再固守這種傳統,而是朝著更靈活、更強調協作的方向發展。軟體開發者的角色和責任變得更多元也更重要了,這使得他們能夠以開發者這個職業為榮,而不用再像原來那樣,必須做一些本職工作以外的事情,才能獲得職業生涯的進步。原來的專案計畫都是固定而僵化的,都會以嚴格定義好的開發流程來製作,而現在不是這樣了,所以專案開發中可能出現的問題需要重新考慮。扁平架構已經成為常態,而開發者的技能水平和參與範圍,也比原來有所提公升。於是,現在比原來更加需要靈活且精良的軟體產品。

2023年,敏捷軟體開發出現,它極大地改變了軟體行業。世界各地的公司都開始採用敏捷軟體開發,接受這套方式及理念,並改變他們的開發流程與內部結構。然而,即便開發流程有了巨大改觀,有些公司依然對交付軟體產品的能力不夠滿意。他們無法足夠迅速地響應變化,無法開發出質量高、缺陷少且維護成本低的軟體產品,無法使客戶滿意,也無法招到優秀的開發者。而開發者也苦於維護軟體、測試軟體,並向軟體中新增新功能,對剛剛參與專案的開發者來說,這些問題尤為突出:為什麼要強調軟體工藝?它究竟是什麼意思?足夠專業的軟體開發者是什麼樣的?為什麼說只採用敏捷開發是不夠的?

接下來的幾章就要回答上述問題,詳細解釋軟體工藝的含義,以及專業軟體開發者所應具備的素質。在談這些問題之前,先來看看什麼叫作敏捷軟體開發。

讀《軟體工藝》

軟體工藝這本書所提出的東西確實如 譯者所形容的那樣 顛覆性的。初看很多觀點都難以接受,但是接著看下去就又不得不對他的闡述點頭,直呼 有道理啊 下面是書中摘出來的一些觀點 1。學徒 也就是剛畢業進公司的人 應該從內部使用的工具 框架?的維護和公升級開始。我所見過的都是公司技術高手做這些框架,初來的人可...

讀《軟體工藝》

軟體工藝這本書所提出的東西確實如 譯者所形容的那樣 顛覆性的。初看很多觀點都難以接受,但是接著看下去就又不得不對他的闡述點頭,直呼 有道理啊 下面是書中摘出來的一些觀點 1。學徒 也就是剛畢業進公司的人 應該從內部使用的工具 框架?的維護和公升級開始。我所見過的都是公司技術高手做這些框架,初來的人可...

買到《軟體工藝》

今天為了這本書去書店逛逛,不巧我最熟的電子科技書店今天盤成,暈,一年一次的這個機會都能被我碰上,不知是慶幸還是不幸?還好,可以去七環,直接問到了沒有,小姐說是不知,用機器查詢,小姐對工藝這兩個字頗感生疏,專門賣計算機圖書的,對 走查 都要比 工藝 耳熟能詳一些。有貨,自然取了一本,本來我在電子書店是...