《軟體工程師職業生涯完全指南》作者訪談

weixin_34127717發表於2017-10-23
\

本文要點

\\
  • 《軟體工程師職業生涯完全指南》是為所有級別的軟體開發人員而寫的,書中回答了大多數與軟體開發人員相關的問題,比如軟體開發入門、找工作、掌握技能、在職場中獲得成功、職業生涯規劃等。\
  • 要在現今的IT環境中獲得成功,軟體開發人員需要掌握大量的技能,所幸的是,有很多學習資源可供他們參考。\
  • 不是所有的開發者都要去創辦自己的公司,創業的風險和不穩定性不是每個人都能承受的,不過做一些編外專案確實會讓開發者從中受益。\
  • 在現今的軟體開發領域,團隊合作比以往任何時候都要來得重要。\
  • 要讓開發者職業生涯獲得長足的發展,最好的辦法就是做一個有用的人,為團隊創造價值,學會建立個人品牌,推銷自己。\
\\

《軟體工程師職業生涯完全指南》這本書回答了各個級別的開發人員在他們的職業發展過程中經常會碰到的問題,從學習技術、找工作、與管理者相處,到參與編外專案或者創辦自己的公司。

\\

InfoQ的讀者可以下載這本書的試讀樣章

\\

InfoQ採訪了這本書的作者John Sonmez,談論瞭如下幾個話題:軟體開發人員需要掌握哪些技能以及如何擴充套件這些技能、開發者是否應該創辦自己的公司或參與一些編外專案、DevOps將如何影響開發者的角色、開發人員應該如何高效地與測試人員合作、開發人員要想在職業生涯上更進一步應該做什麼以及不應該做什麼。

\\

 InfoQ:你為什麼要寫這本書?

\\
\

John Sonmez:軟體行業總是讓人感到迷茫,特別是對於那些剛剛步入這一行業的新手來說就更是如此。

\\

關於如何才能成為軟體開發者的問題並沒有很明確的答案。

\\

是要去大學裡學習,還是去參加訓練營,抑或是自學?要學什麼?怎麼學?

\\

在你“完成”學習之後,怎麼才能找到工作?

\\

在獲得一份工作之後,如何發展自己,如何獲得成功,你還需要知道些什麼?

\\

讀過我的部落格和看過我的YouTube頻道的開發人員總會問我這些問題,我卻覺得無法給他們指出一條明路。

\\

之所以寫《軟體工程師職業生涯完全指南》這本書,是因為我找不到其他更好的渠道可以回答這些問題。當然,我也想借此幫助開發者們在他們的職業生涯中獲得更大的成功。

\\

我想回答他們提出的每一個問題,並在一個地方統一回答這些問題。

\
\\

InfoQ:這本書的目標讀者是誰?

\\
\

Sonmez: 這本書的目標讀者是所有級別的軟體開發人員,不過我認為非軟體開發人員也能從中獲益。

\\

這本書的每個章節都很緊湊、簡潔,而且可以獨立成章。

\\

不管你的職業生涯處於哪個階段,都可以閱讀這本書。你可以閱讀整本書,也可以根據實際情況有選擇性閱讀某些章節。

\\

你可以把這本書作為軟體開發職業生涯的啟蒙書籍和後續職業生涯發展的指南。

\\

我希望這本書能夠保持常青,給人們帶來深遠的價值和意義。

\
\\

InfoQ:軟體開發者需要掌握哪些技能?

\\
\

Sonmez: 他們需要掌握的東西真的是太多了。

\\

以Web開發者為例。首先,你需要掌握一些程式語言和用於開發Web使用者介面的HTML和CSS。

\\

你還需要掌握JavaScript或者JavaScript框架。

\\

你需要了解Web上的資料是怎樣流動的:HTTP協議、無狀態、Web伺服器、客戶端、瀏覽器等等。

\\

而上述這些只不過是冰山一角。

\\

