軟體開發中最重要的一項技能
以下這段極富洞察力的文字源自 James Hague 撰寫的一篇文章 Organization skills beat algorithmic wizardry:
當我們談及程式碼編寫的時候,最重要的一項技能就是如何保持軟體功能與程式碼的簡單性,即軟體開發的複雜度管理。我曾經工作過的專案包括大型通訊系統、主機遊戲、部落格系統以及一大堆個人工具類軟體,在這些專案的實際開發過程中,很少出現特別棘手的資料結構和演算法之類的問題,相反,大量亟待解決的問題大都與狀態跟蹤、程式碼組織、特殊情況處理以及系統互動相關。在一定程度上,程式碼編寫這個行為本身,實質上就是一個組織、重構以及簡化的過程 - 探究和思考如何移除隱藏在各處的無關或冗餘操作。
演算法技能與諸如程式碼組織相關的複雜度管理技能相比,更容易教授和學習,因此,我們一般通過課堂和部落格來傳遞這方面的知識資訊。一節個把小時的課程或部落格文章就能夠清晰地展現一個聰明的演算法。然而,對於複雜度管理技能來說,有誰知道究竟應該如何呈現嗎?如果你直接給出答案,不僅枯燥乏味,而且效果非常不好。“這是我總結的一個小經驗。別看它不怎麼起眼,但請相信我,它真的很有用,你要知道,這是我費了九牛二虎之力才想出來的呀。” 或者更糟糕的情況,“這是一堆中等難度的程式碼,但在此之前,這些程式碼要比現在複雜得多。起碼從目前看來,至少有人已經可以理解它了。” 這多沒意思呀,你要是在場,想必也會哈欠連天。
只有在真正體驗過混亂之後,你才能認識到複雜度管理的重要性。但是,如果你根本不關心這些雜亂無章的混亂狀況,你不可能有埋頭處理它們的耐心。只有當處理這些混亂變成了你的義務或責任,或者換言之,你不再將其看作是另一次案例學習的時候,你才會深入地研究、學習和提高自己的複雜度管理技能。我的意思是說,你完全可以通過類似家庭作業的方式學習和掌握演算法技能,但是,你不太可能學到複雜度管理這項技能,除非你在一個你真正關心的大型專案上工作過,而且,大多數情況下,這種事情發生的前提條件是:有人付錢讓你來關心這件事情。
作者:John D.Cook,數學博士,應用數學、統計學及軟體開發顧問,生活在美國休斯敦。
原文:The most important skill in software development
感謝:Qingniu 幫助審閱並完成校對。
原載:明珠夜話
相關文章
- 識別不必要的複雜性是軟體開發中最重要的技能之一
- 2個最重要的非技術性的軟體開發技能
- 軟體開發中最危險的詞語
- 單一職責原則:軟體世界中最重要的規則 - DZone
- 反駁"軟體開發中最流行的錯誤觀點"
- 公鏈開發中最重要的三大環節
- 軟體開發中最頂級的 17 個平臺和工具
- [全程建模]傾聽——軟體開發中的重要手段
- 論軟體開發中的三種重要角色(轉)
- 軟體功能測試在軟體開發中的重要性。在哪裡做軟體測試?
- 2018 Google I/O 中最重要的十項更新Go
- 從Java談軟體開發前期規劃的重要性Java
- 如何避免軟體工程中最昂貴錯誤的發生軟體工程
- 自上而下的軟體開發和自下而上軟體開發
- 2015年軟體開發的4大重要發展趨勢
- 軟體開發的一些"心法"
- 開發中最常用
- 搭建直播原始碼與軟體開發的注意事項原始碼
- 軟體開發中專案管理的注意事項(轉)專案管理
- 軟體開發:app軟體開發,pc端軟體開發,微商城/小程式開發APP
- 對軟體開發的一點心得體會 (轉)
- 軟體開發工作的第一現場
- 軟體開發與軟體研發
- 2020年最重要的10項工作技能——資訊圖
- 初學Web前端開發,你需要掌握的11項技能Web前端
- 對程式設計師非常重要的24個軟技能程式設計師
- 原始碼安全加密系統對軟體開發企業的重要性原始碼加密
- UI設計中最重要的顏色UI
- 系統設計中最重要的概念
- 軟體開發的難
- 軟體開發軟文營銷寫作掌握這些文案技能保持競爭力
- 直播平臺軟體開發,flex佈局例項Flex
- 軟體開發的一些思考及心得體會
- 遷移測試中最重要的一點,竟然經常被忽略?
- 軟體“吃”掉了軟體開發
- 軟體開發mac常用軟體Mac
- The Data Way Vol.4|開源是創造軟體諸多方法中最好的一種形式
- [譯] 白雪公主如何幫助 Airbnb 證明在設計中最重要的技能是講故事AI