大約在18個月前,有人給我發了封郵件詢問我關于如何開啟軟件開發大門的建議。他是一個在校學生,想從事軟件開發的工作,但又怕做出了錯誤的選擇。
我想我給他的回復應該也適用于任何正打算從事軟件開發工作的人,所以稍作修改放到這兒來與大家分享。
(郵件內容:)
以下是基于我的經歷所得的幾點主要建議:
1. 立于軟件開發的大門前
在我確定可以勝任一個開發者的工作之前(我可是經歷了一番掙扎),我不得不花費兩年時間從事非軟件開發的工作,這也更加確定了我要做一個軟件開發者的決心。
一旦你拿到一份軟件開發的工作,這都是不錯的開始。頭兩次的際遇可能會差強人意,但若不是有了這些經歷,你也不會知道哪些問題是一個公司所摒棄的。
當然這并不是說只要有份工作你就應該接受,后面我會再說下這個問題。
2. 關于擬定長期目標
你是否一直有不知道選擇何種開發方向的困惑?沒事,習慣就好。就在此刻,正有一大批Ruby開發者因為JavaScript的強勢襲來而倍感緊張。既然任何事情都不是既定的,那么設定一個長期目標的想法簡直傻透了。
想想真是瘋狂。十一年前我還只是一個為人們做午飯的廚子,后來我做了一個決定:我要成為一名平面設計師。接著我就買了一臺Mac,把Photoshop和illustrator使用的爐火純青。后來,我有了一個攝像機,我又開始學習使用Final Cut Pro軟件,打算做一名視頻剪輯師。再后來,我考取了MCSE(微軟認證系統工程師),我又決定做一名系統管理員。然后我就開始寫網站腳本,并且從事市場工作5-6年。終于我決定學學編程。沒有人可以為自己的人生設定一個模式,告訴自己下一步可以做什么。
顯然,沒人知道五年后自己會在做些什么。你所要的只是一個平臺,一個不變的原則,有了這些,你就能變成你想成為的那種人,做那些你覺得快樂的事。
可能在你這個年紀,你更想要多些豐富的經驗,這樣你就可以通過分析這些經驗而學到那些激勵你的東西。我不知道那些問出“你覺得5年后你會做些什么”的人想表達什么,這種問題顯然是無法回答的。
我現在唯一確定的事情就是,五年后我不會再為別人工作。我善于幫助別人發現自己的閃光點,我喜歡創造事物,我喜歡科技。利用好這些特點有助于建立屬于我自己的平臺。在未來的某天,這些都有可能以意想不到的方式幫助到你。
3. 明白學歷在職場生涯中的角色
這個話題由我來談有點沒說服力,但我仍然想和大家分享一下我的想法。我曾從社區大學中途輟學,這簡直為我一生中想做的所有事都關上了門。當然,這也因人而異。
我現在為一個當初只想招一個研究生學歷的CEO工作。如果你想成為一個核心開發者,一個碩士文憑是第一道門檻。但是也有特例,例如我,一個大學輟學的人,正在為我的碩士同僚們貢獻著力量。當然我也曾經歷過這些場景,比如有些人會說:“你的履歷很適合我們公司,但很遺憾我們還需要一個學士文憑…”,而那些剛剛畢業的學生卻也經常聽到與之相反的說辭。
如果要我告訴你為什么冒泡排序的效率很低或者怎么實現一個二叉樹查找算法的話,我完全可以去問問那些花了錢上了學得到這些知識的人。
當今社會的教育問題越來越明顯,我很難過地表示,學歷現在只是一紙憑據而已。學校再也不能作為開拓新事物的源頭(至少不會長久下去),而這更可能出現在你的工作環境當中。
我認為最好的狀態是:如果你在學校時擁有書本智慧(book-smart),而出了校園能把它們變成街頭智慧(street-smart )。那么這個世界上還有什么能夠阻擋你前進的腳步呢?
4.如何選擇合適自己的文化氛圍
那么現在問題來了:怎么成為你想成為的自己呢?每個人多多少少都要去遷就那些不一樣的文化,我之前就職的公司在這方面更為嚴重,簡直就像穿了件文化緊身衣。
其實開發者是一群幸運的人,他們深諳自己喜歡哪種工作氛圍。很快你就會發現自己會對很多場合說“不”了,我建議你根據以下這些斟酌一個公司文化氛圍是否適合自己:
你在這工作時感覺舒適么?
這里有值得你主動去做以及珍惜的東西嗎?
或者說你在這里需要偽裝你自己嗎?
5.尋找良師益友
誠然,我能通過在一些聚會中的提問獲得很多好的建議,但這與你第一次工作經歷帶給你的收獲相比,一定會黯然失色。你要做的不是去告訴大家你需要一個導師,而是與那些聰明優秀的人一起工作,學習他們的方法和經驗。
比起參加任何一種開發人員培訓課,他人的奉獻精神和耐心所帶給你的好處無與倫比。
而真正把這些融合到一起的人是你自己,當然前提是你知道如何去做。
6.學會展示
當我剛開始學習編程時,我覺得我應該達到無所不知的程度,這樣我就能給大家展現一些很牛叉的東西,現在看來這就是一個自尊心作祟的愚蠢想法。
記得有一次聚會,有個開發新手在向人們展示他的第一個作品,我幾乎都要笑出聲了,我只能說他太傻太天真,他做的東西架構簡單,創意也不夠吸引人。而當每個人都給他高度贊揚的時候,我才意識到我真該為自己的想法感到羞愧,對于一個新手,能把作品展示出來實在勇氣可嘉。
如果你還沒有學會所有的技能,或許你應該改變下自己的想法,俗話說得好,貪多嚼不爛。從基礎做起會更好。不要過早擔心設計模式,不要一開始就在想這個東西是不是完美的,不要一開始就擔心代碼是否足夠優雅等等。
你是否正在對你的示例應用進行二次重構?第一個能夠運行嗎?秀一下吧。是不是運行的不是完全正確?那也秀一秀。界面太難看?沒關系,秀出來。還沒有經過測試?盡管秀出來。如果說它沒有另你覺得難堪的地方,只能說明你秀得有點晚。
隨著你技術的提升,完善一個產品的能力以及做出點可以讓很多人用的東西的能力也會隨著提升。在我看來,掌握這種能力遠比學習如何使用CSS或者TDD要重要。
7. 學習不僅僅是為了找工作
我極少給別人提很籠統的建議。但這里不得不提一個:上大學時應該嘗試去學學那些你很感興趣的東西。
隨著時間的逝去,文憑的用處也逐漸消失。很多我喜歡的開發者之前是設計師或者作家,他們更喜歡從一種哲學的角度去寫代碼,而不選擇針對特定問題的特定算法。
如果你很擅長書面交流,作為一個開發者這是極好的,因為它們工作的方式如此之像。但是更重要的是,良好的溝通技巧實際對你幫助更多,而大部分的程序員更喜歡單獨倒騰自己的代碼。
大學的社交地位已然成為了明日黃花,取而代之的是聚會,小組,推特等等。如果計算機學科仍然如此打動你,盡管沉迷于它吧,但是如果你喜歡的是社會學,哲學,會計學或者其他學科,你應該追隨自己的內心,而不是被你飄渺的職業目標牽著鼻子走。
最后,給出一條如何靈活利用學位獲得工作的小貼士:
HR專員負責發布職位。他們通常總是把諸如學位,經驗,技術要求這些掛在嘴邊,而實際上這些有時候根本就不足以說明一個人的能力。
如果你仍然在用這種傳統的應聘渠道:瀏覽人才網=》進入面試流程,你獲得工作的機會將會非常小。雖然可能大部分人的第一份工作都是這樣找到的。而從那開始,它會就像滾雪球一樣,直到招聘你的人覺得只有你剛好非常適合某個崗位的工作,通常這種幾率比較小。所以呢,對于那種你只會待一兩年的公司,你壓根不用煞費苦心的為了取悅HR而精心打扮自己簡歷上的學歷。
8.關于跳槽
在我看來,一個稍有天分的開發者能在6-12個月內精通自己所選的開發語言或框架。不要被那些有5-10年經驗的老手嚇到:很多人只是贏在5-10倍的經驗上。
為了防患于未然,你現在就應該有計劃的跳槽(大約每18個月左右跳一次),至少是在從事第一份工作期間。慢慢你就會發現自己的經驗更加多元化,自己的薪資也節節高。(但是不要過分沉迷于工資的多少,研究表明,薪資在超過75K以后反而會降低幸福感。)
綜上所述:不要過分在意薪資,選擇優秀,樂于助人的同事一起工作,規劃好適合自己的技術棧。
謙虛誠實小貼士一則:
事實上,對別人來說,求職信中看到“誠實”、“謙虛”等字眼是屬于消極字眼的(你還不如毫不含糊的告訴別人你是一個需要指導的處于中級水平的人)。而消極是抑郁的前兆。很多抑郁癥的發作都可以追溯到很久之前的某個悲觀時刻,只是可能偽裝成了“誠實”而已。去買一本《Learned Optimism》吧!這本書也許不會幫你解決所有的問題,但是會開啟你的心智,改變你的思維模式。
這種自我否定式的悲觀主義也正是我的一個軟肋。如果你想成為10年后的我,努力營造出自信的感覺吧,你要知道,你永遠比你自己了解的要牛逼很多!
下面這條建議不僅給你,也給我自己:與其為自己所不知道的事情道歉,還不如努力一點去知曉這件事。
我建議你把這點深記于心,并在求職信中換上另一種說法。你是個聰明的家伙,真慶幸你還沒發現自己的無限潛力,因為當你成為一個偉大的程序員的時候我可要沾沾光了,呵呵。
其實還有很多我能告訴你的,但是一時也想不起來這么多。認識你很高興,同時也祝愿你前程似錦。
—–郵件完結—–
對于他來說,這些選擇可能會影響他一生。工作的選擇,求職的失敗,是否繼續深造等等,這些當時看起來事關重大的時刻,隨著時間的流逝,態度的轉變,一個人終究會泰然看待。
這個當時我知之甚少的人現在成了我最好的朋友之一,我想我當時所給的建議多少是有點用處的。
-
工程師
+關注
關注
59文章
1570瀏覽量
68514
發布評論請先 登錄
相關推薦
評論