你要與其他開發人員一起協作,所以還需要學會使用版本控制工具。

\\

比如,檢出和提交程式碼、合併程式碼、拉取分支等等。

\\

你還需要了解構建系統和持續整合。

\\

你需要測試自己的程式碼,所以還需要知道如何進行測試,特別是單元測試。

\\

當然,不要忘了軟體開發生命週期和敏捷方法論。

\\

你還需要懂SQL和資料庫原理,因為你很可能需要儲存資料……

\\

總之真的是太多東西了。

\\

我想再次強調一下我寫這本書的緣由,我想把這些問題都集中在一起,讓每一個開發者都能看到他們想知道的答案。

\
\\

InfoQ:他們該如何學習和擴充套件這些技能?

\\
\

Sonmez: 所幸的是,學習和擴充套件這些技能並非難事。

\\

我的意思並不是說他們就可以輕而易舉地掌握這些技能,事實上,真正難點在於知道要學什麼,而不是學習本身。

\\

現今有很多學習資源,而且它們大部分都是免費的。

\\

難點在於你要知道該學些什麼,以及如何擴充套件這些技能。

\\

我發現你只要給他們指明瞭方向,他們就能找到自己的路。

\
\\

InfoQ:開發人員需要創辦自己的公司嗎?

\\
\

Sonmez: 說實話,大部分開發者不需要這麼做。

\\

並不是每個人都能成為企業家。

\\

如果越來越多的軟體開發者能夠成為企業家並開始創辦自己的公司那就再好不過了,我也希望能夠幫到他們。但事實是,對於大部分人來說,他們要為此付出自由的代價。

\\

只是接受他人的建議要比自己摸索並承擔責任要容易得多。

\\

話雖如此,如果你能自己打出一片天地,那是再好不過了。

\\

我說的不僅僅是風險與回報。

\\

如果能夠找到生活的意義並自己開創出一片新天地,那是一種無形的資產,你會因此獲得成就感。你所創造的價值會得到人們的認可,也會因此從他們那裡獲得回報。

\
\\

InfoQ:參與編外專案對他們會有幫助嗎?

\\
\

Sonmez: 我由衷地建議所有軟體開發者都去參與編外專案。

\\

參與編外專案有很多好處。

\\

參與編外專案最大的好處是可以獲得有價值的經驗,可以使用在工作中可能無法用到的技術。

\\

這是在常規工作之外增長經驗最好的途徑。

\\

況且,編外專案會讓你接觸到更多的軟體開發元素,而這些可能是你過去無法接觸到的。

\\

設計、開發併發布自己的軟體專案是一種非常好的體驗。

\\

它還會鍛鍊你的自律能力和堅持不懈的毅力,而對於你的職業生涯的幫助更是巨大的。

\\

很多編外專案的開發工作會變成全職的,或者它們也會給你的簡歷增色不少。

\\

你也可能從中賺取一些酬勞,從而給你的生活帶來改變,或者至少對你的生活有所幫助。

\
\\

InfoQ:DevOps是如何影響開發者角色的?

\\
\

Sonmez: DevOps模糊了軟體開發和基礎設施團隊之間的界限。

\\

在過去,開發人員主要的職責就是寫程式碼。他們不需要關心如何部署程式碼,也不需要關心用來部署程式碼的伺服器是怎樣的。

\\

但隨著敏捷和持續整合變得越來越流行,工作格局發生了變化,DevOps也應運而生。

\\

DevOps在程式碼開發和程式碼部署之間架起了一座橋樑。

\\

開發者不僅需要知道如何寫程式碼,也需要知道如何打包、部署和維護程式碼。

\\

不過對於開發者來說,這些並不是什麼新技能,因為大多數開發者都很熟悉如何配置伺服器和部署程式碼,不過對於純程式設計師來說可能會有點困難。

\\

不過話說回來,開發者們至少需要花點時間瞭解作業系統和伺服器,瞭解構建系統和持續整合的工作原理以及如何分析和診斷生產環境問題。

