一個開發者的使命感究竟應該是什麼?
“ 工作了五年的工程師,算不算高階開發者?歸類開發者不是簡單地看工作年限,因為經驗這種東西千金難換但又一文不值。
我們現在工作的行業很奇怪。明明每年都有新的從業人員湧入人才市場,但企業依舊訴苦自己迫切需要大量的開發。這種問題存在已久,而且已經越發嚴峻。
開發者這個行業非常年輕,也面臨著很嚴重的人才短缺問題。大部分的軟體開發專案無疾而終,原因是後期開支過於龐大。那些行業裡的大佬是怎麼建議我們的,他們說:“ 世界上永遠存在解決問題的辦法,但我們還是會遇到各種難題。因為除非我們真正去嘗試解決,否則永遠不知道哪種方法奏效。 "
認識一個現實吧,當你從事開發工作三年以上,就可以稱呼自己為 " 高階開發者 ” 。但實際上,有些人只是在這個位置上混三年,而他們只是虛有其表,水平嚴重不符合職位。這確實是我對同行的評語。
首先,根據知識和經驗把人分為初級開發者、中級開發者,和高階開發者,這是非常一刀切地分類。有些人可能只是在一個位置上混了十年,然而他的成長甚至沒有另一個人一年所學到和經驗多。
開發者的高速成長期:
身為一個程式設計師,我們生活在一個 IT 系統越發複雜且多變化的時代。有時候執行一個簡單的開源專案,都需要精準定義並耗費大量時間專注任務。尤其是當你身為一個新晉程式設計師,或者對手下的資料庫還很陌生的時候。
菜鳥程式設計師很難當。你可能剛從一個還不錯的大學畢業,你覺得你已經掌握了基本的常識。但突然間,你在工作上面臨的是另一套嶄新的知識。在很長時間內,你都對自己所要做的工作沒有任何頭緒。而對於上司提出的要求,你似乎只能妥協,而且沒辦法作出有效質疑。
在這個階段,你必須要做的是專注。而且儘可能地放開心胸,去努力學習。初級開發者在工作之初,需要大量的練習,指導、監管,以及需要一個能幫助他們的老師。缺乏以上的任何條件,初級開發者都很難很難邁過這個初學者門檻。
我最近遇到一個傢伙,他已經有十年的軟體構造經驗,但是我很遺憾地發現,他的真實水平依舊只是初級開發者。你可以說這個階段,是戰略上的積累狀態,但就是要學習加積累,積累再學習,缺一不可。
初級開發者必須要專注程式碼本身,在這個階段,不要分心想任何其他亂七八糟的事情。在開發一個專案時,如果身為程式設計師想的是 “我想讓自己的程式碼在別人眼裡看起來漂漂亮亮的” ,而不是 " 我做的東西應該以使用者感受第一 “,那麼他本身就是一個初級開發。
一個好的開發者可以出色地完成任務,而且不僅如此,他們能以較短時間出色完成任何,後期也會維護好。
中級開發者的瓶頸期間
當一個開發者脫離菜鳥階段成長為中級開發者時,他們能夠在專案失敗時反省整個過程(通常,他們會看自己所做工作部分)。而且會意識到,比起匆匆忙忙埋頭苦幹完成任務,應該在專案最初就建立起一些規矩。甚至於如果最開始有人指正他們,整個專案就能在最初避免走向失敗。
而中級開發者還會體驗另一個獨特心理過程,那就是當他們回首一年前的工作。發現儘管當時認為 "哎呦,自己做的還不錯 “,但現在會發現" 這都什麼玩意 " 啊。
一箇中級開發者是有能力透過以往經驗、文字資料、專案團隊討論等方式,摸索出 "正確方法" 做事的人。在這個階段,學習構建軟體的理論比學習構建程式碼更重要(後者應該在學校就掌握了)。
另一方面,中級開發者假如自作主張起來,造成的危害比初級開發者更大。初級開發者只會堆砌演算法,一個好的中級開發者努力方向是 "模式設計" 和 "範疇驅動設計"。這些技能是他們搭造 OO 系統的必備過程,學習完這些理論知識如果靈活運用,可以讓他們更好地構造專案。但如果僵硬使用,也會危害整個專案。
有的時候,讓一名中級開發者搭造系統,他耗費的時間可能比初級開發者更長,而且更糟的情況是他可能帶整個團隊走向迷途。很可悲的是,很多專案開發之所以走向失敗,因為領隊者自己只是一箇中級開發者,他們缺乏和高階開發者工作的珍貴經驗。團隊領導自己,而且團隊裡其他人都沒有意識到這點。
中級開發者很清楚自己在團隊中起到的角色,能認識到他們給團隊工作帶來的價值。一個好的中級開發者知道程式碼是用來解決問題的,而不是用來終結問題的。然而,中級開發者總容易陷入一種認知上的金字塔,那就是他們會遵循一些 "正確的方式" 去解決問題。
一個好的中級開發者需要少而精的監管。他們在程式碼構造方向非常可靠,而且會在討論設計的過程中發揮重要作用。中級開發者是團隊中的 "發動機"。但是,如果進一步的指導和更高階別的監管仍然是必不可少。
高階,甚至是大神開發者需要滿足的條件
一個高階開發者,不誇張地說,他能記住自己每次的錯誤。他們甚至能在設計或者編寫程式碼的時候,就能預見到很多失敗。他們會對錯誤進行非常敏銳地反饋,用一種誠實的方法去評估自己的成功和失敗。身為高階開發者,他會更傾向於熱愛複雜問題,但會痴迷於簡潔地解決它。
高階開發者不會給其他開發者劃分等級。與之相比,他更多的是懂得。因為懂得,所以理解每個人在每個階段都有長處和短處。而他們也比別人更瞭解自己的長處和短處,力求把自己的優勢最大化。
一個高階開發者會懂得,所有理論基礎都有背景支援。他們不會執著於 “對的方式” 去搭造軟體,而是把理論靈活運用於實際,理論可以變通用於為客戶、團隊和組織需要服務的工具。
高階開發者會在專案過程中,設身處地瞭解客戶想要什麼樣的工作結果,以及他們的喜好。畢竟這些東西,比開發者個人的偏好和成功更重要。他們永遠不會說 “那不是我的工作”,也永遠不會推搡任務和責任。
資深開發者會懂得一件事,那就是他們的工作是為了客戶提供解決方案,而不是埋頭寫程式碼。而一位資深開發者永遠會把自己團隊能給顧客帶來多少價值,放在考核標準。而不是把自己的努力和客戶需求放在對等的 PK 賽場裡。
誠然,因為這是一份工作,所以中間的過程總會非常枯燥和無聊。但資深開發者會退一步,思考怎麼能解決和打破這些無聊的問題。他們會評估本源問題,直接解決它。或者他們會把枯燥情緒放在旁邊,修復日常必須要面對的問題。
資深開發者也會懂得團隊工作的高效。沒有人能自己做一切工作,他們會致力於提升自己團隊的效率。他們把提高團隊效率所做的行為,視為提高自己軟實力的一部分。
資深開發者懂得,領導力不僅僅只是權力,也不僅僅只是控制力。權力不是交通棒,而是一種服務意識。
如果你的團隊中缺乏高階開發者,那這個專案基本都無一例外走向失敗。擁有中級開發者能讓你做事情非常快,但是在工作中你會發現,專案不僅僅只是搭造和維護程式。最終你只能關閉網站,或者用比預期中更高昂的價格維護它。只有高階開發者能選擇技術和網站,而不是任由他們來傷害你。
很多需求很簡單,但大多數簡單需求後面,隱藏更復雜的需求。
而現實情況是,我自己很厭倦以工作時限來分類開發者。是的,工作經驗能告訴你很多事情,但通常提供的都是無意義的資訊。甚至於這些資訊,也必須要結合很多背景來判斷。
更重要的是,我們行業裡需要新鮮的血液,需要招收那些剛從大學畢業充滿激情的年輕人。而即使給程式設計師劃分種類,也不可僅僅只看工作經驗。實際上我們招收程式設計師前,應該先思考團隊都需要那些人才。畢竟,我們招收的人才是為團隊服務。當你招聘到錯誤的人選,不過是給團隊和專案幫倒忙。
本文來源:mattbriggs
摘自 TECH2IPO / 創見
來自 “ mattbriggs ”, 原文作者:mattbriggs;原文連結:https://mp.weixin.qq.com/s?__biz=MjM5OTkxOTc0Mw==&mid=2650234056&idx=1&sn=fccb5a,如有侵權,請聯絡管理員刪除。
相關文章
- 一個大神程式設計師的使命感究竟應該是什麼程式設計師
- 這個問題的思考方向應該是什麼??????
- 為什麼每個Android開發者都應該使用AnkoAndroid
- 為什麼開發者應該摒棄敏捷?敏捷
- 職場中究竟什麼是ownership,你是一個有ownership的人嗎?
- 究竟什麼網站是一個WEB2.0網站?網站Web
- 求職季 | 為什麼每個開發者都應該堅持經營一個部落格?求職
- [譯] 究竟什麼是DOM?
- 一個合理的生產環境的 Web 應用程式應該是什麼樣子的Web
- 【一探究竟】Flutter到底是什麼?Flutter
- [譯] 為什麼每個 Android 開發者都應該嘗試 FlutterAndroidFlutter
- 為什麼你應該使用一個PHP框架PHP框架
- 中國的雲遊戲應該是什麼樣的?遊戲
- 【MySQL】究竟什麼是MVCC呢?MySqlMVC
- 一個優質的專案應該具有什麼特點
- 一個BPM平臺應該具備什麼樣的功能
- 究竟什麼是專案管理?它的主要內容是什麼呢?專案管理
- 前端的價值究竟是什麼?未來應該如何發展?(轉)前端
- 究竟什麼是軟體測試
- 遊戲公司為什麼應該有一個“編輯部”?遊戲
- 一名合格的程式設計師應該是什麼樣子程式設計師
- 好的web開發者應該10個技巧Web
- 前端開發者,2017 年你應該學習什麼前端
- 什麼是RockyLinux,你應該考慮嗎?Linux
- 為什麼微服務應該是事件驅動?微服務事件
- 供應鏈攻擊是什麼?應該如何處理?
- 真正的兒童智慧手錶應該是什麼樣子
- 你的應用應該如何收費?它的價值是什麼?
- 什麼是站群8C? 應該能獲得多少個IP?
- [提問交流]請教[段落]是指的什麼?這個該如何應用啊
- 什麼是全棧開發者全棧
- js基礎梳理-究竟什麼是變數物件,什麼是活動物件?JS變數物件
- DBA團隊的規模應該是什麼樣的配置?
- 一個究極版的大富翁應該是什麼樣子?試著分析《地精公司》的魅力所在
- RDB 和 AOF 持久化的原理是什麼?我應該用哪一個?它們的優缺點?持久化
- 究竟什麼樣的開發流程是規範的?
- 每個PHP開發者都應該看的書PHP
- 開發者應該避免使用的6個Java功能Java