0
開發(fā)人員的技能范圍很廣——資歷往往不能決定一個(gè)人的能力。那么,是什么讓一些人比他們的同齡人更優(yōu)秀呢?是什么將他們與平庸的人群區(qū)分開來?
擁有五年、十年甚至十五年的「工作經(jīng)驗(yàn)」并不一定能保證你是一個(gè)高效的高級開發(fā)人員,甚至不一定會擁有這個(gè)頭銜。當(dāng)然,也有一些成功的高級開發(fā),他們往往年紀(jì)更大,也不是很具有代表性。年輕的高級開發(fā)也不會到處都是,但高級開發(fā)人員有一些共同的特點(diǎn)和技能。
這不是一個(gè)商業(yè)秘密,而是一個(gè)可以發(fā)展知識點(diǎn)和思維方式的方法。以下是一些很容易區(qū)分真正的高級開發(fā)人員的特征。
程序設(shè)計(jì)范式
程序化、面向?qū)ο蠛秃瘮?shù)式編程是三種編程范式。面向?qū)ο笤O(shè)計(jì)的可靠方法、簡潔的編碼技術(shù),這些技術(shù)構(gòu)成了代碼創(chuàng)建背后思維模式的一部分。
很多初級開發(fā)人員在編碼過程中會忽略的事實(shí)是,編程是一種語言——這意味著它超越了語法規(guī)則。它是一個(gè)可以以多種方式構(gòu)建的通信工具,編程范例有助于規(guī)范代碼的通信方式。
任何人都可以寫代碼——就像任何人都可以在亞馬遜上寫一篇評論短文一樣。但這種寫作方式與 Stephen King 的小說不同。編程范例的作用和小說作家的情節(jié)結(jié)構(gòu)一樣,它們是高級開發(fā)人員代碼背后的指導(dǎo)力量。所有的語言都是由公式組成的,高級開發(fā)人員在一個(gè)內(nèi)部化的層次上理解它們,許多初級和中級開發(fā)人員還沒有體驗(yàn)過。
創(chuàng)造能力
當(dāng)我們第一次接觸 for 循環(huán)和 if else 語句的世界時(shí),我們傾向于以復(fù)制和粘貼代碼的形式找到答案。初級和低水平的中級開發(fā)人員對此的理解是不同的。
然而,高級開發(fā)人員更進(jìn)一步。他們能夠在無需谷歌知識庫幫助的情況下就創(chuàng)造出簡潔的代碼。他們知道自己在做什么,也知道自己行動的意義。他們看到了意外情況,或者至少預(yù)見到了意外情況,并且理解了代碼中的漏洞以及如何改進(jìn)它。
如果他們的知識有缺口,他們就會不僅僅看表面,而是會去深入理解它。他們會對工具箱中的所有內(nèi)容都有更深的理解。對于高級開發(fā)人員來說,它們眼中的代碼世界是不同的。
客觀評價(jià)
每個(gè)人對于問題出現(xiàn)的原因都有著不同的看法。初級和中級開發(fā)人員傾向基于個(gè)人經(jīng)驗(yàn)而不是與代碼相關(guān)的推理來得出結(jié)論。他們的建議基本上都是基于他們編碼的個(gè)人偏好、風(fēng)格、命名慣例和思維方式。
這沒什么錯,因?yàn)檫@都是成長過程的一部分。在有足夠多的差異化的經(jīng)驗(yàn)之前,是很難達(dá)到真正的客觀性的。沒有正確的編碼方法,只有基于不同情況和場景的有效方法。高級開發(fā)人員理解這一點(diǎn)。他們接受他們的代碼可能不是最好的,并且還有改進(jìn)的空間這一事實(shí)。
高級開發(fā)人員經(jīng)常是有力的代碼審核者,他們標(biāo)記出同事制造的混亂的代碼,并標(biāo)記出體系結(jié)構(gòu)中的薄弱部分。他們能夠退后一步觀察全局,看到未來可能發(fā)生的意外事件,同時(shí)根據(jù)這些事件帶來的最不可預(yù)期的負(fù)面影響做出選擇。它們不受任何一種類型的編碼或范式的約束,專注于解決方案而不是工具。
好軟件和可用軟件的區(qū)別
作為開發(fā)人員,我們編寫可以運(yùn)行的代碼。我們當(dāng)中的有些人會在一些地方停下來,止步不前。其他人則更進(jìn)一步,試圖編寫更加簡潔高效的代碼。最好的開發(fā)人員應(yīng)該是這樣:他們會接受錯誤和失敗,并盡快改進(jìn)代碼,因?yàn)樗麄冎篮密浖蛢H僅是可以工作的軟件之間的區(qū)別。
大多數(shù)老板只關(guān)注軟件是否能用,但優(yōu)秀的高級開發(fā)人員更清楚什么軟件更好。他們了解技術(shù)和混亂代碼的隱藏成本。他們了解如何平衡可以工作的軟件和優(yōu)秀軟件的需求——把握項(xiàng)目的準(zhǔn)時(shí)交付和延期談判的底線。
他們廣博的知識和對框架和語言的理解使他們擅長分辨優(yōu)秀軟件和可以工作的軟件之間的區(qū)別——以及如何產(chǎn)出這兩種軟件——并使他們能夠在形勢需要時(shí)提出創(chuàng)造性的解決方案。
教學(xué)能力
「平庸的老師講述,好的老師解釋,上等的老師示范,偉大的老師激發(fā)靈感。(The mediocre teacher tells. The good teacher explains. The superior teacher demonstrates. The great teacher inspires)」—William Arthur Ward
真正的高級開發(fā)人員有著足夠的熱情,這會激勵他們在該領(lǐng)域經(jīng)驗(yàn)不足的同行,幫助打磨出下一代鉆石。
編程本身就是各種想法的集合,高級開發(fā)者有能力將這些想法轉(zhuǎn)化為簡潔易懂的東西。他們在不同的界面和媒介之間交流和編寫代碼的能力證明了他們對自己所掌握的語言的深刻理解。
成為任何領(lǐng)域的老師都需要對這個(gè)領(lǐng)域的知識有一定程度的精通。雖然「經(jīng)驗(yàn)」可能以項(xiàng)目的形式出現(xiàn)在他們的簡歷和在不同公司的在職時(shí)長上,但教學(xué)是一種只有真正了解這些領(lǐng)域的人才能掌握的技能。
總結(jié)
真正的高級開發(fā)人員是多面的,有時(shí),在其熟悉的領(lǐng)域之外他們只是初級或中級開發(fā)人員,但他們在編程方面都有很強(qiáng)的基礎(chǔ)。
然而,上述特征表現(xiàn)在他們的個(gè)人特質(zhì)和知識深度上,這使他們能夠比一般程序員更快地熟悉未知的代碼。他們通常是掌控大局,以開明的心態(tài)看待代碼。
他們將提倡干凈的編碼習(xí)慣,并引導(dǎo)他們的同齡人也朝著這個(gè)方向努力。他們善待同齡人的錯誤,虛心地接受自己的錯誤——這一切的目的是學(xué)習(xí)和進(jìn)步,而不是打擊和摧毀。
高級開發(fā)者可以是任何年齡,來自任何背景,擁有任何數(shù)量的「經(jīng)驗(yàn)」。他們是真正的問題解決者和長期的思想家。你認(rèn)為呢?
via:https://medium.com/better-programming/the-marks-of-a-true-senior-developer-d5f3b11c3375
雷鋒網(wǎng)雷鋒網(wǎng)雷鋒網(wǎng)
雷峰網(wǎng)版權(quán)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。