學程式容易跟難的地方 當工程師需要讀資工嗎 ? 程式語言那麼多,要學哪一種 ? 初學者如何學程式 ? 六種學習方式面臨的不同問題 ? 自學 & 上課哪個好 ? 學程式的六個階段 程式設計師可能的好處 工程師工作的缺點 工程師上班閒的時候可能做什麼 ? 新手找工作好找嗎 ? 面試和公司的選擇 新手會很容易被 fire 嗎 ?公司倒了怎麼辦 ? 如何成為一個好的新手工程師 ?
初學者如何學習程式設計 & ⼯工程師⼯工作⽢甘苦談彼得潘ps: 投影片內容靈感: 彼得潘⾃自⼰己,以及感謝當⼯工程師的朋友和學⽣生 & 學程式的初學者們
View Slide
愛瘋⼀一切為蘋果的彼得潘
改變彼得潘⼀一⽣生的⼈人Steve Jobs⼈人帥真好https://www.youtube.com/watch?v=aEr6K1bwIVs
http://apppeterpan.strikingly.com彼得潘簡介
相關教學資源• FB粉絲團: 愛瘋⼀一切為蘋果的彼得潘 http://www.facebook.com/iphone.peterpan• 個⼈人網站 http://apppeterpan.strikingly.com• medium: 彼得潘的App Neverland https://medium.com/@apppeterpan• FB社團: 彼得潘的蘋果App開發教室 https://www.facebook.com/groups/peterpanappclass/
相關教學資源• Speaker Deck https://speakerdeck.com/apppeterpan• SlideShare http://www.slideshare.net/deeplovepan• email: [email protected]• 彼得潘的 SWIFT iOS APP office hour http://swiftiosappofficehour.strikingly.com• FB: https://www.facebook.com/deeplove.pan• LINE: deeplovepeterpan line 官⽅方IG有問題歡迎 FB / LINE 我
叫我彼得潘,Peter,Deeplove,⿁鬼塚,Swift⼩小王⼦子,情歌王⼦子莫叫我老師http://bit.ly/2xe9eOG
學程式 & 當⼯工程師是幸福路路還是不歸路路呢 ?• 如何學程式 ?• 學程式容易易跟難的地⽅方• 讀資⼯工會比較厲害嗎 ?• ⾃自學 & 上課哪個好 ?• ⼯工程師⼯工作的好與壞
為什什麼想學程式 ?
為什什麼想學程式 ?想學新的技能創業⼯工作轉職當⼯工程師不⼩小⼼心考到資⼯工系想要年年薪百萬聽說未來來的社會程式很重要,最好學⼀一下好玩,興趣 想做 App,網站,遊戲果粉想家教女⽣生聽說很好學失業不想被理理⼯工科看扁想了了解背後的原理理獲得別⼈人的崇拜
程式好學嗎 ?
沒有想像中難學需具備的條件• 基本的英⽂文能⼒力力,主要是英⽂文單字• 單字不多,⽂文法簡單• 為什什麼英⽂文單字重要之後會說明• 簡單的數學能⼒力力• ⼤大部分的時候不會⽤用到三⾓角函數跟微積分• 基本的英打能⼒力力• 英⽂文鍵盤的位置有背起來來,不是⽤用⼀一指神功打字
初學者很容易易打錯字比⽅方程式的單字拼錯,少了了 {https://www.apple.com/swift/playgrounds/• 有些⼈人建議初學者先學不⽤用⾃自⼰己打字的的程式,比較好學• 重點在學習程式的概念念,比⽅方 if else,迴圈,⽽而不會因為打字常打錯, 看到⼀一堆錯誤⽽而放棄。Swift playgroundScratchhttps://scratch.mit.edu
不要每個字都⾃自⼰己打請交給專業的來來⾃自動完成https://bit.ly/2tDRQT6
沒有想像中好學
那些年年我們學不會的程式設計https://bit.ly/2y8bc5u
多認識⼀一些單字很重要AVSpeechSynthesizer : 講話的合成器寫程式會⽤用到很多別⼈人寫的東⻄西,比⽅方 Apple 幫我們寫好實現講話跟地圖功能的東⻄西,這些東⻄西都以英⽂文命名,單字意思知道的話比較看得懂跟記憶。
有問題要勇敢問• 台灣的學⽣生比較不好意思問問題• 練習時遇到問題,先研究後再問• ⼤大部分的程式問題都可以在 Google 找到解答。• 不知道怎麼問 ? 問問題也需要練習,多問就會愈問愈好• 有些問題很難⽤用⽂文字說明清楚時,可以直接將程式傳給對⽅方。
google search 程式問題的⼩小技巧https://bit.ly/2GH2QrF以 swift iOS App 為例例
找誰問問題• 找不到⼈人問• ⾃自學,公司沒⼈人問,同事太忙沒空理理你• 網路路問: FB & LINE 社團,PTT 討論區• 有些問題⾯面對⾯面問比較好解決• 程式相關的實體聚會 & 讀書會,可從 FB search。• 彼得潘的 FB & LINE: 歡迎任何⼈人傳訊息。• 如果是付費上課的同學,跟免費⾃自學相比,錢的主要價值就在可以問問題。(發現同學們還是比較愛私訊,就算有成立群組。)• 家教: ⼀一對⼀一時學⽣生比較有勇氣問
想不出來來怎麼寫,是不是⾃自⼰己不適合寫程式呢 ?https://bit.ly/2XlT9Un
為什什麼其他同學程式作業寫那麼快 ? 是不是我太弱呢 ?https://bit.ly/2E8wT7D
什什麼樣的⼈人不適合學程式⽂文青?女⽣生?⽂文組⽣生?年年紀太⼤大?年年紀太⼩小?數學不好?英⽂文不好?學歷 ?沒錢 ?以上都適合
如果我是女⽣生 ?https://www.youtube.com/watch?v=wGqCROvjXrI那些年年,彼得潘資⼯工系班上前幾名都是女⽣生寫程式需要的三⼤大特質: 細⼼心,耐性,認真
超過 30 歲,開始學程式還來來得及嗎 ?https://bit.ly/2ieLRkV
想讀資⼯工系嗎 ?讀資⼯工的好處 ?
資⼯工系⼜又怎樣(學⽣生的問題?)• ⼤大學時因為分數唸了了資⼯工系, 沒興趣,只想得到學分 &畢業。 • 不⼀一定會去上課 (比⽅方睡到中午,下⼤大雨,夜唱 KTV) • 前⾯面的課睡過頭沒上到,所以後⾯面的課跟不上,只能⼀一直翹課 • 交的作業不⼀一定是⾃自⼰己寫的 • 修的課太多,沒辦法每⾨門堂都付出 100% 的⼼心⼒力力。
資⼯工系⼜又怎樣(老師的問題?)• 教授很會研究,但不⾒見見得知道怎麼教程式• 程式課不夠有趣,上課容易易睡著,比⽅方照著課本唸,或是老師的聲⾳音很有催眠效果
資⼯工系⼜又怎樣• ⼤大學唸的東⻄西,很多畢業都忘光了了• 過去學過的知識,最有⽤用的其實是英⽂文 • 彼得潘何時認真: 期中期末考前不睡覺,⼤大三為了了研究所可以直升⽽而努⼒力力唸書
資⼯工系的專業課程演算法,資料結構,作業系統,相關數學• ⼀一般非本科⾃自學和外⾯面的程式課程比較少教• 可以寫出更更好的程式• 初學者可以先⽬目標能將東⻄西做出來來,之後有興趣再研究這些主題。• 比較難• 不是短時間能熟練的• 就算資⼯工系也常常學不起來來 ( 有些是考研究所補習才加強的)
資⼯工系的專業課程演算法,資料結構,作業系統,相關數學• 找⼯工作• 有些⼯工作會⽤用到,但台灣很多⼯工程師的⼯工作⽤用不到• 產品不會⽤用到這些技術• 程式可以寫出來來就好,接案案⼦子可以完成就好• 會這些技術的⼈人薪⽔水較⾼高,老闆想省錢• 想要更更好的⼯工作,需要這些技術的公司• 比⽅方 Apple,Google 之類的公司• 想去矽⾕谷⼯工作
⾯面試的程式解題題⽬目LeetCodehttps://leetcode.com• 想去比較好的公司,比⽅方 Apple,Google 之類的公司• 想去矽⾕谷⼯工作• 需要⼤大量量練習,我去 Google ⼯工作的朋友,⾯面試前練習 好幾百題• 就算是名校資⼯工系,也要另外花時間練習,因為在學校 的課程不會練。• 初學者可以先⽬目標台灣⼀一般的⼯工程師⼯工作,還是有很多 公司不會考這些題⽬目
台灣 & 美國⼤大學比較• 有些⼈人在考⼤大學前努⼒力力唸書,但進了了⼤大學後沒有下個⽬目標,就沒那麼認真了了。• 美國⼤大學很多東⻄西要求學⽣生課後⾃自⼰己研究,比⽅方課前預習 & 課後 study 的東⻄西很多,所以課程內容可以教得較深較難。• 美國學費超貴,會⼼心疼學費,所以比較認真。
學習效果跟付出的錢成正比 ?• 免費的容易易半途⽽而廢 ?• 愈貴的課不⾒見見得好,但是會比較認真 ?• 書跟線上影片較便便宜,所以容易易變成裝飾品 ?• 免費重上跟暖暖包價 https://bit.ly/2oANLL4
暖暖包價坐輪輪椅或不會講話的可愛女孩,說不定很會寫程式
初學者如何學習程式設計
彼得潘讀資⼯工系,如何了了解初學者學程式 ?• 我也是進資⼯工系才開始學,⼀一開始教授說的也常聽不懂• 家教 & 寫書幫助很⼤大 (我其實想寫⼩小說,但是出版社只願意幫我出程式書)• http://yourappmentor.strikingly.com• 能⼒力力分班很重要• 經過幾次教學後,讓我了了解能⼒力力分班的重要。• 無程式基礎的⽂文組⽣生班 & 有程式基礎的彼得潘班• http://learniosfromzero.strikingly.com• ⽂文組班教我研究初學者的問題,彼得潘班教我研究更更深的技術• 教學也需要學習,每次教課都會從學⽣生⾝身上學到很多東⻄西。
程式語⾔言那麼多,要學哪⼀一種 ?• 程式設計師: iOS App & Android App,網⾴頁前端,後台,遊戲,PC 上的軟體,linux driver & windowsdriver,資料分析師,還有很多其它的程式設計師。• 程式語⾔言: Swift,Python,Javascript,Java,C,C++,Ruby,Kotlin,Php,Objective-C,C#,Go,Matlab• 做網⾴頁還要學 html & css
找⾃自⼰己有興趣的主題學程式• 愛瘋⼀一切為蘋果的彼得潘: 別問我,我⼀一定偏⼼心選 Swift• Python 也滿適合當初學者第⼀一個學的程式語⾔言。• 只學語法容易易覺得無聊,建議找⾃自⼰己有興趣的主題,利利⽤用程式製作成品,會覺得比較好玩跟有成就感。• ⼀一些資⼯工資管的學⽣生反⽽而不想當⼯工程師,因為覺得程式無聊,很難。• 學⽣生的故事 https://bit.ly/2ilZGyd https://bit.ly/2f8lbhD• 不⽤用寫程式的電⼦子書 App https://bit.ly/2zLJrSP• 主題選擇例例⼦子: iOS App(Swift),Android App(Java),網⾴頁(html &Javascript),抓取網⾴頁資料的爬蟲(Python)
先學⼀一種程式,學會後再學另⼀一種會容易易許多• 原理理類似,比⽅方每種程式都有變數,function,ifelse,迴圈。這四個主題也是初學者⼀一開始學程式最重要的部份。• 你現在學的東⻄西會過時,重要的是學習新技術的能⼒力力。• 時常有轉換程式跑道的⼯工程師,比⽅方本來來寫網⾴頁,後來來變成寫 App• 建議初學者先把⼀一種學好,不要同時學好幾種。
彼得潘寫過最困難的程式• driver (驅動程式)• linux driver, windows driver, mac driver• 寫程式控制硬體,比⽅方印表機的 driver,硬碟的 driver。• driver 程式寫壞了了,整台電腦當機,只能重開。• 彼得潘遇到⼀一個花了了好幾個星期才解決的問題,每次要讓問題重現都需要等好幾天。• App 程式寫壞了了 App 會閃退,但是還可以打電話。所以我後來來就決定寫 App 了了。
⾃自學還是上課https://bit.ly/2wsNYX6
⾃自學的進度安排• 建議先找好某本書或某個線上課程,依書和影片的進度進⾏行行。• 有些⼈人會⼀一次買很多書和很多影片,變成每個都只看前三章。• 找朋友⼀一起學習• 主要的問題在卡關,所以找到⼈人問很重要。(問問題的部分前⾯面有提到)
幫助學程式的八個重點https://bit.ly/2x30Tyi
iOS App 開發作家養成計畫https://bit.ly/2nMGPKs寫 Blog
同學的 blog ⽂文章https://bit.ly/2mJdBjE• 不⽤用怕寫不好,重點是進步• 記錄⾃自⼰己的成長• 抄襲參參考同學的作業,新同學正常會比前⼈人厲害• 寫程式⽂文章⼀一般會愈寫愈好,因為會愈來來愈厲害,寫⼩小說就不⼀一定了了• 我也是寫⼀一年年 App 後開始寫書。(為了了實現當作家的夢想)
六種學習⽅方式⾯面臨臨的不同問題• 利利⽤用影片或書⾃自學 (前⾯面⾃自學的⽂文章有討論)• ⼤大學⽣生在學校修的程式課程 (前⾯面資⼯工系的部分有討論)• ⼀一對⼀一家教 ( 家長想要⼩小孩學,但是⼩小孩想學嗎 ? )• 上班族學程式• ⼀一到五上課的密集班• 提供場地 & 專家解答問題的⾃自學培訓沒有最好的學習⽅方式,只有最適合⾃自⼰己的⽅方式
上班族學習問題• 下班精神不好• 加班所以請假或遲到• 沒空寫作業• 上課可以幫助上班族加快學習,但前提要寫作業。• 學程式跟其它事情的 priority• 各種事情: 約會,出差,感冒,旅遊• 企業內訓: 被公司要求學習,其實沒興趣,或是還有很多原本的⼯工作要做,沒時間練習。https://www.youtube.com/watch?v=GjSnE6j-jOM
學成⼀一個程式要多少時間三個⽉月⼀一個⽉月半年年⼀一年年⼤大學四年年
⼀一⾸首歌的時間?https://www.youtube.com/watch?v=rR3U_ejGNto
向有⼩小孩的媽媽學習利利⽤用時間⼤大部分初學程式的朋友都還沒有⼩小孩有⼩小孩也可以,我們要向媽媽看⿑齊媽媽做得到,我們也可以 !
學習環境很重要,就像住在外國或交外國女友(男友)學英⽂文• 每天接觸練習程式• 每天⼀一⼩小時會比三天打⿂魚,兩兩天曬網好。• https://www.hackingwithswift.com/100• 知道這樣很好,但是⾃自⼰己做不到 ? 透過別⼈人幫助提供學程式的環境
把你關起來來學程式(還好不是關在⼭山洞洞)• ⼀一到五上課的密集班• 提供場地 & 專家解答問題的⾃自學培訓• 額外好處: 同學⼀一起學習,互相幫忙
密集上課可能遇到的問題• 學太多,比⽅方 iOS + Android + 後台 + 網⾴頁。• 找⼯工作其實只要⼀一個專精就可以。公司要的是會某個技術的⼈人,不是每個都會⼀一點點的⼈人。• 課程時間太短,內容消化不了了,沒時間寫作業,前⾯面學的還沒吸收,新學的跟不上。• 如果課程時間拉長呢? 學費可能更更貴 !
⾃自學培訓可能遇到的問題• 每個⼈人⾃自⼰己找資源,有的找到比較好的,有的找到比較不好的,因此可能有不同的學習成果。(相反的上課是⼤大家學同⼀一套教材)• 適合程度較好或是學習動⼒力力較強的同學,因此通常會挑⼈人。(如果是付費課程,有錢就能上課)
建議看英⽂文• 英⽂文的書 & 影片比較新,比較好。• 程式的英⽂文其實不難• 中⽂文翻譯有時會不太順或翻錯。• 讀資⼯工時因為中⽂文翻譯常看不懂,慢慢養成看原⽂文書的習慣。• google 找問題時,英⽂文的解答比較多,最好搜尋的關鍵字也打英⽂文。• 電腦改成英⽂文介⾯面 ( ps: 到星巴克⽤用電腦時也比較潮)• 既然願意花時間學程式,建議也花點時間學英⽂文。(主要是背單字)
作業 & 考試• 很討厭,但真的有⽤用 !• 臨臨時抱佛腳是⼈人的天性• 上課,看書,看影片只佔三成,學會程式七成要靠⾃自⼰己練習• 比⽅方上課三⼩小時,課後練習寫作業的時間⾄至少要六⼩小時。• 不⾃自⼰己寫作業,上⼀一百次課,看⼀一百次影片也學不會。• 彼得潘的 100 道 Swift iOS App 謎題 http://bit.ly/2quinCC
⼤大學⽣生和外⾯面課程的作業考試比較• ⼤大學⽣生• 為了了畢業,所以願意臨臨時抱佛腳。雖然抱佛腳不好,但還是會變強。• 外⾯面的課程• 沒寫作業或考不好也不會怎樣• 有付錢就可以畢業• 沒有畢業證書也不會怎樣,畢業證書也沒什什麼⽤用• 彼得潘的 App 班裡,作業寫比較多的兩兩種⼈人• (1) 沒上班的⼈人 (2) 上班有空寫作業的⼈人• 彼得潘提供作業全交的⼀一對⼀一家教獎勵: 沒有⼈人實現過
程式是理理⼯工科,應該是理理解的科⽬目,不需要背吧 ?
學程式有很多東⻄西要記• 語法的格式• 某個功能要使⽤用哪個東⻄西實現。• 程式裡的東⻄西都是英⽂文,由英⽂文單字組成,英⽂文單字知道意思的話比較容易易記起來來。• 上課的學⽣生⼀一般後⾯面的課程跟不上,不是因為太難,⽽而是沒有複習,忘了了前⾯面的東⻄西。• 記起來來的⽅方法(跟⼩小時候唸書⼀一樣)• 不背的⽅方法: 多練習,練習多了了就記起來來了了• 刻意背
看到單字,要能⾺馬上想到它在程式裡的作⽤用程式練習的 flash card (閃卡)
從程式裡常⽤用的英⽂文單字找出規則以 iOS App 為例例• 程式沒什什麼創意,常⽤用的單字就那幾種。• 很多地⽅方出現 will,did,start ,finish。• 很多 App 的功能都跟開始和完成有關,因此猜想相關的程式單字會出現 start & finish,比⽅方想在網⾴頁完成載入時移除下載中的彩球。• 只要記得這些常⽤用的單字,寫程式時很容易易想到要怎麼寫或看懂別⼈人寫的程式。
從程式裡常⽤用的英⽂文單字找出規則以 iOS App 為例例• will: 將要發⽣生。• did: 已經發⽣生。• start: 開始。• speechSynthesizer(_:didStart:): 已經開始講話。• finish: 完成。• webView(_:didFinish:): 網⾴頁已經完成載入。
持續學習很重要• 程式的技術⼀一直在變• ⼯工程師的苦• 沒辦法⼀一個技術⽤用⼀一輩⼦子• 喜歡學習的⼈人比較適合當⼯工程師• 怎樣的特質不適合當⼯工程師: 不喜歡學習
如何保持學習的熱情 ?• ⾃自⼰己很容易易三分鐘熱度 ( 就好像付給健⾝身房的錢)• 別⼈人的⿎鼓勵⽀支持• 家⼈人朋友• ⻄西瓜媽的故事 https://medium.com/@gmb728• 因為愛: 為了了家⼈人朋友,⼩小孩會給予很多真⼼心的回饋• 跟朋友合作 side project• 彼得潘和朋友合作的記帳 App,每星期到對⽅方家裡⼀一起寫程式• http://apppeterpan.strikingly.com• 跟朋友或同學⼀一起學習。• 做出實際的產品,比⽅方上架 App。• 使⽤用者的⽀支持和意⾒見見 ,比⽅方 App 的評論
如何保持學習的熱情 ?成就感 & 愛很重要 !• 成就感• 可愛倉鼠 https://bit.ly/2IMb6bz 雖然⽤用了了三百多張view才拼完,但拼完很有成就感。• 漂亮的花 https://bit.ly/2Tlppbf ⽤用⼀一個⼀一個view拼出⼀一朵花,花了了不少時間,但完成後相當有成就感。• 愛• 偶像⼤大師 https://bit.ly/2XsQLLT 實際製作的時間也花了了⼤大約⼗十⼩小時左右,不過只要有愛就沒問題的~
我的偶像 ~ Pennyhttps://bit.ly/2U95Vnk
如何保持學習的熱情 ?寶⾙貝你回來來了了https://www.youtube.com/watch?v=_iC8jnx32ho
如何保持學習的熱情 ?• 難度適中的主題• 太難容易易放棄,太簡單容易易無聊• 學習的兩兩個⽅方向• 往深度發展• 比⽅方持續學習 iOS App 的各種功能,例例如 AR。• 往廣度發展。• 學會寫 iOS App 了了,來來玩玩學 Android App。• 找出適合⾃自⼰己的學習⽅方式• 看書,影片,上課,實作產品
學習 debug (修正程式的問題)• ⼯工程師⼯工作有很多時間花在解決程式的問題。• 初學者可能三成的時間寫新功能,七成在 debug。• 解決問題的時間很難估算,可能⼗十分鐘,也可能超過⼀一星期。
學習 debug (修正程式的問題)• ⼯工程師和其它⼯工作的差異異• 煮菜: 半⼩小時可以煮五道菜,⼀一⼩小時可以煮⼗十道菜,成果可以預估。• ⼯工程師: 成果無法預估,可能⼀一星期都毫無進展,每天都在研究同⼀一個問題。• 解出問題時很開⼼心,但解不出時很痛苦,要能忍受苦思問題的痛苦才適合當⼯工程師。• ⾼高⼿手也會解問題解很久,因為他會⾯面對更更難的問題。
學程式的六個階段2. 看懂別⼈人寫的程式3. ⾃自⼰己寫,不⼀一定對4. 寫得對6. 寫得好5. 寫得快1. 理理解專家的講解 (比⽅方上課,看書,看影片)初學者先⽬目標前 4 個階段找⼯工作前最好練到第 5 個階段
怎麼知道真的會了了 ?程式寫得快• 為什什麼明明寫過了了,重頭⾃自⼰己做⼀一次還是腦袋⼀一片空⽩白做不出來來。• 因為第⼀一次寫常常是參參考別⼈人的做法完成,很多是 copy paste 或是看著照抄。• 雖然寫過作業,完成 final project,甚⾄至上架 App 了了,但如果不熟練,⾯面試重頭寫還是寫不出來來。(或是無法在⾯面試要求的時間內完成)• 當你能很快寫出來來時,代表你的理理解和熟練度都有⼀一定⽔水準。因為程式不是⽤用背的,所以你要理理解才能寫得快。• 能寫出來來沒有⽤用,要寫得快才能找到⼯工作。• 考到台⼤大醫科的往往考試時寫得很快,寫完還能檢查。• ⾯面試時要能很快答出問題或現場短時間內寫出程式。
怎麼知道真的會了了 ?程式寫得快• 如何練習寫程式的速度• 同樣的題⽬目不只做⼀一次,要練到能⾃自⼰己做出來來,不⽤用參參考教材 & google。• 計錄完成的時間: 比⽅方第⼀一次花了了⼀一個⼩小時,第⼆二次花了了半⼩小時。
如何寫得好 ?覺得⾃自⼰己寫很爛,想精進⽬目前的語法架構• 等有⼀一定基礎後,再來來研究這個部份。(剛開始學程式的朋友可以先不管)• 靠⾃自⼰己• 隨著⼯工作經驗的累積,會愈來來會進步。• 初學者要注意的第⼀一點: 程式的命名• 跟入⾨門教材的範例例學習• ⽬目標寫得跟範例例⼀一樣好• 模仿 Apple 教學範例例,寫出⼀一⼿手好 Swift• https://www.appcoda.com.tw/write-better-swift/
初學者常⾒見見的程式命名問題• 名字取不好,很容易易看不懂程式。• ⾃自⼰己看不懂,別⼈人也看不懂。• 最好⽤用能表達清楚意思的完整英⽂文單字取名,不要隨便便取名。let weight = 50let height = 1.65let bmi = weight / (height * height)let a = 50let b = 1.65let c = a / (b * b)
初學者常⾒見見的程式命名問題• 看似簡單,但初學者要養成命名的好習慣需要⼀一些時間。• 我讀資⼯工時為了了趕學校的作業,那時也常隨便便取名。• ⼀一開始初學者只想著⼀一件事,怎麼把東⻄西寫出來來。能寫出來來就謝天謝地了了,因此名字往往懶懶得花時間想。
如何寫得好 ?⾼高⼿手沒有比較聰明,就只是聞道有先後• 要做出某個功能,往往有很多⽅方法。⾼高⼿手跟初學者的其中⼀一個差別,就在⾼高⼿手知道比較多⽅方法,知道在某個時候該選擇哪⼀一個⽅方法。• 為什什麼⾼高⼿手知道 ?• 利利⽤用各種學習⽅方法知道。• ⼤大部分的程式技術都不是⾼高⼿手⾃自⼰己想到發明的,早已有⼈人發明。• 初學者⼀一開始可能只知道其中⼀一種比較笨的寫法,可以試著研究是否有其它的寫法,可能原本⼗十⾏行行的程式變成只要寫三⾏行行。(可以試著 google)• 比⽅方我會研究 iOS App ⾴頁⾯面間傳資料的各種不同⽅方法。• 每天我都發現⾃自⼰己學到新的東⻄西,知道⼀一個新的⽅方法。
如何寫得好 ?覺得⾃自⼰己寫很爛,想精進⽬目前的語法架構• 學習讓程式更更容易易維護,更更不容易易有 bug 的寫法• 研究許多讓程式更更好的教學,比⽅方書籍• 研究 GitHub 上不錯的程式專案。• 模仿公司厲害同事的程式。• 請⾼高⼿手 review code。
學 iOS 程式設計的⽅方法• ⼤大部分跟學其它程式⼀一樣,前⾯面有介紹。• iOS App開發的⼗十個 Q & A https://bit.ly/2nVqyDu• 推薦的書• 彼得潘的 Swift 程式設計入⾨門 (好吧,因為是我寫的)• Intro to App Development with Swift https://apple.co/2jQeoNE• App Development with Swift https://apple.co/2IA8JII• iOS 12 App 程式設計實戰⼼心法 https://www.appcoda.com.tw/books/• 網路路上還有很多學習資源• Awesome 的 iOS App 開發學習資源 https://bit.ly/2U8o30L• 彼得潘的 blog https://medium.com/@apppeterpan
學 iOS 程式設計的⽅方法• 上架 App• 練習題• 比⽅方我出的 100 道 Swift iOS App 謎題 http://bit.ly/2quinCC• 外國⼤大學的 iOS 課程作業 https://bit.ly/2EGZVg4• 沒有誰的書或課是你學了了就能找到⼯工作 ,但如果你題⽬目都能完成,東⻄西都能做出,⼀一定能找到⼯工作。• 使⽤用 App 時看到不錯的畫⾯面或功能,試著模仿練習。 https://bit.ly/2HanuzB• 也歡迎找彼得潘
iOS App 上架• https://www.appcoda.com.tw/ios-app-submission/• 其實不難,比⽅方猜數字 App 也可以上架。• 若若有特別的問題,Apple 會告訴你,乖乖地照 Apple要的修改即可。• ⽬目前要不上班,⾃自⼰己做 App 賺錢過不錯的⽣生活難度有點⾼高。(太多 App 了了)
我難過的 App 退件故事
想當⼯工程師嗎 ?⼯工程師的好 ?
程式設計師可能的好處較⾃自由邊⼯工作邊吃東⻄西上班滑 FB,LINE 跟朋友聊天薪⽔水還不錯⼯工作內容有趣(前提要喜歡動腦)不⽤用曬太陽比較晚上班不⽤用打卡⼯工作聽⾳音樂遠端⼯工作 ,在家裡咖啡廳⼯工作做出產品的成就感出國⼯工作比較沒有⼈人事⾾鬥爭感覺很厲害免費零食周末到公司⽤用電腦,省⽔水省電
想當⼯工程師嗎 ?⼯工程師⼯工作的缺點 ?
學了了程式找到⼯工作後,是否就像王⼦子公主,從此過著幸福快樂的⽇日⼦子 ?https://bit.ly/2AP4XnS
責任制的⼯工作時間• 忙的時間可能超過⼗十點下班,甚⾄至回家繼續寫。• 下班還是在⼯工作,主管還會 LINE 你,要你改 bug。• ⼤大部分沒有加班費• 新⼿手寫得比較慢,因此可能比較晚下班,甚⾄至假⽇日在寫程式。( 還記得曾經 228 連假和跨年年寫程式)• 技術變強後,錢變多了了,但可能有更更多事要做,因此還是晚下班。• ⼯工時長的缺點: 影響⼼心情,健康,愛情,婚姻 (看到很多朋友 & 同學的故事)
彼得潘以前上班的⼀一天• 早上⼗十點到公司,開始吃早餐• 中午⼗十⼆二點到外⾯面吃午餐• 下午三點到外⾯面買下午茶茶• 下午六點多下班。• 重點其實是⼯工作效率,專⼼心寫⼀一⼩小時的程式可能等於三⼩小時⼀一下⼦子 LINE,⼀一下⼦子 FB 所寫的程式。• 看起來來⼯工時很短? 其實回家繼續寫公司的程式。
彼得潘加班的最⾼高紀錄 ?
彼得潘加班的最⾼高紀錄App 上架前寫到凌晨五點(還好是在家裡寫,不是在辦公室)ps: 最好不要超過半夜⼀一點寫程式,可能發⽣生很可怕的事,比⽅方寫出奇怪的程式 (因為頭腦不清楚)
⼯工程師的⼯工作很難平均分配• ⼀一般都是有時操,有時閒• 都很閒• 公司⽣生意不好,快倒了了• 主管不喜歡你,想要你走• 養老的公司• 都很操• 比⽅方⼀一直在燒錢,還沒有賺錢的新創公司• 有朋友⼀一直加班,沒有加班才是不正常。不過她後來來太操做不下去,回家帶⼩小孩才發現帶⼩小孩更更操。看來來⼤大家應該先帶⼩小孩,之後⼯工作就不怕操了了。
⼯工程師上班閒的時候做什什麼 ?
⼯工程師上班閒的時候可能做什什麼 ?• 研究其它程式技術• 寫程式技術的 blog ⽂文章• 讀英⽂文• 打電動• 滑 FB, IG,抖⾳音,PTT• 看 youtube,看直播,追劇• 睡覺• 到外⾯面買下午茶茶• 吃吃吃• LINE 聊天• 找新⼯工作: 看 104 ,linkedin• 看股票• 寫 App 作業• 做外⾯面的案⼦子• 做 side project• 對著程式畫⾯面發呆 然後假裝滑鼠⼀一直動• 蹲⾺馬桶• 抽煙
重視產出 & 重視⼯工時• 重視產出的公司• 只要你能完成,做出好的成果,就有愈多的⾃自由• 重視⼯工時的公司• 明明沒事做了了,但是主管還沒下班,你就不能下班• 太早下班會績效不好。(⼯工程師的績效獎⾦金金很重要,有些公司獎⾦金金 & 年年終的錢比整年年的⽉月薪加起來來還多)• 晚上留留在公司上網裝忙。
新⼿手找⼯工作好找嗎• 能⼒力力是重點• 當能⼒力力差不多時,女⽣生,年年輕,學歷會有⼀一點優勢• 會看學歷嗎• 第⼀一份⼯工作有影響• 想進 Apple , Google , FB,台積電,聯聯發科之類的公司,學歷有幫助
公司的徵才網⾴頁看起來來很可怕列列出的條件很多• 還是可以投• 公司挑⼈人,我們也挑公司• 有些公司找不到⾼高⼿手,只能找新⼿手,他付的錢也請不起有這些條件的⼈人• 找⼯工作跟找房⼦子很像,有時剛好你正在找⼯工作,他缺⼈人就要你了了。
⾯面試• ⾯面試考題,請找 Google ⼤大神• 現場寫程式的能⼒力力,初學者常⾒見見的問題在於不夠熟練 (有的可以讓你回家寫)• 有的甚⾄至不會問技術問題,比⽅方公司沒有 iOS ⼯工程師,沒⼈人可以考 iOS App 技術問題• iOS App ⼯工程師⾯面試鑑賞師 http://interviewiosapp.strikingly.com• 合不合得來來很重要,記得微笑
公司只有⾃自⼰己寫 iOS App沒有前輩怎麼辦 ?• 好處• 比較不會被 fire ( fire 你就沒⼈人寫 iOS App 了了)• 可以⽤用⾃自⼰己喜歡的⽅方式寫。(公司有前輩可能會有好的程式架構要遵守,但要先經歷學習的階段。)• 要學會⾃自⼰己找尋問題的答案,真的找不到再請教外⾯面的⼈人。• 以 iOS 來來說,滿多⼩小公司都只有⼀一兩兩個⼈人,⾃自⼒力力⾃自強很重要。• 有問題也可以 line 彼得潘。
公司好嗎 ? 如何選擇 ?• ⾯面試的感覺不準,就像談戀愛。常常要開始⼯工作後才知道。(也可以先從網路路查評價)• 薪⽔水,興趣,地點,每個⼈人重視的點不⼀一樣。我之前有⼀一次選公司的原因是因為它的旁邊是百貨公司。• 同事主管是否夠強,是否好相處。• 新創公司⼀一般比較⾃自由,同事比較年年輕
新⼿手的第⼀一份⼯工作• 第⼀一份⼯工作要運氣好才能找到滿意的⼯工作• 新創的⼩小公司和知名度沒那麼⾼高的公司比較容易易進• 在⼯工作中累積能⼒力力,之後可以換更更好的⼯工作• ⼀一般情況下,跳巢薪⽔水漲得比較快。• 公司的調薪• 新創公司有的比較沒錢,或是沒獲利利,可能會不調薪。(甚⾄至可能減薪)
那麼多⼈人學程式⼯工程師的⼯工作不會飽合嗎?• 很多⼈人⼯工作⼀一陣⼦子後放棄,所以持續有空缺• 放棄的原因: 不開⼼心,做不出來來,錢太少• 難的不是找到⼯工作,難的是持續做下去。• 放棄不是壞事,本來來就不是⼈人⼈人都適合寫程式,換⼀一個⾃自⼰己開⼼心的⼯工作比較重要• 也有不開⼼心繼續做的,比⽅方為了了錢,為了了養家
熱情歡樂的新創⼯工作環境不過新創也有很操的,⼀一般有錢的比較不操(比⽅方背後有⼤大公司當⾦金金主)
⼯工程師的⼯工作有趣嗎• 什什麼樣的⼈人會覺得有趣: 喜歡動腦和學習。• 要能忍受問題想不出來來,睡覺也在想的⽣生活。• 也可能做很多雜事,比⽅方在新創公司,⼀一個⼈人要⾝身兼多職。• 有時花很多時間做的東⻄西,最後卻完全⽤用不到,比⽅方老闆決定重新設計,之前做的 App 畫⾯面不要了了。• 有時會開發功能類似的產品,⼀一直使⽤用重覆的技術。• 有些功能簡單卻費時,比⽅方多國語⾔言 。
新⼿手會很容易易被 fire 嗎 ?能成功度過試⽤用期嗎 ?• 正常情況不會被 fire,因為公司也很難找⼈人,尤其沒知名度的新創公司。• 可能 fire 的情況• 產品完成了了,公司不再需要你。• 產品無法賺錢。• 公司要節省開⽀支。• ⼯工作態度不佳。• 能⼒力力不⾜足。(可能你⽬目前的能⼒力力是 60,但你的⼯工作適合能⼒力力 90 的⼈人)
東⻄西做不出來來怎麼辦?
東⻄西做不出來來怎麼辦?• ⼤大部份都做得出來來,只是會 delay,需要更更多的時間• 真的做不出來來• 產品的難度超過你的能⼒力力。• 這也是為何有五萬⽉月薪的⼯工程師,也有超過⼗十萬的• 雖然失敗了了,但更更重要是過程中技術成長了了 。• 如果能⼒力力不⾜足,有可能完成嗎 ?• 除非找槍⼿手,但⼯工作不太可能找槍⼿手。• 接案公司也常聽說案⼦子做不出來來的故事
⼯工程師的 Money• 有機會年年薪百萬。• 新⼿手⼤大概四萬多。• 其實很多⼈人⼯工時跟⼯工程師⼀一樣,但是錢少很多。所以⼯工程師已經算滿幸福了了。• 不會變有錢⼈人,但可以過還 ok 的⽣生活。• 比較有機會調薪• 因為技術變強,公司願意付更更⾼高的薪⽔水。• 公司是否賺錢更更重要,沒賺錢技術再強也不會調。• 其它⾏行行業: 有些⼯工作比較沒成長性,做⼗十年年跟做⼀一年年做的事差不多,所以調薪空間有限。• 想要更更多的錢• ⽵竹科,知名的公司,外商,外國 (比⽅方美國,⼤大陸,⽇日本,新加坡)
公司倒了了怎麼辦• 新創公司比較容易易倒 ?• 很多新創公司撐不到三年年,不過可能你本來來就計畫兩兩三年年換⼀一次公司。(技術學得差不多,覺得無聊,跳巢薪⽔水更更多)• ⼯工程師本來來就很少在⼀一家公司待⼀一輩⼦子,⽽而是每幾年年換⼀一次⼯工作,學習新技術,製作下⼀一個有趣的產品。(台積電,聯聯發科之類的公司例例外)• 只要技術成長,換公司往往可以愈換愈好。• 有的甚⾄至換過幾次公司後,最後想⾃自⼰己創業。• 要有股份變⽩白紙的⼼心理理準備。
如何成為⼀一個好的新⼿手⼯工程師• 養成學習的習慣。• 看書,看影片,寫 blog,參參加活動,做 side project• ⽬目標將東⻄西做好,⽽而不是將東⻄西做出來來就好。• 不過有些公司⼀一直趕案⼦子,也可能讓⼯工程師只能將東⻄西做出來來就好• 下班時間的運⽤用。• 細節• 快• 研究別⼈人的程式• debug• 教別⼈人
下班時間的運⽤用• 畢業後,⼤大家⼀一開始⼯工作的起點是⼀一樣的,為什什麼⼗十年年後同學會差那麼多 ?• 下班後做了了什什麼 ?• 我以前上班時,下班後⾃自學 iOS App 開發,接案⼦子,寫 App,寫書,教課等。• 也要看公司,我有些在聯聯發科的朋友,的確下班後比較沒⼒力力做別的事。
研究別⼈人的程式https://bit.ly/2ThAERQ
教學的⼗十⼤大好處https://bit.ly/2SUpC5V
新⼿手接案的可能• 還是有⼀一些簡單的案⼦子。• 案⼦子主要來來源: 家⼈人朋友介紹• 網路路: ptt CodeJob,線上外包網• 最近有個修課的⼤大學⽣生接了了⼀一個三萬的案⼦子• 可能的缺點: 規格時常修改,時間經常 delay• 技術不錯時,有機會接到⼀一個⽉月⼗十萬的案⼦子• 外國的案⼦子錢比較多 ( 外國老闆覺得找台灣的⼯工程師比較划算)
台灣軟體就業環境的優點和缺點• 優點• 比起很多其它⾏行行業,同樣的⼯工時,薪⽔水已經算很不錯了了• 有許多技術難度不會太⾼高的⼯工作,所以新⼿手不難找到⼯工作。• ⾃自由: 只要能完成產品,上班可以⾃自由做很多事。(⽵竹科有些公司限制比較多)• 缺點• 薪資比不上外國。• ⼤大部分的⼯工作技術難度不⾼高,只想製作⼀一個普通的產品,⼯工程師技術成長有限。如果在 Apple,Google 之類的公司可以有更更多的發展。• 有些公司只⽬目標完成產品,只想快速賺錢,不在乎品質。
有任何問題,歡迎 FB / LINE 彼得潘• FB: https://www.facebook.com/deeplove.pan• LINE: deeplovepeterpan