我眼中的工程师的十个特质
不想當將軍的士兵不是好士兵,沒有好習慣的工程師無法持續進步,今天我給大家整理在過去7年的工作經歷中,遇到的優秀工程師中,他們難以被模仿且又寶貴的特點。
1.極強的執行力
新人工程師加入一家公司,剛開始主要的工作可能是修復軟件缺陷或者整理一些文檔,這時候在工作上新人既是戰友又是競爭關系,一些有挑戰或者激發創造力的工作機會一旦出現,在項目組中,往往市場經理,測試開發工程師和技術經理更傾向于給執行力強的新人,因為:
?對于市場經理,執行力強的開發人員能更快交付產品,完成客戶簽約?對于測試開發工程師,執行力強的開發人員能更快修復問題?對于技術經理,執行力強的開發人員能更快解決問題,留下應對風險的時間,而且發現問題,立刻解決問題 執行力強,給大家會很快留下好的印象,例如充滿活力,積極響應。
2.每天學習
?如同每天刷微信朋友圈,每天都需要分配固定的學習時間?不恥下問(“指天資聰明而又好學的人,不以向地位比自己低、學識比自己差的人請教為恥”。) 軟件開發和建筑設計有很大的區別,建造完成一個房子后,除非房子有嚴重的缺陷,基本不會推倒重來,而軟件開發卻很不一樣,軟件是不斷擁抱變化的,所以對于開發者而言,隨著新技術,新業務的發展,都會要求開發者不斷去學習新技術,例如機器語言-》匯編語言-》高級語言-》機器學習,靜態頁面-》富交互頁面-》SPA/移動開發-》小程序。如果開發者樹立一個在30歲前,要學完或者學好所有開發技術,這本身就是一個不可能實現的目標,軟件開發就是終身學習的過程。對于當前領域的技術,例如前端開發,要了解其發展的歷史,了解基本原理,例如瀏覽器引擎,開發套件,分工模式,對于前端未來的發展方向,例如ServerLEss,IOT,可視化應用開發等等。在一個商業產品的研發團隊中,即使你是一個資深的工程師,也可以常常請教團隊年輕的工程師,他們又不一樣的思維,對于業務也有自己深刻的理解,對于技術領域的真正大師,要敢于提問,也要學會提問。而且要學會讀書,讀書就是站在巨人們的肩膀上看世界
3. 相信技術
我經常會想起大學Java開發的老師說過一句話,"解決問題方法的數量一定比問題多",開發者無論是擅長溝通的人或者內斂的人,其實大家碰到棘手的問題,內心都會有點愁,尤其碰到自己毫不了解的領域,更是有點抓瞎,其實相比20年前的互聯網,大家都是特別幸福的,我們有這么多解決問題的渠道:
?更大的研發團隊?Stack Overflow、Google、Github?業務牛人的咨詢?技術外包團隊?開源項目研究?付費的商業定制方案?書籍,論文 一定有一個方式可以當前的業務的規模的問題 大家在研發過程中的快樂不能僅僅通過平庸的工作,一定要通過戰勝一個個挑戰,平凡人,做不平凡的事情
4. 懶惰DRY
DRY 只“Don't repeat yourself”,不要做重復的事情,有這樣一個理論,我們的工作中 80%的價值來源于 20%的工作時間,那 80%的工作時間怎么開心舒服度過呢,軟件開發者就需要學會做一個懶人,例如:
?我是一個運維,我需要經常登錄很多虛擬機,為了每次都重復輸入快速登錄的腳本,我可以使用SecurityCRT或者ssh這樣工具或登錄方式?我是一個UE,我可以將常用的UI組件抽象成Sketch套件,減少業務涉及的重復設計?我是一個架構師,我可以封裝一套項目腳手架,例如vue-cli或者SpringMVC?我是一個開發者,我可以將我的VSCODE配置或者mac程序安裝都封裝成標準的shell腳本
我們可以使用工具把重復的事情,流程化,自動化,簡化,利用我們的創造力,把復雜的事情都隱藏起來,留下一句話就能說明白的內容,留下一行指令就能搞定的事情
5. 做工程師而不是搬磚師
工作中,假如開發者要求進行某個接口的開發任務,例如小明開發一個接口,用于獲取BI所有的報表,如果小明初入職場,他的工作主要有三個:1. 開發接口 2. 告訴前端調用者接口怎么用 3. 配合提測,這也只是做完基本的事情,如果要想做好,就得多問一些內容。
?這個接口是在哪個版本上線??是否需要灰度??涉及哪些端的調用??接口無權限或者錯誤情況下如果區分??接口文檔定義在哪能夠使新開發者也理解??提測的流程和規范是什么??。。。。開發者也許會說,不就是開發個接口,怎么還這么多事,這就是做好和做完的區別,做完只能代表你是個搬磚師,有基本的技能而已,但是做好,代表你有思考,你每次都會審視自己的工作,規避產品上線后的風險,完善團隊的開發方式,這樣子,你才是正式開始自己的工程師之路。
6.極客精神
Google有這樣的工作規則,開發者每周可以有20%的時間用于做一些有創造力的事情,幫助產品的增長,據我所知,硅谷很多公司有這樣的Hackson Day。例如紛享的前端開發工具 Alpha
7.重視技術原理和業務
在未來的賽跑中,重視技術原理和業務的人才,一定是稀缺的。
1.為什么雅虎的設計原理?這與瀏覽器的渲染引擎,http原理有關2.為什么Nodejs能做到高性能?尤其是非阻塞的模型。3.靜態資源緩存的原理?http的請求頭信息有關4.小程序的原理?多層渲染引擎,Worker有關5.如果提高算法性能?1. 優化算法細節 2. 空間換時間6.JavaScript的執行流程?詞法定義和語法定義 -》詞法分析-》語法分析-》解釋執行7.JSAPI的原理?native bridge和js通信 很多時候,工程師確實主要參與業務開發,不需要了解原理,但是技術的基本原理在做技術選型,技術改進的過程中,就尤為重要,投入時間研究,結合自己的工作,就會有種突然發現桃花源的感覺。而對于業務而言,技術服務于業務,業務也可以成就技術。
8. 樂于分享
開發者將自己的學習方式,業務認知,技術理解,填坑挖坑經歷共享出來,對于開發者而言,不斷提煉自己的知識精華,鍛煉寫作的能力,對于被分享者,可以擴展眼界,豐富自己的“人生詞典”。開發的分享方式:
?技術博客?技術社區?制作專題課程?開源框架,例如vuejs?知識匯總awsomexxx?翻譯計劃?業務團隊內的演講,分享?業務團隊的WIKI
9. 謙虛:成就自己,成就他人
凡事謙虛,能讓自己走得順走得遠,贏得好的口碑,在團隊之中,也是互相成就,贏得大家的支持,能做更大更難的挑戰
10. 保持健康
軟件開發無論是996,還是007,無論哪種工作方式,大家都需要一個健康的體魄,積極的身體狀態,大家知道陸奇,扎克伯克很多知名的互聯網人,之所以能夠投入很多精力,一定是有好的體魄,要不然怎么能夠續航呢?例如都會每天跑步5公里,每年參加各種形式的健身
附錄:
《前端之未來》 https://www.yuque.com/zenany/up/the_future_frontend?from=groupmessage&isappinstalled=0
《重學前端》 https://time.geekbang.org/column/article/88538
總結
以上是生活随笔為你收集整理的我眼中的工程师的十个特质的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 下一代存储技术面临市场窗口期?
- 下一篇: 电力电子应用技术_迎接电能系统新时代挑战