程序员,也需要学习分析与设计的方法?! (2)
對于這個標題可能很多人會不以為然,“我是一名程序員,做好編碼工作就可以了”,“只要給我看了文檔、或是說明了需求,我就可以直接用代碼表達出結果來”。
現在企業的生產和管理需要用到信息化技術的地方越來越多,客戶需求也越來越復雜,比如,為了快速地響應客戶需求的變化,在系統架構時越來越多地用到“XX平臺、XX中臺等”的概念和設計方法,構建這些平臺常常伴隨著需要做大量的分析、抽提、建模、算法的工作,完成這些工作需要參與的人員不但能夠理解業務需求、能做需求分析、設計,而且還必須要有開發經驗豐富的程序員參與才能完成,研發這樣的產品需要的是具有綜合能力的人才。但在實際的工作中這樣的人才很少,大多數的程序員即使是參與了也都做不了主角,因為他們不會做分析、更不會將頭腦中的構思用圖形表達出來,他們只能依據別人的文檔資料進行編碼。
未來需要分析與設計的工作對象還遠遠不止這些,比如還有物聯網相關的設計、智能化設備的相關設計、以及各種各樣的數字化的功能設計等,這些工作的重復內容少、創新內容多,對程序員來說難度和要求都遠遠地超出了開發企業管理系統的數據采集、分析報表等功能的工作。這就需要程序員也要學習和掌握一定的需求分析和設計能力,以適應未來的需求。從幾個方面可以看到掌握與不掌握這些能力對程序員的影響。
1. 完成工作的難度不同
分析與設計能力,對完成工作難度的影響是決定性的,舉個例子,我對不會做設計的程序員說,當面對用一維圖形就能表達的簡單需求時,你可以不借助紙和筆就在大腦中就完成“分析和設計”,然后直接敲代碼給出結果。但是當需求很復雜,需要二維圖形的表達,甚至是三維圖形才能表達出來時,你能否在大腦中完成二維、或三維的分析和設計呢?如果你做不到,且又不會用筆和紙做分析和設計,那么你的開發實現能力也就到一維(的復雜度)為止了。
具有分析設計能力的人,一般都具有較強的思維邏輯、表達邏輯能力,因此他們完成工作的水平都要高出一層。越是復雜的課題,這個能力帶來的效果就越明顯。
2. 完成工作的效率不同
在缺乏分析和設計能力時,很多的程序員只能不斷地采用“試錯”的方式進行開發,要知道“試錯”是需要成本的(時間、成本),而且不適用于規模大、架構復雜的系統,如果具有了一定水平的分析和設計能力,將分析與設計的成果在“紙上推演”,就會大幅度地減少開發成本、縮短開發周期。效率的高低同時也極為影響工作成果質量的高低。具有分析和設計能力的程序員,給出需求后,他可以快速地給出設計思路、方案圖,短時間的溝通就可以達成統一、開發出成果來。特別是遇到復雜的、高價值系統時,產出的數量和質量完全不可同日而語。
3. 完成成果的價值不同
通過縝密的思考、設計后再開發出來的成果,毫無疑問具有很高的價值,比如:
- □對客戶:由于進行了充分的分析和設計,所以獲得的產品客戶價值最高。
對軟件商:最終交付物的質量高(bug率低、周期短、返工量少等),易于傳遞、交流、且具有很強的復用性。
□對個人:分析和設計的過程,是一個訓練邏輯思維、邏輯表達、抽提、抽象、完善的過程,每一次的分析與設計都是一次訓練、積累和提升。(照圖開發不會有這樣的價值)
4. 對未來職業規劃的影響不同
沒有打算掌握分析與設計能力的程序員,將只能沿著“員=匠”的道路走到職業的終點,難以成為“師”。相反具有分析和設計能力的程序員可以在職業道路上進行多次的升級換代,走入架構師、咨詢師等不同的崗位,讓自己每一步得到的收獲,都能夠成為下一步提升的墊腳石、跳板。
分析與設計的能力,直接賦予了程序員未來廣泛的選擇機會,它是伴隨著從“程序員→架構師 → 咨詢師”全過程的、不可或缺的基本能力。
樓梯的扶手,不論你走到那一層、也不論樓有多高,你都需要它為你引導、助力。
同理,不論是昨天的技術、今天的技術還是明天的技術,編碼技術總會隨著時間的變化而不停地變化和更新,但是分析與設計的基本思想和手法是不會變的,掌握了分析與設計的能力,就具有了邏輯思維和邏輯表達的基本能力,這個能力會使你終生受益。
從現在開始、從你手里做到這個項目開始,要求自己不論做什么,事前都要簡單地分析、并用圖表達,逐漸地養成習慣。優秀的程序員不但要能“用代碼說話”、也要學會“用設計圖說話”。
為了未來的職業發展,優秀的程序員一定要掌握分析與設計的能力!
■ 本系列的下一篇博文:程序員,與工程師的區別在哪里?(3)
提升分析和設計的能力,請參看《大話軟件工程—需求分析與軟件設計》。
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的程序员,也需要学习分析与设计的方法?! (2)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: proteus仿真micropython
- 下一篇: 渗透测试工具Burp Suite详解