月薪過萬十大冷門職業(yè)_軟件工程師待遇_優(yōu)秀軟件工程師必備的7大特性 碼農網
本文關鍵詞:軟件工程師,由筆耕文化傳播整理發(fā)布。
本文由碼農網 – 小峰原創(chuàng)翻譯,轉載請看清文末的轉載要求,歡迎參與我們的付費投稿計劃!
不是每一個程序員都能成為優(yōu)秀的軟件工程師。在過去的6年時間里,我在Ooyala、Quora和now Quip這3個創(chuàng)業(yè)公司面試過許許多多挺有發(fā)展?jié)摿Φ摹胺N子選手”,他們都有著5年以上的工作經驗,并且曾為類似于谷歌這樣的頂級技術公司服務過,但是就是搞砸了面試。毫無疑問,這些應聘人員都是不錯的軟件工程師,并且,他們甚至可能很擅長他們目前的工作。我之所以否決他們,只是因為我不認為他們能成為一名優(yōu)秀的軟件工程師。
我多年的面試、培訓和指導經驗告訴我,具備一些特殊的品質能讓軟件工程師更容易在創(chuàng)業(yè)環(huán)境中取得成功。并且,這些品質在初創(chuàng)企業(yè)比在一個更成熟的公司更為關鍵。因為在一家初創(chuàng)企業(yè):
我曾經有幸合作過的最有效率的軟件工程師,有著熟練的技術和卓越的決策能力。他們大多內涵以下7種特質:
1.系統(tǒng)調試技巧編程很大一部分時間其實是花在調試上的。有用戶報告緊急問題,盡快將其修復;服務器的CPU出現負載高峰,盡快找出原因;數據莫名遭到破壞,盡快找出罪魁禍首,等等,都是你的工作。而良好的調試技巧則能讓我們干凈利落地解決這些問題。
在調試時,我們應該用一種科學嚴謹的思維看待問題:先假設出錯的地方,然后用最有效的方法或者最小可重現的情況去驗證。此外調試過程還需要涉及各種的工具:發(fā)現瓶頸的分析器、單步執(zhí)行代碼的調試器、縮小回歸原因范圍的git bisect、交叉分析現狀的UNIX命令行等等。
不過,調試的應用范圍不僅僅局限于技術領域。如果產品的增長率和使用率趨于平穩(wěn),我們該怎么假設和測試用戶的行為以調試未來目標的重心?如果一個團隊完不成他們的項目目標,我們該怎么調試才能知道導致項目流產的根本原因是技能不足,團隊溝通不暢還是別的其他原因?招聘有的時候并不能盡如人意——你也知道,大家對于你是如何調試的過程并不能一目了然,不是嗎?(關鍵:先從數據入手)
2.勇于面對未知作為一名軟件工程師,你需要經常專研那些又大又不熟悉的代碼庫:可能你需要好好研究你正在使用的那個開源工具的代碼,才能隨心所欲地揮灑自如;又或者你需要搞清楚其他團隊成員寫的代碼,因為他沒有修改時間等等。所以,快速駕馭大型代碼庫和精通相關區(qū)域的能力顯得至關重要。而這種能力大部分來自于經驗,通過閱讀過大量代碼積累的經驗。還有一小部分則需要靠我們熟悉能搜索代碼庫、跳轉到相關部分的工具了,以及會查找有關提交歷史中的版本控制——這些捷徑都能減少我們去了解新代碼所需的時間。如果是在更為成熟的公司,這種勇于面對未知的精神也能讓我們受益匪淺,不過不同的是,我們往往只需要專注并精通一部分代碼庫就能成果斐然了。
當然,其他非代碼領域有時候也需要你去探索。軟件工程師常常需要接待客戶、與銷售人員討論客戶要求的可行性、給新的工程師培訓,以及其他領域的很多你甚至完全沒有接觸過的事宜。在這些經歷中成長,,會讓你受益無窮。
3.對決策的務實態(tài)度可能在一家大規(guī)模公司,在代碼審查和單元測試堅持己見有助于改善組織平衡。但是在一家初創(chuàng)公司,務實更重要,因為這能讓團隊快速完成任務。在這里我所說的務實指的是,知道什么時候應該積極辯論,而一旦有了決策,即便你再不同意,也能一絲不茍地作為團隊的一份子認真執(zhí)行。我曾經看到過因為編碼風格而相互爭執(zhí)的現象,一個說在源代碼起碼得有80,100,或120個字符和大括號,而另一個覺得應該另起一行。呵呵。我深深地覺得,我們還不如把這些寶貴的時間和精力用到更重要的決策上。
對決策的指導啟發(fā)式評估應該側重于“是否最終能增加團隊成功的概率?”。很多因素都會對這個問題產生影響:產品的選擇、架構的側重點、團隊的文化、人才結構,等等。我們在決策前最好限定討論的時間,然后堅決執(zhí)行,各抒己見。
4.善于運用工具工欲善其事,必先利其器。工具的合理運用能讓我們節(jié)約大量的時間,而時間則是我們最重要的資源。高效的工程師常常是那些善于利用工具的人,而這一點在創(chuàng)業(yè)公司尤為重要,因為這里的時間更緊迫。一些大型的組織可能會有專門的工具團隊。而在初創(chuàng)公司,你善用工具的能力越強,完成的任務數量就越多。如果這些工具也為其他團隊成員所接受,那么團隊生產力將會發(fā)生乘數效應。
5.牛逼的多面手初創(chuàng)企業(yè)早期出現的很多問題其實并不需要很專業(yè)的知識。具備的技能越多,在解決問題時遇到的瓶頸就越少,哪怕我們只是對這些技能有一個最基本的了解,還在摸索熟悉技能的過程中。如果前端Web工程師也裝備了基本的服務器技術(server skill),那下次再遇到與此相關的問題就不必去請服務器工程師在百忙之中撥冗相見了。而后端工程師,假如會一些基本的HTML、CSS和JavaScript技能,就能將他所制作的工具設計成一個Web界面,以方便其他團隊成員使用,從而不必因為缺乏Web設計師而裹足不前。一個成長中的工程師,應該是那種能順利使用基本的數據分析工具分析實驗數據,而不必受制于數據分析員的多面手。
不過,有一種更歡迎“專家”的例外是,如果是在利基、重技術的環(huán)境里,例如啟動數據庫,那么擁有精深的專業(yè)知識工作效率會更高。而且,隨著創(chuàng)業(yè)公司的發(fā)展,對于博而不精的多面手,越到后期,能取代你的人就越多。
6.保持玩家心態(tài),而非受害者心態(tài)在Fred Kofman的《Conscious Business》一書中,他描述了人們對待問題采取的兩種不同態(tài)度。可以是受害者心態(tài),怨天尤人,責怪他人的不是(項目時間太少、產品推出不當、以及和隊友發(fā)生爭執(zhí)等等),通通歸咎于外部原因。另一種就是玩家心態(tài),審視自己的能力,一旦確定能做補救,毫不猶豫地貢獻自己的能量。雖然短時間內,受害者心態(tài)能撫慰我們受傷的心情,但是從長遠角度看,擁有玩家心態(tài)的人才能不斷進步與發(fā)展。
在創(chuàng)業(yè)公司工作壓力是很大的,并且隨著壓力程度的增加,人們往往不但不能勇于承擔個人責任,反而很容易陷入互相推諉以逃避責任的怪圈。而這樣做,我不得不遺憾的說,最后終將導致失望和解聘。
7.不斷學習與回顧,持之以恒研究發(fā)現,只要我們有足夠的激情和動力,上述種種品質通過學習和培養(yǎng)都是可以后天養(yǎng)成的。而學習這些技巧的所有能量來源于一種叫做“堅忍不拔”的品質。Angela Lee曾在她的TED演講《The key to success? Grit》(《成功的關鍵:堅持》)中,提及這個概念:
堅忍不拔是一種專注于長遠目標的激情和毅力。堅持夢想,堅持未來,不是一天兩天,也不是一周兩周,更不是一個月兩個月,而是持續(xù)多年,不畏艱辛、勇往直前,為了目標而奮斗。
如果我們也能擁有這種堅忍不拔的品質,愿意投入時間回顧自己的所作所為,那么就能發(fā)現自己的薄弱之處和需要改進的地方。然后隨著時間的推移,不斷進步的你必將會成為一個更為優(yōu)秀的軟件工程師。在早期如果能得到大咖的指點迷津,盡早行進在正確的方向,也能讓我們走的更遠。
上述這些技能即便是在更為成熟的公司也是能助你一臂之力的,不過在初創(chuàng)公司發(fā)揮的作用更大,原因么,上面也有提到,因為初創(chuàng)公司的時間更緊湊。當然,并不是說不具備這些技能就不是一個好的工程師了,這只能說明,可能你不大適合這種創(chuàng)業(yè)環(huán)境。但是,如果你立志要成為一個優(yōu)秀的軟件工程師,不要讓上面這7點品質限制你的發(fā)展。那么,從現在開始,寫個計劃學習和提高這些技能吧!
譯文鏈接:
英文原文:What Qualities Make a Good Startup Engineer?
翻譯作者:碼農網 – 小峰
[ 轉載必須在正文中標注并保留原文鏈接、譯文鏈接和譯者等信息。]
本文關鍵詞:軟件工程師,由筆耕文化傳播整理發(fā)布。
本文編號:53042
本文鏈接:http://www.sikaile.net/wenshubaike/xxkj/53042.html