淺談程序員的能力要求與工作過(guò)程
了解、入門(mén)、熟練、精通
程序員是一個(gè)門(mén)檻不高的職業(yè),但是優(yōu)秀程序員的門(mén)檻很高。用代碼實(shí)現(xiàn)功能是一個(gè)十分容易完成的任務(wù)。自然語(yǔ)言的語(yǔ)法那么復(fù)雜,大家都能很好的組織成文,何況程序語(yǔ)言的那幾個(gè)單詞和幾條簡(jiǎn)單的語(yǔ)法規(guī)則呢?花點(diǎn)時(shí)間,人人都會(huì)。一個(gè)優(yōu)秀的程序員,則需要極強(qiáng)的抽象與概括的能力,還有優(yōu)秀的邏輯分析能力,溝通和理解能力也是程序員非常重要但總是被忽略的能力;抽象概括的能力是代碼簡(jiǎn)潔優(yōu)美的基礎(chǔ),邏輯分析能力是代碼高效穩(wěn)定的基礎(chǔ),這兩者也是架構(gòu)能力的基石;溝通與理解能力是代碼有效易用的基礎(chǔ)。程序員通過(guò)溝通才能充分知曉并理解需求,通過(guò)理解才能知曉需求背后的本質(zhì)訴求和需求邊界,這樣才能寫(xiě)出客戶真正想要的代碼,真正瞄準(zhǔn)客戶痛點(diǎn)的代碼。
基礎(chǔ)能力很重要,但是難以度量。工作這么多年,也閱讀了許多簡(jiǎn)歷,有些人在簡(jiǎn)歷上的技能清一色的都是精通。漢語(yǔ)中精通是對(duì)一個(gè)人技能的最高評(píng)價(jià)吧。這么多的精通,一個(gè)月 20k 的要價(jià)不覺(jué)得低了么?技術(shù)能力永遠(yuǎn)是程序員的核心能力,上述的抽象概括、邏輯分析和溝通能力決定一個(gè)程序員在技術(shù)的路上能走多遠(yuǎn),有些人工作十幾年,技能水平可能仍然是入門(mén),有些人可能工作一年就精通了,這折射的就是這個(gè)人的基礎(chǔ)能力,而技能水平是易衡量的。

