過來人寫給軟件工程師的 30 條建議
發布日期:2021-01-24 瀏覽次數:1774次
就在幾天前,我的人生邁入了30歲。在過去的十年中,我做了很多事情,也學習了很多東西。在本文中,我將回顧人生的歷程,并將軟件工程師的工作和生活公之于眾。
下面,讓我們進入正題。
1,努力工作
沒有人會平白無故地給你升職或加薪。然而,光是努力工作還不夠,你還需要提高效率。
努力地工作卻沒有提供任何價值的人一無是處,不要成為這種把坐在椅子上的小時數當作生產力的人。
順便說一句,你也需要避免與這種庸庸碌碌的人一起工作,通常他們所在的公司也超級有毒,會讓你苦不堪言。值得慶幸的是,這樣的人已經在我們這個領域絕跡了。
2,不要執著于編程語言
過于執著某一種語言毫無意義。大多數編程語言都大同小異,而且有各自的優勢。這也就是為什么我們有很多種語言,因為沒有一種語言是完美的。
但是,請確保你至少了解每種范式內的一種語言。例如,函數式編程、面向對象編程等。
3,每年學習一種新的技術語言
你應該嘗試每年學習一種新語言(理想情況下應該選擇流行的語言,并強迫自己走出舒適區),只有這樣才能保持大腦敏銳并跟上市場趨勢。
另外,如果你發現某種語言的價值,則可以將其作為解決特定問題的工具,推薦給公司。
4,對自己的職業生涯負責
你的童年很心酸,你的前任經理(或現任經理)是一個混蛋,你經歷了3段婚姻,離婚5次,你付出了2年時間才掌握的Web框架如今卻不流行了。你的生活一團糟,看不到一絲曙光。
即便如此,你是成年人,應該靠自己打贏這場戰斗。過去的種種艱辛不是不求上進的借口。全力以赴提升自我,才能有更好的明天。
5,不用擔心無法控制的事情
你只需要考慮自己力所能及的事情。如前所述,你付出了2年時間才掌握的Web框架如今卻不流行了。那么該怎么辦?再學一種啊。這一次可以選擇一個發展前景更好的框架。你可能需要在職業生涯中經歷很多次這樣的情形。
也許你(摯愛)的技術主管離開了公司。雖然非常傷心(過去我也有過這樣的經歷),但現在你需要打起精神,給新主管留下好印象。
如果你做不到,那么也可以離開公司。但是,請千萬不要因為無法控制的事情而煩惱。你需要調整你的狀態,因為“表演必須繼續”(英語:The Show Must Go On,英國搖滾樂隊皇后樂隊的歌曲)。
6,不要與人結仇
如果某人在某方面比你強,不要恨他們,你應該向他們學習。通常,我們會將比自己優秀的人視作威脅。而我會將他們視作提升自我的動力源泉,你也應該這樣做。
我記得過去有幾位同事非常擅長應對壓力,他們甚至可以在千鈞一發之際力挽狂瀾。我從他們身上學到了很多東西,我從來不嫉妒他們,因為我知道我也可以培養這樣的能力。
如果周圍無人能夠超過你(在技術上),那么請當心,也許是時候為自己和事業尋找新的機遇了。相信我,除非你身居高職(如CTO),否則你不想成為公司里最強的員工。俗話說得好,寧為鳳尾不為雞頭。
仇恨會毀掉你的生活,打擊你的生活積極性。仇恨并不能給你帶來任何好處。
7,敢于肩負重任,就不用擔心薪水的問題
很遺憾的是,很多人眼里只有錢,卻沒能磨練自己的技術,建立強大的形象。
你認為下面哪種人未來的薪資會更高:是薪水低于平均水平的CTO,還是薪水高于平均水平的初級工程師?所以,要明智地選擇自己工作。
8,辜負技術力的人,終將被技術力辜負
很多人以為計算機科學學位可以讓自己身價倍增,各大公司會求著你去他們公司,而且就憑著一張紙就可以輕松獲得一切。
不要誤會我的意思,我相信一個好的學位可以證明你學習了大量有用的知識,但是很多人都止步于此了。
在這方面上,我很欣賞自學成才的程序員。可能他們缺乏對計算機科學理論知識的了解,但是他們知道迎難而上,因為他們成功的點點滴滴都是靠自己的拼搏換來的。
另外,如果你對于流行趨勢的一些基本知識缺乏了解,那么就代表你的做法有問題。你無需成為專家即可掌握周圍的世界。
9,廉價的硬件不僅質量堪憂,而且對你的健康有害
你應該花錢買一些高質量的鍵盤、鼠標和顯示器。你的事業需要大量依賴于你的手和眼睛。
降噪耳機值得擁有,但如果你沒有前面提到的高質量硬件,那么就不要因為盲目跟風。
除非你的工作環境非常嘈雜,否則就沒有必要專門買降噪耳機。
10,出去走一走,也許問題就解決了
好吧,我有點夸張,但是我想強調發散模式的必要性,Barbara Oakley在她的課程中講述了學習的方法,我強烈推薦。
如今,人們不太重視發散的思維方式。至少我知道很少有公司會同意你在上班期間睡覺(或進行其他發散性的活動),但事實上我們都需要發散思維。實際上人們嘴邊常掛著的“以后再說”就隱含了發散模式的重要性。
11,將一部分收入投入到專業教育中
如果你的公司愿意支部費用,那就更好了。
YouTube是一種絕佳的學習資源,但是如果你真的想認真學習一門技術,而且收入允許的話,還是應該訂閱高質量的培訓服務,例如O’Reilly / Pluralsight。
找到適合自己的學習方法,然后學習更多知識。
12,避開沒有培訓政策的公司
可能我在這一點上持有強硬且帶有偏見的看法。如果這家公司相對較新或資金不足,那也可以例外。
由于科技領域需要不斷學習新知識,跟上最新的潮流,所以我認為不應該考慮沒有適當培訓/教育政策的公司。
對我而言,最低限度的教育政策是每位員工都有專門的預算,至少每年可以支付下面的部分費用:
? 參加會議
? 購買書籍
? 購買O’Reilly learning等高質量的培訓服務
? 進行認證
當然,由于種種原因,大多數人不會在一年中把上述所有的事情都做一遍。也許是因為他們已進入穩定期,或者是因為他們有家庭,他們不能投入大部分的業余時間,但如果員工有這個意向,公司就應該全力支持。
我對大公司的要求更高,我希望大公司能夠舉行一些講座,特別是在領域關鍵的問題上。例如,如果公司想采用Scrum,那么最好能邀請一名敏捷教練來幫忙做準備。
13,使用金錢可以買到的最好的工具
例如IDE。與硬件同理,不應該在IDE上貪便宜。正如《程序員修煉之道》所說,你需要選擇一個編輯器,然后學習如何用好它。高質量的工具可以節省你寶貴的時間。
不要忘記,時間就是金錢。現在你支付了高昂的價格,以后就可以節省時間。
14,忽視動力
人們需要很大動力才能實現重要的人生目標。
動力很重要,但也是一種情感。和所有的情感一樣,動力也會忽有忽無。
你需要找到一種更好的方式來指引自己前進的方向,至少在一些重要的事情上明白自己需要做些什么。
當一切順利時,人們很容易知足常樂,但是當你失去動力或進入倦怠期時,又能做些什么呢?
15,保持活力與熱情
雖然我不建議你時刻像打了雞血一樣積極發展事業和生活,但我認為每個人都應該有自己的事業遠景規劃。
你應該清楚自己的發展方向,只有這樣才能知道做出的每個決定是否可以讓你的事業更快、更安全地發展。正如2000年英國著名的劃船手獎牌獲得者所說,這個決定是否可以加速船的前進?
16,了解哪種類型的公司更適合你,并專心做好這類的工作
創業公司、中型公司和大公司,都有各自的福利和消極的方面。
如果你更喜歡在大公司工作,那么不一定能夠處理好創業公司的日常工作。
你需要進行一番研究,確保你了解你有哪些選擇,而你的每個選擇能獲得什么以及失去什么。不幸的是,這個問題沒有統一的答案。
17,遇上一位好經理是健康的工作及生活的基礎
你可能對這一點并不陌生,遇上一位通情達理、能與之有效溝通的經理,而且還能從事自己喜歡的工作,那將是人生一大幸事。
很多人辭職都不是因為公司,而是因為他們的經理。你需要確保自己能和經理愉快地相處。理想情況下,在進入公司之前就要確認這一點。
18,要想給別人一碗水,自己就得有一桶水
這是我最初開始寫博客的原因。
如果我得知了一些有趣的事情,那么我可以通過博客分享。
我認為這種方法的效果很好。至少對我來說是如此,雖然我從未問過我的讀者:)
19,只有堅持學習才不會被時代淘汰
與軟件行業相關的高薪領域的變化相對也很多。該領域的發展如此之快,所以一旦你停止學習,就會被時代淘汰。
這并不意味著你應該將所有的工作時間都用來閱讀和編寫代碼,但也不要走向另一個極端:安于現狀,無視周圍的變化。
20,學習是一個長期堅持的過程,不要急于求成
至于學習的心態,與平日荒廢到了周日就一整天都坐在電腦前相比,每天花30-40分鐘學習的效果更好。
上大學時你就對此深有感觸,不是嗎?如果你平時就按時做作業,那么考試前的壓力就會小很多,知識需要一點一點地積累,無法一蹴而成。
21,先讓程序跑起來,再考慮正確性,最后再考慮速度
Kent Beck的這句話是我最喜歡的名言之一(還有一句是Unix哲學)。我對軟件開發業界缺乏務實的思想感到震驚。
人們過于強調空格與制表符、下劃線分割與首字母大寫以及接口的命名方式。
我沒有說這些問題不重要,只不過我們首先需要保證程序能夠運行,不是嗎?
我最喜歡觀察別人,每每看他們代碼都沒有通過編譯,就加了大量的注釋,也挺無語的。朋友,請務實。
22,花在社交媒體上的時間應該物有所值
只關注那些值得你花費時間的名人。我關注了Twitter上的很多名人,包括許多dev.to上的作家。
即使我并不經常使用推特,但我也喜歡讀到不同的觀點,因為他們能給我很好的視角。
23,勇敢發問
無論你在公司中處于哪個職位,即便你是CTO,也不會有人認為你理應掌握所有信息。相反,研究表明,人們更喜歡你向他們尋求幫助。
而且,計算機科學領域如此之大,沒有人能無所不知。就像其他被堆積如山的案牘所累的行業一樣。
24,原理和頭腦風暴不能決定成敗
能夠決定成敗的只有最終的結果。你已經離開了學校,沒有人在乎你浪漫的編程方式,這些理論不適用于行業問題或假設。我并不是說它們并不重要,但是企業界更加重視結果,而不是抽象的討論。
這是一個可悲的事實。如果你不喜歡,那么也許企業生活不適合你。最好還是找一處以研發為導向的科研或大學吧。
25,嘗試軟件行業之外的業余愛好
最近,我有點后悔沒有遵循這條建議。
我并沒有成功地在全職工作、健身訓練和碩士學位之間建立平衡,如今正在想法修復。
這條建議可以幫助你避免過度疲勞,而且也能從不同的角度考慮事情。
例如,我見過許多文章探討發散思想與樂器之間的聯系。
26,不要在技術上剛愎自用
這就沒必要解釋了吧。由于某種原因,軟件技術中有很多選擇。不要鼓吹某個編程思想或技術,或將其視為唯一的解決方案。這種做法只會讓你招人煩,或顯得自己很無知。
27,切勿在辦公室中觸碰不能容忍的行為
性別歧視、種族主義、欺凌行為、反感自己的事業或者老板休假就拖欠工資(我就有過這樣的經歷)。有些公司的人認真、成熟且專業,他們懂得尊重別人。你需要找到這樣的公司。讓那些不懂得尊重別人的人們在他們狹小的圈子里尋找優越感和獨特性吧。
28,單元測試很無聊,但是…
遇到產品快速增長或大規模重構即將來臨等情況時,單元測試可以救你一命。
就像生活中的所有事物一樣,只有辛勤播種,才有收獲。
29,有效的時間/任務管理非常重要
有效的時間/任務管理與最新和最熱門的技術同等重要,甚至比它們更重要。
為什么?因為如果你不能有效利用自己的技術按時提供價值,那么對別人來說你一文不值。如果你覺得自己這方面的能力有待培養,那么可以從《Getting Things Done》(簡稱GTD)和《15 secrets of time management》入手。
30,重視軟技能
除非你是不需要公開競標的自由職業者,或者將銷售和客戶處理工作委托他人,否則你會非常需要軟技能。
我們每天都需要與人合作,我們需要知道如何與不同的人有效地溝通,并用對方聽得懂的語言與之交談。
如果所有人的軟技能都不強,那可能也不會有問題,但是這就有點反烏托邦了,我還是希望你能務實一點,努力培養這方面的能力。
至于如何培養軟技能,我推薦你可以從以下三本入手:
? 《Soft skills》
? 《How to win Friends & Influence People》
? 《The charisma myth》
總結
感謝您的閱讀,希望你喜歡本文提到的技巧。如果你有其他可以分享的點,請在下方留言。