引子
什么樣的程序員才是優(yōu)秀的程序員呢距芬?
如果去問一個(gè)程序員,答案可能是:寫的一手好代碼循帐,做過幾個(gè)大項(xiàng)目框仔,設(shè)計(jì)、編程樣樣強(qiáng)惧浴。
如果去問程序員的同事存和,答案可能是:人挺好的,干活挺快的衷旅。
如果去問HR捐腿,答案可能是:省錢,出活柿顶。
關(guān)鍵特質(zhì)
1. 掌握一門編程語言
最基本能力要素
第一點(diǎn)最重要茄袖,優(yōu)秀的程序員必須先是一名合格的程序員,最起碼需要能夠熟練操控一門編程語言嘁锯,進(jìn)而才可能寫的一手好代碼宪祥。
一門熟練再熟練
掌握一門編程語言,必須是熟練再熟練家乘,很多語法蝗羊、語句在我們編程的時(shí)候,會(huì)下意識(shí)的奔涌出來仁锯。
對(duì)于編程語言耀找,我們了解的越多,熟知的招式就越多业崖,可選擇的范圍就越大野芒,我們就有更多的活動(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)秀作品的工匠
真正的作品,都帶著我們對(duì)于現(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è)置軟件的適用邊界。
識(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)的做事情的程序員结啼,升級(jí)為一個(gè)主動(dòng)找事情的程序員掠剑。
能夠發(fā)現(xiàn)關(guān)鍵的問題,往往需要我們對(duì)一個(gè)領(lǐng)域有很深入的研究和深厚的積累郊愧,并且對(duì)新鮮事物保持充分的好奇心和求知欲朴译。
跨越到優(yōu)秀程序員
掌握一門編程語言,解決現(xiàn)實(shí)的問題属铁,能發(fā)現(xiàn)關(guān)鍵的問題眠寿,做到這三點(diǎn),你就已經(jīng)是一名優(yōu)秀的程序員了焦蘑。如果說優(yōu)秀程序員有一個(gè)評(píng)價(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ì)非常緊張蟹漓。
完美是不存在的炕横,所以我們才追求完美。
對(duì)完美的過分追求葡粒,可能是一個(gè)代價(jià)高昂份殿,收獲甚小的行為。
很多時(shí)候嗽交,我們不需要完美的東西卿嘲。
如果我只是想看看泰山山頂?shù)娜粘觯憔筒灰獑栁沂桥郎先サ倪€是乘索道上去的了夫壁。
對(duì)完美的理解拾枣,也是千差萬別的。如果你的完美和我的完美發(fā)生碰撞盒让,一定有一方需要妥協(xié)梅肤,我們才可以共同邁出下一步。
而且邑茄,完美也可能意味著不承認(rèn)缺陷姨蝴,不承認(rèn)未知。
這樣肺缕,我們可能在心理上就不會(huì)對(duì)代碼的未知風(fēng)險(xiǎn)做出充分的預(yù)判左医,留出足夠的安全緩沖空間授帕。
坦然面對(duì)錯(cuò)誤
我們寫的每一行代碼,都可能存在問題浮梢。
有時(shí)候跛十,我發(fā)現(xiàn)別人的代碼的問題;有時(shí)候秕硝,別人發(fā)現(xiàn)我的代碼的問題偶器。
我們最后都會(huì)明白,要坦誠地面對(duì)別人的問題缝裤,也要坦然地面對(duì)自己的問題。
在解決問題和幫助別人解決問題中颊郎,我們把一個(gè)產(chǎn)品變得越來越好憋飞,問題越來越少。
5. 可以依賴的伙伴
其次姆吭,優(yōu)秀的程序員是他人可以依賴的伙伴榛做。
優(yōu)秀的團(tuán)隊(duì)合作者
如果我們把軟件開發(fā)看成一個(gè)循環(huán)的流水線,參與其中的每個(gè)人内狸,都要接受來自上一級(jí)的輸入內(nèi)容检眯,在當(dāng)前環(huán)節(jié)和同事合作,創(chuàng)造面向下一級(jí)的輸出內(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)對(duì)壓力,承擔(dān)責(zé)任循集,積極主動(dòng)唇敞,大部分時(shí)候保持克制和冷靜,偶爾也會(huì)表達(dá)憤怒咒彤。
他具有一定的影響力疆柔,以及良好的人際關(guān)系,能夠和各種類型的人相處镶柱,能夠引發(fā)反對(duì)意見旷档,但是又不損害人際關(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í)間用在對(duì)的地方
你有沒有聽說過這樣的故事?
一家工廠的發(fā)動(dòng)機(jī)壞了蟆豫,請(qǐng)了很多人都沒有修好背零。無奈,請(qǐng)了一位工程師无埃,他聽了聽聲音,在發(fā)動(dòng)機(jī)上畫了一道線毛雇,說:“打開嫉称,把線圈拆了”。果然灵疮,發(fā)動(dòng)機(jī)就修好了织阅。
不管這個(gè)小故事是真的也好,假的也好震捣,類似的事情在軟件公司時(shí)時(shí)刻刻都在發(fā)生荔棉。
有經(jīng)驗(yàn)的程序員三分鐘就能發(fā)現(xiàn)的問題,外行可能需要折騰好幾天蒿赢。持續(xù)地提高我們的硬技能和軟技能润樱,可以讓我們做事情更快更好。
堅(jiān)持把時(shí)間用在對(duì)的地方羡棵,用在價(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è)必修課谬以。