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