每個軟體工程師都應該嘗試的5件事情

oschina發表於2013-06-24

  回顧我的職業生涯(不,我還沒那麼老,不過入行確實不少年了),確實有幾次人生拐點幫我更具職場智慧,並鞭策我,使我總體來說適合成為軟體工程師或程式設計師,成為那種要麼熱衷於提高自己的技藝,要麼對混入管理層有興趣,要麼只是簡單的期望擴大自己的知識面的人。我意識到,鑑於每個人目前的工作情況,有些建議可能並不適合於每一個人,尤其是假如你工作在一家對“誰可以和客戶談話”這種事都作出嚴格定義的公司的話。所以如果你現在做不到全部這些,也不必煩惱。也要注意,有時,你需要的只是開口去問!

 貢獻到一個可行的開源專案

  除非你與世隔絕,否則一定聽過開源專案,也許你已經在Github或SourceForge上有一些小型的開源專案了。所有這些都是好的,但是我所說的“viable open source” 是指應當嘗試在一個專案中做出重大意義的貢獻,你的程式碼必須是通過審批的流程,如果被接受,將會在很多系統的系統中被應用到。你能從共享開源專案中學到的東西非常多。就我個人而言,它意味著:寫更好的程式碼,更高效的溝通,有利的條件獲得更多的工作機會,更高的報酬,更多的讚譽,更多瞭解其他觀點和讓自己有更厚的臉皮。最後一點,是說,你的程式碼在某些情況下會受到詳細檢查和批評。開源專案只是一個軟體,並不是你一個人的(假設你即使遇到了一個很好的專案,請盡力將自己和專案區分開)。所以把接受批評當作是一個學習的機會,並將事情做得更好而不是令自己生氣。不過這不容易做到,我自己有時也會與這種事情鬥爭,但是我知道如果不去想這些程式碼去誰寫的,這些程式碼(和我)都能越來越好,而這才是最重要的。

  參與開源專案者還有一個額外的優勢,從僱主的角度看,我會更容易僱傭一些在能在生產環境上找到他們提交程式碼記錄的人。對於技能差不多的候選人,任何時候,我都會他們當中選擇開源專案貢獻者。

 銷售你的軟體

  是的,我從字面上的意思是你應該去做電話銷售,如果可能的話。換句話說,我認為你應該將自己放到極客的位置,時時的為他人用英語解釋明白你在做什麼,而不僅僅是你的同伴。如果你都不能解釋清楚你做的是什麼,其他人怎麼能去購買它吶?

  做前期銷售對我來說是一個非常寶貴的事,因為需要一個真實的、存在的、活生生的客戶站在面前,可以為他們解釋為什麼他們應該購買我的軟體。在開始的幾次,我做到了,我非常緊張(毫無疑問的事實就是我的工作起步階段,我們也在嘗試做得更好),但是我通過了, 得到了一些鍛鍊,得到了一些提升。

  賣你寫的軟體會給你真正的觀點你正在構建什麼和為什麼構建, 它還能讓你接觸到大量的使用案例和真實反饋,什麼是好,什麼是壞。它也將磨練你,同事也會帶給你信心。你還可以得到更多的使用你寫的軟體而改善他們生活的人的尊重,另外,當程式碼不正確時你也會是第一個感受痛苦的人,這也會使你希望自己寫出更好的測試程式碼。最後,從長遠來說,它幫你看得更遠。

 支援你的軟體

  銷售你的軟體之後的另一件事就是支援它。找到一種你能工作在第一線的支援方式,或者至少參與到支援工作中,來使自己能夠真切的體驗到人們使用你的軟體的各種方式:好的、不好的、甚至醜陋的方式。錯誤報告和升級是一方面,直接從客戶聽取意見則是另一回事。除了需要社交技巧,你也需要能夠迅速的進入使用者的使用場景,瞭解他們看待你的程式碼的方式,這將進一步告訴你哪些你做的很好,哪些你還需要改進。這也意味著要知道哪些該說哪些不該說,因為這是你和付費客戶打交道時要把握的分寸。伴隨著銷售,也會帶給你一個新的欣喜,即之前開發階段的辛勤工作沒有白費,它很好的支撐著軟體支援階段的工作。

 寫/培訓與你軟體相關的內容

  如果你還沒有弄明白我的意思,我將會解釋清楚一點:我十分重視那些不單單能寫程式碼並且在公司內部和向公司外部人員解釋那些程式碼是什麼和為什麼這樣寫的工程師。通過撰寫和培訓軟體相關的內容,你必須簡明、清晰地解釋複雜的技術細節。也需要經常強調那些從使用者的角度看是不對的地方。我說不出多少次在寫文章和培訓的過程中發現功能或特性不是十分正確,從而回去修改程式碼。這種情況在API設計的過程中更加經常發生。

  寫作也可以增加你的曝光並帶給你更廣的觀眾群體,從而得到反饋並令你的作品更上一層樓。有很多,很多的機會可以去為網站或出版社撰寫技術的文章。學著去推銷你的想法(看,你又在銷售了!)並堅持下去,下一步你就會發現你將會成為一名合格的作者並有可能從中獲得回報。

 結交一些新朋友

  也許對我來說,在學習和機遇兩個方面最大的一種變革力量,就是我對擴充套件自己個人人際網路的明確努力 。這並不容易,而且這肯定涉及“使你自己身心投入其中”,但回報經常是極為顯著的,而且以事後所見,其中的風險非常小。

  如果在你直接接觸範圍之外沒有太多的人際網路,我給你一些建議。首先最重要的,人際網路的關鍵是你必須真誠的與新朋友會面,而且你必須除了這個新的關係之外別無所求。其次,許下承諾去維持這樣的努力數月乃至更久。當你獲得更多的自信並從任何失誤中獲得經驗之後,這將變得越來越容易。第三,做你自己,但要注重傾聽他人。第四,這也是我最弱的方面,獲知並記憶名字。我很少忘記一張臉,但如果我不努力去學習別人的名字,這些名字就會在我腦中溜走,所以記住別人的名字,讓別人知道你看重他們。

  除了這些技巧,還有許多關於這個主題的好書。我最喜歡的有一本“愛是殺手鐗”。就我看來,這是一個做作的標題,但書中的建議都是乾貨,而且作者很好的將它呈現了出來。在每天結束時,讓你自己沉浸其中,從你獲得的實際反饋中學習。如果你發現自己被太多次拒絕,問問一位信任的朋友,讓他給你在何處改進的真實意見。如果有困惑,找別的朋友討論。

 紅利: 找到導師

  有可能你已經知道一些令你尊敬的人物,他們擁有解決複雜問題和高效溝通的能力。如果他們願意與你分享他們的經驗,並給你改進方法的反饋,那麼自然有了勝算。從他們的經驗和教訓中學習,對他們的建議保持開放的態度。雖然它不會總是正確,但你至少應該考慮一下他們說的是什麼,之後再做出決定。就我個人來說,我很幸運擁有一個朋友,他也是一個高管教練(我們意外的相遇,證明了使自己投入某事的價值)和一間企業所有者。在好多年裡,我也遇到許多好老闆和好同事,他們充當了我的人生導師,我對他們感激不盡。在開始以前,問問自己最敬佩誰,然後去和他們討論你的想法。如果你找不到可以勝任此角色的朋友,甚至可以考慮僱傭一位教練。

 完結

  請記住,所有這些事情是你可以在這裡和那裡週期性的做。 他們通常並不需要很大的時間或貨幣的承諾,但他們確實需要你走出你的安樂窩。

  最後,我很高興聽到一些程式設計師/工程師做這些事之後,確實改善了他們的職業/生活。你工作是什麼?哪些工作沒有起到作用?

  英文原文:5 Things Every Software Engineer Should Try

相關文章