# Pinkoi Backend Engineer (Junior) ###### tags: `resume` `pinkoi` `202204` ### 自我介紹 我是豐華,過去有過兩份軟體相關的工作經驗,以下的特質會是您們會想要找的工程師嗎? - 良好的學習熱誠 - 在過去的兩間公司,都有主動去抓住接觸新領域的機會,第一間公司是 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 - 當負責的專案越來越多,對應在時程控管與抗壓能力勢必是需要提升的。 - 工程師的職涯中也很重要的一環協作與溝通 - 第二間公司的後兩年時常與客戶進行需求訪談,從確認客戶到底要什麼? 到最後建立系統。整個過程很需要大量溝通。 - 有從 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』。 ### 履歷(線上的),附件中也有 PDF - https://drive.google.com/file/d/19RvQ98VckHqoBT8QuyLXGuiLPH1v8Vjo/view 若有任何問題或建議,歡迎交流與指教。謝謝