2017年5月21日 星期日

Coding bootcamp 程式語言密集班- 從不會寫程式到3個月被矽谷科技公司雇用的終南捷徑?



目前在矽谷乃至於全美國各個城市都有許多3到6個月的 coding bootcamp 程式語言密集班,主要的訴求就是不需要你之前會寫程式,只要你上完課程,畢業3個月內可以找到矽谷科技公司的初階軟體工程師職缺。

如果你 Google `coding bootcamp` 相信你可以看到一堆各式各樣的程式語言密集班,為什麼這種短期班現在這麼流行呢? 主要是許多主流媒體、機構一直在預測到了2020年,美國大概會有一百萬個科技相關的職缺找不到人,人才的供給跟不上市場的需求,是現在科技公司到全世界搶人才的主因,而腦筋動的快的創業家從2012年開始就打造各式 coding school,專門訓練沒有學過程式的人,藉由科技業普遍較高的薪水吸引一波又一波半路出家的軟體工程師。如果說這波科技榮景是現代版的掏金熱,提供人員給科技公司則像是1849時賣鏟子給挖礦人的交易行為。去年 2016年統計就有一萬八千人左右從美國加拿大各地 91個 coding schools 畢業

這些學校,教的內容也都不太相同,有教各式語言像 Javascript、 Ruby on Rails、Python的,也有教 data science的,更有教 iOS Android app development,以及 UX design、product management,舉凡科技公司有需求的職缺,一定有學校會教來填補供給不足的部份。這些學費大致在1萬到2萬美金之間,有的學校只要你畢業後有面試得到offer 並到是有合作的公司上班,還會退給你一部分學費。而許多人最關心的畢業後就業率則是每間不同,從99%到85%,也有一些學校選擇不公布這個數據。

2017年5月14日 星期日

有感 ”陳瑞聰之矽谷誰在一例一休?" 不知是哪個矽谷?

前幾天台灣的新聞:陳瑞聰:政府大談「亞洲矽谷」 矽谷誰在一例一休? "去矽谷看看,有誰在談一例一休的事情?每個人都拼的要死,早上 6 點就開始(忙碌),「每個人都在拼命阿!」" 。

看完我覺得很神奇,矽谷這裡大家都很拼命沒錯,我覺得在美國,應該就是矽谷的步調最快、壓力最大,要和全世界人才競爭,大家都很有自覺努力。但就工作時間來說,但除了在像是在 Tesla 工廠需要 24 小時輪班的工人及工程師要 6 點換班上班,軟體工程師們的上班時間都很彈性。況且上位者不是應該帶領大家走出更好的路,讓大家工作生活更有品質嗎?矽谷這裡公司都是在比福利的,領導階層是不會(也不敢)公開的要大家長時間工作的。

我之前的矽谷軟體工程師的日常工作內容- What does a day look like for a Silicon Valley software engineer? 提到我之前在SolarCity/Tesla的工時 "每天的工作時間大概是 9 點到 6 點,因為我們 standup meeting 是10 點,所以很多組員快 10 點才出現,其實沒有人會管我們幾點到公司、在公司工作多久等等。畢竟 coding 在家也是可以做,我的直屬老闆因為在公司太多人要找他了,所以他不時會在家或是躲到某一間會議室專心工作。"

Facebook 共同創辦人Dustin Moskovitz 就有抨擊過矽谷的工作生活平衡失調  Facebook cofounder slams Silicon Valley's misguided work-life balance ,"My intellectual conclusion is that these companies are both destroying the personal lives of their employees and getting nothing in return."。 而 Science Says You Shouldn't Work More Than This Number of Hours a Week 提到各種長時間工作對健康的各種危害 。在這裡,大家有使命把事情做大做好,但是公司的態度都是希望員工合理工作及健康生活,這才是對企業以及對員工雙贏的方式。

2017年5月12日 星期五

矽谷流行指南:矽谷標準配備入門包

你知道現在矽谷流行什麼嘛?日前我看到一張圖: Silicon Valley Starter Pack (矽谷標準配備入門包),還蠻精確的把當下矽谷流行的事物放進去,你猜猜看目前矽谷在流行什麼呢?





2017年5月5日 星期五

軟體工程師無法逃避的宿命:持續學習、大量練習

前幾天在 Hacker News 上有人詢問要如何持續改進:How do you keep improving? 就軟體工程師來說,工作一段時間後會感到事情變得有規律,你累積的經驗及知識足夠完成日常工作所需,就算有新的技術沒有學習,你使用舊有方式也可以完成任務。

但軟體工程是個很特殊的行業,其他眾多行業的人從大學以來累積的知識能力,一般不會過時的太快,工作累積經驗後越來越輕鬆。軟體業則是各種技術百花齊放,從新的語言、新的框架(framework)、新的協定、每一個新事物都有其解決問題的獨到之處,如果你連續幾年都沒有學習、不了解趨勢及可以使用的solution,可能很快你就會被市場淘汰,也很難找到下一份工作。

如果持續終身學習那麼重要,那首先,要如何判斷你有在學習呢?這篇文章 Learning without a mentor: how to become an expert programmer on your own 提到一個很好的判斷方法:如果你在煩惱、困惑,如果你感到笨拙及一切事物都比想像中難,那麼你就有在學習了。 (If you're irritated and a little confused, if you feel clumsy and everything seems harder than it should be: now you're learning.)

有學習是一個開始,那麼你需要學習什麼呢?撰寫 Effective Engineer 的 Edmond Lau有一篇好建議:Master Adjacent Disciplines,文中提到許多人會困惑不知道是要通才般的學習各種技能還是把一項能力學到極度專精對職業生涯發展比較好?他的建議是首先找你有熱情想要學的領域,如果你沒有特別對哪個方向有熱情,他建議學習和你最專精才能相近的技能。像是前端工程師除了網頁端的技術外,可能可以學習一些產品設計、API設計及實踐等等,如果你是infrastructure engineer,相近的技能像是資料庫、基本的網頁開發、或是機器學習。學習相近技能的好處是你可以在工作上可以減少依賴別人,而在更多時候自給自足。