---
# System prepended metadata

title: Pinkoi Backend Engineer (Junior)
tags: [pinkoi, resume, '202204']

---

# 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


若有任何問題或建議，歡迎交流與指教。謝謝