技術(shù)的四個(gè)階段
了解表示某個(gè)人對(duì)某個(gè)技術(shù)有所了解,能說(shuō)出這個(gè)技術(shù)的幾個(gè)特點(diǎn),比如問(wèn)你了解 JAVA 嗎,如果可以回答出 JAVA 是面向?qū)ο蟮恼Z(yǔ)言,運(yùn)行在 JVM 虛擬機(jī)上,具有跨平臺(tái)的特點(diǎn),其他點(diǎn)也可以,只要能知道一兩個(gè),就達(dá)到了解的水平了。入門(mén),表示會(huì)用了,當(dāng)然不是會(huì)寫(xiě) hello world 了,而是了解這個(gè)技術(shù)的用法,在搜索的輔助下,能完成大部分的任務(wù),比如用 JAVA 寫(xiě)多線程,處理 Exception。熟練,表示技術(shù)人員對(duì)某個(gè)技術(shù)的基本特性有深刻的理解,技能熟練度不再是業(yè)務(wù)實(shí)現(xiàn)的瓶頸,技術(shù)人員可以在這個(gè)技術(shù)的限制之內(nèi)實(shí)現(xiàn)任何自己期望的結(jié)果,比如用 JAVA 寫(xiě)一個(gè)用戶管理系統(tǒng),用 JAVA 寫(xiě)一個(gè)后臺(tái)服務(wù),定位 CPU 過(guò)高、內(nèi)存泄漏的問(wèn)題。精通表示技術(shù)人員不僅對(duì)某個(gè)技術(shù)的特性有深刻的理解,對(duì)這個(gè)技術(shù)的邊界也有清晰的認(rèn)識(shí),知道這個(gè)技術(shù)可以做什么,不可以做什么;知道這個(gè)技術(shù)的實(shí)現(xiàn)原理,能處理該技術(shù)的絕大部分問(wèn)題,并有自己的經(jīng)驗(yàn)總結(jié)。精通也意味著技術(shù)人員不僅可以用這個(gè)技術(shù)實(shí)現(xiàn)自己的期望,還知道實(shí)現(xiàn)得怎樣,即這個(gè)實(shí)現(xiàn)存在的風(fēng)險(xiǎn),以及風(fēng)險(xiǎn)的處理。怎樣的事情需要程序員達(dá)到精通水平呢?比如用JAVA 實(shí)現(xiàn)一個(gè)高性能的穩(wěn)定的用戶管理系統(tǒng)和后臺(tái)服務(wù)??偨Y(jié)下來(lái)就是:了解了,會(huì)寫(xiě)功能了,會(huì)寫(xiě)系統(tǒng)了,會(huì)寫(xiě)一個(gè)高性能高穩(wěn)定性的系統(tǒng)了。
技術(shù)入門(mén)很容易,熟練和精通不易。照著教程,就可以入門(mén)了;寫(xiě)功能,幾個(gè)類,幾個(gè)方法,簡(jiǎn)單的抽象和邏輯分析就可以實(shí)現(xiàn),溝通也相對(duì)簡(jiǎn)單;寫(xiě)系統(tǒng)則需要在系統(tǒng)層面進(jìn)行模塊的劃分和邏輯過(guò)程的切分,要求更高些,溝通過(guò)程也較長(zhǎng);高性能高穩(wěn)定性的系統(tǒng),不僅要會(huì)進(jìn)行模塊的劃分和邏輯切分,還需要會(huì)進(jìn)行更加合理的模塊劃分,更加高效的邏輯切分,這個(gè)劃分和切分不僅是系統(tǒng)功能的實(shí)現(xiàn)的基礎(chǔ),還是系統(tǒng)性能和穩(wěn)定的基礎(chǔ)。對(duì)照程序員的水平,一門(mén)技術(shù)入門(mén)是初級(jí)程序員,熟練是中級(jí)程序員,精通是高級(jí)程序員,多門(mén)技術(shù)精通就是資深程序員了。
溝通、設(shè)計(jì)、實(shí)現(xiàn)、檢查、自測(cè)、文檔
有人誤會(huì)程序員的主要工作內(nèi)容就是寫(xiě)代碼。如果要做個(gè)類比,寫(xiě)代碼就相當(dāng)于餐飲店炒菜的環(huán)節(jié),餐飲店還有計(jì)劃、采購(gòu)、處理……程序員的工作內(nèi)容除了寫(xiě)代碼,還包含需求的溝通,即知道自己接下來(lái)寫(xiě)的代碼要實(shí)現(xiàn)什么東西;還有代碼的設(shè)計(jì),即思考接下來(lái)的代碼怎么寫(xiě);然后才開(kāi)始寫(xiě)代碼;寫(xiě)完代碼還需要檢查和自測(cè)試,即看看自己寫(xiě)得怎么樣了;最后還需要寫(xiě)寫(xiě)文檔,讓大家知道怎么用你寫(xiě)的東西;有時(shí)候還要組織大家評(píng)審下,讓別人知道自己完成任務(wù)了。

