Đinh Gia Kiệt Đặng Duy Bằng 19521234 TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA CÔNG NGHỆ PHẦN MỀM BÁO CÁO THỰC TẬP MOBILE DEVELOPER Công ty thực tập Công ty TNHH Vitalify Asia Người phụ trách Đinh Gia K[.]
Trang 1KHOA CÔNG NGHỆ PHẦN MỀM
BÁO CÁO THỰC TẬP
MOBILE DEVELOPER
Công ty thực tập : Công ty TNHH Vitalify Asia
Người phụ trách : Đinh Gia Kiệt
Mã số sinh viên : 19521234
Trang 2Đinh Gia Kiệt Đặng Duy Bằng - 19521234
LỜI MỞ ĐẦU
Thời đại công nghệ và Internet bùng nổ đã giúp cho các thiết bị di động được
đà phát triển như “vũ bão” Điều này đã tạo ra môi trường thuận lợi cho sự phát triển rầm rộ của các ứng dụng trên di động Những ứng dụng di động quen thuộc mà bạn
sử dụng hàng ngày như Facebook, Instagram, Grab, được tạo ra bởi Mobile
Developer hay được hiểu đơn giản là một nhà phát triển ứng dụng di động
Và cho đến ngày nay, công việc lập trình máy tính không còn quá xa lạ gì đối với những ai đang theo đuổi và làm việc trong ngành IT Tuy nhiên, công việc lập trình cho điện thoại di động cũng đang từng bước phát triển với sự tiến bộ mạnh mẽ Sau bốn năm học tập trên trường, do mong muốn có thêm kinh nghiệm, cũng như muốn được tham gia vào các dự án thực tế trong một môi trường chuyên nghiệp, đem lại các những trãi nghiệm đầu tiên trên con đường chinh phục tương lai của em
Em đã chọn công ty Vitalify Asia làm bước khởi đầu cho hành trình trở thành một Mobile Developer
Trang 3LỜI CẢM ƠN
Trân trọng gửi lời cảm ơn đến công ty Vitalify Asia đã tạo cơ hội để em được tham gia vào một môi trường làm việc quốc tế và chuyên nghiệp
Trong một thời gian ngắn đồng hành cùng công ty và các anh chị trong team trainer đã giúp em hiểu thêm về công việc trong lĩnh vực, tích luỹ được những kinh nghiệm đầu tiên và áp dụng được những kiến thức đã học vào thực tiễn Cảm ơn thời gian quý báu của anh chị đã chia sẽ và training giúp em tìm ra hướng đi trên con đường sự nghiệp của bản thân
Lời tiếp theo em muốn gởi lời cảm ơn chân thành đến trường đại học Công nghệ thông tin nói chung và khoa Công nghệ phần mềm nói riêng đã tạo cơ hội để tụi em được học hỏi và trao dồi kĩ năng cần thiết cũng như kiến thức trước khi bước vào con đường làm việc và đồng hành cùng em để hoàn thành một bản báo cáo thực tập hoàn chỉnh
Đặng Duy Bằng - 19521234 Thành phố Hồ Chí Minh, ngày 26 tháng 12 năm 2022
Trang 4Đinh Gia Kiệt Đặng Duy Bằng - 19521234
NHẬN XÉT CỦA KHOA
Trang 5
MỤC LỤC
LỜI MỞ ĐẦU 1
LỜI CẢM ƠN 2
NHẬN XÉT CỦA KHOA 3
MỤC LỤC 4
CHƯƠNG 1 GIỚI THIỆU CÔNG TY THỰC TẬP 6
1.1 - GIỚI THIỆU VỀ CÔNG TY TNHHVITALIFY ASIA 6
1.2 - MÔI TRƯỜNG, VĂN HOÁ CON NGƯỜI VÀ KINH NGHIỆM LÀM VIỆC 6
1.3 - GIỚI THIỆU VỀ CÁC DỰ ÁN CỦA CÔNG TY 6
1.4 - QUY TRÌNH LÀM VIỆC CỦA CÔNG TY 7
1.5 - SƠ ĐỒ THỰC HIỆN VÀ PHÁT TRIỂN DỰ ÁN 8
CHƯƠNG 2 NỘI DUNG THỰC TẬP 9
2.1-TÌM HIỂU VỀ CÁC VỊ TRÍ, VAI TRÒ VÀ CÁC KỸ NĂNG CƠ BẢN TRONG CÔNG TY 9
2.2 - TÌM HIỂU NGHIÊN CỨU CÔNG NGHỆ VÀ CẤU TRÚC DỰ ÁN 9
2.3 - THAM GIA DỰ ÁN 10
2.4 - QUÁ TRÌNH THỰC TẬP VÀ THỰC HIỆN CÔNG VIỆC 10
CHƯƠNG 3 TỔNG KẾT 15
Trang 6Đinh Gia Kiệt Đặng Duy Bằng - 19521234
DANH MỤC TỪ VIẾT TẮT
IDE Integrated Development Environment
Trang 7Chương 1 Giới thiệu công ty thực tập
1.1 Giới thiệu về Công ty TNHH Vitalify Asia
Vitalify Asia là công ty phát triển offshore của Nhật Bản được thành lập vào năm 2008, phát triển ứng dụng, phần mềm có trụ sở chính ở Tokyo Vitalify Asia có thể mạnh về phát triển các dịch vụ hướng về người dùng hoặc phát triển cho các thiết
bị thông minh Với 90% khách hàng là công ty Nhật Bản, các thành viên của Vitalify luôn có cơ hội tham gia vào các dịch vụ CNTT mới nhất tại Nhật Bản Hiện diện tại Việt Nam, với những nỗ lực không ngừng, Vitalify góp phần nâng cao năng lực nhân
sự IT tại đây
Là thành viên chính thức trực thuộc bộ phận IT của Hiệp hội doanh nghiệp Nhật Bản tại Hồ Chí Minh, Vitalify đem đến cho khách hàng những dịch vụ công nghệ thông tin như:
− Lập trình Website
− Thương mại điện tử
− Ứng dụng phần mềm
− Ứng dụng di động
1.2 Môi trường, văn hoá con người và kinh nghiệm làm việc
Với đội ngũ kỹ sư có gần 100 người, Vitalify Asia tạo ra môi trường làm việc quốc tế và thân thiện với các chuyên gia Nhật Bản gần gũi, hoà đồng cùng các đồng nghiệp chân thành cởi mở luôn mang lại cảm giác tự tin thúc đẩy tinh thần làm việc, tạo điều kiện sáng tạo và phát huy năng lực bản thân
Về kinh nghiệm làm việc, công ty đã có:
− 9 năm kinh nghiệm trong lĩnh vực điện thoại thông minh tại Việt Nam
− Văn phòng của công ty ở France Villa
− Có hơn 100 kỹ sư Việt Nam
− 5 nhân viên người Nhật tại thành phố Hồ Chí Minh
− 30 nhân viên Nhật Bản tại Tokyo, Nhật Bản
− 17 nhân viên người Việt Nam tại Tokyo, Nhật Bản
− Đã phát triển hơn 200 ứng dụng giải trí / dịch vụ cho Nhật Bản
− Công ty Vitalify Aisia nhắm đến thị trường giải trí Việt Nam từ năm 2016
1.3 Giới thiệu về các dự án của công ty
− Outsource trên nhiều ngôn ngữ lập trình và framework (Nodejs, Javasript, Php, Ruby, Java, Python, Swift, Kotlin , Flutter, React-Native, ReactJS, VueJS,…)
− Phát triển Game bằng Unity
− Phát triển sản phẩm liên quan đến AI
Trang 8Đinh Gia Kiệt Đặng Duy Bằng - 19521234
1.4 Quy trình làm việc của công ty
Sprint length 1 đến 2 tuần phụ thuộc vào từng dự án
Daily report send time Báo cáo tiến độ làm việc với BPM vào thời
điểm cuối của mỗi ngày làm việc đó
Sprint retrospective Thời gian linh hoạt sau khi hoàn thành giai
đoạn Internal weekly meeting 1 Code review
2 Sprint review
3 Sprint retrospective
4 Estimate schedule for next sprint
1.5 Quy trình nhận task và thực hiện của developer và BPM
− BPM sẽ tạo ticket cho Dev với trạng thái ban đầu là “Open”
− Dev nhận ticket, điền thời gian ước tính cần thiết để hoàn thành và chuyển task
từ “Open” sang “In Progress” để bắt đầu công việc
− Sau khi thực hiện hiện xong, Dev sẽ tạo PR (nếu có) và viết mô tả đẩy đủ bao gồm (vấn đề, nguyên nhân, giải pháp) sau đó sẽ chuyển ticket về trạng thái
“Wait for review” cho Dev Leader
− Dev sẽ assign các thành viên trong team Dev còn lại vào review ticket
− Sau khi Dev Leader đã review xong sẽ chuyển trạng thái ticket về “In Testing” cho BPM để kiểm tra và test
− Nếu không còn vấn đề gì nữa, BPM sẽ chuyển ticket về trạng thái “Resolved”, sau đó “Closed” ticket
Trang 91.6 Sơ đồ thực hiện và phát triển dự án
Trang 10Đinh Gia Kiệt Đặng Duy Bằng - 19521234
Chương 2 Nội dung thực tập
2.1 Tìm hiểu về các vị trí, vai trò và các kỹ năng cơ bản trong công ty
− PM (Project Manager): Project Manager hay được gọi tắt là PM, là người
được công ty chỉ định và giao nhiệm vụ quản lý các dự án, chịu trách nhiệm lên kế hoạch, triển khai cho dự án đó hoàn thành các mục tiêu ban đầu Sau đó
uỷ quyền cho một team dưới sẽ quản lý quy trình làm việc của BPM
− BPM (Bridge Project Manager): Là người thay mặt PM quản lý quy trình
làm việc của một team dev, là người trực tiếp trao đổi với khách hàng để hiểu
rõ về dự án, nắm bắt thông tin và yêu cầu của dự án, sau đó làm tài liệu đặc tả chi tiết và tổ chức họp phân chia công việc cho các thành viên trong team dev
− Dev Leader (Developer Leader): Là người chịu trách nhiệm quản lý source
code mà merge code sau khi các thành viên trong team dev hoàn thành công việc, ngoài ra sẽ cùng các thành viên còn lại review để mỗi người đều có thể nắm rõ được cấu trúc của source code trong dự án
− Dev (Developer): một team dev sẽ có từ 2 từ 5 thành viên sẽ dựa trên tài liệu
đặc tả được tạo và thực hiện các nhiệm vụ do BPM giao phó
2.2 Tìm hiểu nghiên cứu công nghệ và cấu trúc dự án
2.2.1 Atomic Design
Atomic Design là Một phương pháp thiết kế giao diện mà Designer sẽ ưu tiên thực hiện thiết kế các thành phần riêng lẻ và kết hợp chúng lại với nhau, thay vì thiết kế cả trang
Trong Atomic Design: giao diện được chia thành 5 phần:
− Atoms
− Molecules
− Organisms
− Templates
− Pages
2.2.2 TypeScript
TypeScript là một dự án mã nguồn mở được phát triển bởi Microsoft, được xem là phiên bản nâng cao của JavaScript Vì nó được bổ sung tùy chọn kiểu tĩnh và các lớp hướng đối tượng, nó bao hàm cả ECMAScript 2015 (ES6) TypeScript thừa hưởng cú pháp của JavaScript, vì vậy các lập trình viên có thể tiếp cận dễ dàng khi đã có các kiến thức cơ bản về JavaScript
Ưu điểm:
− Là mã nguồn mở,
− Dễ dàng phát triển dự án lớn,
− Hỗ trợ các tính năng mới nhất của Javascript,
− Hỗ trợ OOP mạnh,
− Cách tổ chức code dễ dàng,
− Nhiều framework lựa chọn
Nhược điểm:
Trang 11− Mã cồng kềnh,
− Thêm bước bổ sung, biên dịch,
− Có thêm các cú pháp riêng
2.2.3 React Native
React Native được phát triển bởi Facebook với mục đính ban đầu là áp dụng vào mạng xã hội lớn nhất hành tinh: Facebook Do đặc tính công nghệ của mạng xã hội, Facebook cần phải tạo ra nền tảng phát triển ứng dụng di động đa nền tảng có hiệu năng không thua kém so với ứng dụng được phát triển độc lập cho từng nền tảng React Native hiện tại chỉ hỗ trợ phát triển ứng dụng di động
hệ điều hành Android và iOS, ít hơn so với Ionic (Android, iOS, Windows Phone)
React Native tạo ra ứng dụng native chứ không phải hybrid app như ionic, Với 100% Native UI, React Native tạo nên sự “mượt mà” trong việc render UI và xóa nhòa khoảng cách về hiệu năng giữa ứng dụng đa nền tảng so với ứng dụng độc lập nền tảng
2.3 Tham gia dự án
Tháng đầu tiên sẽ được training về các quy tình làm việc của công ty, giới thiệu các team các dự án, và rule làm việc tại công ty, ngoài ra sẽ traning về các công nghệ
mà dự án đang thực hiện để nắm rõ tổng quan dự án, tham gia đọc và tìm hiểu cấu trúc soure code để làm quen với quy trình và cách thức tổ chức công việc
Từ tháng thứ hai trở đi, bắt đầu nhận các task liên quan đến dự án thực tế, tham gia họp tvà thảo luận với team để cùng nhau đưa ra giải pháp phù hợp và phia chia công việc phù hợp với năng lực Chi tiết quá trình thực hiện sẽ được nêu rõ ở phần sau
2.4 Quá trình thực tập và thực hiện công việc
Giai đoạn 1 (07/20222 -> 08/2022): Tham gia dự án đầu tiên, tìm hiểu công
nghệ, học hỏi quy trình và cách làm việc của công ty
- Ngôn ngữ lập trình: Typescript, Javascript
- IDE: Visual code
- Framework: React Native
25/07/2022 (Mon) Get to know the members
Clone source code run emulator
Buld failed on emulator
26/07/2022 (Tue)
Run on devices [USER DETAIL] [CONTACT]
Build draft UI
Clone project error
27/07/2022 (Wed)
Start first task: [USER DETAIL]
[CONTACT] Build
None
Trang 12Đinh Gia Kiệt Đặng Duy Bằng - 19521234
app Learn atomic design, Mobx,
28/07/2022 (Thu)
Completed build UI user contact table
New task: load data to table user contact
Logic and re build UI User Info Detail Contact
Query from database
29/07/2022 (Fri)
Adjust UI User Contact Screen Load data from local data to User contact table: doing
Code unclear, lengthy
1/08/2022 (Mon)
Load data into table user and family contact
Adjust UI user contact screen Buid top info UI in user contact screen
None
2/08/2022 (Tue)
Continue Load data header info user contact
Handle optimal code: Pending
None
3/08/2022 (Wed)
Load data header info user contact:
Done Handle optimal code: Done Update UI
fix logic code change to text from /atom fix conflict
None
4/08/2022 (Thu)
Fix yesterday's conflict test sreen on android and ios fix layout and error userPhoto fix phone call on ios
completed User Detail Contact Screen
None
5/08/2022 (Fri)
Create AddUnScheduleScreen Select User Screen
Handle navigate to AddScheduleVPScreen Fix conflict
None
8/08/2022 (Mon)
Read test case Test on real device (android) Record video
Find bug and list on exel rely on
None
Trang 13Test case (Check in, Check out, leave note, signature)
9/08/2022 (Tue)
Improve UI User Contact Detail Test on android device
Test rely test case Elapsed record report and note
None
10/08/2022 (Wed)
Fix UI (handle invalid data)
Re logic handle data UserFamilyContact Fix render data if previous data is empty
Test double elapsed record
None
11/08/2022 (Thu) Fix bug screen User contact
Test
None
12/08/2022 (Fri) Test Register Order
Test Vital
None
15/08/2022 (Mon)
Improve footer UI Change animation for popup smoothy
Smoothy Model animation
16/08/2022 (Tue)
Adjust loading LoginScreen and handle lag on android Synchronize animation popups and modals
Interact slowly when
press button
17/08/2022 (Wed)
Handle loading show staffmodel in loginscreenbyusernamescreen Create common modal component Build and test on android device Fix conflict
None
18/08/2022 (Thu)
Handle navigate to user contact from ShiftInfo (65%)
Fix padding UserListScreen and VPSelectUserScreen
Disappear when load data after new query
19/08/2022 (Fri)
Handle navigato user contact fro shiftInfo: Done
Fix color and pading UI Fix conflict Modal coponent
None
Trang 14Đinh Gia Kiệt Đặng Duy Bằng - 19521234
Change color for background userInfo
Fix layout UI familyTable Fix conflict
Fix animationIn for loading screen
24/08/2022 (Wed) Improve scrollbar
Fix loading userContact
None
Giai đoạn 2 (08/20222 -> 09/2022): Học công nghệ mới, ngôn ngữ mới, đánh
giá khả năng học hỏi, tốc độ tiếp thu kiến thức
- Ngôn ngữ lập trình: Objective-C
- IDE: Xcode
25/08/2022 – 02/09/2022 Implementing Views
− Displaying Alerts with UIAlertView
− Creating and Using Switches with UISwitch
− Customizing the UISwitch
− Picking Values with the UIPickerView
− Picking the Date and Time with UIDatePicker
− Implementing Range Pickers with UISlider
− Customizing the UISlider 05/09/2022 – 16/09/2022 Implementing Controllers
− Grouping Compact Options with UISegmentedControl
− Presenting and Managing Views with UIViewController
− Presenting Sharing Options with UIActivityViewController
− Presenting Custom Sharing Options with UIActivityViewController
− Implementing Navigation with UINavigationController
− Manipulating a Navigation Controller’s Array
of View Controllers
− Displaying an Image on a Navigation Bar
− Adding Buttons to Navigation Bars Using UIBarButtonItem
− Presenting Multiple View Controllers with UITabBarController
19/09/2022 – 23/09/2022 Creating Dynamic and Interactive User Interfaces
− Adding Gravity to Your UI Components
Trang 15− Detecting and Reacting to Collisions Between
UI Components
− Animating Your UI Components with a Push
− Attaching Multiple Dynamic Items to Each Other
− Adding a Dynamic Snap Effect to Your UI Components
− Assigning Characteristics to Your Dynamic Effects
Giai đoạn 3 (09/20222 -> 10/2022): Chuyển qua dự án tiếp theo để hỗ trợ
mọi người phát triển, maintain ứng dụng di động, tiếp tục thực hiện các tasks được giao theo yêu cầu của dự án
Trang 16Đinh Gia Kiệt Đặng Duy Bằng - 19521234
Chương 3 Tổng kết
Như vậy, đã kết thúc 3 tháng thực tập tại công ty, lời đầu tiên em xin chân thành gửi lời cảm ơn đến trường đại học Công nghệ thông tin đã tạo cơ hội để tụi em có được những cơ hội để tiếp cận với thế giới bên ngoài, được tham gia vào dự án thực
tế, biết được năng lực và đam mê của bản thân đã giúp em có thêm những kinh nghiệm đầu tiên trong hành trình sự nghiệp của mình
Ngoài ra, em cũng muốn dành lời cảm ơn công ty Vitalify Asia đã tạo điều kiện cho em cũng như các bạn cùng trang lứa có một môi trường thực tập thật tốt, cảm ơn
sự giúp đỡ của anh chị trong team trainer đã dành thời gian quý báu của mình để nâng
đỡ các đàn em, giúp em hiểu được quy trình làm việc, cách làm việc cá nhân cũng như làm việc nhóm sao cho hiệu quả