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

程序員節視頻創意大賽,用串口屏贏取千元大獎

程序員節視頻創意盛宴,邀您共襄盛舉!

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

數控程序編程通常可分為哪兩大類
大模型時代,程序員當下如何應對 AI 的挑戰

評論