báo cáo thực tập ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN BÁO CÁO THỰC TẬP LẬP TRÌNH ỨNG DỤNG NGÂN HÀNG SỐ Công ty thực tập CÔNG TY TNHH KỸ THUẬT SỐ TYME Người phụ trá[.]
ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN BÁO CÁO THỰC TẬP LẬP TRÌNH ỨNG DỤNG NGÂN HÀNG SỐ Cơng ty thực tập : CÔNG TY TNHH KỸ THUẬT SỐ TYME Người phụ trách : Anh Nguyễn Thế Hiền Thực tập sinh : Lê Đức Trung Tp Hồ Chí Minh, 12/2022 LỜI MỞ ĐẦU Ngày nay, ngành công nghệ thông tin hay cụ thể lập trình ứng dụng di động giai đoạn phát triển vũ bão giới Lập trình ứng dụng di động đã, vấn đề thiếu cơng ty Ngành lập trình ứng dụng di động sinh nhu cầu sử dụng thiết bị điện thoại thông minh người ngày tăng cao Mọi hoạt động từ thương mại điện thoại, game, hay hoạt động kỹ thuật điện thoại hóa, giúp người dùng có khả sử dụng phần mềm tiện ích lúc nơi mà không cần phụ thuộc nhiều vào thiết bị cồng kềnh laptop hay máy tính bàn Một vài cơng ty cơng nghệ lớn áp dụng thành công ứng dụng di động vào thực tiễn kể đến như: Tiki, Shopee, Gojek, … Đây lý khiến cho nhu cầu tuyển dụng ngành trở nên to lớn Và lý khiến em định chọn lập trình ứng dụng di động làm định hướng cho việc học tập Do xác định rõ đường chọn nên trình học tập trường, em có định hướng trở thành lập trình viên ứng dụng di động, em đăng ký học mơn nhập mơn lập trình di động, lập trình ứng dụng di động, ngơn ngữ lập trình java, phát triển ứng dụng di động thiết bị di động Sau ba năm học tập trường, mong muốn có thêm kinh nghiệm thực tế, muốn tham gia lập trình ứng dụng môi trường chuyên nghiệp, làm quen với anh chị chí hướng để phát triển nhiều lĩnh vực lập trình ứng dụng di động, em định đăng ký môn thực tập doanh nghiệp em may mắn đồng hành TYME q trình hồn thành mơn học Lê Đức Trung LỜI CẢM ƠN Em xin trân trọng gửi lời cảm ơn sâu sắc đến Công ty TRÁCH NHIỆM HỮU HẠN KỸ THUẬT SỐ TYME tạo điều kiện cho em có hội học tập, làm việc trải nghiệm Công ty khoảng thời gian tháng vừa qua Nhờ dẫn nhiệt tình anh Hiền mentor anh chị trainer mobile community mà tháng qua em tiếp thu nhiều kiến thức thú vị bổ ích để biết quy trình vận hành cách để tạo ứng dụng di động chuyên nghiệp Chân thành cảm ơn anh chị TYME dành thời gian, cơng sức để hướng dẫn em hồn thành đợt thực tập Em xin gửi lời cảm ơn đặc biệt đến anh Nguyễn Thế Hiền - người mentor đồng hành em thời gian vừa qua Anh cho em nhiều kiến thức, kinh nghiệm góc nhìn thực tế ngành cơng nghệ thơng tin nói chung ngành lập trình ứng dụng di động nói riêng Cảm ơn anh chị team HR team IT training phổ cập kiến thức, hỗ trợ em mặt giấy tờ thiết bị thời gian thực tập Cảm ơn anh/chị trainer bao gồm: anh Trí, anh Hiếu, anh Long, anh Đạt, anh Sơn, chị Hưng có buổi training bổ sung kiến thức vô hữu ích thực tế cho tụi em Em xin cảm ơn team Wibu đồng hành, lắng nghe bảo em, xem em thành viên thức em thực tập sinh Cuối cùng, em xin cảm ơn thầy cô khoa Công nghệ phần mềm nhiệt tình hỗ trợ, tạo điều kiện cho em hoàn thành tập lần Lê Đức Trung TP HCM, tháng 12 năm 2022 Lê Đức Trung NHẬN XÉT CỦA KHOA Lê Đức Trung MỤC LỤC LỜI MỞ ĐẦU LỜI CẢM ƠN NHẬN XÉT CỦA KHOA MỤC LỤC CHI TIẾT THỰC TẬP Chương 1: Giới thiệu Công ty thực tập Giới thiệu Công ty TYME Sản phẩm Công ty Chương 2: Nội dung thực tập Khám phá Quan sát Luyện tập Bùng nổ Lịch làm việc Chương 3: Chi tiết ý tưởng trình bày cuối khóa - Dynamic In App Text With Firebase Remote Config Vấn đề đặt Giới thiệu Firebase Remote Config Các bước thực Kết 6 8 10 11 11 TÀI LIỆU THAM KHẢO 14 TỔNG KẾT 15 Lê Đức Trung 12 12 12 13 13 CHI TIẾT THỰC TẬP Chương 1: Giới thiệu Công ty thực tập Giới thiệu Công ty TYME Tyme tập đoàn ngân hàng kỹ thuật số phát triển nhanh giới, xây dựng ngân hàng công nghệ cao tiếp xúc nhiều thị trường phát triển nhanh với Trụ sở Singapore Trung tâm Phát triển Sản phẩm & Công nghệ Việt Nam Tyme thiết kế, xây dựng thương mại hóa ngân hàng kỹ thuật số cho thị trường nổi, với chuyên mơn đặc biệt việc phục vụ nhóm dân cư chưa phục vụ đầy đủ chưa tiếp cận với ngân hàng Tyme sở hữu tảng cơng nghệ tài sản trí tuệ tồn cầu, đồng thời hợp tác với đối tác ngân hàng cơng nghệ tài nước để mắt ngân hàng kỹ thuật số Được thành lập vào năm 2016, Tyme Việt Nam Trung tâm Phát triển & Cơng nghệ Tập đồn Tyme, tập hợp người làm kỹ thuật sản phẩm, người có chung sứ mệnh tồn cầu trở thành người xây dựng ngân hàng nối tiếp, định hình tương lai ngân hàng thông qua công nghệ Website: https://vietnam.tyme.com Địa chỉ: Tòa nhà HIU, 215 Điện Biên Phủ, Phường 15, Quận Bình Thạnh, Thành phố Hồ Chí Minh Thời gian làm việc: Thứ - thứ 6: 09h - 18h Lê Đức Trung Sản phẩm Công ty Tyme tự hào xây dựng cung cấp dịch vụ ngân hàng hai quốc gia – Nam Phi Philippines: - - TymeBank, có trụ sở Nam Phi, ngân hàng kỹ thuật số phát triển nhanh giới, với triệu khách hàng kể từ mắt vào tháng năm 2019 - Website: https://www.tymebank.co.za/ GOTyme có trụ sở Philippines, liên doanh Tập đồn Gokongwei Tập đồn Tyme có kế hoạch mắt vào năm 2022 - Website: https://www.gotyme.com.ph/ Lê Đức Trung Chương 2: Nội dung thực tập Khám phá Thời gian: tuần Nội dung: Tìm hiểu văn hóa, cách vận hành Cơng ty ● Được training Cơng ty bao gồm: văn hóa làm việc, cách vận hành, tổ chức, trình thành lập, phát triển, quy trình làm việc Cơng ty, … ● Ngoài ra, thực tập sinh phải hoàn thành khóa học bắt buộc bảo mật thơng tin, công cụ phần mềm sử dụng Công ty, bao gồm: ○ Hibob: Công cụ quản lý thời gian làm việc, nghỉ phép, thông tin nhân viên, … ○ Slack: Công cụ trao đổi thông tin, nhắn tin, đàm thoại dành riêng cho thành viên Công ty ○ Jira: Công cụ quản lý công việc team thành viên team ○ Confluence: Công cụ quản lý thông tin tài liệu Công ty ○ Bitbucket: Công cụ quản lý source code dự án Công ty (tương tự git) Kết quả: ● Hiểu rõ Công ty Tyme, cấu tổ chức, trình thành lập phát triển ● Tiếp thu kiến thức bảo mật thông tin công cụ hỗ trợ Công ty sử dụng Hibob, Slack, Jira, Confluence, Bitbucket, … Quan sát Thời gian: tuần Nội dung: Quan sát ghi ● Quan sát thành viên team cách làm việc, văn hóa quy trình làm việc ● Tự tìm hiểu hướng dẫn, đào tạo kiến thức chuyên ngành lập trình ứng dụng di động anh mentor anh chị trainer Kết quả: Lê Đức Trung ● Được trải nghiệm thực tế mơ hình Agile, hiểu khái niệm Scum master, Sprint, Daily Meeting, Retrospective, … ● Hiểu vai trị cơng việc cụ thể vị trí khác team bao gồm: Front-end, Back-end, Quality Assurance, Business Analyst, Product Owner ● Hiểu kiến thức chuyên ngành, bao gồm: - Định nghĩa Android: Android hệ điều hành có mã nguồn mở dựa tảng Linux Google phát hành thiết kế dành cho nhà phát triển thiết bị, nhà mạng, lập trình viên tiếp cận nhanh chóng, điều chỉnh tự mã nguồn mở Hiện hệ điều hành Android tích hợp điện thoại di động, máy tính bảng, smart tivi, smartwatch, nhiều thiết bị thông minh nhà khác - Ngôn ngữ Kotlin: Kotlin ngơn ngữ lập trình tạo JetBrains, chuyên dùng để phát triển ứng dụng đa tảng thời đại xem phương pháp ứng dụng phát triển code Java Hiểu cách đơn giản, Kotlin ngôn ngữ lập trình dạng tĩnh hoạt động JVM Kotlin có khả tương thích 100% với Android trường hợp thơng thường, hoạt động liền mạch với Java để ‘lấp đầy’ nhược điểm tồn ngơn ngữ lập trình Đặc biệt mảng thư viện Những mạnh vượt trội Kotlin so với ngôn ngữ khác : ● Code ngắn gọn, cấu trúc đơn giản, trực quan, dễ tiếp cận học hỏi người Với Kotlin, lập trình viên giảm bớt nhiều đoạn code không cần thiết, giúp tiết kiệm nhiều thời gian Ovechkin ước tính, Kotlin cho phép giảm thiểu 15 - 25% độ dài code base ● Có khả biên dịch thành JVM hay Javascript bytecode ● Kotlin cho phép lập trình viên dùng thư viện toàn tảng Java, bao gồm tảng cao cấp nhờ Annotation ● Tiết kiệm chi phí dung lượng thân Kotlin mã nguồn mở ● Có khả chuyển đổi từ Java thành Kotlin cách tự động ● Dễ tiếp cận học tập người lập trình Lê Đức Trung ● Tương tác tốt: Kotlin có độ tương thích 100%, đồng thời hỗ trợ sử dụng thư viện JVM ● Công cụ làm việc thân thiện: Nhà phát triển thoải mái lựa chọn làm việc với Java IDE hay command line tùy ý - Kiến trúc ứng dụng Clean Architecture: Clean Architecture kiến trúc phần mềm thiết kế dựa Dependency Rule, đề xuất vào năm 2012 Robert C Martin Clean architecture không bị giới hạn ứng dụng mà cịn áp dụng cho hệ thống (tập ứng dụng) Đây điểm vượt trội so với MVC, MVP hay MVVM - Dependency Injection: Dependency injection (DI) kỹ thuật lập trình giúp tách class độc lập với biến phụ thuộc Với lập trình hướng đối tượng, phải làm việc với nhiều class chương trình Các class liên kết với theo mối quan hệ Dependency loại quan hệ class mà class hoạt động độc lập class lại phụ thuộc class - Kotlin Multiplatform Mobile (KMM): Kotlin Multiplatform Mobile (KMM) SDK thiết kế để làm đơn giản hoá việc tạo ứng dụng nhiều môi trường khác Nó sử dụng khả đa tảng Kotlin, bao gồm cơng cụ (tools) tính (features) khác thiết kế để cải thiện trải nghiệm xây dựng mobile cross-platform applications Luyện tập Thời gian: tuần Nội dung: Luyện tập kiến thức học từ tuần trước ● Đọc source code để biết hiểu ứng dụng Công ty cách áp dụng công nghệ vào project ● Áp dụng kiến thức tìm hiểu, training để hồn thành task giao team project thật Công ty ● Quan sát suy nghĩ chủ đề để trình bày cuối khóa với mục tiêu cải thiện way of working project Công ty Lê Đức Trung 10 Kết quả: ● Thay đổi mindset ngành lập trình ứng dụng cách để trở nên thành công ● Phát triển nhiều kỹ mềm khác để hồn thành task, ví dụ giao tiếp với đồng nghiệp team khác ● Hiểu rõ project Công ty, Android Mobile ● Hiểu rõ Firebase Remote Config - ý tưởng trình bày cuối khóa (Sẽ trình bày kỹ phần sau) Bùng nổ Thời gian: tuần Nội dung: Chuẩn bị trình bày cuối khóa ý tưởng cải thiện Cơng ty Kết quả: Trình bày trước tồn thể thành viên Cơng ty trải nghiệm q trình tháng thực tập sinh Tyme ý tưởng xây dựng đóng góp cải thiện cho Cơng ty Lịch làm việc Tuần Công việc Người hướng dẫn - Hoàn thành giấy tờ Onboarding Nhận thiết bị làm việc Tham gia training tổ chức cấu cơng ty, giá trị cốt lõi văn hóa cơng ty Chị Thủy, Chị Trang, Chị Duyên, Anh Duy, Anh Trí, Chị Quyên, Chị Tuyến - Tham gia training kiến thức chung lập trình (Git, Branching Model, …) Anh Đạt, Anh Sơn, Chị Hưng, Anh Long 3, - Tham gia training kiến thức chuyên ngành lập trình ứng dụng di động Anh Đạt, Anh Sơn, Chị Hưng, Anh Long, Anh Hiền - 12 - Thực hiện, hoàn thành task Anh Hiền Lê Đức Trung 11 giao feature team 13 - Chuẩn bị hồn thành trình bày trải nghiệm thời gian thực tập ý tưởng xây dựng đóng góp cơng ty Anh Hiền, Anh Đạt, Anh Long, Anh Sơn Chương 3: Chi tiết ý tưởng trình bày cuối khóa Dynamic In App Text With Firebase Remote Config Vấn đề đặt Trong ứng dụng Cơng ty có q nhiều tên riêng từ hardcode lặp lặp lại nhiều lần nhiều chỗ khác → Dễ bị sai sót khơng đồng chỗ sử dụng khác nhau, vi phạm nguyên tắc Single Source of Truth → Do áp dụng mơ hình Agile nên câu từ bị thay đổi thường xuyên → tốn nhiều thời gian công sức phải thay đổi → Chỉ người dùng cập nhật cập nhật mới thấy câu từ thay đổi Người dùng version cũ khơng thấy → Nếu có cố release app → dẫn đến chậm trễ build → người dùng bị bối rối content không cập nhật so sánh với cập nhật team business Giới thiệu Firebase Remote Config Khái niệm: Firebase Remote Config dịch vụ đám mây cho phép nhà phát triển thay đổi hành vi giao diện ứng dụng mà không yêu cầu người dùng tải xuống cập nhật ứng dụng Khi sử dụng Firebase Remote Config, nhà phát triển phải tạo giá trị mặc định ứng dụng để kiểm soát hành vi giao diện ứng dụng Sau đó, sau nhà phát triển sử dụng bảng điều khiển Firebase API phụ trợ Firebase Remote Config để ghi đè giá trị mặc định ứng dụng cho tất người dùng ứng dụng cho phân khúc sở người dùng bạn Ứng dụng bạn kiểm Lê Đức Trung 12 soát thời điểm áp dụng cập nhật ứng dụng thường xuyên kiểm tra cập nhật áp dụng chúng với tác động không đáng kể đến hiệu suất Cơng dụng chính: - Nhanh chóng triển khai thay đổi người dùng ứng dụng bạn - Tùy chỉnh ứng dụng bạn cho phân khúc người dùng bạn - Sử dụng Firebase Remote Config để tự động cá nhân hóa liên tục tùy chỉnh ứng dụng bạn cho người dùng tối ưu hóa cho mục tiêu chiến lược - Có thể áp dụng A/B test để cải thiện ứng dụng - Đọc document xây dựng project demo nhỏ để hiểu Firebase Remote Config Đọc source code để biết chỗ sử dụng tên riêng “Goal Save” ứng dụng Thêm DefaultKey DefaultValue file DefaultValue ứng dụng Thay đổi tất nơi hardcode tên riêng “Goal Save” ứng dụng thành lấy giá trị động từ Firebase Remote Config Viết unit-test cho hàm lấy giá trị động từ Firebase Remote Config Định nghĩa Key Value cho tên riêng “Goal Save” Firebase project Công ty - Các bước thực Kết Hoàn thành việc dynamic tên riêng cách thay đổi giá trị từ project Firebase Lê Đức Trung 13 TÀI LIỆU THAM KHẢO [1] [Online]: https://vietnam.tyme.com/ [2] [Online]: https://firebase.google.com/docs/remote-config [3] [Online]: https://www.atlassian.com/ [4] [Online]: https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html Lê Đức Trung 14 TỔNG KẾT Như vậy, sau khoảng thực tập tháng ngắn ngủi, em kịp hoàn thành ý tưởng Dynamic In App Text With Firebase Remote Config cách áp dụng học trải nghiệm thực tập Tyme Ý tưởng Công ty lắng nghe áp dụng vào project Chân thành cảm ơn giúp đỡ anh Hiền - mentor, anh chị nhóm trainer hỗ trợ team Wibu giúp em hoàn thiện ý tưởng Cảm ơn thầy giúp em hồn thành báo cáo Lê Đức Trung 15 ... tin hay cụ thể lập trình ứng dụng di động giai đoạn phát triển vũ bão giới Lập trình ứng dụng di động đã, vấn đề thiếu cơng ty Ngành lập trình ứng dụng di động sinh nhu cầu sử dụng thiết bị điện... định hướng trở thành lập trình viên ứng dụng di động, em đăng ký học mơn nhập mơn lập trình di động, lập trình ứng dụng di động, ngơn ngữ lập trình java, phát triển ứng dụng di động thiết bị di... nghiệm thực tế, muốn tham gia lập trình ứng dụng môi trường chuyên nghiệp, làm quen với anh chị chí hướng để phát triển nhiều lĩnh vực lập trình ứng dụng di động, em định đăng ký môn thực tập