\
\\

InfoQ:開發人員如何與測試人員高效地合作?

\\
\

Sonmez: 最關鍵的是要了解測試流程和測試目標,注重與測試人員之間的溝通。

\\

敏捷方法在這方面已經起到了一定的作用,它把整個團隊看成是一個目標單一的團隊,整個團隊的職責就是開發和交付軟體。

\\

開發人員需要接受這種想法,並意識到大家是一個整體。

\\

或許你會覺得測試人員在你的程式碼裡雞蛋挑骨頭,但從大體來看,每個人都是在為建立高質量的軟體而努力。

\\

我見過的最糟糕的事情是,開發人員和測試人員之間魯莽行事,而不是進行真誠的溝通。

\\

開發人員和測試人員在一起工作,直接發現問題並解決問題,這個比把bug記錄下來再發給開發人員要高效得多。因為開發人員有可能無法重現這些bug,然後又踢回給測試人員,這樣反反覆覆,直到bug得到解決或者重新測試bug。

\\

有時候,五分鐘的溝通可能會省下幾個小時的時間,甚至可以消除成員之間的敵意。

\\

我們屬於同一個團隊,有共同的使命,應該做到不分你我。

\
\\

InfoQ:開發人員在他們的職業生涯發展過程中應該要做些什麼以及不該做些什麼?

\\
\

Sonmez: 要想在職業生涯中有所提升,需要注意兩點:

\\

1. 讓自己變得有價值
\2. 展示你的姿態,讓別人感受到你是一個有用的人

\\

這兩點說起來容易做起來難。

\\

讓自己變得有價值就是要學會如何寫出高質量的程式碼、如何高效地解決問題,也就是要提升你的技能,但其實你真正要做的比這要多得多。

\\

一個有價值的開發者會讓其他開發者和團隊的其他人也變得有價值。

\\

這要求他擔起責任,具備主人翁精神。這也意味著他要成為領導者角色,學會如何與其他人有效地溝通,讓他們朝著共同的目標前進。

\\

一個人只要為他人帶來價值,也就能從他人那裡獲得回報。

\\

Zig Ziglar說“如果你能幫助別人獲得他們想要的,你就也能得到這些東西”。

\\

不過,現在僅僅為他人提供價值是遠遠不夠的。就算你是一塊金子,但如果被埋沒了就無法閃光。

\\

要想讓自己閃光,就要學會推銷自己,建立個人品牌和聲譽。

\\

你必須讓人們注意到你,成功的開發者就可以做到這一點。

\\

當然,並不是說你要在四處炫耀你的技能和成就。

\\

你需要曝光,不管是在工作場所還是其他地方,最好是能夠在曝光自己的同時也能給他人帶來價值。

\\

你可以寫部落格、寫書、製作視訊教程、指導他人、組織技術會議、建立播客。

\\

曝光的方式有很多,只要你想把你的所長分享給其他人,為他們帶來價值。

\\

只要你把上述的兩個元素結合在一起,創造價值並提高曝光率,成功就會接踵而至。

\\

大部分開發者並沒有這樣的耐心,而且無法堅持下去,又或者他們低估了推銷自己所能給他們帶來的好處。

\
\\

關於本書作者

\\

e3ad263b820aa1b62521f11652e2a903.jpgJohn Sonmez 是一個軟體開發者,也是兩本國際暢銷書的作者,它們分別是《軟技能:程式碼之外的生存指南》和《軟體工程師職業生涯完全指南》。John在職業生涯早期就發現僅僅具備技術知識是不夠的,開發者需要掌握一些“軟技能”(比如溝通和領導力)才能獲得成功。他每年幫助140萬名程式設計師發展混合技能,這讓他成為非常吃香的開發者和諮詢師,並給自己帶來了豐厚的回報。

\\

檢視英文原文:Q\u0026amp;A on \"The Complete Software Developer's Career Guide\"

相關文章