《軟件工藝師:專業、務實、自豪》一1.2 新的挑戰
本節書摘來異步社區《軟件工藝師:專業、務實、自豪》一書中的第1章 ,第1.2節,[英]桑德羅·曼卡索(Sandro Mancuso)著 愛飛翔 譯, 更多章節內容可以訪問雲棲社區“異步社區”公眾號查看。
1.2 新的挑戰
良好的編程實踐與技巧可以運用在各種環境和各類係統中,然而對目前的開發者來說,隻會寫代碼是不夠的。要想成為開發高手,不僅要寫代碼、熟悉編程語言及框架,還要學會其他技能。如今的開發者要學會與客戶溝通、自動測試並部署、選擇可能影響整個業務的技術、與分布式團隊協作、幫客戶決定需求並排定優先級、匯報工作進度、應對需求的變更與新提出的需求、向潛在客戶或合作方展示產品、協助售前活動、評估時間與成本、招納新的團隊成員、設計並更新軟件架構、處理非功能性的需求及服務級別協議(Service Level Agreement,SLA)、理解業務目標、做出權衡、關注新技術並尋找更好的工作方式、思考所交付產品對客戶的價值,以及其他很多事項。
有人可能會說,優秀的開發者不是一直都在做著上麵這些事情嗎?也許某些開發者是這樣的,但大多數肯定不是。過去,各種工作人員在軟件項目中的角色和責任要比今天更具體。開發者不會涉及應用程序的設計與架構,也很少和最終用戶打交道,更不會有人放心地叫開發者去做業務分析。
軟件開發者隻需專注一種工作的好日子很快就要結束了。軟件開發者原來的態度是:與編碼無關的事情和我無關。現在這種想法已經不受歡迎了。公司變得更加精簡,組織結構變得更為扁平,原來那些隻有一項專長的人,已經為同時具備多項特長的人所取代。公司想要招募那種不隻能把代碼寫好,而且還能在很多業務領域裏幫上忙的開發者。
過去二十年間,隨著因特網、移動設備、雲端服務及常規技術的發展,很多事情都發生了變化。客戶現在需要公司更快地提供產品,而公司在發布軟件產品上也變得比原來更加積極。又快又好地修改軟件並提升客戶所購產品的價值,可以大幅提升公司競爭力。那些極度依賴軟件來構建其核心業務的公司,如亞馬遜(Amazon)、穀歌(Google)、推特(Twitter)、臉譜網(Facebook)等,很快成為市場主導者。客戶不再喜歡開發流程僵化且架構龐大的服務公司,而是偏好小巧而靈活的服務公司。與傳統管理風格相結合的瀑布式開發流程已經跟不上市場步伐了。以“快速生產-取得回饋-持續迭代”為特征的精益創業模型(Lean startup model)徹底改變了局麵。
項目的規模也有變化。現在很少有不與其他應用程序相結合的程序。你通常不會看見哪個新項目采用客戶端-服務器架構(client-server architecture),在每台電腦上部署胖客戶端(fat client),並把單一的巨型數據庫用作集成點(integration point)。當前的應用程序使用多項技術來構建,有多個集成點,而且以迭代方式開發。原來經常會有僅限內部員工使用的程序製作出來,而現在,更多可供全球成百上千萬用戶使用的程序製作出來。對許多公司來說,軟件產品裏出現bug的代價十分高昂,可能會令公司業務崩潰,導致公司聲譽大幅受損。
軟件業出現的這種新情況,使得軟件開發這項職業迫切需要進化。公司想要專業的軟件開發者,而不是隻會按命令照做的廉價碼農。
工業革命過後,產業界形成了一種傳統,那就是:強調命令與管控,崇尚深層架構,明確劃分管理者與流水線工人。所幸軟件業已經不再固守這種傳統,而是朝著更靈活、更強調協作的方向發展。軟件開發者的角色和責任變得更多元也更重要了,這使得他們能夠以開發者這個職業為榮,而不用再像原來那樣,必須做一些本職工作以外的事情,才能獲得職業生涯的進步。原來的項目計劃都是固定而僵化的,都會以嚴格定義好的開發流程來製作,而現在不是這樣了,所以項目開發中可能出現的問題需要重新考慮。扁平架構已經成為常態,而開發者的技能水平和參與範圍,也比原來有所提升。於是,現在比原來更加需要靈活且精良的軟件產品。
2001年,敏捷軟件開發出現,它極大地改變了軟件行業。世界各地的公司都開始采用敏捷軟件開發,接受這套方式及理念,並改變他們的開發流程與內部結構。然而,即便開發流程有了巨大改觀,有些公司依然對交付軟件產品的能力不夠滿意。他們無法足夠迅速地響應變化,無法開發出質量高、缺陷少且維護成本低的軟件產品,無法使客戶滿意,也無法招到優秀的開發者。而開發者也苦於維護軟件、測試軟件,並向軟件中添加新功能,對剛剛參與項目的開發者來說,這些問題尤為突出:為什麼要強調軟件工藝?它究竟是什麼意思?足夠專業的軟件開發者是什麼樣的?為什麼說隻采用敏捷開發是不夠的?
接下來的幾章就要回答上述問題,詳細解釋軟件工藝的含義,以及專業軟件開發者所應具備的素質。在談這些問題之前,先來看看什麼叫作敏捷軟件開發。
最後更新:2017-06-22 14:02:13