|
不知覺做軟件開發(fā)已經(jīng)有6年了,回看自己的經(jīng)歷,可以說是相當(dāng)有成就感,6年中通過不斷的學(xué)習(xí)的實(shí)踐,從一個(gè)菜鳥成長為一名軟件架構(gòu)師,這個(gè)過程可以說充滿樂趣。通過學(xué)習(xí)各種理論、技術(shù)、方法,并有在實(shí)踐中應(yīng)用,觀察它們的效果,思考它們之間的關(guān)系,再把不同事物融合在一起,形成一個(gè)完整的能力體系,以此來挑戰(zhàn)更艱巨的軟件開發(fā)任務(wù)。
我現(xiàn)在是一個(gè)框架師,所以看問題喜歡從總體架構(gòu)出發(fā),所以我認(rèn)為人的能力也有一個(gè)架構(gòu)存在,每個(gè)的能力架構(gòu)都不一樣,有的人能力架構(gòu)比較合理,有的人則不那么合理,合理的能力架構(gòu)能讓較少能力元素(知識(shí)、技能、方法等)發(fā)揮出較大的作用,不合理的能力架構(gòu)會(huì)浪費(fèi)人的能力,讓所學(xué)無所用。
什么樣的能力結(jié)構(gòu)是比較合理的呢,這不是一個(gè)簡單的問題,這里我根據(jù)自己的經(jīng)驗(yàn)總結(jié)提出一個(gè)參考模型,這個(gè)參考模型采用我們常見的分層架構(gòu)模式。我認(rèn)為一個(gè)軟件開發(fā)人員的能力大體應(yīng)該分為四個(gè)層次:
最高層:過程控制和管理 |
第三層:方法、思想和理論 |
第二層:具體技術(shù)、語言和工具 |
最底層:基礎(chǔ)原理、基礎(chǔ)知識(shí) |
層以層之間存在一定的關(guān)系,上一層必須以下一層為基礎(chǔ),而上一層又反過來影響下一層。最底層是基礎(chǔ)原理和基本技術(shù):包括計(jì)算機(jī)原理、電路、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)庫原理、編譯原理、操作系統(tǒng)等。這些知識(shí)是很基礎(chǔ)的有了一定的基礎(chǔ)才能更好的學(xué)習(xí)其它能力
第二層是具體技術(shù)、語言和工具,包括各種編程語言、開發(fā)環(huán)境、數(shù)據(jù)庫、開發(fā)框架等。每顯然,一般情況下要學(xué)習(xí)第二層的內(nèi)容必須要有以最底層的能力為基礎(chǔ),當(dāng)然也有人沒有任何基礎(chǔ)就能學(xué)習(xí)第二層的能力,但是一般這樣學(xué)習(xí)效果很差,知其然不知其所以然,遇到一些問題也會(huì)不知所措。另一方面第二層的學(xué)習(xí)又會(huì)反過來影響最底層的能力,它能鞏固基礎(chǔ)知識(shí)的學(xué)習(xí),能暴露出你在基礎(chǔ)方面的不足,還能驅(qū)動(dòng)你對基礎(chǔ)知識(shí)的學(xué)習(xí)。當(dāng)我還是個(gè)程序員的時(shí)候,學(xué)習(xí)的內(nèi)容主要集中在這兩個(gè)層次。
第三層是方法、思想和理論,包括面向?qū)ο笏枷搿⒃O(shè)計(jì)原理、設(shè)計(jì)模式、需求工程、UML等,同樣第三層的能力也要以第二層為基礎(chǔ),具個(gè)例子來說,要學(xué)習(xí)面向?qū)ο蟮脑O(shè)計(jì)方法首先要學(xué)會(huì)一門面向?qū)ο笳Z言還要會(huì)使用case工具,同時(shí)第三層的能力又會(huì)反過來影響第二層,好的方法能更好的發(fā)揮你的技術(shù),還可以彌補(bǔ)技術(shù)的不足,舉幾個(gè)例子來說,設(shè)計(jì)做的好是不是寫起程序來很輕松,斷言、單元測試這些方法能讓代碼的質(zhì)量達(dá)到前所未有的高度。
最高層是過程控制和管理,這個(gè)層次的能力通常涉及時(shí)間跨度和團(tuán)隊(duì)協(xié)作,包括項(xiàng)目管理的能力,軟件過程的控制能力、版本控制的能力、需求管理的能力等。同樣這一層次的能力也要以第三層的能力為基礎(chǔ),舉例來說,如果軟件沒有好的架構(gòu),那不管采用什么過程最終都會(huì)一團(tuán)糟,而良好的設(shè)計(jì)能力,再加上迭代的開發(fā)過程、嚴(yán)格的版本控制,就一定能開發(fā)出優(yōu)秀的軟件。
通過這個(gè)模型我們不難看出,一個(gè)優(yōu)秀的軟件開發(fā)人員各個(gè)層次的能力應(yīng)該是比較均衡的,并且這些能力不應(yīng)該是獨(dú)立,它們應(yīng)該能組合在一起發(fā)揮出整體性的威力。
通過這個(gè)模型也可以指導(dǎo)我們的學(xué)習(xí)過程,一般地,我們應(yīng)該先掌握下一層的能力再掌握上一層的能力,但又不能只停留在下一層。我見過不少大學(xué)生,剛開始工作就學(xué)習(xí)項(xiàng)目管理,還一些做項(xiàng)目N年的前輩,能夠把類庫倒背如流,還不知什么是UML、什么是內(nèi)聚、藕合和粒度。我覺得這都不是好的現(xiàn)象,我認(rèn)為能力的學(xué)習(xí)也應(yīng)該采取迭代的方式,我們先要打基礎(chǔ),但也不需要打一個(gè)完美的基礎(chǔ),我認(rèn)為打個(gè)三成就夠了,然后就可以嘗試學(xué)習(xí)上一層的的能力,可能你會(huì)掌握一成上層的能力,這時(shí)會(huì)發(fā)現(xiàn)基礎(chǔ)還打的有問題,然后再帶著你的問題來補(bǔ)基礎(chǔ)。如此反復(fù),當(dāng)你上一層的能力也達(dá)到三成時(shí),又可以嘗試再上層的學(xué)習(xí)。這時(shí)就把上一層當(dāng)成是基礎(chǔ)再上一層當(dāng)成是上層。如此反復(fù)直到你爽了為止,哈哈。
it知識(shí)庫:軟件開發(fā)人員的能力模型,轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時(shí)間聯(lián)系我們修改或刪除,多謝。