Hồ Chí Minh, tháng 12 năm 2022LỜI MỞ ĐẦU Ngày nay, ngành công nghiệp xây dựng sản phẩm số là một phần không thể thiếu của ngành công nghiệp phát triển phần mềm.. Ngành phát triển sản phẩ
Trang 1TRƯỜ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
BACKEND DEVELOPER
Công ty thực tập: Công ty cổ phần công
nghệ GEEK Up Người phụ trách: ThS Trần Thị Hồng Yến
Thực tập sinh: Võ Vương Thanh Tú
Trang 2TP Hồ Chí Minh, tháng 12 năm 2022
LỜI MỞ ĐẦU
Ngày nay, ngành công nghiệp xây dựng sản phẩm số là một phần không thể thiếu của ngành công nghiệp phát triển phần mềm Với tốc độ phát triển vô cùng mạnh mẽ, ngành xây dựng sản phẩm số đã và đang là nhân
tố kích thích sự phát triển của công nghệ thông tin thế giới
Cùng với xu thế phát triển của thế giới, Việt Nam cũng không phải ngoại
lệ Việt Nam cũng góp phần vào sự phát triển của ngành phát triển sản phẩm số với sự tham gia của những công ty như GEEK Up
Ngành phát triển sản phẩm số được sinh ra là do nhu cầu sử dụng phần mềm trong công việc và cuộc sống hằng ngày bằng những thiết bị công nghệ mới nhất Vì lý do này, em quyết định chọn phát triển sản phẩm số làm định hướng cho việc học tập của mình
Sau ba năm học tập trên trường, do mong muốn có thêm kinh nghiệm thực tế, cũng như muốn được tham gia làm sản phẩm trong một môi trường chuyên nghiệp, em có dự định là sẽ thực tập Vì vậy, em quyết định chọn GEEK Up - một môi trường lý tưởng để phát triển những sản phẩm tuyệt vời - là nơi sẽ giúp em thực hiện được dự định này
2
Trang 3LỜI CẢM ƠN
Trân trọng gửi lời cảm ơn Công ty cổ phần Công Nghệ GEEK Up đã tạo điều kiện cho em có cơ hội được thực tập tại công ty
Chỉ trong một thời gian ngắn, nhưng nhờ sự chỉ dẫn nhiệt tình của nhóm trainer, nhóm thực tập chúng em đã tiếp thu được những kiến thức quan trọng để có thể làm được một trang web thương mai điện tử Chân thành cảm ơn các anh chị trong nhóm trainer đã bỏ ra nhiều thời gian,công sức
để hướng dẫn chúng em hoàn thành đợt thực tập này
Đặc biệt cảm ơn anh Khoa, đã training Backend, hướng dẫn, giúp đỡ cho chúng em tận tình cả những khó khăn trong công việc; cảm ơn anh Tuấn,
đã training Frontend, hỗ trợ chúng em rất nhiều về các vấn đề kỹ thuật của Frontend; cảm ơn anh Hiếu, đã chỉ dẫn chúng em về cách làm báo cáo, lên kế hoạch, những kỹ năng không thể thiếu để có thể làm ra một sản phẩm trong thời gian qua
Em cũng xin cảm ơn Team People của GEEK Up đã luôn quan tâm, lắng nghe và thấu hiểu vấn đề của tụi em
Em cũng xin cảm ơn cô lao công đã hàng ngày mang trái cây lên phòng làm việc cho tụi em, cảm ơn các anh chị nhân viên pha chế đã làm ra những ly nước, những phần bánh tuyệt ngon và những câu quote cực kỳ truyền cảm hứng khiến cho chúng em luôn có động lực để làm việc, không những thế lại còn được free nữa
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 cho em làm bài báo cáo này
TP HCM, ngày 31 tháng 12
năm 2022
Võ Vương Thanh Tú
Trang 4NHẬN XÉT CỦA KHOA
4
Trang 5
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 công ty công nghệ Geek Up 6
1.2 Sản phẩm công ty 6
1.3 Lịch làm việc khi thực tập tại công ty 6
CHƯƠNG 2: NỘI DUNG THỰC TẬP 9
2.1 Tìm hiểu công ty và các kỹ năng cơ bản trong công ty 9
2.2 Nghiên cứu kỹ thuật 9
2.2.1 Các công cụ làm việc 9
2.3 Tham gia dự án thực tế 9
2.3.1 Công nghệ 9
2.3.2 Mô tả dự án 10
2.3.3 Quá trình thực hiện: 12
CHƯƠNG 3: TỔNG KẾT 14
3.1 Điểm mạnh 14
3.2 Điểm yếu 14
3.3 Chuẩn đạt được 14
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 công ty công nghệ Geek Up
Hình 1.1 Logo công ty GEEK UP
GEEK Up được thành lập bởi các kỹ sư lập trình và chuyên viên thiết
kế đam mê phát triển sản phẩm phần mềm Mục tiêu ban đầu của GEEK
Up cực kỳ đơn giản: trở thành môi trường lý tưởng để phát triển các sản phẩm tuyệt vời
Sau hơn 8 năm, với thế mạnh chuyên môn trong tất cả các khía cạnh của phát triển sản phẩm phần mềm, GEEK Up quy tụ hơn 80 tài năng, cùng nhau phát triển và cho ra đời hơn 180 products chất lượng cho các doanh nghiệp khắp nơi trên thế giới
GEEK Up đã và đang trở thành một đối tác uy tín, một lựa chọn đáng tin cậy từ nhiều khách hàng lớn trong và ngoài nước, như TPBank, SSI, Viettel, Heineken, The Coffee House, ELSA, Wall Street English, Le
&Associates, Mobifone, VietCapital Bank, cungmua.com, Action Aid, và khách hàng nước ngoài như SMRT (Singapore), Hitachi (Nhật Bản), NordLevel (Đức), KerryTTC (Thái Lan), Giinger Group (Singapore),
Trong quá trình phát triển sản phẩm, GEEK Up áp dụng những công nghệ hiện đại và thịnh hành nhất hiện nay như: ReactJS, NodeJS, NestJS, Docker, Amazon Web Service,
Với tư duy tạo ra sản phẩm mang lại giá trị cho người dùng và ứng dụng phương pháp Agile chuẩn quốc tế, GEEK Up đã phần nào chứng minh rằng: tài năng Việt Nam hoàn toàn có thể tạo ra những sản phẩm phần mềm đạt tiêu chuẩn toàn cầu!
1.2 Sản phẩm công ty
GEEK Up vun đắp kinh nghiệm sâu rộng để cung cấp giải pháp toàn diện, mang lại trải nghiệm tối ưu cho người dùng và ấn tượng đa dạng mọi ngành nghề từ kinh tế, thực phẩm, đến giao thông, du lịch, nhà hàng, khách sạn, GEEK Up tự hào là đối tác sản phẩm
Trang 8đáng tin cậy trên hành trình xây dựng các giải pháp số đột phá, thúc đẩy tăng trưởng cho doanh nghiệp
1.3 Lịch làm việc khi thực tập tại công ty
Giới thiệu và tìm
hiểu về:
Phương pháp
Agile & Scrum
Phân tích và thiết
kế hướng đến
người dùng
(User-centered
Product Analysis
& Product
Design)
Product Frontend
Product Backend
Phân tích & thiết
kế hướng đến người dùng (Product Analysis &
Product Design)
Phát triển sản phẩm (Frontend, Backend, Development)
Phát triển sản phẩm (Frontend, Backend, Development)
Phối hợp với Product Analyst
& Product Designer
Nhận feedback, reviews & un-block từ Senior members
Technical &
Soft-skill Workshop
Phát triển sản phẩm (Frontend, Backend, Development)
Phối hợp với Product Analyst
& Product Designer
Nhận feedback, reviews & un-block từ Senior members
Technical & Soft-skill
Workshop
Phát triển sản phẩm
(Frontend, Backend,
Development)
First Product
Demo – trình bày
giải pháp về
product
Review
Technical output
standards
Nhận feedback,
reviews &
un-block từ Senior
members
Technical &
Soft-skill
Workshop
Phát triển sản phẩm (Frontend, Backend, Development)
Phối hợp với Product Analyst &
Product Designer
Nhận feedback, reviews &
un-block từ Senior members
Technical &
Soft-skill Workshop
Phát triển sản phẩm (Frontend, Backend, Development)
Phối hợp với Product Analyst
& Product Designer
Nhận feedback, reviews & un-block từ Senior members
Technical &
Soft-skill Workshop
Phát triển sản phẩm (Frontend, Backend, Development)
Final Product Demo – trình bày thành phẩm giải pháp product
Nghiệm thu, deploy và vận hành sản phẩm (Deployment, launching & operations)
Product Sharing Workshop
Review Contribution & Performance
8
Trang 9Em tham gia làm việc tại công ty bắt đầu từ ngày 1/11/2022 tới 31/12/2023, các ngày làm việc trong tuần là từ thứ 2 đến thứ 6 Công việc hằng ngày bắt đầu từ lúc 8 giờ 30 đến 17 giờ 30 Thời gian nghỉ trưa khoảng 2 tiếng 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 mục tiêu cho ngày làm việc tiếp theo Mỗi tuần sẽ họp tiến
độ tuần 1 lần vào sáng thứ 2, 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 Mỗi tuần sẽ tổ chức Technical & Softskill workshop một lần vào mỗi tối thứ 4 để mọi người trao đổi những chủ đề về kỹ năng làm việc, công nghệ mới nhất Ngoài ra còn có buổi họp mặt mọi người vào chiều thứ 6 hàng tuần để mọi người trong công ty có thể gặp gỡ, chia sẻ với nhau những chuyện trong cuộc sống như nói lời cảm ơn, chúc mừng sinh nhật đồng nghiệp, kể cho nhau nghe những chuyện vui, và còn nhiều điều khác nữa
Trang 10CHƯƠNG 2: NỘI DUNG THỰC TẬP
Đợt thực tập với chủ đề “Lập trình trang web thương mại điện tử” nhằm mục đích giúp sinh viên thực tập được đào tạo toàn diện về lập trình web app như backend, frontend, design, dev op, tester, đồng thời rèn luyện những kỹ năng mềm như làm việc nhóm, thuyết trình, giao tiếp, trao đổi với khách hàng, quản lý dự án, quản lý thởi gian, quản lý cá nhân, Tại công ty, sinh viên có cơ hội được học tập, khám phá và làm việc trong một môi trường phát triển product chuyên nghiệp
2.1 Tìm hiểu công ty và các kỹ năng cơ bản trong công ty
Thời gian: 4 ngày
Nội dung: Giới thiệu về công ty, cách tổ chức của công ty, giới thiệu về Agile, Scrum, cách làm việc theo phương pháp Scrum
Đượ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, cách thức tổ chức của công ty, cách thức làm việc trong công ty như 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ông việc… (1 ngày)
Tiếp đến là học về Agile, Scrum, cách làm việc với Scrum (3 ngày) Kết quả: Hiểu thêm về công ty GEEK Up, 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, và hiểu hơn về Agile mindset và phương pháp Scrum để áp dụng trong công việc
2.2 Nghiên cứu kỹ thuật
2.2.1 Các công cụ làm việc
Thời gian: 1 ngày
Nộ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
Trong thời gian này, supervisor đã hướng dẫn thực tập sinh tìm hiểu
về các công cụ sẽ giúp ích cho trong công việc sau này Một số phần mềm trong số đó như Gitlab - sử dụng trong làm việc nhóm, Docker – phần mềm hỗ trợ việc tách product ra khỏi môi trường giúp cho việc cài đặt config thuận tiện hơn
Kết quả: Nắm được kiến thức cơ bản về các phần mềm, công cụ sẽ được sử dụng trong project
10
Trang 112.3 Tham gia dự án thực tế
2.3.1 Công nghệ
Những công nghệ đáng chú ý được sử dụng trong project: NextJS (React franework), Medusa Express, Docker
Trang 122.3.2 Mô tả dự án
Hình 2.1: Hình ảnh một bộ sưu tập
Mỗi sản phẩm có thể được thêm vào một bộ sưu tập, mỗi bộ sưu tập sẽ có 1 trang riêng biệt để chứa thông tin và những sản phẩm nằm trong bộ sưu tập đó Admin có toàn quyền tùy chỉnh màu sắc, hình ảnh, video, mô tả, icon, và rất nhiều thứ khác của các bộ sưu tập trên trang web của mình
Mục đích của trang web là để tăng độ nhận diện thương hiệu cho công ty Khi khách hàng vào xem sản phẩm sẽ thấy được cả những sự kiện của công ty gắn liền với sản phẩm, chính điều đó sẽ giúp người dùng nhận ra và nhớ đến thương hiệu của công ty
12
Trang 13Hình 2.2: Các thành phần của dự án
Dự án gồm 3 phần: Backend server, trang web cho người dùng và trang web cho admin Em phụ trách phần backend server
Em đã giúp team đi đúng hướng theo thiết kế của framework Medusa bằng cách đọc
documentation và phát hiện ra cách framework sử dụng dependency injection, cách
framework đọc dữ liệu từ database và nâng cấp database, cũng như thay đổi kiểu dữ liệu của database thông qua để phù hợp hơn với mục đích sử dụng của team
Nhờ em mà team đã có hiểu biết sâu rộng hơn về cách framework Medusa tạo và quản lý database Ngoài ra, em còn là người thiết kế và tạo ra một số tính năng, cả chính lẫn phụ, của trang web: chức năng quản lý người dùng, chức năng thanh toán, chức năng về địa chỉ Việt Nam để hỗ trợ cho chức năng thanh toán, chức năng quản lý mặt hàng, chức năng quản lý đơn hàng, chức năng về import file cho admin
Về chức năng quản lý người dùng, khi có người vào trang web và đặt hàng sử dụng số điện thoại hoặc email, người đó sẽ được tạo một tài khoản để lưu thông tin liên quan về đơn hàng, địa chỉ, … để hỗ trợ các chức năng khác
Trong chức năng thanh toán, em đã viết các API để storefront (UI trang web/trình duyệt của người dùng) giao tiếp với backend server, ghi nhận thông tin của người dùng, lưu vào
database và trả kết quả thanh toán về cho storefront
Còn về tính năng địa chỉ, em đã thiết kế các API để server có hết tất cả các quận huyện tỉnh thành của Việt Nam, khi người dùng chọn Tỉnh/Thành Phố nào đó, thì trang web sẽ hiện lên các Quận tương ứng, từ đó hiện lên các Phường tương ứng của quận đó Đồng thời ghi nhận địa chỉ đó vào trong danh sách địa chỉ của người dùng đó
Về chức năng quản lý mặt hàng, server có thể quản lý số lượng tồn kho và ngăn người dùng mua nhiều hơn số lượng tồn kho
Trang 14Về chức năng quản lý đơn hàng, mỗi đơn hàng có 1 ID riêng biệt, người dùng có thể xem đơn hàng của mình bằng email và ID đó, khi người dùng nhập ID đơn hàng đúng thì sẽ có 1 email được gửi đến cho khách hàng chứa kèm 1 đường link có thời hạn truy cập trong vòng 1 giờ
để xem lại đơn hàng đó
Về tính năng import file dành cho admin, admin có thể import 1 file csv gồm danh sách các món đồ muốn bán và server sẽ thay đổi vật phẩm hiển thị trên trang web theo file csv đó
2.3.3 Quá trình thực hiện:
a) Giai đoạn trước Demo lần I:
- Khách hàng có thể tìm kiếm sản phẩm theo tên hoặc theo category, xem thông tin từng sản phẩm, thêm vào giỏ hàng, điền thông tin mua hàng, đặt hàng
- Admin có thể tìm thêm xóa sản phẩm, thêm xóa các loại sản phẩm khác nhau của từng sản phẩm, giá cả của từng loại sản phẩm, chia sản phẩm thành nhiều category, collection, tìm kiếm sản phẩm, tìm kiếm đơn hàng, xem thông tin đơn hàng, xác nhận đang xử lý đơn hàng, xác nhận đã chuẩn bị các sản phẩm của đơn hàng, xác nhận đơn hàng đã được giao cho đơn vị vận chuyển, xác nhận đã nhận được một phần hoặc toàn
bộ số tiền của đơn hàng, xác nhận đơn hàng đã hoàn thành
- Viết documentation
- Deploy server
- Test tìm bugs
- Fix bugs
Kết quả :
- Tất cả các tính năng trên đã được thực hiện, mặc dù còn nhiều bug
b) Giai đoạn trước Demo lần II:
- Khách hàng có thể tìm kiếm sản phẩm theo collection, xem thông tin collection, xem thông tin đơn hàng, tình trạng đơn hàng, tìm kiếm đơn hàng bằng email (có xác thực), gửi mail cho khách hàng khi đơn hàng được tạo, xác nhận, vận chuyển, đã giao
- Admin có thể tùy chỉnh trang collection như màu nền của các vùng khác nhau, hình nền của các vùng khác nhau, hình banner, icon, mô tả, link video youtube
- Viết Documentation
- Test tìm bugs
- Fix bugs
Kết quả : Đã hoàn thành toàn bộ những tính năng trên, số lượng bugs cũng đã giảm xuống rất nhiều, hấu như dùng bình thường sẽ không bị bug, một số bug đã tìm thấy nhưng không ảnh hưởng đến server đã được note lại trong document
14
Trang 15c) Thuận lợi và khó khăn
Thuận lợi:
- Hầu như mọi người đều hoàn thành công việc đúng kế hoạch
- Mọi người làm việc vui vẻ, hợp tác ăn ý, cùng nhau lên kế hoạch, thực hiện, test, fix bugs rất ăn ý, vì tính chất công việc làm tại công ty, mọi người được ngồi gần nhau khiến việc giao tiếp làm việc nhóm hiệu quả hơn
- Không chỉ trong giờ làm, ngoài giờ làm khi có sự cố gì thì khi liên lạc mọi người vẫn
cố gắng trả lời sớm nhất có thể Cả các anh coach và team intern
Khó khăn:
- Document của framework Medusa Express được sử dụng rất ít và sơ xài, khiến việc hiểu framework tốn một khoản thời gian khá lớn Trước khi hiểu đúng framework thì
đã phải làm cách khác để kịp tiến độ, khi hiểu đúng rồi thì phải sửa lại cho đúng với framework đang sử dụng
- Trong quá trình thực hiện project, đã có một số bạn trong team intern vì nhiều lí do khác nhau đã không thể tiếp tục làm việc, điều đó đã ảnh hưởng một phần đến kế hoạch tổng thể và số lượng công việc mỗi người cần làm