我是高級程序員嗎?

中午剛喫過飯,正準備打開網頁看看新聞, 張大胖在微信上問我:“老劉,你說我是高級程序員嗎?”

我愣了一下:“你?工作了六七年了,現在還帶着十個人的團隊,應該是高級程序員了吧?”

“我總是覺得老李纔是高級程序員吧, 人家知識體系完整,基礎紮實,精通xxx技術, 開發了系統的核心模塊。還有老方,代碼寫得極爲優雅漂亮,還特別擅長解決疑難雜症。”

我說:“你說的都是高級程序員表現出的特質,在不同的公司對高級程序員的定義都不一樣。”

張大胖:“有沒有比較通用的定義呢?”

“這個…”

我腦海中一下子出現很多程序員的特質,卻一時抽象不出來, 我馬上Google了一下,在Quora找到了Stevan Popovic的回答,覺得非常不錯,把鏈接發給了張大胖。

張大胖說:“老劉你翻牆了啊?我這邊的IP被禁了,看不了了,哈哈, 你給我說說內容。”

第一是獨立性 (Independence),在成爲高級程序員的過程中,這個人變得越來獨立,對別人的依賴很少, 他可以創建合理的任務(通過主動發現問題),並且給出好的解決方案。”

張大胖深表同意:“這是最基本的,如果一個人一直是被動地等待着被分配工作,在工作中對業務不熟悉,對技術不熟悉,經常需要問別人,尋求別人的幫助,只滿足於自己手頭的一畝三分地, 那肯定不是高級程序員。”

第二呢是權威的聲音 (Voice of Authority),這個人對特定產品或者一個大系統的組件,能發出權威的聲音,在團隊討論中,能引導同事找到最佳的解決方案,並且提前指出潛在的問題。”

張大胖說:“這我理解,就是這個人發出的聲音會被大家傾聽,被大家信服。我發現我的組中有幾個人,每次討論的時候只是帶着耳朵去聽,坐在哪裏一聲不吭,還有個愛發言的,但是經驗和技能都不夠, 思路和方案不能被大家接受,看來就不是高級程序員了。”

我說:“這其實暗含着溝通的能力,不僅僅自己有能力,還得能準確地表達出自己的觀點,從而說服大家,引導大家前進。在特定產品或者一個大系統的組件上,你就是那個引路人。”

第三呢是設計(Design), 這個人不僅僅只是Coding,相反,他會對整個系統或項目的設計做出越來越多的貢獻。這一條並不是貶低Coding, 因爲Coding只是軟件開發中的一小部分,更重要的工作是設計, 簡單的項目,設計可能只存在於你的腦海中,直接Coding;複雜的項目,設計就需要文檔化。當你的想法逐漸變成系統的設計方案,大家來遵守執行的時候,你就是高級程序員。”

張大胖發來一個表示讚的表情,沒說話。

我心中暗笑,這小子最近管理忙,設計層面的工作越來越少了。

第四呢是影響力的範圍 (Areas of Influence), 一個較爲初級的程序員傾向於“向內看” (Inward Looking), 經常專注於自己手頭的Task,需要Fix的Bug。一個更高級的程序員會變得“向外看” (Outward Looking), 這包括招聘,管理,跨部門的協作和溝通,外部客戶溝通等等。隨着開發人員變得高級,他會不斷地擴大影響的範圍。”

張大胖說:“我還正納悶呢,這怎麼不說招聘和管理呢,我最近可是在這方面花了不少的功夫,這個影響力啊實在是重要, 我記得上次在公司升職的時候,老闆問的一個問題,如果你升了職,你如何利用你的影響力幫助我們的部門?我當時有點懵,幸虧反應快,想起來自己曾經的跨部門協作,總算搪塞過去了。”

我說:“是啊,在小公司不覺得,在大公司,影響力太重要了。你看看人家Stevan Popovic畫的圖。”
在這裏插入圖片描述

張大胖:“不錯不錯,以後誰再問我, 我就要求他自問一下。”

1. 我能獨立地完成工作嗎?
2. 我對於工作的項目和產品能發出權威的聲音嗎?
3. 我能對整個系統的設計做出貢獻嗎?
4. 我的影響力在什麼範圍? 小組?部門?公司?業界?

我說:“我覺得還得再加上一點,站在業務角度進行思考,能用恰當的技術來解決業務問題。”

張大胖表示同意:“嗯,歸根結底,技術是要爲業務服務的。”

我發了一個笑臉:“對比一下,你是高級程序員嗎?”

張大胖又發了一個表情:“我… 算是吧。”


轉自:https://mp.weixin.qq.com/s/AjLfp5gvnNFddEOrBA4yyg

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章