眾所周知,并不是每一個(gè)程序員都能成為優(yōu)秀的軟件工程師。許許多多發(fā)展?jié)摿α己玫摹胺N子選手”,有著多年的的工作經(jīng)驗(yàn),并且曾為大型或者超大型的技術(shù)公司服務(wù)過(guò),按時(shí)到且止步于面試。
我們可以肯定,應(yīng)聘人員都是能力不錯(cuò)的軟件工程師,甚至可能很擅長(zhǎng)他們目前的工作。在面試中否決這些人,只是因?yàn)槊嬖嚬俨徽J(rèn)為他們能成為一名優(yōu)秀的軟件工程師。而具備一些特殊的品質(zhì)能讓軟件工程師更容易在創(chuàng)業(yè)環(huán)境中取得成功。同時(shí)這些品質(zhì)在初創(chuàng)企業(yè)比在一個(gè)更成熟的公司更為關(guān)鍵。
因?yàn)樵谝患页鮿?chuàng)企業(yè):
1.由淺及深,可以對(duì)產(chǎn)品、軟件系統(tǒng)、文化及團(tuán)隊(duì)有一個(gè)更為深刻的認(rèn)識(shí)。
2.成功源于團(tuán)隊(duì)的表現(xiàn),而非個(gè)人之功。如果位于一家更大更成熟的公司,你的出色表現(xiàn)就會(huì)成為你向上爬的踏腳石,但是在一家又新又小的公司,這根本不值一提。
3.時(shí)間是控制因素,一是因?yàn)槌鮿?chuàng)企業(yè)盈利能力薄弱,另外則是和那些盤根錯(cuò)節(jié)根深蒂固的老牌子公司相比,靈活敏捷是他們最大的優(yōu)勢(shì)。而時(shí)間有限就意味著必須馬不停蹄、加班加點(diǎn),不能拖拉磨蹭,也就是說(shuō)沒(méi)有太多的時(shí)間供你揮霍在需要解決的問(wèn)題上。
而有著卓越的決策能力和熟練的技術(shù),則是最有效率的軟件工程師。這樣的工程師大多內(nèi)涵以下7種特質(zhì):
1.很大一部分時(shí)間其實(shí)是花在系統(tǒng)調(diào)試上的,而非技巧編程。
當(dāng)有用戶報(bào)告緊急問(wèn)題,盡快將其修復(fù);當(dāng)數(shù)據(jù)莫名遭到破壞,要盡快找出罪魁禍?zhǔn)?;?dāng)服務(wù)器的CPU出現(xiàn)負(fù)載高峰,盡快找出原因等等,都是工程師的工作。而良好的調(diào)試技巧則能讓企業(yè)干凈利落地解決這些問(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ò)程還需要涉及各種的工具:縮小回歸原因范圍的git bisect、交叉分析現(xiàn)狀的UNIX命令行、發(fā)現(xiàn)瓶頸的分析器、單步執(zhí)行代碼的調(diào)試器等等。當(dāng)然,調(diào)試的應(yīng)用范圍不僅僅局限于技術(shù)領(lǐng)域。
如果產(chǎn)品的使用率和增長(zhǎng)率趨于平穩(wěn),那么該如何假設(shè)和測(cè)試用戶的行為以調(diào)試未來(lái)目標(biāo)的重心?若一個(gè)團(tuán)隊(duì)完不成他們的項(xiàng)目目標(biāo),又該怎么調(diào)試才能知道導(dǎo)致項(xiàng)目流產(chǎn)的最終原因是團(tuán)隊(duì)溝通不暢,技能不足還是別的其他原因?關(guān)鍵:先從數(shù)據(jù)入手
2.對(duì)于未知勇于挑戰(zhàn)。
面對(duì)未知作為一名軟件工程師,需要經(jīng)常專研那些又大又不熟悉的代碼庫(kù)??赡苄枰煤醚芯空谑褂玫拈_(kāi)源工具的代碼;又或者需要掌握其他團(tuán)隊(duì)成員寫(xiě)的代碼等等。所以,能快速駕馭大型代碼庫(kù)和精通相關(guān)區(qū)域的能力顯得至關(guān)重要。而這種能力一般來(lái)自于經(jīng)驗(yàn),通過(guò)閱讀大量代碼積累。另外則需要靠熟悉能搜索代碼庫(kù)、跳轉(zhuǎn)到相關(guān)部分的工具,以及會(huì)查找有關(guān)提交歷史中的版本控制——這些捷徑都能減少了解新代碼所需的時(shí)間。
若是在成熟的公司,這種未知也能讓我受益匪淺,不過(guò)不同的是,工程師往往只需要專注并精通一部分代碼庫(kù)就能成果斐然了。當(dāng)然,其他非代碼領(lǐng)域有時(shí)候也需要你去探索。軟件工程師常常需要與銷售人員討論客戶要求的可行性、接待客戶、給新的工程師培訓(xùn),以及其他領(lǐng)域甚至完全沒(méi)有接觸過(guò)的事物。
3.在一家大規(guī)模公司決策的務(wù)實(shí)態(tài)度,在代碼審查和單元測(cè)試堅(jiān)持己見(jiàn)有助于改善組織平衡。
但在一家初創(chuàng)公司,關(guān)鍵因素是:務(wù)實(shí)。這能讓團(tuán)隊(duì)快速完成任務(wù)。比如:知道什么時(shí)候應(yīng)積極辯論,當(dāng)一旦有了決策,即便你再不同意,也能一絲不茍地作為團(tuán)隊(duì)的一份子認(rèn)真執(zhí)行。而對(duì)決策的指導(dǎo)啟發(fā)式評(píng)估應(yīng)側(cè)重于“是否最終能增加團(tuán)隊(duì)成功的概率?”。很多因素都會(huì)對(duì)這個(gè)問(wèn)題產(chǎn)生效果:團(tuán)隊(duì)的文化、產(chǎn)品的選擇、架構(gòu)的側(cè)重點(diǎn)、人才結(jié)構(gòu)等等。在決策前最好限定討論的時(shí)間,然后執(zhí)行,參與人員各抒己見(jiàn)。
4.工欲善其事,必先利其器。
工具的合理運(yùn)用能節(jié)約大量的時(shí)間,時(shí)間則是工程師最重要的資源。對(duì)于初創(chuàng)公司,工程師善用工具的能力越強(qiáng),完成的任務(wù)數(shù)量就會(huì)越多。而高效的工程師常常是那些善于利用工具的人,這一點(diǎn)在剛創(chuàng)業(yè)公司尤為重要。一些大型的組織一般會(huì)有專門的工具團(tuán)隊(duì)。若這些工具也為其他團(tuán)隊(duì)成員所接受,那么團(tuán)隊(duì)生產(chǎn)力將會(huì)發(fā)生乘數(shù)效應(yīng)。
5.高大上的多元化初創(chuàng)企業(yè),早期出現(xiàn)的許多問(wèn)題并不需要很專業(yè)的知識(shí)。
具備的技能越多,在解決問(wèn)題時(shí)所遇到的瓶頸就越少,哪怕只對(duì)這些技能有一個(gè)最基本的了解,甚至還在熟悉摸索的過(guò)程中。如果前端Web工程師同時(shí)裝備了基本的服務(wù)器技術(shù)(server skill),當(dāng)下次再遇到與此相關(guān)的問(wèn)題就不必去請(qǐng)服務(wù)器工程師了。而后端工程師,若會(huì)一些基本的HTML、CSS以及JavaScript技能,就能將其所制作的工具設(shè)計(jì)成一個(gè)Web界面,方便其他成員使用,不必因?yàn)槿狈eb設(shè)計(jì)師而裹足不前。一個(gè)在成長(zhǎng)的工程師,應(yīng)該能達(dá)到順利使用基本的數(shù)據(jù)分析工具分析實(shí)驗(yàn)數(shù)據(jù),而不必受制于數(shù)據(jù)分析員。不過(guò),還有一種更歡迎“專家”的例外,如果是在利基、重技術(shù)的環(huán)境中,擁有更加精深的專業(yè)知識(shí)和工作效率。隨著創(chuàng)業(yè)公司的不斷發(fā)展,對(duì)于雜而不精的多面手,越到后期,替代品就會(huì)越多。
6.保持玩家心態(tài),而非受害者心態(tài)
在《Conscious Business》一書(shū)中,F(xiàn)red Kofman描述了人們對(duì)待問(wèn)題采取的兩種不同態(tài)度。一種就是玩家的心態(tài),審視自己的能力,一旦確定能做補(bǔ)救,毫不猶豫投入。一種是受害者的心態(tài),怨天尤人,責(zé)怪他人的不是,例如產(chǎn)品推出不當(dāng)、項(xiàng)目時(shí)間太少、以及和隊(duì)友之間發(fā)生爭(zhēng)執(zhí)等等,通通歸咎于外部因素。在短時(shí)間內(nèi),受害者心態(tài)可能撫慰受傷的心情,但是從長(zhǎng)遠(yuǎn)角度分析,擁有玩家心態(tài)的人可以不斷進(jìn)步和發(fā)展。而在創(chuàng)業(yè)公司工作壓力是很大的,同時(shí)隨著壓力程度的增加,人們往往回顧,不去勇于承擔(dān)個(gè)人責(zé)任,陷入逃避責(zé)任和互相推諉的怪圈。
7.不斷學(xué)習(xí)與回顧,持之以恒。
研究發(fā)現(xiàn),只要程序員有足夠的激情和動(dòng)力,上述品質(zhì)是可以通過(guò)學(xué)習(xí)和培養(yǎng)后天養(yǎng)成的。堅(jiān)忍不拔是一種專注于長(zhǎng)遠(yuǎn)目標(biāo)的激情和毅力。眾所周知堅(jiān)持夢(mèng)想,堅(jiān)持未來(lái),不是一兩天之功,也不是一周兩周之效,更不是一個(gè)月兩個(gè)月就可以實(shí)現(xiàn),而是持續(xù)多年,不畏艱辛、勇往直前,為了目標(biāo)而奮斗。隨著時(shí)間的推移,不斷進(jìn)步,一定會(huì)成為一個(gè)更為優(yōu)秀的軟件工程師。
上述這些技能即便是在更為成熟的公司也是能助你一臂之力的,不過(guò)在初創(chuàng)公司發(fā)揮的作用更大。當(dāng)然,并不是說(shuō)不具備這些技能就能成為一個(gè)好的工程師了,這說(shuō)明,可能你不大適合這種創(chuàng)業(yè)環(huán)境。但是,如果要立志成為一個(gè)優(yōu)秀的軟件工程師,不要讓上面這7種因素限制發(fā)展。從現(xiàn)在開(kāi)始,模擬一個(gè)學(xué)習(xí)計(jì)劃來(lái)提高技能吧!
-
軟件工程師
+關(guān)注
關(guān)注
8文章
243瀏覽量
21401
發(fā)布評(píng)論請(qǐng)先 登錄


