引子
什么樣的程序員才是優(yōu)秀的程序員呢?
如果去問一個(gè)程序員,答案可能是:寫的一手好代碼,做過幾個(gè)大項(xiàng)目,設(shè)計(jì)、編程樣樣強(qiáng)。
如果去問程序員的同事,答案可能是:人挺好的,干活挺快的。
如果去問HR,答案可能是:省錢,出活。
關(guān)鍵特質(zhì)
1. 掌握一門編程語言
最基本能力要素
第一點(diǎn)最重要,優(yōu)秀的程序員必須先是一名合格的程序員,最起碼需要能夠熟練操控一門編程語言,進(jìn)而才可能寫的一手好代碼。
一門熟練再熟練
掌握一門編程語言,必須是熟練再熟練,很多語法、語句在我們編程的時(shí)候,會(huì)下意識的奔涌出來。
對于編程語言,我們了解的越多,熟知的招式就越多,可選擇的范圍就越大,我們就有更多的活動(dòng)空間和解決問題的辦法。
多語言觸類旁通
編程語言,基本上都是相通的。
掌握了第一門編程語言之后,第二門語言學(xué)起來就快很多,第三門就更快。
現(xiàn)在我們幾乎都是多語言使用者,但一定要先精通一門語言,達(dá)到像用筷子那樣熟練的程度。
2. 解決現(xiàn)實(shí)的問題
用代碼表達(dá)解決方案
代碼是要解決具體的問題的,我們需要通過編程語言把解決問題的辦法和思路表達(dá)出來。
配置自己的工具箱
要解決具體的問題,除了編程語言,還需要更多工具。
如果做前端,需要理解HTML和瀏覽器
如果做后端,需要掌握數(shù)據(jù)庫和操作系統(tǒng)
如果做云計(jì)算,需要掌握Docker等等
理解問題的核心價(jià)值
有了工具還不夠,優(yōu)秀的程序員還需要深入理解問題,懂得問題的核心價(jià)值。
只有理解了問題,看到了解決問題的價(jià)值,我們才能真正解決好問題,并從中獲得滿滿的成就感。
我們一定要記住,程序員的存在不是為了寫代碼,而是為了解決問題,實(shí)現(xiàn)現(xiàn)實(shí)的價(jià)值。
打磨優(yōu)秀作品的工匠
真正的作品,都帶著我們對于現(xiàn)實(shí)問題的理解。
而打磨一個(gè)這樣的作品,需要縝密的邏輯、突破創(chuàng)新和貫徹執(zhí)行。通過合適的工具,把簡單的、一行一行的代碼,耐心的粘合、打磨成有些的作品。
思維模式不斷進(jìn)階
如果說各式各樣的工具是外家功夫,那么思維模式可以算是內(nèi)功。
優(yōu)秀的程序員,肯定是內(nèi)外兼修。
如果一個(gè)程序員,可以熟練使用工具,有清晰的解決問題的思路,能明晰的傳達(dá)產(chǎn)品價(jià)值,那么他編寫代碼就不存在什么巨大的困難了。
3. 發(fā)現(xiàn)關(guān)鍵的問題
能夠發(fā)現(xiàn)關(guān)鍵的問題,是一個(gè)好程序員和優(yōu)秀程序員的分水嶺。
甄選語言和工具
優(yōu)秀的程序員,能夠發(fā)現(xiàn)一門編程語言的缺陷,一個(gè)順手工具的局限。
所以,他知道該怎么選擇最合適的工具,該怎么避免不必要的麻煩。
防范風(fēng)險(xiǎn)和設(shè)定邊界
優(yōu)秀的程序員,能夠發(fā)現(xiàn)解決方案背后的妥協(xié)和風(fēng)險(xiǎn)。
所以,他可以預(yù)設(shè)風(fēng)險(xiǎn)防范措施,設(shè)置軟件的適用邊界。
識別潛在產(chǎn)品需求
優(yōu)秀的程序員,能夠敏銳地觀察到產(chǎn)品的關(guān)鍵問題,或者客戶未被滿足的需求。
所以,他可以推動(dòng)產(chǎn)品持續(xù)地進(jìn)步和演化。
從被動(dòng)到主動(dòng)做事
能夠發(fā)現(xiàn)關(guān)鍵的問題,意味著我們可以從一個(gè)被動(dòng)的做事情的程序員,升級為一個(gè)主動(dòng)找事情的程序員。
能夠發(fā)現(xiàn)關(guān)鍵的問題,往往需要我們對一個(gè)領(lǐng)域有很深入的研究和深厚的積累,并且對新鮮事物保持充分的好奇心和求知欲。
跨越到優(yōu)秀程序員
掌握一門編程語言,解決現(xiàn)實(shí)的問題,能發(fā)現(xiàn)關(guān)鍵的問題,做到這三點(diǎn),你就已經(jīng)是一名優(yōu)秀的程序員了。如果說優(yōu)秀程序員有一個(gè)評價(jià)標(biāo)準(zhǔn)的話,這三條一定是硬性指標(biāo),接下來再介紹三條軟性指標(biāo)。
4. 沉靜的前行者
懂得妥協(xié)和平衡
首先,優(yōu)秀的程序員,一定是懂得妥協(xié),懂得選擇,一步一步把事情沉靜地朝前推動(dòng)的人。
如果真的較起真來,每一行代碼,就像孔乙己的茴香豆,都有不止四樣的寫法。
可是,最終的程序,只能選擇唯一的一種。優(yōu)秀的程序員都有在不斷平衡、不斷妥協(xié)中推動(dòng)事物前行的能力和修為。
警惕現(xiàn)實(shí)中完美主義
如果一個(gè)人說要一個(gè)完美的代碼、完美的算法,完美的程序、完美的產(chǎn)品,我立刻就會(huì)非常緊張。
完美是不存在的,所以我們才追求完美。
對完美的過分追求,可能是一個(gè)代價(jià)高昂,收獲甚小的行為。
很多時(shí)候,我們不需要完美的東西。
如果我只是想看看泰山山頂?shù)娜粘觯憔筒灰獑栁沂桥郎先サ倪€是乘索道上去的了。
對完美的理解,也是千差萬別的。如果你的完美和我的完美發(fā)生碰撞,一定有一方需要妥協(xié),我們才可以共同邁出下一步。
而且,完美也可能意味著不承認(rèn)缺陷,不承認(rèn)未知。
這樣,我們可能在心理上就不會(huì)對代碼的未知風(fēng)險(xiǎn)做出充分的預(yù)判,留出足夠的安全緩沖空間。
坦然面對錯(cuò)誤
我們寫的每一行代碼,都可能存在問題。
有時(shí)候,我發(fā)現(xiàn)別人的代碼的問題;有時(shí)候,別人發(fā)現(xiàn)我的代碼的問題。
我們最后都會(huì)明白,要坦誠地面對別人的問題,也要坦然地面對自己的問題。
在解決問題和幫助別人解決問題中,我們把一個(gè)產(chǎn)品變得越來越好,問題越來越少。
5. 可以依賴的伙伴
其次,優(yōu)秀的程序員是他人可以依賴的伙伴。
優(yōu)秀的團(tuán)隊(duì)合作者
如果我們把軟件開發(fā)看成一個(gè)循環(huán)的流水線,參與其中的每個(gè)人,都要接受來自上一級的輸入內(nèi)容,在當(dāng)前環(huán)節(jié)和同事合作,創(chuàng)造面向下一級的輸出內(nèi)容。
優(yōu)秀的程序員,知道團(tuán)隊(duì)合作的重要性,是一個(gè)優(yōu)秀的團(tuán)隊(duì)成員。
他在團(tuán)隊(duì)中能夠快速學(xué)習(xí)、成長,變得越來越優(yōu)秀,也能夠幫助其他團(tuán)隊(duì)成員變得越來越優(yōu)秀。
成為領(lǐng)導(dǎo)型的人
優(yōu)秀的程序員是一個(gè)領(lǐng)導(dǎo)型的人。
他能夠傾聽,持續(xù)地獲取他人的優(yōu)秀想法,以及不同的意見。
他能夠表達(dá),準(zhǔn)確地傳遞自己的想法,恰當(dāng)?shù)仃愂鲎约旱囊庖姟?/p>
他是一個(gè)給予者,給別人尊重,給別人啟發(fā),給別人指導(dǎo),給別人施展才華的空間。
他是一個(gè)索取者,需要獲得尊重,需要獲得支持,需要持續(xù)學(xué)習(xí),需要一個(gè)自主決策的空間。
他能夠應(yīng)對壓力,承擔(dān)責(zé)任,積極主動(dòng),大部分時(shí)候保持克制和冷靜,偶爾也會(huì)表達(dá)憤怒。
他具有一定的影響力,以及良好的人際關(guān)系,能夠和各種類型的人相處,能夠引發(fā)反對意見,但是又不損害人際關(guān)系。
他知道什么時(shí)候可以妥協(xié),什么時(shí)候應(yīng)該堅(jiān)持。
上面的這些,通常稱為“軟技能”。
軟硬技能并重
如果說,編程語言、花樣工具、邏輯思維、解決問題這些“硬技能”可以決定我們的起點(diǎn)的話,影響力、人際關(guān)系這些“軟技能”通常影響著我們可以到達(dá)的高度。
因?yàn)椋瑹o論我們是加入他人的團(tuán)隊(duì),或者組建自己的團(tuán)隊(duì),我們只有在團(tuán)隊(duì)中才能變得越來越出色,做的事情越來越重要。
所以,我們需要成為優(yōu)秀的團(tuán)隊(duì)成員,接受影響,也影響他人。
6. 時(shí)間管理者
最后我想和你分享的一點(diǎn)是,優(yōu)秀的程序員是高效的時(shí)間管理者。
時(shí)間面前人人平等
時(shí)間總是我們最大的障礙,優(yōu)秀的程序員更是如此。
沒完沒了的會(huì)議,沒完沒了的討論,沒完沒了的學(xué)習(xí),沒完沒了的需求,沒完沒了的 bug,時(shí)間攔住了我們的雄心壯志和大好宏圖。
時(shí)間面前,人人平等,沒有人一天的時(shí)間比別人多一秒。
優(yōu)秀的程序員會(huì)更好地管理時(shí)間,或者提高效率,或者用好時(shí)間。
時(shí)間用在對的地方
你有沒有聽說過這樣的故事?
一家工廠的發(fā)動(dòng)機(jī)壞了,請了很多人都沒有修好。無奈,請了一位工程師,他聽了聽聲音,在發(fā)動(dòng)機(jī)上畫了一道線,說:“打開,把線圈拆了”。果然,發(fā)動(dòng)機(jī)就修好了。
不管這個(gè)小故事是真的也好,假的也好,類似的事情在軟件公司時(shí)時(shí)刻刻都在發(fā)生。
有經(jīng)驗(yàn)的程序員三分鐘就能發(fā)現(xiàn)的問題,外行可能需要折騰好幾天。持續(xù)地提高我們的硬技能和軟技能,可以讓我們做事情更快更好。
堅(jiān)持把時(shí)間用在對的地方,用在價(jià)值更大的地方。事情總是做不完的。
一般的工程師,都有一種打破砂鍋問到底的精氣神,這是好事。
可是,這順便帶來了一點(diǎn)點(diǎn)的副作用,很多人有一點(diǎn)點(diǎn)小小的強(qiáng)迫癥,很多事情,喜歡自己動(dòng)手整個(gè)清楚明白。
可是,事情又特別多,很多事情根本就顧不上。怎么辦呢?
做只有你才能做的事
是的,有很多事情,只有你可以做,只有你做得最快最好。
其他的同事也是一樣的,有很多事情,只有他們能做,只有他們做得最快最好。
選擇最合適的人做最合適的事,這不僅是領(lǐng)導(dǎo)的工作分配,也可以是我們自己的協(xié)商選擇。
做好時(shí)間清單的選擇
事情做不完,就需要面臨選擇。
要堅(jiān)持做需要做的事情。
不需要的、不緊急的、價(jià)值不大的,我們可以暫時(shí)擱置起來。
一個(gè)人,能做的事情是有限的,能把最重要的事情最好,就已經(jīng)很了不起了。
學(xué)會(huì)選擇,是我們進(jìn)階道路上的一個(gè)必修課。
責(zé)任編輯:wv
-
程序員
+關(guān)注
關(guān)注
4文章
954瀏覽量
30328
發(fā)布評論請先 登錄
程序設(shè)計(jì)與數(shù)據(jù)結(jié)構(gòu)
阿里云升級通義靈碼AI程序員,全面上線
TMS320C55x DSP CPU程序員參考補(bǔ)充

UCD3138A64/UCD3138128程序員手冊

機(jī)械革命發(fā)布CODE AI程序員本
Linux驅(qū)動(dòng)程序程序員指南

AI編程工具會(huì)不會(huì)搶程序員飯碗
軟通動(dòng)力子公司鴻湖萬聯(lián)助陣鴻蒙1024程序員節(jié)成功舉辦

第五屆長沙·中國1024程序員節(jié)開幕
京東上萬程序員都AI用它!

程序員節(jié)視頻創(chuàng)意大賽,用串口屏贏取千元大獎(jiǎng)

程序員節(jié)視頻創(chuàng)意盛宴,邀您共襄盛舉!

助力程序員告別困擾已久的夢魘-Bug

評論