如果你緊跟最新的編程語言和框架,那就太棒了:你已經(jīng)掌握了寫出良好代碼的技術(shù)能力。但是要想在崗位上真正脫穎而出,你還必須具備一些特質(zhì)。下面就是成為一名優(yōu)秀程序員所必須具備的10個(gè)特質(zhì)。
1. 發(fā)展全面。
深入了解一門技術(shù)雖然很好,但是現(xiàn)實(shí)世界中的問題從來都無法僅靠一種技術(shù)就能夠解決。即使別人雇傭你為專業(yè)技術(shù)人員,你仍然需要明白你所掌握的技術(shù)如何與組成應(yīng)用生態(tài)系統(tǒng)的其他軟件、硬件和網(wǎng)絡(luò)進(jìn)行交互。你還需要以多種不同的方式為項(xiàng)目作出貢獻(xiàn),只要項(xiàng)目需要更多支持,就及時(shí)給予幫助。
2. 享受解決難題的過程。
應(yīng)用開發(fā)并不是一蹴而就的。在開發(fā)過程中,要搞清楚代碼無法編譯的原因、故障為什么發(fā)生以及學(xué)會(huì)如何解決生產(chǎn)中的問題,這些都需要解決問題的能力,以及堅(jiān)信可以找到解決辦法,堅(jiān)持不懈不放棄的信念。如果你能在壓力之下解決難題,那就更好不過了——當(dāng)系統(tǒng)癱瘓的時(shí)候,你可以想象管理層可是會(huì)在你解決問題的時(shí)候,一直死盯著你的。
3. 熱愛學(xué)習(xí)。
技術(shù)在不斷的演進(jìn)。你今天所使用的工具和語言并不一定會(huì)是你明年使用的工具,更不用說十年之后了。因此,你需要不斷地學(xué)習(xí)新技能,這樣才能參加未來的項(xiàng)目。你的老板可能會(huì)提供持續(xù)的培訓(xùn),但是最優(yōu)秀的程序員會(huì)自己花時(shí)間自學(xué)。
4. 善于溝通。
程序員的工作并不僅僅是和技術(shù)打交道。程序員還需要和商業(yè)用戶交流,理解他們對(duì)應(yīng)用的需求。他們還經(jīng)常需要輸出技術(shù)文檔,因此寫作清晰也是很重要的——即使只是輸出一份進(jìn)度報(bào)告。
5. 自信。
開發(fā)一個(gè)系統(tǒng)并不只有一種方法。不管你的想法多么的出色,如果你藏在心里,那么這些想法也是毫無價(jià)值。最優(yōu)秀的程序員對(duì)自己的想法非常自信,在設(shè)計(jì)討論階段敢于說出自己的意見,這樣甚至可以左右應(yīng)用的架構(gòu)設(shè)計(jì)。要增強(qiáng)自己的信息,可以先提一些小建議,而不是一開始就提議重新設(shè)計(jì)整個(gè)應(yīng)用。
6. 對(duì)商業(yè)的好奇心。
公司通過技術(shù)解決商業(yè)問題。你對(duì)公司的業(yè)務(wù)了解的更深,你就能越容易地理解公司想要解決的問題,更順利地開發(fā)出幫助公司發(fā)展的解決方案。你應(yīng)該充分利用與商業(yè)用戶交流的機(jī)會(huì),詢問他們?cè)诠ぷ髦兴媾R的困難。如果你真正對(duì)商業(yè)感興趣,你可以參加一些課程,甚至試著獲得一些商業(yè)領(lǐng)域的資格認(rèn)證。
7. 注重團(tuán)隊(duì)合作。
電影里通常會(huì)美化某一個(gè)程序員的作用,計(jì)算機(jī)專業(yè)的學(xué)生也是常常自己一個(gè)人完成作業(yè),但是現(xiàn)實(shí)世界中的項(xiàng)目都是需要團(tuán)隊(duì)實(shí)現(xiàn)的。因此,一名程序員能否與同事融洽相處也很重要。你需要能夠與不同能力水平的人打交道,尊重他們的不同意見。如果可能的話,盡量了解你的隊(duì)友,把他們當(dāng)作你的朋友,而不是技術(shù)人員。時(shí)常聊一聊項(xiàng)目之外的事情,也會(huì)增進(jìn)同事之間的關(guān)系,工作上的合作也會(huì)更容易。
8. 明白截止日期的重要性。
最優(yōu)秀的項(xiàng)目經(jīng)理在安排項(xiàng)目截止日期時(shí),會(huì)考慮項(xiàng)目開發(fā)人員的意見,盡管有時(shí)候外部因素會(huì)縮短項(xiàng)目日程。不管怎樣,只要你同意完成一項(xiàng)任務(wù),你就要全力以赴,在截止日期之前完成工作,即使這意味著你要加班。當(dāng)然,你沒有必要為了公司和工作放棄自己的個(gè)人生活,但是你所展示出的對(duì)完成項(xiàng)目的決心和努力會(huì)給同事留下積極的印象。
9. 適應(yīng)性強(qiáng)。
項(xiàng)目和優(yōu)先級(jí)會(huì)因?yàn)槎喾N原因不斷變化,因此程序員需要能夠隨時(shí)轉(zhuǎn)變,專注在當(dāng)前最重要的事情上面。這些可能細(xì)微、暫時(shí)的更改,也有可能是重大且長期的變化。如果是暫時(shí)的,那請(qǐng)務(wù)必做好記錄,好在事情穩(wěn)定下來之后可以回歸到正常的開發(fā)中。如果是長期的,就要花時(shí)間去理解新的場(chǎng)景,研究如何融入進(jìn)去。這也可能會(huì)提供幫助你達(dá)成目標(biāo)的新機(jī)遇。不管發(fā)生什么情況,要時(shí)刻保持專業(yè)的水準(zhǔn),不要面對(duì)困境就自我沉淪。
10. 把自己當(dāng)成產(chǎn)品的主人。
嚴(yán)格來說,你編寫完成可以順利編譯、通過測(cè)試用例的代碼之后,你的工作就結(jié)束了。如果你能夠繼續(xù)參與產(chǎn)品生命周期的其他階段,那你就十分出眾了——這意味著,你要愿意協(xié)助測(cè)試、開發(fā)、培訓(xùn)用戶和解決開發(fā)中的問題。盡管這些工作對(duì)你的工作更有好處,但實(shí)際上你獲得的卻更多,因?yàn)槟阌H自看到并體驗(yàn)了你寫的代碼在實(shí)際生產(chǎn)時(shí)的效率和作用。