# 工程師必備技能分析 ### 軟體工程師的真實生活 「軟體工程師真的要懂這麼多嗎?」技術面試、白板題、還有行為面試等等,為什麼會有這麼多關卡?軟體工程師到底在做什麼? 我們除了事先預演過面試的問題、準備好答案之外,更重要的,就是要知道「為什麼」雇主會提出這些問題,以及面試內容與軟體工程師實際工作內容之間的關聯又是什麼。 讓我們來聽聽 Mike 學長分享他在外商軟體公司當「前端工程師」的生活: <div style="position: relative;width:100%;height:0;padding-bottom: 56.25%;"> <iframe style="position:absolute;top:0;left:0;width:100%;height:100%" src="https://player.vimeo.com/video/424308501" frameborder="0" allowfullscreen></iframe></div> 雖然這是位前端工程師的分享,但其實後端、全端、甚至 iOS 工程師的工作職責並沒有很大的不同。在延伸閱讀,你可以參考幾個國外的例子。 先來總結一下 Mike 分享的工作內容與所佔時間: <div style="width:100%"> <a href="https://assets-lighthouse.alphacamp.co/uploads/image/file/12673/ExportedContentImage_00.png" target="_blank"><img style="max-width:700px;width:100%;" src="https://assets-lighthouse.alphacamp.co/uploads/image/file/12673/ExportedContentImage_00.png"></a></div> 而這三大類,也可以分成以下的細項: <table style="width:100%;"> <thead> <tr> <td style="text-align: center; width: 33%;">產品需求討論、釐清</td> <td style="text-align: center; width: 33%;">產品開發</td> <td style="text-align: center; width: 33%;">個人學習、成長</td> </tr> </thead> <tbody> <tr> <td> <ul> <li>跨部門溝通、釐清需求以及討論技術上的可行性</li> <li>定義開發策略與優先順序</li> </ul> </td> <td> <ul> <li>跟主管、工程團隊討論規格與技術可行的實作方式</li> <li>寫程式</li> <li>透過討論、翻查技術文件、自我研究去解決各種技術困難</li> <li>測試與抓蟲 (debug)</li> <li>撰寫文件</li> </ul> </td> <td> <ul> <li>個人職涯與工作規劃、討論</li> <li>讀書會 (study group) -- 學習新技術與其他領域(後端、資料科學)的知識</li> </li> </td> </tr> </tbody> </table> 不同項目所需的能力與人格特質有所不同,因此雇主便會設計多樣的面試方式與考題,驗證面試者在各方面的表現。 在 <a href="https://tw.alphacamp.co/blog/web-developer-job-preparation" target="_blank">AC 其他的文章</a>與教材裡,我們提過當工程師的必備能力有: * 技術力 * 溝通能力 * 團隊協作 * 拆解與解決問題 * 學習能力 接下來,我們會針對工程師的每一項工作內容,分析所需要的技能與人格特質,列出對應的面試題目,並提供你練習方式。 ### 從技能、面試、到該如何準備 #### 跨部門與技術討論:釐清需求,定義規格與實作方向 <table> <tr> <td style="text-align: center; background-color: #a2a2a2; color: #fff;">要具備技能<br />與人格特質</td> <td> <ul> <li>溝通能力:聆聽力、勇於表達想法、主動參與討論</li> <li>勇於面對新挑戰、陌生任務的態度</li> <li>解決問題 (problem solving):有清晰的思維與邏輯,能拆解問題,一步步尋找可行的解決方案</li> </ul> </td> </tr> <tr> <td style="text-align: center; background-color: #a2a2a2; color: #fff;">面試方式 </td> <td>面對面口試:自我介紹、個人專案討論、白板題 </td> </tr> <tr> <td style="text-align: center; background-color: #a2a2a2; color: #fff;">練習方式 </td> <td> 【專案實作】 <ul> <li>打造個人專案,挑戰課程教材以外的技術</li> </ul> 【口試練習】 <ul> <li>撰寫並練習一個清楚、流暢的「自我介紹」,讓面試官能在短時間認識你</li> <li>在每一份作業或專案之後,透過文字或影片,練習介紹專案內容、遇到的技術困難,並如何解決</li> <li>跟同學一起練習白板題,練習如何作有效的討論,包括聆聽題目、拆解問題、表達想法</li> </ul> </td> </tr> </table> #### 開發產品:寫程式、團隊協作、解決技術問題 <table> <tr> <td style="text-align: center; background-color: #a2a2a2; color: #fff;">要具備技能<br />與人格特質</td> </td> <td> <ul> <li>技術力 <ul> <li>熟悉語法工具,有一定的開發速度</li> <li>瞭解程式碼該有的架構,能寫出結構清楚、容易維護的程式碼</li> <li>對資料結構、軟體框架與設計模型有正確的概念並嚴謹遵守</li> <li>注重細節與測試,能有效率地 debug</li> </ul> <li>技術溝通與尋找答案:能清楚提問,能跟資深工程師討論技術概念,並擅於查找及應用線上資源</li> <li>團隊協作的專業素養:每一份專案有清楚的版本控制以及技術文件</li> </ul> </td> </tr> <tr> <td style="text-align: center; background-color: #a2a2a2; color: #fff;">面試方式 </td> <td> <ul> <li>線上技術測驗</li> <li>任務測試:在有限時間內完成一個技術任務/作品</li> <li>面對面口試:技術概念、情境題、白板題、個人專案討論</li> </ul> </td> </tr> <tr> <td style="text-align: center; background-color: #a2a2a2; color: #fff;">練習方式 </td> <td> <ul> <li>練習線上程式測驗(如 <a href="httlis://www.hackerrank.com/" target="_blank">HackerRank</a>),針對網路上找到的技術考題作練習(AC 有提供),並定期複習基礎概念與使用情境,建立紮實基礎 <li>研究資工觀念,如演算法、時間跟空間複雜度等,並練習打造小程式</li> <li>口試與文字練習:透過跟同學模擬面試及撰寫學習筆記與技術文章等文字產出練習,深化對程式語言、開發概念的認知,並加強針對技術觀念的溝通技巧</li> <li>專案實作: <ul> <li>打造小專案,要求自己在有限時間內完成</li> <li>思考該如何測試自己寫的程式碼,不斷地重構優化</li> <li>找有技術背景的朋友/同學幫忙 code review</li> </ul> </li> </ul> </td> </tr> </table> ### Becoming a software develolier 從現在開始,AC 將幫助你建立工程師必備的能力。以下是我們提供的資源,以及對你學習方向的建議。 #### 專業能力養成 1. **大量的動手實作** 要真正掌握一個新技能,唯一的方法就是大量實作練習。課程中我們安排了一定數量的個人與團體練習機會,但也你必須試著自己尋找課外練習方向,不能止步於教材提供的題目。而在八週課程的尾聲,我們都會舉辦期末黑客松,讓同學們體驗「接到需求-->在時限內跟隊友腦力激盪-->完成功能開發」的過程。 2. **反覆的刻意練習** 我們會持續挑戰你在「速度」、「細膩度」的表現。作為新手,很難立刻就掌握所有技能,但你必須要求自己:一定要十足把握自己能迅速精準地完成已經學會的事物。 3. **說明專案內容與過程** 在完成每個稍有規模的專案後,我們會要求你錄製一小段影片或是撰寫部落格,解釋你的專案過程、遇到的困難、做了哪些新嘗試,這麼做也能幫助別人認識你的作品! 4. **專業素養** 不論是個人專案或是團隊協作,都要養成撰寫說明文件的習慣。在小組協作專案中, AC 的技術顧問與助教們會審查你的技術文件與開發流程。技術文件包括 Git commit comments、 GitHub Readme 以及程式碼的組織架構和註解。 5. **能力評估** 期末時,我們會提供完整的技術測驗,幫助你了解自己對基礎能力的掌握是否到位、哪些部分需要努力。 #### 瞭解軟體產業 在課堂之外,我們也會準備各式職涯活動、閱讀素材,讓你更貼近並了解軟體業界的趨勢。 * <a href="https://tw.alphacamp.co/blog/get-remote-job" target="_blank">遠距工作8問,如何找到遠端工作,成為專業的遠距工程師?</a> * <a href="https://tw.alphacamp.co/blog/data-science-or-web-development" target="_blank">資料科學或網頁開發,程式開發該選哪個領域?</a> #### 建立你的求職策略與武器 最後,我們的<a href="https://lighthouse.alphacamp.co/courses/30" target="_blank">【求職攻略課程 Launchpad】</a>,會一步步引導你建立求職所需的能力與材料,替即將到來的求職行動做準備。 如你所見,工程師的養成之路,工作量真的不少!但請記得,你已經在成為工程師的道路上了,好好專心、保持心情穩定、盡情享受學習的苦與樂。 日後回頭,你會感謝在修煉的路上,持續付出、專心致志的自己。 <div class="further-reading"> <div class="further-reading-inner-wrapper"> <h5>延伸閱讀</h5> 如果對其他工程師的工作內容有興趣,可以參考這幾支國外影片。我們找的都屬於帶有新創風格的公司: <ul> <li><a href="https://www.youtube.com/watch?v=5kas2jBObUY" target="_blank">What do I do as a Software Engineer?</a> (iOS 開發者)</li> <li><a href="https://www.youtube.com/watch?v=leOX1ehXHNM" target="_blank">What do I ACTUALLY do as a Software Developer?</a> (全端開發者)</li> </ul><br>想瞭解轉職該如何準備的同學,也可以先參考這兩篇文章。但要記得,【求職攻略課程 Launchpad】裡有更詳細的說明。 <ul> <li><a href="https://tw.alphacamp.co/blog/web-developer-job-preparation" target="_blank">想轉職軟體工程師?找工作前你需要這份「求職清單」</a></li> <li><a href="https://tw.alphacamp.co/blog/career-transition-and-interview-preparation-in-the-new-year" target="_blank">2020 年後轉職 Q&A:工程師面試該準備的問題與答案</a></li> </ul><br> </div> </div>
×
Sign in
Email
Password
Forgot password
or
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.