Slide 1

Slide 1 text

2 Years Challenge as Engineering Manager in Rakuma The mobile app engineering career realize at Commerce Tech Nov 19th, 2020 Yuki Kuroda EC Incubation Development Dept. Rakuten, Inc.

Slide 2

Slide 2 text

2 About Me Yuki Kuroda Vice Manager Service Application Group C2C Service Development Section EC Incubation Development Dept. Commerce Company Engineering Manager / iOS Engineer @darquro

Slide 3

Slide 3 text

3 About Me 2009 2015 2016 2018 Graduated Univ. Started iOS App Dev.

Slide 4

Slide 4 text

4 Rakuma Launch July, 2012 Download 20 million (July, 2019) Distribution Amount ¥140 billion (Feb. 2018)

Slide 5

Slide 5 text

5 Rakuma Mobile Application Development Team • Around 33 years old • Middle or Senior Engineer

Slide 6

Slide 6 text

Career

Slide 7

Slide 7 text

Fellow Principal Tech Lead Tech Lead Director of Engineering Sinner Engineering Manager Engineering Manager Sinner Member Middle Member Junior Member Software Engineer Ladder

Slide 8

Slide 8 text

8 Role as Rakuma Engineering Manager Quality Improvement Service Improvement Technology Strategy Plan Problem Investigation & Judgement Tech Technical Member Support Human Development Team Building Engagement Management Evaluation & Feedback 1on1 Team / People Management Internal Negotiations Reporting Project & Product Management Project Member Assignment Hiring Attendance Check & Work Hour Management Various Approvals Budgeting Internal Appeal or Share External Appeal or Share Product / Organization Operation Appeal / Share

Slide 9

Slide 9 text

9 Contents • Daily Work as Engineering Manager • Team Building, Culture Development • Face own product as Mobile Engineer 2018 2020 ~ What made for my career advancement on this 2 years at Rakuten

Slide 10

Slide 10 text

Management Tech https://www.pakutaso.com/20150609167post-5637.html

Slide 11

Slide 11 text

Management Tech https://www.pakutaso.com/20150609167post-5637.html

Slide 12

Slide 12 text

12 History July, 2012 Nov, 2014 Feb, 2018

Slide 13

Slide 13 text

13 Culture Development Mission Vision Core Value

Slide 14

Slide 14 text

14 Rakuma Mobile Application Development Team 0 1 2 3 4 5 6 7 8 9 10 2018.10 2019.01 2019.04 2019.07 2019.10 2020.01 2020.04 2020.07 2020.10 Member Count iOS Android

Slide 15

Slide 15 text

15 Project Management Search Experience Improvement Listing Experience Improvement Customer Support Experience Improvement Purchase Experience Improvement Security Support Marketing Enhancement New OS Support

Slide 16

Slide 16 text

16 Project Management Search Experience Improvement Listing Experience Improvement Customer Support Experience Improvement Purchase Experience Improvement

Slide 17

Slide 17 text

17 Hiring, Evaluation Hiring • Resume Screening • Tech Interview • Culture Match Interview • Wantedly Scouting Evaluation • Objective Setting • Evaluation & Calibration • Feedback

Slide 18

Slide 18 text

18 Team Management • Project Management • Project Promotion Ownership • Share vision • Build team each member can work independently 真⽥茂⼈ 『サーバント・リーダーシップ実践講座』 2012 中央経済社 • Hiring • Evaluation

Slide 19

Slide 19 text

Management Tech https://www.pakutaso.com/20150609167post-5637.html

Slide 20

Slide 20 text

20 Develop Environment

Slide 21

Slide 21 text

21 Automation • Unit Test • Deploy Test App • Upload Release App

Slide 22

Slide 22 text

22 Risk Management • Release update over 7-day period using phased release • Feature Toggles 30% 70%

Slide 23

Slide 23 text

23 A/B Testing Firebase Remote Config x A/B Testing

Slide 24

Slide 24 text

24 Customer Support Investigation • BigQuery • Firebase Crashlytics extension Crashlytics { func recordHTTPURLResponseError(httpMethod: String, url: URL, statusCode: Int, queryParameters: [String: Any]?, errorInfo: [String: Any]?) { let params: [String: Any] = { guard let queryParameters = queryParameters else { return [:] } return Dictionary(uniqueKeysWithValues: filtered.map { ("param:\($0.key)", $0.value) }) }() let userInfo = errorInfo?.merging(params) { "\($0) \($1)" } let error = NSError(domain: "\(httpMethod) \(url.path)", code: statusCode, userInfo: userInfo) Crashlytics.crashlytics().record(error: error) } } * This is sample code

Slide 25

Slide 25 text

25 Customer Support Investigation • BigQuery • Firebase Crashlytics

Slide 26

Slide 26 text

26 Refactoring • What to start with • How to do • Some Cautionary note when refactoring Objective-C ObjC Swift Swift Unit Test Unit Test Unit Test Swift 32% 68% ObjC Swift 65% 35% ObjC Swift 2018.10 2020.10

Slide 27

Slide 27 text

27 Fraud Countermeasures • Should use Message Authentication Code? • Should store the data in Secure? • Is URL Redirect safety? • Is the binary obfuscated? • What about older app version? • What about announcement to user? • etc.

Slide 28

Slide 28 text

28 Team Development Customer Support Platform Update Data Analytics Outside Situation Web Engineer Designer Producer Director

Slide 29

Slide 29 text

29 Trouble Reporting, Retrospect • How to share • Escalation • Communication • Investigation of Impact • Provisional / Permanent Measures • Retrospective Solve by systematization as much as possible Rakuten Shugi Hypothesize → Practice → Validate → Shikumika

Slide 30

Slide 30 text

Summary

Slide 31

Slide 31 text

31 Summary I grew up in both management and engineering. Looking back, having core values has helped me advance my career. Creating a team that values "Ownership" Face the product with “User First” “Fail Smart” systemization and challenges Team Growth Own Growth

Slide 32

Slide 32 text

Thank you for your listening!

Slide 33

Slide 33 text

No content