Với khả năng công nghệ và tri thức vững vàng, cùng với quy trình làm việc theo tiêu chuẩn quốc tế, Beetech đã và đang phát triển mạnh mẽ, đáp ứng tốt nhất và hiệu quả nhất các yêu cầu củ
Trang 1ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH 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 INTERN IOS DEVELOPER
Công ty Beetech
GV HƯỚNG DẪN: ThS Nguyễn Tấn Toàn
SV THỰC HIỆN: Châu Đức Hiệp – 20520499
TP HỒ CHÍ MINH, 2023
Trang 2Lời cảm ơn
Trước hết, em xin gửi lời cảm ơn chân thành đến thầy Nguyễn Tấn Toàn đã hỗ trợ em hoàn thành báo cáo thực tập này Thầy đã luôn đồng hành, tận tâm chỉ dẫn và động viên em trong suốt quá trình thực tập, giúp em tiếp tục nỗ lực và hoàn thành tốt công việc được giao
Em xin chân thành cảm ơn Trường Đại học Công nghệ thông tin đã tạo điều kiện, cơ hội cho em tham gia khóa thực tập tại công ty Beetech Những kiến thức, kỹ năng đã học tập tại trường đã giúp em rất nhiều trong việc thích nghi với môi trường làm việc thực tế
Em cũng muốn bày tỏ lòng biết ơn sâu sắc đến công ty Beetech, nơi đã cho em cơ hội thực tập, trải nghiệm và học hỏi trong vị trí iOS Developer Đặc biệt, em xin gửi lời cảm ơn đến các anh chị và các đồng nghiệp đã hỗ trợ, tạo điều kiện cho em trong quá trình thực tập
Cuối cùng, em không thể không nhắc đến sự giúp đỡ và hướng dẫn tận tình của leader
và các thành viên trong team iOS Developer Sự cởi mở, thân thiện và sẵn lòng chia
sẻ kiến thức của anh chị đã giúp em nhanh chóng hòa mình vào môi trường làm việc
mới và phát triển kỹ năng chuyên môn
Trang 3Mục lục
CHƯƠNG 1 GIỚI THIỆU CHUNG VỀ CÔNG TY 1
CHƯƠNG 2 TẬP HUẤN 2
2.1 Mô tả về công việc 2
2.2 Lịch tập huấn và tham gia dự án 3
2.3 Kiến thức thu được 9
2.3.1 Tìm hiểu công ty 9
2.3.2 Nền tảng cơ bản về lập trình iOS 9
2.3.3 Kiến thức và thực hành Swift 10
2.3.4 Phản hồi và tự đánh giá 10
2.4 Kỹ năng mềm 11
2.4.1 Kỹ năng làm việc nhóm 11
2.4.2 Kỹ năng quản lý thời gian 11
2.4.3 Kỹ năng giao tiếp 12
CHƯƠNG 3 THAM GIA DỰ ÁN 13
Dự án Medda 13
CHƯƠNG 4 ĐÁNH GIÁ, NHẬN XÉT 14
4.1 Tự đánh giá 14
4.2 Mô tả hoạch định tương lai dựa trên kết quả thực tập 14
Trang 4CHƯƠNG 1 GIỚI THIỆU CHUNG VỀ CÔNG TY
• Tên công ty: Công ty TNHH Dịch vụ đa phương tiện và Công nghệ Beetech
• Địa chỉ văn phòng Hồ Chí Minh: Lầu 2 - số 25/7 Nguyễn Bỉnh Khiêm, P Bến Nghé, Q.1
• Website công ty: Trang chủ - Beetech Company (beetechsoft.com)
• Quy mô: 150-200 người
• Lĩnh vực hoạt động:
o Công ty Beetech được thành lập với tôn chỉ “Kết nối cuộc sống dễ dàng hơn” Chúng tôi luôn cố gắng để giải quyết mọi yêu cầu, dù phức tạp đến đâu, từ khách hàng Bằng khối óc kỹ thuật logic và sáng tạo của mình, chúng tôi phân tích và đưa ra các giải pháp tiếp cận, hiểu và giải quyết vấn đề một cách nhanh chóng
o Beetech là một tập thể nhân viên trẻ trung và năng động Với khả năng công nghệ và tri thức vững vàng, cùng với quy trình làm việc theo tiêu chuẩn quốc
tế, Beetech đã và đang phát triển mạnh mẽ, đáp ứng tốt nhất và hiệu quả nhất các yêu cầu của khách hàng
o Cam kết của Beetech là luôn nỗ lực với mục tiêu mang lại sự hài lòng cho khách hàng thông qua các sản phẩm và dịch vụ phần mềm chất lượng, tích hợp các giải pháp công nghệ tương lai một cách tối ưu
o "Cung cấp giải pháp công nghệ giúp cuộc sống trở nên dễ dàng hơn" - Đó là thông điệp mà Beetech muốn gửi đến mọi người thông qua công việc của mình
o Vương Khánh Bằng - Founder and CEO của Beetech, người đã dẫn dắt đội ngũ của Beetech để đạt được những thành tựu ngày hôm nay
o Với sự hợp tác chặt chẽ cùng với các đối tác Nhật Bản, Beetech đang không ngừng mở rộng tầm ảnh hưởng và tăng cường năng lực của mình trong ngành công nghệ thông tin
o Năm 2016, Beetech được thành lập và đến hiện tại có 3 văn phòng đặt tại Thành phố Hồ Chí Minh, Đà Nẵng và Hà Nội
Trang 5CHƯƠNG 2 TẬP HUẤN
2.1 Mô tả về công việc
iOS Developer là vị trí vô cùng quan trọng trong ngành phát triển ứng dụng di động Họ
là những người chịu trách nhiệm phát triển, cải tiến, và duy trì các ứng dụng trên hệ điều hành iOS của Apple
iOS Developer cần phải có kỹ năng lập trình tốt bằng Swift hoặc Objective-C, hai ngôn ngữ chính được Apple hỗ trợ để phát triển ứng dụng cho iOS Họ cũng cần hiểu rõ về iOS SDK (Software Development Kit) và các công cụ phát triển như Xcode, vì chúng là những công cụ quan trọng trong quá trình phát triển ứng dụng
Ngoài ra, iOS Developer cũng phải có kiến thức sâu về thiết kế UI/UX, bởi vì họ phải đảm bảo rằng ứng dụng của mình không chỉ hoạt động tốt, mà còn dễ sử dụng và thu hút người dùng Điều này đòi hỏi iOS Developer phải làm việc chặt chẽ với các nhóm thiết kế và kiểm thử để đảm bảo chất lượng sản phẩm cuối cùng
Vậy nói sâu hơn về công việc của một iOS Developer, nó bao gồm:
• Phát triển và cải tiến các ứng dụng trên nền tảng iOS
• Tìm hiểu và áp dụng những công nghệ mới nhất trong lĩnh vực phát triển ứng dụng di động
• Làm việc chặt chẽ với các nhóm khác như thiết kế và kiểm thử để tạo ra những ứng dụng tốt nhất cho người dùng
• Đảm bảo rằng ứng dụng của mình tuân thủ các nguyên tắc thiết kế và nguyên tắc hoạt động của Apple
Một iOS Developer sẽ thường góp mặt trong một nhóm phát triển phần mềm theo phương pháp Agile
Các vị trí tương tác trực tiếp:
Trang 6• UX/UI Designer: iOS Developer sẽ làm việc chặt chẽ với Designer để thực hiện các thiết
kế UI/UX một cách chính xác trên ứng dụng
• Backend Developer: iOS Developer cần phối hợp với Backend Developer để đảm bảo ứng dụng hoạt động mượt mà, dữ liệu được trao đổi đúng và nhanh chóng giữa server và ứng dụng
• QA Tester: iOS Developer sẽ cần làm việc với Tester để đảm bảo ứng dụng hoạt động đúng yêu cầu, không có lỗi và mang lại trải nghiệm tốt cho người dùng
2.2 Lịch tập huấn và tham gia dự án
Thời gian thực tập: từ 28.11.2022 đến 16.04.2023
Thời gian lên công ty: fulltime(t2-t6)
28.11.2022 -
02.12.2022
• Gặp gỡ đồng nghiệp trong dự án
• Làm quen với thiết bị được cấp
• Làm quen với văn hóa của công ty 05.12.2022 -
16.12.2022
Training các kiến thức về swift • Cơ bản về Swift: Là ngôn ngữ lập
trình chính được sử dụng để phát triển ứng dụng cho iOS, Swift cung cấp hiệu suất cao và tính năng hiện đại giúp việc phát triển ứng dụng trở nên nhanh chóng và an toàn
• Syntax và Kiểu Dữ Liệu trong Swift: Hiểu về cú pháp cơ bản của Swift, cũng như các kiểu dữ liệu sử dụng trong Swift như String, Int, Double, Bool, Array, và Dictionary
Trang 7• Kiểm Soát Luồng và Vòng Lặp trong Swift: Sử dụng các điều kiện và vòng lặp để kiểm soát luồng của chương trình, bao gồm if, else, switch, for, while, và repeat-while
• Hàm và Closures trong Swift: Hiểu cách tạo và sử dụng hàm, cũng như cách sử dụng closures để viết mã ngắn gọn và dễ đọc hơn
• OOP trong Swift: Hiểu về các khái niệm cơ bản của lập trình hướng đối tượng như class, object, inheritance, polymorphism, encapsulation, và abstraction
• Coding convention: Hiểu về các quy tắc và quy ước khi viết mã Swift để đảm bảo mã nguồn dễ đọc, dễ bảo dưỡng và đồng nhất
• Transitions & Animations trong Swift: Hiểu cách tạo các hiệu ứng chuyển đổi và hoạt hình trong ứng dụng iOS để tăng tính tương tác và hấp dẫn cho người dùng
• UI trong Swift: Hiểu cách tạo và sắp xếp các thành phần UI trong Swift sử dụng UIKit và SwiftUI Bao gồm cách tạo và tùy chỉnh các view, label, button, textfield, image view, table view, collection view, v.v cũng như
Trang 8cách xử lý sự kiện người dùng trên các thành phần này
• Auto Layout trong Swift: Hiểu cách
sử dụng Auto Layout để tạo giao diện đáp ứng mà tự động điều chỉnh kích thước và vị trí của các thành phần UI dựa trên kích thước màn hình và hướng thiết bị
• Storyboards và Segues trong Swift: Hiểu cách sử dụng Storyboards để thiết kế giao diện người dùng và Segues để điều hướng giữa các màn hình trong ứng dụng
19.12.2023 -
16.01.2023
Thực hành thực hiện ứng dụng chat sử dụng Storyboard và Firebase
• Sử dụng Storyboard trong Swift: Được hướng dẫn chi tiết về cách sử dụng Storyboard để thiết kế giao diện người dùng cho ứng dụng chat Bao gồm việc tạo và sắp xếp các thành phần UI như view, label, button, textfield, image view, table view, table view cell, v.v trên Storyboard Cũng như cách tạo và
sử dụng segues để điều hướng giữa các màn hình trong ứng dụng
• Tạo giao diện người dùng cho ứng dụng chat: Trực tiếp thực hành tạo giao diện người dùng cho ứng dụng chat, bao gồm màn hình đăng nhập, màn hình đăng ký, màn hình danh sách tin nhắn (sử dụng table view và table view
Trang 9cell), màn hình chat và tính năng tìm kiếm (sử dụng search bar)
• Sử dụng Firebase trong Swift: thiết lập
sử dụng Firebase realtime database để thực hiện chat thời gian thực Firebase Cloud Messaging để thực hiện nhận tin nhắn
• Sử dụng RxSwift: Được hướng dẫn về RxSwift, một thư viện phát triển ứng dụng phản ứng cho Swift Được sử dụng để xử lý sự kiện và quản lý dòng
dữ liệu bất đồng bộ trong ứng dụng chat RxSwift giúp code trở nên gọn gàng và dễ đọc hơn
• Xây dựng chức năng đăng nhập và đăng ký: Thực hành tạo chức năng đăng nhập và đăng ký cho ứng dụng chat, bao gồm việc tạo form đăng nhập
và đăng ký trên Storyboard, xử lý sự kiện người dùng trên form, và tương tác với Firebase để thực hiện việc đăng nhập và đăng ký
• Xây dựng chức năng chat: Thực hành tạo chức năng chat cho ứng dụng, bao gồm việc tạo giao diện người dùng cho màn hình chat, xử lý sự kiện người dùng trên màn hình chat, và tương tác với Firebase để gửi và nhận tin nhắn
Trang 10• Link github: hiepchau/ChatSwift: Study MVVM iOS app (github.com) 30.01.2023 –
16.04.2023
Giai đoạn 2 của công ty: tham gia dự án thực tế Dự án Medda
• Tìm hiểu thêm về ngành y tế: Em đã có cơ hội tìm hiểu thêm về nghiệp vụ y tế, hiểu rõ hơn về quy trình, thủ tục cũng như các nhu cầu
cụ thể của người dùng trong lĩnh vực y tế, điều này giúp em có thể phát triển ứng dụng phù hợp hơn
• Giải quyết các lỗi: Em đã nhận và xử lý các bug từ dự án, từ đó, em đã nắm được quá trình tìm kiếm, phân loại và giải quyết lỗi trong dự
án thực tế, đồng thời cũng cải thiện kỹ năng debug code của mình
• Tìm hiểu và ứng dụng RxSwift và mô hình MVVM: Dự án Medda sử dụng RxSwift và
mô hình kiến trúc MVVM (Model-View-ViewModel), em đã học hỏi và thực hành với hai công nghệ này, từ đó nắm vững cấu trúc
và cách vận hành của chúng
• Thực hiện các công việc cụ thể: em đã được phân công và hoàn thành các công việc cụ thể, như xây dựng màn hình module nhắn tin/call của app
• Tìm hiểu về mô hình Agile và Scrum: Trong quá trình làm việc, em đã tìm hiểu và thực hành theo mô hình Agile và phương pháp quản lý dự án Scrum Qua đó, em đã nắm được quy trình làm việc linh hoạt, cách tổ
Trang 11chức và phân chia công việc hiệu quả trong team, cũng như việc xác định và giải quyết vấn đề trong quá trình thực hiện dự án
Trang 122.3 Kiến thức thu được
2.3.1 Tìm hiểu công ty
Thời gian: 1 ngày
Nội dung:
• Tìm hiểu về các quy tắc làm việc ở công ty
• Tìm hiểu về các lợi ích của thực tập sinh và nhân viên chính thức
• Tìm hiểu về các trang thông tin của công ty
• Tìm hiểu về vai trò của vị trí iOS Developer trong dự án thực tế
Kết quả:
• Có hiểu biết về công ty, lợi ích của thực tập sinh và vai trò của vị trí thực tập
2.3.2 Nền tảng cơ bản về lập trình iOS
Thời gian: 2 tuần
Nội dung:
• Nguyên lý hoạt động của iOS: hiểu về cấu trúc và hoạt động cơ bản của hệ điều hành iOS
• Swift: hiểu về một trong những ngôn ngữ lập trình chính được trong phát triển ứng dụng iOS
• Xcode: IDE phổ biến dùng cho phát triển ứng dụng trên iOS
o Học được cách sử dụng cơ bản Xcode
o Thực hành xây dựng ứng dụng đơn giản với Xcode
Kết quả:
• Có hiểu biết về các khái niệm liên quan đến phát triển ứng dụng iOS, cách sử dụng Xcode
Trang 132.3.3 Kiến thức và thực hành Swift
Thời gian: 1 tháng
Nội dung:
• Swift fundamentals: Kiến thức nền tảng về Swift:
o Học được các kiến thức cơ bản về Swift
o Thực hành tạo một ứng dụng iOS đơn giản,
• Thiết kế UI/UX trên iOS: Hiểu và thực hành cách thiết kế giao diện người dùng và tạo
ra trải nghiệm người dùng tốt trên iOS
• Coding convention: Hiểu và áp dụng các quy tắc trong việc viết code Swift
• Khám phá và sử dụng các thư viện iOS phổ biến: Hiểu về cách sử dụng và tích hợp các thư viện vào dự án iOS
Kết quả:
• Có kiến thức nền tảng về viết code Swift, các quy tắc viết code và cách sử dụng các thư viện phổ biến trong phát triển ứng dụng iOS
2.3.4 Phản hồi và tự đánh giá
Thời gian: 5 ngày
Nội dung:
• Phản hồi: Nhận phản hồi từ mentor và các đồng nghiệp khác về công việc của bạn
• Tự đánh giá: Dựa vào phản hồi và kinh nghiệm làm việc, tự đánh giá về quá trình thực tập, những điểm mạnh, điểm yếu và những điều cần cải thiện
Kết quả: Có khả năng tự đánh giá công việc của mình và nhận biết được những điểm cần cải
thiện
Trang 142.4 Kỹ năng mềm
• Trong quá trình thực tập tại Công Ty Beetech, em đã có cơ hội nắm bắt và phát triển rất nhiều kỹ năng mềm quan trọng Ngoài việc nâng cao kỹ năng chuyên môn thông qua các dự án và công việc hằng ngày, em cũng đã tích lũy được các kỹ năng quan trọng như làm việc nhóm, quản lý thời gian, kỹ năng giao tiếp và khả năng thích ứng với môi trường mới
2.4.1 Kỹ năng làm việc nhóm
Công ty em thực tập có một nét văn hóa đặc biệt, đó là chourei, một cuộc họp ngắn vào mỗi sáng thứ ba hằng tuần Chourei không chỉ giúp mọi người cập nhật thông tin mới nhất về dự
án và công việc của nhau mà còn giúp tăng cường tình đoàn kết trong nhóm:
Để cân nhắc giữa việc học và thực tập, em đã phải học cách quản lý thời gian một cách hiệu quả:
• Họp daily hằng ngày theo mô hình scrum
• Đặt mục tiêu và lập kế hoạch cho mỗi ngày để đảm bảo hoàn thành công việc một cách tốt nhất
• Tập trung vào công việc và tránh những phần xao lạc không cần thiết
• Sắp xếp thời gian sao cho hợp lý giữa thời gian học tập và thực tập
2.4.2 Kỹ năng quản lý thời gian
Trong quá trình thực tập tại Công Ty Beetech, em đã có cơ hội nắm bắt và phát triển rất nhiều
kỹ năng mềm quan trọng Ngoài việc nâng cao kỹ năng chuyên môn thông qua các dự án và công việc hằng ngày, em cũng đã tích lũy được các kỹ năng quan trọng như làm việc nhóm, quản lý thời gian, kỹ năng giao tiếp và khả năng thích ứng với môi trường mới
• Học được cách tập trung vào công việc
• Có thói quen lên kế hoạch trong ngày
• Xây dựng được giờ giấc sinh hoạt hợp lí, lành mạnh hơn
Trang 152.4.3 Kỹ năng giao tiếp
Giao tiếp là một kỹ năng không thể thiếu, khi làm việc với các thành viên trong nhóm, cần biểu đạt được suy nghĩ, ý kiến của bản thân để mọi người có thể hiểu được một cách rõ ràng,
là điều khá khó đối với em
• Học được cách mở lời, không ngại nói sai
• Luyện tập ôn lại kiến thức bằng cách tự giảng bài cho mình