眾所周知,并不是每一個程序員都能成為優(yōu)秀的軟件工程師仙粱。許許多多發(fā)展?jié)摿α己玫摹胺N子選手”,有著多年的的工作經(jīng)驗朋鞍,并且曾為大型或者超大型的技術(shù)公司服務(wù)過惯雳,按時到且止步于面試朝巫。
我們可以肯定,應(yīng)聘人員都是能力不錯的軟件工程師石景,甚至可能很擅長他們目前的工作劈猿。在面試中否決這些人,只是因為面試官不認為他們能成為一名優(yōu)秀的軟件工程師潮孽。而具備一些特殊的品質(zhì)能讓軟件工程師更容易在創(chuàng)業(yè)環(huán)境中取得成功揪荣。同時這些品質(zhì)在初創(chuàng)企業(yè)比在一個更成熟的公司更為關(guān)鍵。
因為在一家初創(chuàng)企業(yè):
1.由淺及深往史,可以對產(chǎn)品变逃、軟件系統(tǒng)、文化及團隊有一個更為深刻的認識怠堪。
2.成功源于團隊的表現(xiàn)揽乱,而非個人之功。如果位于一家更大更成熟的公司粟矿,你的出色表現(xiàn)就會成為你向上爬的踏腳石凰棉,但是在一家又新又小的公司,這根本不值一提陌粹。
3.時間是控制因素撒犀,一是因為初創(chuàng)企業(yè)盈利能力薄弱,另外則是和那些盤根錯節(jié)根深蒂固的老牌子公司相比掏秩,靈活敏捷是他們最大的優(yōu)勢或舞。而時間有限就意味著必須馬不停蹄、加班加點蒙幻,不能拖拉磨蹭映凳,也就是說沒有太多的時間供你揮霍在需要解決的問題上。
而有著卓越的決策能力和熟練的技術(shù)邮破,則是最有效率的軟件工程師诈豌。這樣的工程師大多內(nèi)涵以下7種特質(zhì):
1.很大一部分時間其實是花在系統(tǒng)調(diào)試上的,而非技巧編程抒和。
當有用戶報告緊急問題矫渔,盡快將其修復;當數(shù)據(jù)莫名遭到破壞摧莽,要盡快找出罪魁禍首庙洼;當服務(wù)器的CPU出現(xiàn)負載高峰,盡快找出原因等等镊辕,都是工程師的工作油够。而良好的調(diào)試技巧則能讓企業(yè)干凈利落地解決這些問題。
所以在調(diào)試時丑蛤,應(yīng)采用一種科學嚴謹?shù)乃季S看待問題:先去假設(shè)出錯的地方叠聋,然后用最小可重現(xiàn)的情況或者最有效的方法去驗證。此外受裹,調(diào)試過程還需要涉及各種的工具:縮小回歸原因范圍的git?bisect碌补、交叉分析現(xiàn)狀的UNIX命令行、發(fā)現(xiàn)瓶頸的分析器棉饶、單步執(zhí)行代碼的調(diào)試器等等厦章。當然,調(diào)試的應(yīng)用范圍不僅僅局限于技術(shù)領(lǐng)域照藻。
如果產(chǎn)品的使用率和增長率趨于平穩(wěn)袜啃,那么該如何假設(shè)和測試用戶的行為以調(diào)試未來目標的重心幸缕?若一個團隊完不成他們的項目目標群发,又該怎么調(diào)試才能知道導致項目流產(chǎn)的最終原因是團隊溝通不暢晰韵,技能不足還是別的其他原因?關(guān)鍵:先從數(shù)據(jù)入手
2.對于未知勇于挑戰(zhàn)熟妓。
面對未知作為一名軟件工程師雪猪,需要經(jīng)常專研那些又大又不熟悉的代碼庫∑鹩可能需要好好研究正在使用的開源工具的代碼只恨;又或者需要掌握其他團隊成員寫的代碼等等。所以抬虽,能快速駕馭大型代碼庫和精通相關(guān)區(qū)域的能力顯得至關(guān)重要官觅。而這種能力一般來自于經(jīng)驗,通過閱讀大量代碼積累阐污。另外則需要靠熟悉能搜索代碼庫休涤、跳轉(zhuǎn)到相關(guān)部分的工具,以及會查找有關(guān)提交歷史中的版本控制——這些捷徑都能減少了解新代碼所需的時間疤剑。
若是在成熟的公司滑绒,這種未知也能讓我受益匪淺,不過不同的是隘膘,工程師往往只需要專注并精通一部分代碼庫就能成果斐然了疑故。當然,其他非代碼領(lǐng)域有時候也需要你去探索弯菊。軟件工程師常常需要與銷售人員討論客戶要求的可行性纵势、接待客戶、給新的工程師培訓管钳,以及其他領(lǐng)域甚至完全沒有接觸過的事物钦铁。
3.在一家大規(guī)模公司決策的務(wù)實態(tài)度,在代碼審查和單元測試堅持己見有助于改善組織平衡才漆。
但在一家初創(chuàng)公司牛曹,關(guān)鍵因素是:務(wù)實。這能讓團隊快速完成任務(wù)醇滥。比如:知道什么時候應(yīng)積極辯論黎比,當一旦有了決策,即便你再不同意鸳玩,也能一絲不茍地作為團隊的一份子認真執(zhí)行阅虫。而對決策的指導啟發(fā)式評估應(yīng)側(cè)重于“是否最終能增加團隊成功的概率?”不跟。很多因素都會對這個問題產(chǎn)生效果:團隊的文化颓帝、產(chǎn)品的選擇、架構(gòu)的側(cè)重點、人才結(jié)構(gòu)等等购城。在決策前最好限定討論的時間吕座,然后執(zhí)行,參與人員各抒己見工猜。
4.工欲善其事米诉,必先利其器。
工具的合理運用能節(jié)約大量的時間篷帅,時間則是工程師最重要的資源。對于初創(chuàng)公司拴泌,工程師善用工具的能力越強魏身,完成的任務(wù)數(shù)量就會越多。而高效的工程師常常是那些善于利用工具的人蚪腐,這一點在剛創(chuàng)業(yè)公司尤為重要箭昵。一些大型的組織一般會有專門的工具團隊。若這些工具也為其他團隊成員所接受回季,那么團隊生產(chǎn)力將會發(fā)生乘數(shù)效應(yīng)家制。
5.高大上的多元化初創(chuàng)企業(yè),早期出現(xiàn)的許多問題并不需要很專業(yè)的知識泡一。
具備的技能越多颤殴,在解決問題時所遇到的瓶頸就越少,哪怕只對這些技能有一個最基本的了解鼻忠,甚至還在熟悉摸索的過程中涵但。如果前端Web工程師同時裝備了基本的服務(wù)器技術(shù)(server?skill),當下次再遇到與此相關(guān)的問題就不必去請服務(wù)器工程師了帖蔓。而后端工程師矮瘟,若會一些基本的HTML、CSS以及JavaScript技能塑娇,就能將其所制作的工具設(shè)計成一個Web界面澈侠,方便其他成員使用,不必因為缺乏Web設(shè)計師而裹足不前埋酬。一個在成長的工程師哨啃,應(yīng)該能達到順利使用基本的數(shù)據(jù)分析工具分析實驗數(shù)據(jù),而不必受制于數(shù)據(jù)分析員奇瘦。不過棘催,還有一種更歡迎“專家”的例外,如果是在利基耳标、重技術(shù)的環(huán)境中醇坝,擁有更加精深的專業(yè)知識和工作效率。隨著創(chuàng)業(yè)公司的不斷發(fā)展,對于雜而不精的多面手呼猪,越到后期画畅,替代品就會越多。
6.保持玩家心態(tài)宋距,而非受害者心態(tài)
在《Conscious?Business》一書中轴踱,F(xiàn)red?Kofman描述了人們對待問題采取的兩種不同態(tài)度。一種就是玩家的心態(tài)谚赎,審視自己的能力淫僻,一旦確定能做補救,毫不猶豫投入壶唤。一種是受害者的心態(tài)雳灵,怨天尤人,責怪他人的不是闸盔,例如產(chǎn)品推出不當悯辙、項目時間太少、以及和隊友之間發(fā)生爭執(zhí)等等迎吵,通通歸咎于外部因素躲撰。在短時間內(nèi),受害者心態(tài)可能撫慰受傷的心情击费,但是從長遠角度分析拢蛋,擁有玩家心態(tài)的人可以不斷進步和發(fā)展。而在創(chuàng)業(yè)公司工作壓力是很大的荡灾,同時隨著壓力程度的增加瓤狐,人們往往回顧,不去勇于承擔個人責任批幌,陷入逃避責任和互相推諉的怪圈础锐。
7.不斷學習與回顧,持之以恒荧缘。
研究發(fā)現(xiàn)皆警,只要程序員有足夠的激情和動力,上述品質(zhì)是可以通過學習和培養(yǎng)后天養(yǎng)成的截粗。堅忍不拔是一種專注于長遠目標的激情和毅力信姓。眾所周知堅持夢想,堅持未來绸罗,不是一兩天之功意推,也不是一周兩周之效,更不是一個月兩個月就可以實現(xiàn)珊蟀,而是持續(xù)多年菊值,不畏艱辛、勇往直前,為了目標而奮斗腻窒。隨著時間的推移昵宇,不斷進步,一定會成為一個更為優(yōu)秀的軟件工程師儿子。
上述這些技能即便是在更為成熟的公司也是能助你一臂之力的瓦哎,不過在初創(chuàng)公司發(fā)揮的作用更大。當然柔逼,并不是說不具備這些技能就能成為一個好的工程師了蒋譬,這說明,可能你不大適合這種創(chuàng)業(yè)環(huán)境愉适。但是羡铲,如果要立志成為一個優(yōu)秀的軟件工程師,不要讓上面這7種因素限制發(fā)展儡毕。從現(xiàn)在開始,模擬一個學習計劃來提高技能吧扑媚!