程序員的工作過(guò)程
寫(xiě)代碼,或者程序員的工作的一般步驟是溝通、設(shè)計(jì)、實(shí)現(xiàn)、檢查、自測(cè)、文檔。溝通是理解需求,明白需求的核心訴求和需求的邊界;設(shè)計(jì)是分解需求,進(jìn)行代碼結(jié)構(gòu)和邏輯的設(shè)計(jì),如果是在已有代碼的基礎(chǔ)上的開(kāi)發(fā),還需要確認(rèn)當(dāng)前設(shè)計(jì)對(duì)現(xiàn)有代碼的影響,確定修改的范圍;實(shí)現(xiàn)就是寫(xiě)代碼。實(shí)際工作中,實(shí)現(xiàn)和設(shè)計(jì)有時(shí)候是交替進(jìn)行的,在實(shí)現(xiàn)的過(guò)程中發(fā)現(xiàn)設(shè)計(jì)的問(wèn)題,則需要返回修改設(shè)計(jì),甚至完全推倒原來(lái)的設(shè)計(jì)。實(shí)現(xiàn)完成后,很多人就認(rèn)為任務(wù)完成了,可以提交測(cè)試了。寫(xiě)完代碼,檢查下,自己閱讀下代碼,補(bǔ)充注釋,刪繁就簡(jiǎn),這個(gè)工作是當(dāng)下多一小時(shí),未來(lái)少十小時(shí)的杠桿工作,還可以降低代碼的 bug 率,提高代碼可讀性可維護(hù)性。自測(cè)保證代碼的質(zhì)量,可以從功能、性能、穩(wěn)定性、并發(fā)四個(gè)方面進(jìn)行。自測(cè)的內(nèi)容很多,實(shí)際操作就是寫(xiě)完代碼,跑下功能,多跑幾次,幾個(gè)并發(fā)一起跑個(gè)幾分鐘。文檔一般是程序員任務(wù)的最后一個(gè)環(huán)節(jié),也可以在之前的幾個(gè)階段積累。文檔包含程序的設(shè)計(jì)文檔,必要的關(guān)于功能的說(shuō)明,比如服務(wù)的接口文檔,功能的使用方式,還有一些必要的自測(cè)試的結(jié)論。寫(xiě)好文檔,就可以和代碼的一起交付給測(cè)試,開(kāi)始代碼的下一個(gè)生命周期了。
從需求的溝通,到文檔的輸出,是程序員開(kāi)發(fā)任務(wù)的一個(gè)閉環(huán),即代碼和文檔的交付是一個(gè)程序員某個(gè)任務(wù)完成的標(biāo)志。單純的代碼提交僅僅是寫(xiě)完代碼了,不意味著整個(gè)任務(wù)的完成,文檔不僅是對(duì)這次任務(wù)的總結(jié),也是這次任務(wù)質(zhì)量的一個(gè)保證。當(dāng)一個(gè)程序員完成文檔輸出,并通過(guò)了交付評(píng)審,意味著他可以開(kāi)始下一個(gè)任務(wù)了。有人說(shuō),還有 bug 修復(fù),bug 修復(fù)屬于另一個(gè)流程,不屬于上述開(kāi)發(fā)中的一環(huán),它應(yīng)該屬于測(cè)試中的一個(gè)環(huán)節(jié)。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
- 這篇文章主要介紹了記一次騰訊社招前端面試,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-12-03
- 這篇文章主要介紹了Vuex面試題匯總(推薦),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-11-15
- 對(duì)此本文將圍繞著初級(jí)程序員,高級(jí)程序員和架構(gòu)師這三個(gè)職位,說(shuō)明下這些級(jí)別的技能瓶頸,并給出若干突破瓶頸的建議,感興趣的朋友一起看看吧2019-10-17
即從前端頁(yè)面的實(shí)現(xiàn),到后臺(tái)代碼的編寫(xiě),再到數(shù)據(jù)庫(kù)的管理,一人可以搞定一個(gè)公司網(wǎng)站的所有事情,真正實(shí)現(xiàn)全棧開(kāi)發(fā)2019-10-13
如何進(jìn)入Web前端開(kāi)發(fā)行業(yè),怎么不斷提升技能
現(xiàn)在的Web前端開(kāi)發(fā)不得不說(shuō)是火透了整個(gè)互聯(lián)網(wǎng),Web前端、微信、小程序似乎已經(jīng)是不得不談的未來(lái)趨勢(shì)。市場(chǎng)火證明未來(lái)缺口大,那么如何進(jìn)入Web前端開(kāi)發(fā)行業(yè),怎么不斷提升2019-10-10
程序員是一個(gè)門(mén)檻不高的職業(yè),但是優(yōu)秀程序員的門(mén)檻很高。這篇文章主要介紹了淺談程序員的能力要求與工作過(guò)程,感興趣的可以了解一下2019-10-08- 這篇文章主要介紹了Java多線程與并發(fā)面試題(小結(jié)),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-09-26

一篇文章看懂大數(shù)據(jù)分析就業(yè)前景及職能定位、職能要求
這篇文章主要介紹了大數(shù)據(jù)分析就業(yè)前景及職能定位、職能要求,較為詳細(xì)的分析了大數(shù)據(jù)分析了大數(shù)據(jù)分析相關(guān)概念、專業(yè)知識(shí)、行業(yè)背景、職業(yè)要求、發(fā)展前景等問(wèn)題,需要的朋友2019-07-29
啥是前端開(kāi)發(fā)工程師必會(huì)的5種網(wǎng)頁(yè)布局方式?
作為前端開(kāi)發(fā)工程師,布局方式有多種,針對(duì)不同的情況有不一樣的處理,這篇文章主要介紹了啥是前端開(kāi)發(fā)工程師必會(huì)的5種網(wǎng)頁(yè)布局方式?具有一定的參考價(jià)值,感興趣的小伙伴2019-07-26Java開(kāi)發(fā)者必須掌握的15個(gè)框架(20k是小問(wèn)題)
這篇文章主要介紹了Java開(kāi)發(fā)者必須掌握的15個(gè)框架,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-07-24






