打造世界級產品的幕後功臣
讓百萬用戶都能有絕佳的使用者體驗
工程團隊是AmazingTalker的核心,致力於使用最合適的技術構建最佳服務,讓來自世界各地的百萬用戶都能有絕佳的使用者體驗,我們注重程式碼的品質,但同時在產品效能以及可維護性中取得平衡,不斷迭代產品、調整並改善現有架構,以提供高效的服務。如果你也熱愛透過技術解決問題,影響數以萬計語言學習者和教師,往下了解更多工程團隊!
團隊理念
AmazingTalker的技術團隊相信「基礎軟體工程技術知識」比對特定 Framework 知識更重要,重視能將知識概念做融會貫通的理解,在日常開發中實踐出來,帶領團隊往更先進的技術、更高效率的服務以及更方便開發體驗等目標邁進。
拆解需求
工程師會面對來自各個部門的需求,我們期待工程師能夠剖析每個需求背後的商業邏輯及目標,以工程技術角度來提供意見,若目前團隊提出的解法並非最佳解,工程師能勇於提出更直指核心的解法,協助團隊更高效的開發。
程式碼品質
在AT的開發流程中,我們有幾個機制確保程式碼的品質
1. 開發前的架構審核 2. 程式碼審核 3. 單元測試
我們鼓勵工程師用介面設計的思維來撰寫程式碼。 我們不會認為目前AT的程式碼品質很好,但我們很重視這件事情,也認為這些機制有可迭代的空間,這也是AT開發團隊想要營造的文化。
勇於接受回饋並讓數據說話
以數據為基礎以及完善的思考脈絡來做出決策,每個人都能針對決策提問與討論,我們期待每個成員以開放心態面對他人的挑戰,藉由直接溝通來釐清疑慮,一起激盪出更多不同的可能性。
持續學習&知識共享
在技術領域的更迭非常快速,我們鼓勵工程師持續吸收新知且勇於嘗試新技術,不斷從每一次產品開發的討論、內部技術分享會、外部技術研討會等中獲取新知識,樂於分享自已所知,並向他人學習自己不足的地方。
我們的團隊 Our Team
Mobile Team
Mobile Team 致力於讓用戶隨時隨地都能方便地使用AmazingTalker的任何服務,我們持續開發新功能,藉由蒐集數據、分析找出關鍵問題,進一步做有價值的優化。
Backend Team
後端團隊負責所有產品核心架構設計、需求探索及開發,並透過持續優化系統架構與架構重構規劃,來支持AmazingTalker的快速成長,使我們能提供給百萬使用者最穩定優質的學習體驗。
Frontend Team
前端團隊負責平台中所有使用者與網站的互動內容,與產品設計師密切合作來優化用戶操作體驗,創造一個令人讚賞的網站服務。
想與你分享我們引以為傲的是.....
Backend Team:
以數據科學為根基,設計了平台的演算法,縝密分析使用者需求,在短時間內客製化推薦最適合的老師給學生。
Frontend Team:
以架構設計的嚴謹程度去思考前端實作需求,蒐集數據回饋以支援快速變動的行銷策略,來讓世界各地的使用者有最佳服務體驗
團隊提倡讓繁瑣的流程自動化,將時間投入在真正有價值的任務上,公司是重視快速迭代和個人成長的;目前公司快速成長的情況下,同時也帶來很多待解決的問題,因此在技術層面也面臨很大的挑戰,像是需要不斷調整開發方式和速度,並持續思考為未來的開發布局。如果你是喜歡快速、有變化,解決未知問題的人,歡迎加入我們!
#在這裡有機會參與產品決策,真實感受到自己對產品產生的影響力
我們團隊文化非常鼓勵每個人提出自己的意見或看法,互相挑戰、激盪,在過程中吸取知識經驗,並迭代自己思考,因此在AmazingTalker 的工程師不會只扮演程式碼產出機器的角色, 而是有機會參與功能/規格/流程的制定,專案也會因團隊規模的擴大、拓展新市場等,相對應的去隨時調整架構,能真實的感覺到自己的能力是對公司產生的影響及幫助,參與產品邁向世界級規模的過程!
#所有決策都是透明的,你能知道決策是怎麼來的並參與討論
在AmazingTalker每個人都能提出自己的意見或貢獻,公司的所有決策都是透明的,你能知道任何人的決策後面是經過什麼想法而產生的,並且開放所有人參與討論。我們工作嚴謹但是可以大膽假設,不為了守住舊的成果,而不敢冒險,我們做對的事情來達到目標,而非做待辦事項。在這邊夥伴們之間樂於分享並積極互相交流,在自己成長的同時,也幫助夥伴一起成長!
#從失敗過程找到成功的路徑,其實比「結果」更重要
對 AT 來說從失敗的「過程」找到成功的路徑,其實比「結果」更重要,因為團隊看重知識的累積,所以主管在看最後目標是否達成與否時,不會單看「結果」,反而是重視我們如何把「過程」整理和分析。但非常有趣、有挑戰。我們常常要處理的問題是沒有標準答案,必須倚靠團隊的智慧和不斷的踩坑失敗,有時會花非常多的時間去研究、迭代,整體是非常有挑戰,但對我來說也是非常有趣的!。
#比起技術經歷,我們更在乎學習速度與挑戰心態
我們招募工程師時,比較看重人選的基礎軟體工程及通用的技術知識,並不會特別限制或偏好人選過去熟悉的技術或框架。以我為例,過去比較熟悉 Golang,是進入 AmazingTalker 之後才學習目前使用的 Vue、RoR。
因此我們評估工程師時更看重的是學習能力、想進步的意願。我們認為這樣會更有彈性,即使未來工作遇到陌生問題,也可以很快地上手,與團隊一同合作解決問題。
#給予想投入 AmazingTalker 工程師應徵流程人選的一些建議
無論是作業或面試,我們並不追求標準答案,因為做法總是有很多種。面試的意義不是在於找出最佳解,而是希望面試時能和你深入討論程式碼設計的思考脈絡。
對於技術面試,我會推薦好的準備方法是深入思考自己履歷上寫得每一個專案、作業每一題的寫法。為什麼要採用該技術?採用的優勢是什麼?如果要最佳化,還可以從哪裡著手?越是熟悉自己的每一個經歷與技術細節,你就越能有條理、思路清晰地在面試中討論。這樣能讓我們更了解你的經歷,並且也知道你是清楚該如何運用這些經驗,以及了解這些經驗的價值。
我們很樂意提供面試回饋,如果你想了解有什麼是可以幫助自己調整或發揮優勢的好方法,都可以直接在面試過程中詢問,我們很樂意提供我們的見解。而有時候我們的回饋並不是要評論好壞,面試是釐清彼此的雙向過程,也許只是彼此在意的點不同,想法並沒有對錯之分。
面試流程 Interview Process
無論有沒有到下一階段,我們都會發信通知,如果沒有收到信極大可能是我們系統寄出被擋信或是歸類在垃圾、廣告信件區,
都可以寄信至recruitment@amazingtalker.com 向我們詢問結果!
- 申請
- 技術測驗
- 技術面試
- HR 面試
- C-level 面試
準備好履歷,至官方網站找到適合自己的職缺並投遞履歷,回答一些簡單的問題,讓我們瞭解您想加入的原因。
完成申請後將會收到技術測驗,根據該職缺會有不同的技術測驗,需要在時限內完成
後端:90分鐘內,內有Leetcode、單元測試、實作重構程式碼等題型
前端:120分鐘內,內有Leetcode、實作重構程式碼等題型
iOS&Android:72小時內繳交(實際作業所需約10小時):實作App 功能
- 在限時內有可能沒辦法完美完成每個細節,我們會專注在作業中表達出來的思考脈絡
- 完成後通常一週左右能夠收到下一階段的通知,當應徵人選較多時最晚兩週內會收到下一階段通知
- 想先了解更多團隊技術上面臨的挑戰與解法,可以到我們的技術部落格
與部門資深工程師視訊面談
- 面談主要針對完成的實作技術作業發問,並依照你過去的經驗,了解你做過的專案細節,從中驗證你的能力。
- 在此階段,會預留時間讓你詢問技術相關問題,了解AmazingTalker的工程團隊。
- 面談後通常一週內能夠收到下一階段的通知,當應徵人選較多時最晚兩週內會收到下一階段通知
- 想先了解更多團隊技術上面臨的挑戰與解方,可以到我們的技術部落格
與人資團隊視訊面談
- 了解你的申請動機、職涯目標規劃與人生方向,同時評估應徵者與AmazingTalker文化的契合度。
- 面試是雙向的過程,彼此了解的機會,我們鼓勵你在HR面試前,先了解AmazingTalker 的人格特質以及公司文化 ,我們在面試中也會針對AmazingTalker重視的理念價值交流看法。
- 在此階段,會預留時間讓你詢問公司與團隊相關問題,對於AmazingTalker有任何好奇的都可以提出。
- 面談一週內收到下一階段通知。
與人資長視訊面談
- 了解應徵者的申請動機、職涯目標規劃與職位的連結性,同時評估應徵者人格特質以及公司文化的契合度。
- 在此階段,會預留時間讓你詢問公司與團隊相關問題,對於AmazingTalker有任何好奇的都可以提出。
- 最終面試一週內收到通知
FAQ
隨著AmazingTalker快速成長,我們目標擴大產品服務並拓展至全球市場,因此會根據不同發展階段持續擴編;同時在招募上除了在專業技能上的要求以外,我們也會針對人才特質做評估,希望能每個加入團隊的都是「對的人」,因此招募週期會相對比較長。
前端:Vue.js 後端:Ruby on Rails,其他技術要求可以參考前端和後端的職缺內容。在工程師的招募上都沒有限定應徵者過去使用的框架語言。
其實我們在技術上比較看重的是基礎軟體工程及技術知識,包括SOLID的概念。雖然使用的框架不同,但寫程式原則不變。另外,我們也很注重成員的學習能力和自我迭代的速度,可以參考AmazingTalker的人才特質介紹。
Junior:我們評估 Junior 工程師在意的是他是否具備積極的心態、學習的潛力,注重的是他未來成長的空間。進入團隊後都會有培訓,能夠以模組為單位交出成果。能力上只要基本 Coding 沒有問題,懂得使用工具即可。
Mid-Level:我們對 Mid-Level 工程師的期待是能夠獨立完成開發、估時,不只是會熟悉工具,更知道要如何把工具用好,加快效率。
Senior:資深的工程師需要熟悉工具的原理,評估不同情況如何使用能最符合需求和目標。能夠獨立解決問題,不只是能夠應付任務,而是能夠從複雜而抽象的狀況中,找出具體的解方,並考量到團隊量能與資源執行。
我們的徵才流程:
- 技術測驗:在限時的時間之內完成一份職位相關的技術作業。
- 第一關(視訊面試):和我們團隊資深工程師面試,面試內容多為技術相關。
- HR面試(視訊面試):和我們人資團隊面試,面試內容主要了解你的目標規劃與人格特質,互相認識。
- 最終面試(視訊面試):和我們團隊人資長面試,了解你想加入AmazingTalker的動機決心。
無論有沒有到下一階段,我們都會發信通知,如果沒有收到信極大可能是我們系統寄出被擋信或是歸類在垃圾、廣告信件區,都可以寄信至recruitment@amazingtalker.com 向我們詢問結果!
目前分成產品團隊跟純技術的重構團隊,分別有對應的PM,PM會根據每季、每月公司的成長目標,設定團隊的目標,再根據每月的目標拆分至每週需要達成的項目,工程師的分配方式會視目標任務的性質和成員本身的能力、興趣做動態的調整。
1. 技術專業能力相符程度。
在驗證技術專業能力上,我們主要會重視三大面項:
- 技術實作:對於開發的語言、資料結構 它們的特性/熟悉度/用法,掌握度越高越能在開發的時候做到槓桿效應,用很省力的方式完成功能需求。
- 程式架構:AmazingTalker 對程式碼品質有一定的要求,我們希望達到敏捷開發的宗旨「不預測未來,但適應未來」,因此在思考程式架構時,有沒有考慮到擴充性與可維護性,能夠在快速迭代的工作環境中,做到更好迭代的架構,不會因為一直加新功能而持續累積技術債。
- 單元測試:AmazingTalker 的夥伴們希望開發出來的 code 有一定的品質保證,而 test case, test coverage 則在一定程度上與程式碼品質掛鉤,但並不是 test coverage 越高品質就越好,目的在於能正確的測試到核心功能、容易迭代更多的測試案例、是否覆蓋到一些常見的錯誤。
2. 人格特質與公司文化的契合度。
我們追求的是凝聚一群「對的人」,因此人選必須具備「將個人目標與公司發展產生連結」這個核心特質。我們希望人選思考過公司與自己目標的契合度,審慎思考過自己渴望的事情能夠在AmazingTalker實踐,並能從長期目標,一步一步拆解成具體的短期目標,清楚讓我們知道AmazingTalker在這中間扮演的角色,除此之外我們也有詳細列出我們對於人格特質的要求和期待,可以到人格特質網站了解更多細節,以及公司文化相關內容,並思考自己是否適合及想要這樣的工作內容及環境。