硬件工程師看了只會(huì)找個(gè)角落默默哭泣#硬件工程師 #MDD #MDD辰達(dá)半導(dǎo)體 #產(chǎn)品經(jīng)理 #軟件工程師

(仰天長(zhǎng)嘯)為什么受傷的總是硬件工程師...#MDD#MDD辰達(dá)半導(dǎo)體 #電子工程師

如何成為一名嵌入式軟件工程師?



硬件工程師的終極幻想:焊板子焊上人生巔峰!#半導(dǎo)體器件 #硬件工程師 #MDD辰達(dá)半導(dǎo)體
嵌入式軟件工程師就業(yè)好不好?

不同時(shí)期的硬件工程師,最怕發(fā)生的事 #電子工程師 #硬件工程師 #內(nèi)容過(guò)于真實(shí) #YXC晶振 #揚(yáng)興科技
特斯拉招募軟件工程師強(qiáng)化無(wú)人駕駛與機(jī)器人遠(yuǎn)程操作

當(dāng)你的工程師朋友失聯(lián)時(shí),別氣,ta真的是在忙工作 #搞笑 #電子愛(ài)好者 #硬件工程師 #晶振 #揚(yáng)興科技

硬件工程師VS軟件工程師|硬件工程師看到這都淚目了!#硬件設(shè)計(jì) #硬件工程師 #電子工程師 #軟件工程師
FPGA算法工程師、邏輯工程師、原型驗(yàn)證工程師有什么區(qū)別?

評(píng)論