Sau những năm tháng trong môi trường đại học, với mong muốn áp dụng những kiến thức đã học và có được trải nghiệm trong môi trường thực tế, em đã quyết định tham gia thực tập tại công ty
Trang 1ĐẠ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
MÔN: THỰC TẬP TỐT NGHIỆP
(SE501.N21.PMCL)
Giảng viên hướng dẫn:
THS HUỲNH HỒ THỊ MỘNG TRINH
Họ và tên sinh viên:
NGUYỄN TRÍ MINH - 19521847
Thành phố Hồ Chí Minh, 07/2023
Trang 2TRƯỜ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
FRONT-END WEB DEVELOPER
pháp Phần mềm Tường Minh (TMA Solutions)
Nguyễn Trường Sơn
TP Hồ Chí Minh, tháng 07 năm 2023
Trang 3LỜI MỞ ĐẦU
Công nghệ web luôn mang lại nhiều lợi ích quan trọng trong nhiều năm qua cho cuộc sống của chúng ta, và đến tận ngày nay - trong xã hội 4.0 và toàn cầu hoá nó vẫn luôn là cốt lõi trong cuộc sống hằng ngày Thật vậy, công nghệ web cho phép chúng ta kết nối và truy cập thông tin trên toàn cầu một cách dễ dàng và nhanh chóng Nó còn giúp tạo nhiều điều kiện thuận lợi cho việc kinh doanh và giao tiếp, mở ra nhiều cơ hội việc làm trong các lĩnh vực khác nhau Chính vì thế, lĩnh vực phát triển web không bao giờ mất đi vai trò quan trọng của nó, cũng như luôn phải được cập nhật và phát triển liên tục Phát triển web bao gồm việc sử dụng các kỹ năng và công nghệ để tạo ra các trang web hay ứng dụng web Đặc biệt phát triển front-end web đóng vai trò rất quan trọng trong việc xử lý các yêu cầu và cung cấp trải nghiệm tốt cho người dùng Phát triển front-end web không chỉ đòi hỏi kiến thức về HTML, CSS và JavaScript
mà còn rất nhiều công nghệ, kiến thức lập trình khác để tạo ra giao diện đẹp và có tính tương tác tốt Nó giúp cải thiện trải nghiệm người dùng, tạo ra các trang web thân thiện, xử lý yêu cầu chính xác, dễ sử dụng và thú vị Ngoài ra, lĩnh vực này cũng cung cấp nhiều cơ hội việc làm và có tiềm năng phát triển lớn trong ngành kỹ thuật phần mềm Chính vì vậy, em đã chọn lĩnh vực này để học hỏi và phát triển bản thân để trở thành một front-end web developer, và xa hơn nữa là một fullstack web developer khi những kiến thức về công nghệ mới được tiếp thu
và những kỹ năng nền tảng được trau dồi một cách vững chắc hơn
Sau những năm tháng trong môi trường đại học, với mong muốn áp dụng những kiến thức đã học và có được trải nghiệm trong môi trường thực tế, em đã quyết định tham gia thực tập tại công ty TNHH Giải pháp Phần mềm Tường Minh (TMA Solutions) - một môi trường lý tưởng
và chuyên nghiệp để thực hiện dự định của bản thân
Trang 4LỜI CẢM ƠN
Em xin trân trọng gửi lời cảm ơn tới Bộ phận Thực tập (Industry Internship) tại công ty TNHH Giải pháp Phần mềm Tường Minh (TMA Solutions) đã tạo điều kiện cho em có cơ hội được thực tập tại công ty Dù trong thời gian ngắn nhưng nhờ sự chỉ dẫn nhiệt tình của anh Nguyễn Trường Sơn (project manager) và chị Hứa Bảo Kim Ngân (mentor), em đã được học hỏi, tiếp thu những kiến thức quan trọng và có nhiều trải nghiệm khi tham gia một dự án thực tế Chân thành cảm ơn anh Sơn, chị Ngân và các anh chị, các bạn trong team dự án đã bỏ ra nhiều thời gian, công sức để hướng dẫn, giúp đỡ em tận tình trong khi làm quen môi trường mới cũng như trong việc tiếp cận kiến thức công nghệ, kỹ năng lập trình và tư duy sản phẩm để có thể thực hiện tốt dự án cá nhân và dự án thực tế trong thời gian qua
Em cũ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ều kiện em làm báo cáo này
TP HCM, ngày 04 tháng 07 năm 2023
Nguyễn Trí Minh
Trang 5NHẬN XÉT CỦA KHOA
Trang 6
MỤC LỤC
LỜI MỞ ĐẦU 2
LỜI CẢM ƠN 3
NHẬN XÉT CỦA KHOA 4
MỤC LỤC 5
CHƯƠNG 1: GIỚI THIỆU CÔNG TY THỰC TẬP 6
1.1 Giới thiệu 6
1.2 Giải pháp, dịch vụ và sản phẩm của công ty 8
1.3 Lịch làm việc khi thực tập tại công ty 8
CHƯƠNG 2: NỘI DUNG THỰC TẬP 9
2.2 Nghiên cứu kỹ thuật 9
2.2.1 Tuần 1 9
2.2.2 Tuần 2 10
2.3 Thực hiện dự án cá nhân 10
2.3.1 Công nghệ 10
2.3.3 Kết quả 11
2.4 Tham gia dự án thực tế 11
2.4.1 Nội dung, tình hình dự án khi tham gia 11
2.4.2 Những khó khăn gặp phải 12
2.4.3 Kết quả đạt được 12
CHƯƠNG 3: TỔNG KẾT 13
3.1 Điểm mạnh 13
3.2 Điểm yếu 13
3.3 Chuẩn đạt được 13
TÀI LIỆU THAM KHẢO 15
Trang 7CHƯƠNG 1: GIỚI THIỆU CÔNG TY THỰC TẬP
1.1 Giới thiệu
Hình 1.1 Logo TMA Solutions
TMA Solutions là một công ty hàng đầu về outsourcing phần mềm tại Việt Nam
TMA Solutions được thành lập vào năm 1997 nhằm cung cấp dịch vụ outsourcing phần mềm chất lượng cho các công ty hàng đầu trên toàn thế giới TMA là một trong những công ty outsourcing phần mềm lớn nhất tại Việt Nam với 4.000 kỹ sư Đội ngũ kỹ sư của TMA được chọn lọc từ nhiều nguồn lực IT lớn ở Việt Nam và đã được đào tạo tốt cũng như đã hoàn thành thành công nhiều dự án lớn và phức tạp
TMA Solutions gồm nhiều bộ phận, trung tâm (center) phát triển đa dạng các lĩnh vực như:
1 Telecom Software
2 IoT
3 Data Solution
4 Automotive Software
5 Fintech
6 Hardware
7 AI
8 Robotics Software
9 Healthtech
10 5G
- Địa chỉ:
+ Văn phòng chính (Lab 1): 111 Nguyễn Đình Chính, Phường 15, Quận Phú Nhuận, Tp
Hồ Chí Minh
Trang 8+ Văn phòng 3 (Lab 3): 10 Đặng Văn Ngữ, Phường 10, Quận Phú Nhuận, Tp Hồ Chí Minh
+ Văn phòng 4 (Lab 4): 84A/5 Trần Hữu Trang, Phường 10, Quận Phú Nhuận, Tp Hồ Chí Minh
+ Văn phòng 5 (Lab 5): Anna Building, Lô 1 - Đường Trung tâm, Công viên Phần mềm Quang Trung, Phường Tân Chánh Hiệp, Quận 12, Tp Hồ Chí Minh
+ Văn phòng 6 (Lab 6): Toà nhà TMA, Lô 17 - Đường số 10, Công viên Phần mềm Quang Trung, Phường Tân Chánh Hiệp, Quận 12, Tp Hồ Chí Minh
+ Công viên Sáng tạo TMA (Lab 8): Đại lộ Khoa học, Ghềnh Ráng, Quy Nhơn, Bình Định
Quy mô về số lượng kỹ sư qua các năm:
- Website: https://www.tmasolutions.com
- Email: intern@tma.com.vn (Internship department)
- Điện thoại: 028 3997 8000 | ext: 5615 - 02838912532 (Internship Department)
CEO/Chairman:
- Delivery & Technology
- Business & Innovation
- CDF
- Finance/ Legal
- TMA Overseas
- QMS/PMO
- HR & Admin
Trang 91.2 Giải pháp, dịch vụ và sản phẩm của công ty
Công ty cung cấp nhiều giải pháp và dịch vụ, điển hình như:
• Phát triển phần mềm:
− Phát triển sản phẩm mới
− Tối ưu sản phẩm đã có
− Bảo trì, hỗ trợ
− Chuyển đổi, di dời
− Thiết kế lại hệ thống
• Kiểm thử phần mềm
− Kiểm thử chức năng
− Kiểm thử hệ thống, khả năng tích hợp
− Kiểm thử hiệu năng
− Kiểm thử bảo mật
• Các giải pháp cải tiến:
− R&D
− PoC & prototype
− Roadmap về công nghệ
− Đưa ra giải pháp về kỹ thuật
• Chuyển đổi số:
− Online hoá
− Mobile hoá
− Tự động hoá
− Cloud hoá
Sản phẩm trên nhiều lĩnh vực:
• Telecom
• Healthtech
• Logistics & Transportation
• Fintech
• E-Commerce, Retail & Distribution
• Automotive
1.3 Lịch làm việc khi thực tập tại công ty
Em tham gia làm việc tại công ty bắt đầu từ ngày 03/04/2023 tới 07/07/2023, các ngày làm việc trong tuần là thứ 2, thứ 4, thứ 5, thứ 6 (part-time) Công việc hằng ngày bắt đầu từ lúc 8 giờ 30 phút đến 18 giờ Thời gian nghỉ trưa khoảng 1 tiếng Buổi chiều sẽ bắt đầu làm việc vào lúc 13 giờ 30 Sau mỗi ngày làm việc em sẽ báo cáo tiến độ công việc trong ngày, đặt câu hỏi
và nhận chia sẻ, giải đáp từ chị Ngân - mentor của em cũng như đặt mục tiêu cho ngày làm việc tiếp theo Mỗi tuần sẽ họp tiến độ dự án 3 lần vào sáng thứ 2, 4, 6 Mọi người sẽ cùng họp
và bàn bạc về các vấn đề đã giải quyết, tồn đọng, bài học, giải pháp và mục tiêu cho tuần tiếp theo Anh Sơn là người quản lý dự án chính và cập nhật những thông tin về tình hình của dự
án cho mọi người Toàn bộ quy trình làm việc đều sử dụng Tiếng Anh là chủ yếu
Trang 10CHƯƠNG 2: NỘI DUNG THỰC TẬP
Tổng thời gian: Khoảng 1 tuần
Nội dung: Giới thiệu về công ty, cách tổ chức của công ty, đượ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, quy trình làm việc từ cao xuống thấp, cách thức tổ chức của công ty, các phòng ban về IT, HR, … Ngoài ra, thực tập sinh còn được giới thiệu về văn hóa làm việc trong công ty như thời gian đi làm, các quy định, cách sử dụng email trong công việc, … Bên cạnh đó em còn được train về các nội dung kỹ năng mềm cũng như kỹ thuật chuyên môn khi đi làm do những anh, chị có kinh nghiệm giảng dạy Các khoá học ngắn
mà em được train là:
• Agile Development Process
• Security Awareness
• Communication Skills
• Email Writing guidelines
• Work Etiquette and Teamwork
Kết quả: Hiểu thêm về văn hoá làm việc tại công ty, 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 và các kỹ năng mềm khác như làm việc nhóm, giao tiếp, làm việc có kế hoạch, có kỷ luật, có trách nhiệm hơn Ngoài ra em còn được học thêm về các quy trình phát triển phần mềm và bảo mật tại công ty
2.2 Nghiên cứu kỹ thuật
2.2.1 Tuần 1
Nội dung: Học và ôn tập các kiến thức liên quan theo Training Plan
Kết quả: Ôn tập kiến thức cũ và học được những kiến thức mới về Front-end như RESTful API, HTTP/HTTPS, bảo mật, authorization, authentication,
Trang 112.2.2 Tuần 2
Nội dung: Học và ôn tập các kiến thức liên quan theo Training Plan
Kết quả: Ôn tập kiến thức cũ và học được những kiến thức mới và quan trọng về React JS như Routing, HTTP request, Hook, Axios, Redux,…
2.3 Thực hiện dự án cá nhân
Trong 2 tuần kế tiếp, em được mentor giao cho 1 task cá nhân về việc xây dựng 1 ứng dụng web cho phép người dùng tạo và quản lý ghi chú Ban đầu, mentor không yêu cầu em thực hiện phần back-end, chỉ cần chú trọng vào front-end, tuy nhiên em đã nỗ lực tìm tòi, học hỏi
và tự làm cả phần back-end để có thể hiểu rõ hơn
2.3.1 Công nghệ
Về Back-end:
• Node.js và Express.js để xây dựng API
• MySQL là database, remote sử dụng CleverCloud
• Deploy sử dụng Cyclic
• Mã hoá, tạo và xác thực token sử dụng JSON Web Token Nhờ vậy, mật khẩu của
người dùng trên database được mã hoá; session đăng nhập cũng được quản lý
• API được cấu trúc theo mô hình Service - Controller - Router:
• Service: Xử lý kết nối trực tiếp với database
• Controller: Quản lý các phương thức khi request API
• Router: Quản lý các API endpoint
Về Front-end:
• React , HTML và CSS để xây dựng UI
Trang 12• Các thư viện CSS: Bootstrap và React Bootstrap
• Deploy sử dụng Vercel
• Ứng dụng được cấu trúc theo mô hình Model - Controller - View (MVC):
• Model: Xử lý request trực tiếp tới API endpoint
• Controller: Quản lý các phương thức được gọi từ các component UI
• View: Quản lý các component UI Ứng dụng được chia thành nhiều component để có
thể tái sử dụng
• Lưu trữ trạng thái sử dụng Redux và Redux Thunk Hệ thống Redux được cấu trúc
theo mô hình Reducer - Container - Actions Một vài trạng thái như xác thực người
dùng thông qua token cho thấy sự hiệu quả khi triển khai với Redux
2.3.2 Mô tả dự án
Ứng dụng chỉ đơn giản là giúp người dùng tạo và quản lý các ghi chú của mình với các chức năng cơ bản Các use-case của người dùng:
− Tạo tài khoản mới
− Đăng nhập
− Tạo ghi chú mới
− Tìm ghi chú theo tên
− Xem nội dung ghi chú
− Chỉnh sửa và xoá ghi chú
− Đăng xuất (người dùng sẽ bị tự động đăng xuất khi phiên đăng nhập hết hạn) 2.3.3 Kết quả
• Các chức năng đều hoạt động chính xác, đúng như yêu cầu
• Mentor đánh giá đạt yêu cầu
• Repo GitHub: https://github.com/ntminh2nd/tma-notezy-app
• Link ứng dụng (đã được deploy): https://tma-notezy.vercel.app/
2.4 Tham gia dự án thực tế
Theo như quy định của công ty, các dự án thực tế đều phải được bảo mật, do vậy em không thể cung cấp những hình ảnh và tài nguyên về dự án mà chỉ có thể đưa ra những nội dung sơ lược, khách quan nhất có thể
2.4.1 Nội dung, tình hình dự án khi tham gia
• Dự án có nội dung về một ứng dụng web cho phép doanh nghiệp tái sử dụng và quản
lý các hợp đồng của mình Flow chính của ứng dụng là: admin tải lên 1 file hợp đồng, admin có thể chỉnh sửa file trực tiếp trên editor của ứng dụng và thiết lập các trường cho phép người dùng được điền theo form và lưu lại Sau này, những người dùng có nhu cầu sử dụng template đó chỉ cần điền theo form các nội dung cần thay đổi, sau đó
họ sẽ có 1 bản hợp đồng hoàn chỉnh, có thể lưu về nhiều định dạng hoặc mang đi in
ấn Ví dụ 1 template hợp đồng có các trường như địa chỉ, họ và tên, giới tính,… theo sau đó là nơi nhập nội dung (được đánh dấu như ……….), thông thường người dùng
Trang 13phải sửa thủ công, tuy nhiên nhờ vào template của admin sau khi đã thiết lập các trường đó thì người dùng chỉ cần điền vào form các mục địa chỉ, họ và tên, giới
tính,… thì tự động ứng dụng sẽ thay thế các mục trống cần điền có dạng ……… thành nội dung cụ thể Ưu điểm của việc này là template đó có thể tái sử dụng cho nhiều trường hợp cũng như rất tiện lợi và nhanh chóng
• Đây là dự án đã và đang phát triển, do thiếu nhân lực mảng Front-end nên vào thời điểm tham gia, em đã hỗ trợ dưới vai trò là front-end developer cho dự án Front-end developer trước của dự án không còn làm nữa nên em phải kế thừa và thực hiện tiếp quy trình phát triển của dự án cho đến cuối giai đoạn thực tập
2.4.2 Những khó khăn gặp phải
• Do phải kế thừa lại toàn bộ source code cũ của dự án, em phải mất nhiều thời gian đề tìm tòi, nghiên cứu cũng như nhờ sự hỗ trợ của người phát triển trước để hiểu rõ về kiến trúc phần mềm của dự án, các cách triển khai tiếp theo cũng như thích ứng với các công nghệ mới được sử dụng
• Một vài công nghệ mới và yêu cầu khi làm việc của công ty trong quy trình phát triển trong lần đầu tiếp xúc cũng gây cho em nhiều khó khăn để thích ứng và học hỏi
• Một vài yêu cầu về chức năng của dự án là khá phức tạp do ứng dụng chạy trên nền web nên cũng gặp nhiều hạn chế Em phải đưa ra nhiều giải pháp để có thể giải quyết được một vài khó khăn tồn động, cũng như đưa ra hướng phát triển tiếp theo sau khi bàn bạc với team và mentor
2.4.3 Kết quả đạt được
• Tính đến thời điểm hiện tại, một vài chức năng chính và quan trọng của dự án đã có thể hoạt động ở mức ổn Tuy còn nhiều lỗi tồn động và hệ thống chưa được tối ưu tốt nhưng với một vài yêu cầu cơ bản được đưa ra, hệ thống đều có thể đảm nhận được
• Em được học hỏi thêm về cấu trúc dự án từ người phát triển trước do em kế thừa lại quy trình phát triển dang dở Ngoài ra, em còn được học thêm nhiều công nghệ mới, quy trình phát triển phần mềm trong công ty và cải thiện kỹ năng lập trình
Trang 14CHƯƠNG 3: TỔNG KẾT
Quãng thời gian thực tập tại TMA Solutions đã giúp em cải thiện bản thân rất nhiều trong quy trình làm việc thực tế, tác phong của người kỹ sư phần mềm Được làm việc tại đây, em đã học thêm được kỹ năng mềm sử dụng mail, quản lý ticket, làm việc nhóm, giao tiếp với cấp trên cũng như được rèn luyện về các kỹ năng chuyên môn của mình
Chỉ trong thời gian hạn chế, em đã hoàn thành dự án cá nhân trong quá trình training với các tính năng, yêu cầu đặt ra ban đầu
Khi tham gia vào dự án thực tế, em cũng hoàn thành tốt các tác vụ đúng hạn và đạt chất lượng tốt
3.1 Điểm mạnh
Trong quá trình thực tập tại công ty, em nhận ra mình có những điểm mạnh sau:
• Tự tin giao tiếp, làm việc với Tiếng Anh ở mức tốt và nâng cao
• Hoà hợp với team làm việc, đưa ra đề xuất giúp cải thiện dự án và được đồng tình
• Làm việc độc lập tốt, khả năng tự research tốt
• Khả năng học hỏi công nghệ mới và thích ứng nhanh
• Hỗ trợ đồng nghiệp tốt
• Hoàn thiện yêu cầu được đưa ra
3.2 Điểm yếu
Trong quá trình thực tập tại công ty, em nhận ra mình có những điểm yếu sau:
• Chưa nắm bắt tốt hoàn toàn quy trình làm việc tại công ty
• Khả năng thống nhất giải pháp chưa tốt, tốn nhiều thời gian tìm nhiều giải pháp không hợp lý
• Quản lý thời gian làm việc chưa hợp lý
• Khả năng nhờ giúp đỡ về chuyên môn chưa được thực hiện thường xuyên
3.3 Chuẩn đạt được
Em tự đánh giá mục tiêu đạt được của môn học như sau:
• Nắm bắt được xu hướng, nhu cầu xã hội và tính đặc thù của doanh nghiệp (G1): 8/10
• Hiểu và giải thích được các khái niệm cơ bản, thuật ngữ và sơ đồ hệ thống trong dự án (G2): 9/10
• Nắm được quy trình, phương pháp và công nghệ phát triển sản phẩm phần mềm tại doanh nghiệp (G3): 9/10
• Có khả năng tìm hiểu vấn đề, mô hình hóa vấn đề và tham gia giải quyết vấn đề (G4): 9/10
• Phát triển kỹ năng tư duy, kỹ năng làm việc nhóm và kỹ năng trình bày (G5): 9/10
• Đọc, hiểu các tài liệu và giao tiếp bằng tiếng Anh (G6): 10/10