Sau hơn 3 năm học tập và làm việc tại Đại học công nghệ thông tin UIT, em đãquyết định đăng ký chương trình Momo Talent với mong muốn được trải nghiệm môi trườnglàm việc của một trong nh
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
Thực tập sinh: Phan Duy Đức - 18520621
TP Hồ Chí Minh, tháng 06 năm 2022
11
Trang 2LỜI MỞ ĐẦU
Ngày nay, với tốc độ phát triển như vũ bão của internet, các công nghệ và dịch vụ mớiliên tiếp ra đời hướng đến nâng cao trải nghiệm của người dùng Ngành kinh tế hiện đại như tàichính-ngân hàng cũng không nằm ngoài xu thế này Các ứng dụng của công nghệ thông tinđược ví như những con sóng mới, làm thay đổi toàn bộ hệ thống mô thức cung ứng và vận hànhcủa các dịch vụ tài chính đã có từ hàng trăm năm nay Từ đó, các công ty, startup Fintech liêntiếp ra đời, trở thành đại diện tiêu biểu cho cuộc các mạng kỹ thuật số, được đồn đoán là có thểthay đổi hoàn toàn phương thức kinh doanh của ngành ngân hàng
Nổi bật nhất trong số đó có thể kể đến Momo, là một nền tảng ví điện tử do Công ty Cổphần Dịch vụ Di động Trực tuyến (M_Service) phát triển cho phép người dùng thực hiện cácthanh toán, giao dịch trên các thiết bị di động Bằng việc hợp tác với hơn 90% ngân hàng tạiViệt Nam cùng 10.000 thương nhân trong nước, công ty này nắm giữ hơn 80% thị phần tronglĩnh vực thanh toán kỹ thuật số.Tính đến năm 2022, ví điện tử MoMo có hơn 31 triệu ngườidùng sử dụng
Sự phát triển và mở rộng vượt bật của Momo kéo theo nhu cầu về nguồn nhân lực đểđảm bảo cho việc phát triển và duy trì các dự án Các cuộc tuyển mộ nhân lực, đặc biệt là nguồnnhân lực trẻ liên tiếp được đội ngũ nhân sự của M_service tổ chức để tìm kiếm các ứng cử viênphù hợp Sau hơn 3 năm học tập và làm việc tại Đại học công nghệ thông tin (UIT), em đãquyết định đăng ký chương trình Momo Talent với mong muốn được trải nghiệm môi trườnglàm việc của một trong những “kỳ lân" công nghệ hàng đầu Việt Nam, đồng thời học hỏi thêmkinh nghiệm trong việc phát triển sản phẩm trong các dự án thực tế
22
Trang 3Cũng xin cảm ơn thầy cô trong khoa Công nghệ phần mềm đã nhiệt tình hỗ trợ, tạo điềukiện em làm bài báo cáo này.
Phan Duy ĐứcTpHCM, 14/06/2022
33
Trang 4NHẬN XÉT CỦA KHOA
44
Trang 5MỤC LỤC
55
Trang 7Chương 1: Giới thiệu công ty thực tập
77
Trang 101010
Trang 11MoMo là một nền tảng ví điện tử do Công ty Cổ phần Dịch vụ Di động Trực tuyến(M_Service) phát triển cho phép người dùng thực hiện các thanh toán, giao dịch trêncác thiết bị di động Bằng việc hợp tác với hơn 90% ngân hàng tại Việt Nam cùng10.000 thương nhân trong nước, công ty này nắm giữ hơn 80% thị phần trong lĩnhvực thanh toán kỹ thuật số Tính đến năm 2022, ví điện tử MoMo có hơn 31 triệungười dùng sử dụng.
MoMo cho phép người dùng thanh toán hơn 500 dịch vụ khác nhau bao gồm hóa đơnđiện, nước, internet, phí chung cư, nạp tiền điện thoại, đặt vé máy bay, vé tàu, vé xe,đặt phòng khách sạn, mua đồ ăn, thức uống, thanh toán cà phê, đổ xăng, mua sắmcùng các dịch vụ tài chính như ngân hàng, bảo hiểm Bên cạnh đó, ứng dụng còn tíchhợp chức năng tích điểm thưởng, đổi điểm thưởng lấy voucher mua sắm, nuôi heođất hoàn tiền hoặc quyên góp cho các hoạt động thiện nguyện Cuối năm 2020,MoMo ra mắt tính năng "du lịch, đi lại"
Ngoài ra, MoMo là ứng dụng thanh toán di động đầu tiên của Việt Nam tích hợpcông nghệ "One Touch Payment", cho phép khách hàng thực hiện giao dịch thôngqua một lần chạm màn hình
1111
Trang 121212
Trang 15Chương 2: Nội dung thực tập
1515
Trang 16Tham gia vào chương trình Momo Talent với vai trò là một ITC Trainee, em đã được họcrất nhiều kiến thức về công nghệ cũng như quy trình trong việc phát triển các dự án và sảnphẩm thật đến tay người dùng
1616
Trang 171 Tìm hiểu công ty và các kỹ năng cơ bản trong công ty
1717
Trang 18Thời gian : 1 ngày
1818
Trang 19Nội dung : Giới thiệu về công ty, cách tổ chức của công ty
1919
Trang 20Được nghe người phụ trách giới thiệu về công ty, quá trình thành lập và phát triên(như đã nhắc đến ở trên), quy trình làm việc từ cao xuống thấp, cách thức tổ chức củacông ty
2020
Trang 21Ngoài ra, thực tập sinh còn được giới thiệu về cách thức làm việc trong công tynhư thời gian đi làm, các quy định cần phải tuân thủ, cách sử dụng email trong côngviệc…
2121
Trang 22Kết quả : Hiểu thêm về công ty M_Service, quá trình thành lập và phát triển Có thêm
các kỹ năng về việc sử dụng email trong công việc, làm việc có kế hoạch, có kỷ luật, cótrách nhiệm hơn
2222
Trang 232 Nghiên cứu kỹ thuật
2323
Trang 242.1 Các công cụ làm việc
2424
Trang 25Thời gian : 1 tuần
2525
Trang 26Nội dung : Tìm hiểu về các công cụ sẽ được sử dụng trong quá trình làm việc.
2626
Trang 27Trong thời gian này, live manager đã hướng dẫn thực tập sinh tìm hiểu về cáccông cụ sẽ giúp ích cho trong công việc sau này
2727
Trang 28Các công cụ cần thiết trong việc phát triển sản phẩm bao gồm:
- Visual Studio Code: Text editor được sử dụng chính trong quá trình phát
- NodeJS, NVM, Yarn: Các công cụ quản lý package
- Momo development, staging engine: Các engine sử dụng để dev, debug
- Git, Gitlab, CI/CD: Công cụ quản lý source code, deploy, integration
- Xcode, Iphone Simulator, Android Studio, Android Emulator: Các IDE vàmáy ảo phục vụ cho việc dev, debug sản phẩm
2828
Trang 29Thực hiện : Học lý thuyết và ứng dụng các công cụ trên
2929
Trang 30Kết quả : Có thể sử dụng và kết hợp các công cụ kể trên
3030
Trang 312.2 Tìm hiểu ngôn ngữ TypeScript và React Native framework
3131
Trang 32Thời gian : 2 tuần
3232
Trang 33Nội dung :
- Được training về cách sử dụng TypeScript trong việc viết code, cách hạn chếcrash bằng việc sử dụng thư viện lodash - safeGet kết hợp với type-interface trongTS
Thực hiện :
3333
Trang 34- Sử dụng Type Script trong dự án Commit và được review code bởi live manager
và các thành viên trong team
Kết quả :
3434
Trang 35- Có thể sử dụng Type Script một cách cơ bản
3535
Trang 36- Có thể ứng dụng Type Script cũng với lodash để hạn chế crash của một ứng dụng,giúp nâng cao trải nghiệm người dùng
3636
Trang 382.3 Sử dụng React Native framework
3838
Trang 39Nội dung: Các kiến thức cơ bản về React Native để có thể phát triển một ứng dụng di
động cơ bản:
3939
Trang 40- React Native là gì ?
4040
Trang 41React native là một công cụ giúp chúng ta lập trình đa nền tảng để tạo ra các ứngdụng trên môi trường native Nó là một framework mã nguồn mở được phát triểnbởi Facebook, cho phép bạn sử dụng Java script để phát triển phần mềm trên điệnthoại di động Android và IOS React native cũng giống như React vậy chúng sửdụng các native components thay vì các web components Vì vậy để hiểu về cấutrúc của React native chúng ta cần phải có các kiến thức cơ bản với các khái niệm
cơ bản của React như là JSX, components, props hay là state
4141
Trang 43- Component:
4343
Trang 44Components là một khái niệm cơ bản của cả React và React native Chính việcchia nhỏ ứng dụng thành các components nhỏ tạo nên tính tái sử dụng cao và khảnăng mở rộng của chúng.
4444
Trang 45- Props
4545
Trang 46Props là viết tắt của Properties Một điều mà bạn cần phải nhớ khi sử dụng props
đó là không bao giờ nên thay đổi giá trị của nó, hay nói cách khác, đây là một dữliệu immutable Các component nhận props từ component cha Bạn không đượcthay đổi giá trị của props trong các component này mà chỉ được phép đọc giá trị rathôi Trong React thì dữ liệu sẽ đi theo một chiều, có nghĩa là từ component cha
=> các component con
4646
Trang 48- State
4848
Trang 49State thì hoạt động khác với Props State là dữ liệu nội bộ của một Component,trong khi props là dữ liệu được truyền cho Component Chính vì vậy chúng tahoàn toàn có thể thay đổi state, và coi nó là một kiểu dữ liệu mutable Vì đặc điểmnày nên chúng ta hay sử dụng State để thay đổi dữ liệu của view, binding data lạiview khi có thay đổi Nhưng chúng ta không dùng this.state để gán lại giá trị thayđổi cho nó, mà chúng ta sẽ dùng this.setState Function này sẽ trigger cho classrằng hãy render lại component và các component con của nó, còn this.state thìkhông.
4949
Trang 51- React Lifecycle
5151
Trang 52Là vòng đời của các Component được sử sụng bên trong ứng dụng của bạn
5252
Trang 53Có thể group các phương thức lifecycle ra 3 nhóm, ứng với 4 giai đoạn củacomponent: Mounting, Updating, Unmounting, Error Handling
5353
Trang 56● Unmounting:
componentWillUnmount()
5656
Trang 58Thực hiện :
5858
Trang 59- Tự học và bổ sung các kiến thức về React Native thông qua internet và dưới sựchỉ dẫn của live manager cũng như các thành viên trong team
Kết quả :
5959
Trang 60- Nắm vững cách sử dụng framework React Native và có thể sử dụng trong dự án
6060
Trang 622.4 Phát triển ứng dụng trên nền tảng Momo platform
Nội dung : Momoplatform cung cấp các công cụ hỗ trợ lập trình viên trong quá trình
phát triển ứng dụng
- Platform engine
- Web admin
- Momo core pakage
- Kiến trúc Momo platform - mini app
Trang 632.5 Tham gia các buổi training kỹ năng mềm
- Problem solving - Critical Thinking
- Project management
6363
Trang 642.6 Thực hiện project
6464
Trang 651 Dự án Phát tâm công đức
○ Các công việc đã thực hiện:
■ Cải tiến thông tin Phật tử
■ Thêm chức năng An viên tu tập
■ Cải tiến An Viên tu tập
■ Gắn Cornerstone cho HomeBanner
■ Hotfix Home Scroll
■ Chỉnh sửa, thêm tracking cho mini-app
■ Thêm chức năng Đề xuất công đức
○ Các kỹ năng đã học được:
■ Quy trình CI/CD
■ Kiến trúc Momo platform-mini app
■ JavaScript (async, callback, debounce function, )
■ React (reducers, hooks, )
■ Quy trình Agile-Scrum, flow làm việc giữa Frontend
Product-Backend-■ Detox (automation testing framework)
6565
Trang 662 Dự án Creditcard - Thẻ tín dụng
○ Các công việc đã thực hiện:
■ Thêm màn hình Onboarding Screen
■ Tích hợp API CheckStatus
■ Khởi tạo, thêm các màn hình Register Application Form (Step 3)
1-2-■ Thêm các màn hình UI của mini app (home, card list, )
■ Tạo các entrypoint để truy cập từ các mini-app khác(ref Id)
■ Thêm performance tracing cho mini-app
■ Tích hợp API Get application step
■ Update lại UI mới theo yêu cầu của product
■ Cải thiện performance cho mini-app (sử dụng cache và kỹ thuật offline-first)
○ Các kỹ năng đã học được:
■ TypeScript
■ Eslint
■ Hiện thực pattern MVVM (Model - View - ViewModel)
■ Cleancode, structure folder
■ Optimize performance: useCallback, useMemoizCallBack, offline first cache,
■ Quy trình khởi tạo mini app
■ Cách handle exception (sử dụng lodash, model, )
■ Cách sử dụng mocking system để tăng năng suất
6666
Trang 673 Dự án Fast Money - Vay nhanh
○ Các công việc đã thực hiện:
■ Refactor mini-app sang sử dụng ngôn ngữ TypeScript
■ Cải thiện performance
■ Thêm tracking cho mini-app
○ Các kỹ năng đã học được:
■ Cách refactor và maintain 1 dự án
■ React class component
6767
Trang 684 Dự án DNA-FS lib
○ Các công việc đã thực hiện:
■ Đóng góp (commit) vào FSBaseScreen
■ Đóng góp (commit) vào Component, Utils (OnboardingSlider, StringUtils, )
■ Viết TypeScript converting process document
■ Khởi tạo Fs Library Example Mini app
○ Các kỹ năng đã học được:
■ Cách sử dụng và maintain một thư viện trên NPM
6868
Trang 703 Lịch làm việc
Tháng Công việc Người hướng dẫn
Mức độ hoàn thành
Nhận xét của người hướng dẫn
1 Maintain và phát triển
dự án Phát tâm côngđức
Anh Nguyễn TrầnHoài Trung, anh
- Maintain dự ánFastmoney
Trang 72TỔNG KẾT
Sau 6 tháng Momo, em đã may mắn được tham gia vào các dự án thực tế (4 dự án) chứ không chỉ là các project mẫu Quá trình học hỏi và làm việc tại công ty dù có hơi áp lực nhưng đã đem lại cho em rất nhiều kiến thức, tư duy, kinh nghiệm cả về quá trình thực hiện dự án lẫn trong cách làm việc và giao tiếp
Chân thành cảm ơn sự giúp đỡ của anh Trung, anh Thành cũng như các thành viên của DNA team, chị Quyên, và công ty M_Service đã tạo môi trường và giúp đỡ cho em trong suốt quá trình thực tập
Cảm ơn khoa CNPM đã tạo điều kiện cho em hoàn thành bài báo cáo này
Phan Duy Đức
7272