# AmazingTalker - Junior Backend Engineer ###### tags: `resume` `amazingTalker` `202205` ### 自我介紹 我是豐華,過去有過兩份軟體相關的工作經驗,以下特質會是您們會想要找的工程師嗎? - 良好的學習熱誠 - 過往的兩間公司,都有主動去抓住接觸新領域的機會,第一間公司是 asp.net mvc + C# +sql server + OOP, 第二間是 Android app + angular。上述的技術與觀念除了 angular 在當時是沒有其他同仁有接觸過的。 - 良好的工作態度 - 在過去兩間公司中,每年都有調薪。每年調薪的幅度大於基本的 1~2%,在第二間公司年終也都領超過預設值的。如果從公司的角度出發,有可能獲得這些的人通常是擁有良好的工作態度。 - 有哪些技術與經驗呢? - 在第二間公司我負責維運與開發的專案有九個,專案類型的分布有: asp.net mvc * 3, app * 3, .net core * 2, webform * 1, angular * 1 - 當負責的專案越來越多,對應在時程控管與抗壓能力勢必是需要提升的。 - 開發或維運專案時如果有機會,會使用 **OOP + DesignPattern + 多層架構** 的觀念與知識去進行優化或重寫。 - **協作與溝通**對工程師職涯中來說是很重要的一環 - 第二間公司的後兩年時常與客戶進行需求訪談,從確認客戶到底要什麼? 到最後建立系統。整個過程很需要大量溝通。 - 有從 0~1 的去帶人進行開發跟維運 - 有三個團隊共同完成一個客戶的需求,當時的腳色是其中一個 team 的 leader 與三個隊友共同完成當時的任務。 - 學習的看法與思維 - 學習成長上我是分成兩塊,第一個是個人成長上,透過加入 FB 軟體圈的社團,與多看一些軟體相關的部落格。除了增廣見聞外主要是維持熱情,看到有興趣的就可以查,或者去買書來看。 - 第二個是職涯上的,理想上可透過團隊合作時會互相分享做法,或遇到問題時先記錄下來。後面再把這些知識點給補起來。也從公司定的目標找尋自己缺的是什麼,從中進而學習。 - 世界變化的太快,只能不斷學習與成長,才能比較好適應這個世界。 ### 個人作品 - 物件導向個人的心得分享,從需求的抽象角度去用 OOP 設計解決方案是蠻有趣的領域: - https://github.com/KevinSintra/note_from_hackmd/blob/master/object_msg_oriented.md - 單元測試的藝術,原書是用 cSharp 寫的,當時自己是改用 python - https://hackmd.io/XDbbWGraQqGY_nP5a6xdkA ### 較有挑戰的解決問題經驗 #### 需求: 將舊有的軟體產品(foxPro),改用 Asp.Net 做一個簡單的 Web 專案 - github: - https://github.com/KevinSintra/RepositoryService - https://github.com/KevinSintra/SimpleWMS - 情境說明: 做出簡單版的 WMS,使用 .net Identity 做權限控管,透過 repository 去操作 ORM。 - 當初建立學習紀錄: 1. https://dotblogs.com.tw/Kevin_Date/2017/09/06/110239 2. https://dotblogs.com.tw/Kevin_Date/2017/09/11/120708 #### 需求: 有不同的需求要去做不同異動檔案的任務 - github: https://github.com/KevinSintra/tool-show/tree/master/ConsoleApp1 - 問題: - 較大的問題是未來可能有不同的需求,要如何在需求新增時不動到以前寫好的排程呢? - 以前的參數好多都寫在 config 底下,因不同的需求還會在上面去分組,這樣在維護上不方便且相關的程式碼也不易閱讀。 - 情境說明: 假設有 A B C 三個大需求,異動檔案的任務共有五個。A 5個任務都要做、B 只要做 1 跟 3、C 只做 5。 - 架構: 1. 產生任務相對應的實例,封裝控制流程步驟讓外部更方便操作。設計模式用到 Simple Factory 、Template Method。(細節請參閱 JsonFactory.cs) 2. 因有多個不同的任務,且未來任務可能會增加。所以從抽象建立出一個介面,讓各任務去實現自己的細節。設計模式用到 Strategy。(細節請參閱 IWorkers.cs 與繼承的子類) #### 需求: 學習 android app & angular & asp.net core,協助客戶在原有的 APP 上建立電商入口與串接金流 這部分程式碼沒放於 github,所以就分享當時學習的過程與經驗。 - 學習新語言或框架時,會先關注的『為了什麼而誕生的、語言特性、專案的檔案結構、專案架構、生命週期、IDE、IDE 快捷鍵』 - 學 Angular: 試著了解『SPA、架構(app.module、router …)、property & event binding、html template、rxjs』。 並去實現官網教學,從中獲得未知的問題或方法。**[(官網教程 tutorial)](https://angular.io/tutorial)** - 架構是由外到內簡單來看是: (app.module.ts + import outside moduler) => router => (各功能的 modlue + routing + component) => (bi service + endpoint) - 學 Android: 試著了解『app 開發環境、專案檔案結構、Config 相關、生命週期、畫面 layout、activity、多執行緒』 :::info - 開發/建置環境: 需要知道引用的函式庫的來源與安裝方式,android studio 有內建開源的 jdk,所以系統不須額外安裝。android 新版核心庫向下相容是透過 support library。 - app & activity 生命週期: app 本身的生命週期是最高等級的,再來是 activity、fragment。 - **多執行緒 簡易概念:** 1. 自行建立的 thread 不能直接操作 UI,原因是沒有通道將 msg 丟到 messageQueue。 2. 操作 UI 是透過特定的 Thread 執行,並且搭配特定的 looper 與 messageQueue (存放 task, runnable) 讓其它的 Thread 透過 handle 傳送 Msg(需搭配 runable) 到 messageQueue,完成修改畫面的任務。 ::: - 學 .netCore: 對 .net 有較多經驗,所以在學習上是專注在常用跟差異的地方。先了解『為何而生、世代交替、框架特性、預設可建立的專案、專案架構、Kestrel Web Server、DI&IoC&Service lifetime、application lifetime、Middleware、REST API』。 ### 近期準備要實現的 - 透過微服務去建立簡單的電商網站(linux + docker + container) - [微服務 筆記](https://hackmd.io/@GoldxTree/rkHD6xKBc) - 在高流量的情況下通常容易遇到瓶頸的點會是 RMDB,所以想透過多個 DB 實現負載平衡 - [MS-SQL效能 筆記](https://hackmd.io/@GoldxTree/SkXgukR9K) 若有任何問題或建議,歡迎交流與指教。謝謝 ## 問題 ## 為什麼想加入AmazingTalker? - 回饋社會,職涯上於公司中創造價值時,會帶給社會些許正向的影響。是很有意義的事情。 - 加入扁平團隊,一直想加入擁有高度自主權、透明溝通、追求成長的團隊。在這共同跟團隊為相同的目標去創造價值,是很有成就感的一件事。 - 參與新創文化,在這能遇到創業上會面臨的問題,問題是具挑戰性與不確定性的。持續磨練創業或面臨問題時所需的預備姿勢,並讓團隊跑起來。 - 學習實驗精神,持續學習解決問題時的必要流程,分別是透過觀察與思考、假設可能問題或原因、設定驗證指標、收集必要數據、推導結果並反思。 ### 您的職涯目標和人生目標是什麼?為什麼定這些目標? #### 職涯目標: 持續成長提升基本能力,解決問題時需要將腦中的知識與經驗做串連,所以能解決多大的問題取決於自身的能力 - 加入對的公司: 一間追求持續成長的公司,身在其中肯定是提升自身能力最好的藥方。 - 提升自我能力: 保持閱讀關於 OOP & Design Pattern 的書籍或知識、leetcode-100 - 為什麼? 一個工程師我認為基本要有的知識,並且要保持熟悉度。資料結構與演算法是我還需要加強的。 - 解決高流量的問題: 建立微服務的網站 & DB 讀寫分離 - 為什麼? 現今多數公司多少會遇到高流量的問題,建立微服務網站是其中一種解決方案,我以前沒有實做過,所以想親手試試並把過程記錄起來。 - 強化解決問題時需要的實驗精神, - 為什麼? 我能再進步的空間是很大的,而且解決問題的技巧與經驗是要持續訓練的。 #### 職涯目標: 加入一個成長型的團隊,並有著相同的目標共同去邁進。打造一個優秀的工程團隊,是很重要的一件事。 - 什麼樣的團隊才算是優秀的? 我目前以為需要包含以下的元素 - 擁有共同的目標並且認同,這樣團隊會有向心力。 - 核心是高度自由與賦權,並讓團隊每個人有當責的心態。 - 讓團隊間更透明,透明更容易促進良性競爭。除了避免爭議與私下議論,並且也加速調整需改善的人事物。 - 共同將知識與經驗做完善的紀錄並嘗試分享,這樣會使成長的速度變快。 - 團隊間的溝通或工作任務需要透明且有紀錄可查詢。 - 團隊會定期檢視是否有需要調整的問題或瓶頸。 - 自動化可自動化的,讓團隊有多心力可專注於更需要專注的事情上。 - 為什麼? - 工作平均佔了人生 1/3 左右的時間,大約整整 23 年的『時間』。如何看待工作這件事就很重要了,職涯中團隊協作是常見的行為,加入一個優秀的團隊很重要。 - 以公司角度來看,面臨到第一線的首當是負責的團隊。那代表優秀團隊可以更好的做為公司與(市場/客戶..)間的主要橋樑,相對來說讓團隊擁有一定的自主權就很重要了。 - 在團隊合作上,如何能更好的合作並且更快速的成長。也是很重要的事且我在這也還有很大的進步空間,學好團隊合作對未來有很大的幫助。 #### 人生的目標: 現階段對人生目標沒有想法,我認為先將職涯的目標一步步達成,且持續提高個人價值。過程中人生的目標的輪廓會開始展現。另外我自己的觀點是人生的目標應該會包含職涯的目標,反之亦然職涯目標也是。