每個(gè)軟件工程師都應(yīng)該嘗試的5件事情
回顧我的職業(yè)生涯(不,我還沒(méi)那么老,不過(guò)入行確實(shí)不少年了),確實(shí)有幾次人生拐點(diǎn)幫我更具職場(chǎng)智慧,并鞭策我,使我總體來(lái)說(shuō)適合成為軟件工程師或程序員,成為那種要么熱衷于提高自己的技藝,要么對(duì)混入管理層有興趣,要么只是簡(jiǎn)單的期望擴(kuò)大自己的知識(shí)面的人。我意識(shí)到,鑒于每個(gè)人目前的工作情況,有些建議可能并不適合于每一個(gè)人,尤其是假如你工作在一家對(duì)“誰(shuí)可以和客戶談話”這種事都作出嚴(yán)格定義的公司的話。所以如果你現(xiàn)在做不到全部這些,也不必?zé)?。也要注意,有時(shí),你需要的只是開(kāi)口去問(wèn)!
貢獻(xiàn)到一個(gè)可行的開(kāi)源項(xiàng)目
除非你與世隔絕,否則一定聽(tīng)過(guò)開(kāi)源項(xiàng)目,也許你已經(jīng)在 Github 或 SourceForge 上有一些小型的開(kāi)源項(xiàng)目了。所有這些都是好的,但是我所說(shuō)的“viable open source” 是指應(yīng)當(dāng)嘗試在一個(gè)項(xiàng)目中做出重大意義的貢獻(xiàn),你的代碼必須是通過(guò)審批的流程,如果被接受,將會(huì)在很多系統(tǒng)的系統(tǒng)中被應(yīng)用到。你能從共享開(kāi)源項(xiàng)目中學(xué)到的東西非常多。就我個(gè)人而言,它意味著:寫更好的代碼,更高效的溝通,有利的條件獲得更多的工作機(jī)會(huì),更高的報(bào)酬,更多的贊譽(yù),更多了解其他觀點(diǎn)和讓自己有更厚的臉皮。最后一點(diǎn),是說(shuō),你的代碼在某些情況下會(huì)受到詳細(xì)檢查和批評(píng)。開(kāi)源項(xiàng)目只是一個(gè)軟件,并不是你一個(gè)人的(假設(shè)你即使遇到了一個(gè)很好的項(xiàng)目,請(qǐng)盡力將自己和項(xiàng)目區(qū)分開(kāi))。所以把接受批評(píng)當(dāng)作是一個(gè)學(xué)習(xí)的機(jī)會(huì),并將事情做得更好而不是令自己生氣。不過(guò)這不容易做到,我自己有時(shí)也會(huì)與這種事情斗爭(zhēng),但是我知道如果不去想這些代碼去誰(shuí)寫的,這些代碼(和我)都能越來(lái)越好,而這才是最重要的。
參與開(kāi)源項(xiàng)目者還有一個(gè)額外的優(yōu)勢(shì),從雇主的角度看,我會(huì)更容易雇傭一些在能在生產(chǎn)環(huán)境上找到他們提交代碼記錄的人。對(duì)于技能差不多的候選人,任何時(shí)候,我都會(huì)他們當(dāng)中選擇開(kāi)源項(xiàng)目貢獻(xiàn)者。
銷售你的軟件
是的,我從字面上的意思是你應(yīng)該去做電話銷售,如果可能的話。換句話說(shuō),我認(rèn)為你應(yīng)該將自己放到極客的位置,時(shí)時(shí)的為他人用英語(yǔ)解釋明白你在做什么,而不僅僅是你的同伴。如果你都不能解釋清楚你做的是什么,其他人怎么能去購(gòu)買它吶?
做前期銷售對(duì)我來(lái)說(shuō)是一個(gè)非常寶貴的事,因?yàn)樾枰粋€(gè)真實(shí)的、存在的、活生生的客戶站在面前,可以為他們解釋為什么他們應(yīng)該購(gòu)買我的軟件。在開(kāi)始的幾次,我做到了,我非常緊張(毫無(wú)疑問(wèn)的事實(shí)就是我的工作起步階段,我們也在嘗試做得更好),但是我通過(guò)了, 得到了一些鍛煉,得到了一些提升。
賣你寫的軟件會(huì)給你真正的觀點(diǎn)你正在構(gòu)建什么和為什么構(gòu)建, 它還能讓你接觸到大量的使用案例和真實(shí)反饋,什么是好,什么是壞。它也將磨練你,同事也會(huì)帶給你信心。你還可以得到更多的使用你寫的軟件而改善他們生活的人的尊重,另外,當(dāng)代碼不正確時(shí)你也會(huì)是第一個(gè)感受痛苦的人,這也會(huì)使你希望自己寫出更好的測(cè)試代碼。最后,從長(zhǎng)遠(yuǎn)來(lái)說(shuō),它幫你看得更遠(yuǎn)。
支持你的軟件
銷售你的軟件之后的另一件事就是支持它。找到一種你能工作在第一線的支持方式,或者至少參與到支持工作中,來(lái)使自己能夠真切的體驗(yàn)到人們使用你的軟件的各種方式:好的、不好的、甚至丑陋的方式。錯(cuò)誤報(bào)告和升級(jí)是一方面,直接從客戶聽(tīng)取意見(jiàn)則是另一回事。除了需要社交技巧,你也需要能夠迅速的進(jìn)入用戶的使用場(chǎng)景,了解他們看待你的代碼的方式,這將進(jìn)一步告訴你哪些你做的很好,哪些你還需要改進(jìn)。這也意味著要知道哪些該說(shuō)哪些不該說(shuō),因?yàn)檫@是你和付費(fèi)客戶打交道時(shí)要把握的分寸。伴隨著銷售,也會(huì)帶給你一個(gè)新的欣喜,即之前開(kāi)發(fā)階段的辛勤工作沒(méi)有白費(fèi),它很好的支撐著軟件支持階段的工作。
寫/培訓(xùn)與你軟件相關(guān)的內(nèi)容
如果你還沒(méi)有弄明白我的意思,我將會(huì)解釋清楚一點(diǎn):我十分重視那些不單單能寫代碼并且在公司內(nèi)部和向公司外部人員解釋那些代碼是什么和為什么這樣寫的工程師。通過(guò)撰寫和培訓(xùn)軟件相關(guān)的內(nèi)容,你必須簡(jiǎn)明、清晰地解釋復(fù)雜的技術(shù)細(xì)節(jié)。也需要經(jīng)常強(qiáng)調(diào)那些從用戶的角度看是不對(duì)的地方。我說(shuō)不出多少次在寫文章和培訓(xùn)的過(guò)程中發(fā)現(xiàn)功能或特性不是十分正確,從而回去修改代碼。這種情況在 API 設(shè)計(jì)的過(guò)程中更加經(jīng)常發(fā)生。
寫作也可以增加你的曝光并帶給你更廣的觀眾群體,從而得到反饋并令你的作品更上一層樓。有很多,很多的機(jī)會(huì)可以去為網(wǎng)站或出版社撰寫技術(shù)的文章。學(xué)著去推銷你的想法(看,你又在銷售了!)并堅(jiān)持下去,下一步你就會(huì)發(fā)現(xiàn)你將會(huì)成為一名合格的作者并有可能從中獲得回報(bào)。
結(jié)交一些新朋友
也許對(duì)我來(lái)說(shuō),在學(xué)習(xí)和機(jī)遇兩個(gè)方面最大的一種變革力量,就是我對(duì)擴(kuò)展自己人際網(wǎng)絡(luò)的明確努力 。當(dāng)然這并不容易,而且這肯定涉及要“使你自己身心投入其中”,但回報(bào)經(jīng)常是極為顯著的,而且以事后所見(jiàn),其中的風(fēng)險(xiǎn)非常小。
如果在你直接接觸范圍之外沒(méi)有太多的人際網(wǎng)絡(luò),我給你一些建議。首先最重要的,人際網(wǎng)絡(luò)的關(guān)鍵是你必須真誠(chéng)的與新朋友會(huì)面,而且你必須除了這個(gè)新的關(guān)系之外別無(wú)所求。其次,許下承諾去維持這樣的努力數(shù)月乃至更久。當(dāng)你獲得更多的自信并從任何失誤中獲得經(jīng)驗(yàn)之后,這將變得越來(lái)越容易。第三,做你自己,但要注重傾聽(tīng)他人。第四,這也是我最弱的方面,獲知并記憶名字。我很少忘記一張臉,但如果我不努力去學(xué)習(xí)別人的名字,這些名字就會(huì)在我腦中溜走,所以記住別人的名字,讓別人知道你看重他們。
除了這些技巧,還有許多關(guān)于這個(gè)主題的好書。我最喜歡的有一本“愛(ài)是殺手锏”。就我看來(lái),這是一個(gè)做作的標(biāo)題,但書中的建議都是干貨,而且作者很好的將它呈現(xiàn)了出來(lái)。在每天結(jié)束時(shí),讓你自己沉浸其中,從你獲得的實(shí)際反饋中學(xué)習(xí)。如果你發(fā)現(xiàn)自己被太多次拒絕,問(wèn)問(wèn)一位信任的朋友,讓他給你在何處改進(jìn)的真實(shí)意見(jiàn)。如果有困惑,找別的朋友討論。
紅利: 找到導(dǎo)師
有可能你已經(jīng)知道一些令你尊敬的人物,他們擁有解決復(fù)雜問(wèn)題和高效溝通的能力。如果他們?cè)敢馀c你分享他們的經(jīng)驗(yàn),并給你改進(jìn)方法的反饋,那么自然有了勝算。從他們的經(jīng)驗(yàn)和教訓(xùn)中學(xué)習(xí),對(duì)他們的建議保持開(kāi)放的態(tài)度。雖然它不會(huì)總是正確,但你至少應(yīng)該考慮一下他們說(shuō)的是什么,之后再做出決定。就我個(gè)人來(lái)說(shuō),我很幸運(yùn)擁有一個(gè)朋友,他也是一個(gè)高管教練(我們意外的相遇,證明了使自己投入某事的價(jià)值)和一間企業(yè)所有者。在好多年里,我也遇到許多好老板和好同事,他們充當(dāng)了我的人生導(dǎo)師,我對(duì)他們感激不盡。在開(kāi)始以前,問(wèn)問(wèn)自己最敬佩誰(shuí),然后去和他們討論你的想法。如果你找不到可以勝任此角色的朋友,甚至可以考慮雇傭一位教練。
完結(jié)
請(qǐng)記住,所有這些事情是你可以在這里和那里周期性的做。 他們通常并不需要很大的時(shí)間或貨幣的承諾,但他們確實(shí)需要你走出你的安樂(lè)窩。
最后,我很高興聽(tīng)到一些程序員/工程師做這些事之后,確實(shí)改善了他們的職業(yè)/生活。你工作是什么?哪些工作沒(méi)有起到作用?
英文原文:5 Things Every Software Engineer Should Try
譯文鏈接:http://www.oschina.net/translate/5-things-every-software-engineer-should-try