Sau khi tìm hiểu về lịch sử phát triển và văn hóa thì em quyết định chọnCông Ty Cổ phần Công nghệ Geek Up - một môi trường lý tưởng, hiện đại, chuyênnghiệp - là nơi sẽ giúp em thực hiện
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
KHOA CÔNG NGHỆ PHẦN MỀM
BÁO CÁO THỰC TẬP XÂY DỰNG PRODUCT COLLECT INSIGHT
Công ty thực tập: GEEK UP TECHNOLOGY JSC Người phụ trách hướng dẫn: Nguyễn Ngọc Tuấn Thực tập sinh: Nhan Hữu Thuận
MSSV: 19522318
Trang 2LỜI MỞ ĐẦU
Vào thế kỷ 21, Cuộc Cách mạng Công nghiệp 4.0 Internet nói chung và ngànhcông nghiệp Phát triển Ứng dụng web là một phần không thể thiếu của thế giới Vớitốc độ phát triển vô cùng mạnh mẽ, ngành Phát triển Ứng dụng web đã và đang nắmvai trò chủ chốt trong nền kinh tế thế giới, và tiềm năng của ngành vẫn còn có thể đi
xa hơn trong tương lai
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ệ.Ngành công nghiệp Phát triển Ứng dụng web của Việt Nam đang phát triển rất mạnh
mẽ, đủ sức hòa nhập, hợp tác với những công ty hàng đầu về xây dựng ứng dụng điệnthoại trên thế giới
Sau quá trình học tập và rèn luyện tại khoa Công nghệ phần mềm trường Đạihọc Công nghệ Thông tin chúng em đã được trang bị các kiến thức về chuyên môn và
kỹ năng mềm Với mong muốn bổ sung thêm kinh nghiệm và các kỹ năng làm việctrong một môi trường chuyên nghiệp, em lên kế hoạch cho một khóa thực tập tronghọc kỳ này Sau khi tìm hiểu về lịch sử phát triển và văn hóa thì em quyết định chọnCông Ty Cổ phần Công nghệ Geek Up - một môi trường lý tưởng, hiện đại, chuyênnghiệp - là nơi sẽ giúp em thực hiện hóa dự định này
Trang 3LỜI CẢM ƠN
Em xin chân thành cảm ơn nhà trường và quý thầy cô trường Đại học CôngNghệ Thông Tin đã tận tâm hướng dẫn, giảng dạy cho em những kiến thức chuyênmôn cũng như kỹ năng mềm trong hơn 3 năm ngồi trên giảng đường đại học, từ đó đãxây dựng cho em nền tảng vững chắc tạo giúp em thực hiện hóa ước mơ
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ềukiện cho em có cơ hội được thực tập tại công ty, cho em trải nghiệm một môi trườnglàm việc cực kỳ chuyên nghiệp và hiệu quả Cùng với các người đồng đội trong kỳthực tập, em mong rằng chúng em đã để lại một dấu ấn, những kỷ niệm đẹp trong kỳthực tập vừa qua
Chỉ trong một thời gian ngắn, nhưng nhờ sự chỉ dẫn nhiệt tình của các anh chịhướng dẫn, 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 Trusted Product Chân thành cảm ơn các anh chị trong nhómhướng dẫn đã bỏ ra nhiều thời gian, công sức để hướng dẫn chúng em hoàn thành đợtthực tập này
Bên cạnh kinh nghiệm quý báu về kỹ năng chuyên môn về Phát triển ứng dụngweb, còn có những kỹ năng về làm việc nhóm, quy trình làm việc chuyên nghiệp Cácanh chị hướng dẫn đã dạy em những kỹ thuật cần thiết trong giao tiếp và truyền đạtcho em những kinh nghiệm của anh chị trong quá trình làm việc, trao đổi với kháchhàng và tinh thần trách nhiệm với công việc và với đồng đội Các anh chị đã tạo cho
em nhiều cơ hội để ứng dụng những kiến thức đó ngay vào thực tế để xây dựng dự ánthực tiễn đi từ lúc ban đầu, nâng cao trình độ, cũng như tốc độ lập trình và trí thứcthêm một bậc
Em xin chân thành cảm ơn!
Nhan Hữu ThuậnTP.Hồ Chí Minh, tháng 12 năm 2022
Trang 4NHẬN XÉT CỦA KHOA
………
………
………
………
……
………
………
………
………
……
………
………
………
………
……
………
………
………
………
……
………
………
………
Trang 5……
………
………
………
………
…… ………
MỤC LỤC
1 Tìm hiểu công ty và các kỹ năng cơ bản trong công ty 9
2.4 Tìm hiểu về product analysis and design 17
Trang 63 Cảm nhận của bản thân về công ty 30
Chương 1: Giới thiệu công ty thực tập
1 Giới thiệu công ty GeekUp
- Tên đơn vị: Công ty Cổ phần Công nghệ Geek Up (GEEK UPTECHNOLOGY JSC)
Trang 7- Slogan: “Insightful development”
- Sứ mệnh: Xây dựng các sản phẩm phần mềm mang lại nhiều giá trị cho ngườidùng
Trang 8Quản lý hệ thống frontend & backend cho Hmlet
- GEEK Up hợp tác với đội ngũ Hmlet để xây dựng và ra mắt các tính năngcần thiết để thu hút khách hàng đến website và nâng cấp giao diện ứng dụngdành cho các khách hàng đã ký hợp đồng để cải thiện Trải nghiệm ngườidùng
2 Funding societies - Nền tảng fintech dẫn đầu thị trường cho vay ngân hàng
Trang 9Xây dựng nền tảng tối ưu hoạt động vận hành của startup Fintech dẫn đầu thị trường cho vay ngang hàng
- GEEK Up xây dựng nền tảng vận hành giúp Funding Societies rút ngắn thờigian giải ngân, tăng cường tính liên kết giữa các bộ phận và khả năng đồng
bộ lưu trữ dữ liệu
Trang 103 SMRT - nhà điều hành giao thông công cộng đa phương thức hàng đầu ở Singapore
Nền tảng giao thông công cộng thay đổi trải nghiệm di chuyển của 6 triệu người dân Singapore
- GEEK Up hợp tác với Tập đoàn SMRT xây dựng nền tảng mới mang đếntrải nghiệm giao thông công cộng thuận tiện tại Singapore
Trang 11Chương 2: Nội dung thực tập
Đợt thực tập với chủ đề “Xây dựng Product collect insight” và mục tiêu là xâydựng server, client trên nền tảng Web, đồ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 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
1 Tìm hiểu công ty và các kỹ năng cơ bản trong công ty
- Thời gian: 1.5 ngày
- Nội dung:
o 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, phươngchâm và quy trình làm việc để deliver một sản phẩm, cách thức tổ chứccủa công ty, tinh thần của mọi người trong công ty Geek Up, các vị tríhiện tại trong công ty, cách mọi người trong công ty làm việc với nhau,
…
o Ngoài ra, thực tập sinh còn được giới thiệu về 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ác bướccần thực hiện trước khi bắt đầu vào làm, trong quá trình làm việc và khikết thúc một ngày làm việc
o Tìm hiểu về các công cụ sẽ được sử dụng trong quá trình làm việc Cũng
trong thời gian này, các anh chị hướng dẫn thực tập sinh tìm hiểu cáccông cụ phục vụ cho từng mục đích cụ thể khi làm việc Hầu hết cáccông cụ đều là sản phẩm lưu hành nội bộ công ty, ngoài ra còn có cácứng dụng, phần mềm hỗ trợ như Google Meet – phục vụ cho mục đíchgặp và trao đổi trực tiếp Một số bộ công cụ sử dụng cho dự án:
▪ Công cụ quản lý dự án
▪ Công cụ giao tiếp, trao đổi thông tin giữa team members
Trang 12▪ Công cụ hỗ trợ note, viết technical approach
- 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 cho
đến hiện tại Cách vận hành trong công ty, cách phối hợp với nhau giữa cácthành viên Có thêm các kỹ năng về quản lý công việc, tinh thần trách nhiệm,
kỹ năng giao tiếp và làm việc nhóm qua các công cụ do công ty cung cấp
Trang 132 Nghiên cứu kỹ thuật
o Khái niệm Agile (viết tắt của Agile Software Development) có nghĩa làphương thức phát triển phần mềm linh hoạt, được ứng dụng trong quytrình phát triển phần mềm với mục tiêu là đưa sản phẩm đến tay ngườidùng càng nhanh càng tốt
o Rất nhiều nơi định nghĩa Agile như một phương pháp Thực chất, Agilegiống như một phương pháp luận, một triết lý dựa trên hơn nguyên tắcphân đoạn vòng lặp (iterative) và tăng trưởng (incremental)
o Ngày nay, triết lí Agile đã vượt xa khỏi khu vực truyền thống của mình
là phát triển phần mềm để đóng góp sự thay đổi trong cách thức làmviệc, quản lý, sản xuất ở các ngành khác như sản xuất, dịch vụ, sales,marketing, giáo dục và trở thành một phương thức quản lý dự án phổbiến nhất hiện nay với nhiều đại diện được gọi là các phương pháp “họAgile”
● 4 tôn chỉ cần tuân thủ trong phương pháp Agile
○ Cá nhân và sự tương hỗ quan trọng hơn quy trình và công cụ:Trọng tâm đặt lên con người, xây dựng tương tác và hỗ trợ giữacác thành viên trong nhóm Những thành viên có năng lực, chịutương trợ nhau trong công việc sẽ mang đến thành công cho dựán
Trang 14○ Sản phẩm dùng được tốt hơn tài liệu đầy đủ: Tập trung thời gian
để làm ra phần mềm hoàn chỉnh đáp ứng hoàn hảo yêu cầu kháchhàng
○ Cộng tác với khách hàng quan trọng hơn đàm phán hợp đồng:Hiểu được khách hàng cần gì để tư vấn và điều chỉnh sản phẩmthay vì chỉ dựa vào các điều khoản trong hợp đồng
○ Phản hồi thay đổi hơn là bám sát kế hoạch: Agile khuyến khíchthích nghi với sự thay đổi, đó có thể là thay đổi về công nghệ,nhân sự, deadline,
● 12 nguyên tắc quan trọng trong Agile
○ Đáp ứng toàn diện nhu cầu khách hàng thông qua việc giao hàngsớm và sản phẩm có giá trị
○ Thay đổi yêu cầu được chào đón, thậm chí là rất muộn trong quátrình phát triển
○ Giao phần mềm chạy được cho khách hàng một cách thườngxuyên
○ Nhà kinh doanh và các kỹ sư phần mềm cần làm việc cùng nhautrong suốt dự án
○ Xây dựng dự án xung quanh các cá nhân có động lực Cung cấp
sự hỗ trợ cần thiết, môi trường làm việc và niềm tin để hoànthành công việc
○ Trao đổi trực tiếp là cách truyền đạt thông tin hiệu quả nhất
○ Thước đo chính của tiến độ là phần mềm chạy tốt
○ Phát triển liên tục và bền vững
○ Cải tiến sự linh hoạt bằng cách quan tâm đến kỹ thuật và thiết kế
○ Nghệ thuật tối đa hóa lượng công việc chưa xong - Sự đơn giản là
Trang 15○ Thực hiện thay đổi dễ dàng
○ Không cần phải nắm mọi thông tin ngay từ đầu
○ Bàn giao nhanh hơn
○ Chú ý đến phản hồi của khách hàng và người dùng
○ Cải tiến liên tục
● Scrum Methodology
○ Scrum Roles:
■ Scrum master: Người có kiến thức và am hiểu về scrum, có vai trò điều phối các hoạt động phát triển sảnphẩm theo mô hình agile của team
agile-■ Product owner: Là cầu nối giữa khách hàng và teamsdevelopment Nắm rõ yêu cầu của khách hàng, quản lýhoạch định product backlog cho team
■ Sprint Backlog: Sprint backlog có thể được định nghĩa đơngiản là tập hợp các yêu cầu của người dùng trong đó nhómscrum sẽ làm việc trong một sprint Điều quan trọng làphải đảm bảo rằng những yêu cầu quan trọng nhất củangười dùng luôn là những yêu cầu đang được xử lý vàkhông có yêu cầu nào bị bỏ qua
■ Product increment: Thuật ngữ phần tăng sản phẩm đề cậpđến tất cả các mục tồn đọng của sản phẩm đã được hoànthành trong một sprint và nó cũng có thể được sử dụng để
mô tả tổng của tất cả các mục tồn đọng đã hoàn thành
○ Scrum events:
Trang 16■ Sprint review
■ Sprint retrospective
● Agile ở GeekUP
○ Sprint Planning (Họp Kế hoạch Sprint- Iteration): Nhóm phát
triển gặp gỡ với Product Owner để lên kế hoạch làm việc cho mộtSprint (xem thêm phần Sprint bên dưới) Công việc lập kế hoạchbao gồm việc chọn lựa các yêu cầu cần phải phát triển, phân tích
và nhận biết các công việc phải làm kèm theo các ước lượng thờigian cần thiết để hoàn tất các tác vụ Chia nhỏ công việc thànhcác backlog (task) để có thể theo dõi tiến độ dự án dễ dàng hơn.Scrum sử dụng cách thức lập kế hoạch từng phần và tăng dầntheo thời gian, theo đó, việc lập kế hoạch không diễn ra duy nhấtmột lần trong vòng đời của dự án mà được lặp đi lặp lại, có sựthích nghi với các tình hình thực tiễn trong tiến trình đi đến sảnphẩm
○ Daily Scrum (Họp Scrum hằng ngày): Scrum Master tổ chức
cho Đội sản xuất họp hằng ngày trong khoảng 15 phút để NhómPhát triển chia sẻ tiến độ công việc cũng như chia sẻ các khókhăn gặp phải trong quá trình phát triển phần mềm suốt mộtSprint
○ Sprint Review (Họp Sơ kết Sprint): Cuối Sprint, nhóm phát
triển cùng với Product Owner sẽ rà soát lại các công việc đã hoàntất (DONE) trong Sprint vừa qua và đề xuất các chỉnh sửa hoặcthay đổi cần thiết cho sản phẩm
○ Sprint Retrospective (Họp Cải tiến Sprint): Dưới sự trợ giúp
Trang 17o Tham gia đầy đủ các buổi training.
o Tham gia chuẩn bị bài thuyết trình tìm hiểu về agile scrum methodology
o Áp dụng tốt vào quá trình deliver dự án
- Kết quả: Hiểu được những khái niệm của agile và áp dụng tốt vào quá trình
deliver sản phẩm
2.2 Tìm hiểu về front-end development
- Thời gian : 1 ngày song song với thực hành trong suốt quá trình thực tập.
- Nội dung : Được training các kiến thức liên quan đến phát triển sản phẩm về
khía cạnh front-end, tech-stack sử dụng cho product:
o Những nội dung trọng tâm trong phát triển front-end: System design,state management, convention, codebase structure, … Tìm hiểu vềminimum standard - mức tiêu chuẩn thấp nhất mà geek up đặt ra cho sảnphẩm
o Tìm hiểu về các công nghệ sẽ được sử dụng cho sản phẩm bên phíafront-end:
▪ React: React là một thư viện JavaScript front-end mã nguồn mở
và miễn phí để xây dựng giao diện người dùng dựa trên các thànhphần UI riêng lẻ Đây là công cụ chính được sử dụng để xây dựngsản phẩm cho team front-end Tìm hiểu về một số core conceptscủa react: Components, state, life cycle, hook, event…
▪ DvaJs: Framework hỗ trợ quản lý state tương tự như Redux Tìmhiểu về các concept cơ bản trong Dva như: Action, Reducer,Effect, Model, …
▪ UmiJs: Library hỗ trợ xử lý routing components
▪ Ant design: Một UI framework tương tự như bootstrap, cung cấpcác UI component để phát triển ứng dụng web Ant design cũngđồng thời là một design system với các tiêu chuẩn thiết kế riêng
Trang 18rất lớn, đã được sử dụng rộng rãi ở nhiều nơi, và đặt biệt hỗ trợ
đa dạng các components để làm việc với ReactJs
- Thực hiện:
o Tham gia đầy đủ các buổi training của team cùng Coach.
o Làm các bài quiz, chuẩn bị bài thuyết trình tìm hiểu về các nội dung cơ
bản liên quan đến các frameworks sẽ sử dụng cùng team
- Kết quả:
o Có được những kiến thức quan trọng về phát triển front-end cho ứngdụng
o Tìm hiểu, biết thêm về các công cụ, công nghệ mới bên phía front-end
o Ngoài ra còn được biết thêm một số quy tắc trong việc viết code sao chođúng chuẩn, dễ đọc, dễ hiểu
2.3 Tìm hiểu về backend development
- Thời gian: 1 ngày song song với thực hành trong suốt quá trình thực tập.
- Nội dung: Được training về các kỹ thuật liên quan đến phát triển sản phẩm ở
phần back-end, tech-stack sẽ sử dụng cho dự án:
o Những nội dung trọng tâm trong phát triển back-end: thiết kế api, làmviệc với database, orm, deploy ứng dụng, … Tìm hiểu về minimumstandard - mức tiêu chuẩn thấp nhất mà geek up đặt ra cho sản phẩm
o Tìm hiểu về các công nghệ sẽ được sử dụng cho sản phẩm bên phíaback-end:
▪ NestJs: Nest (NestJS) là một framework để xây dựng các ứngdụng phía máy chủ Node.js hiệu quả, có thể mở rộng Được xâydựng và hỗ trợ đầy đủ TypeScript (nhưng vẫn cho phép các nhà
Trang 19▪ PostgresSql: Một hệ quản trị cơ sở dữ liệu phát triển dựa trênpostgres
▪ TypeORM: TypeORM là một ORM có thể chạy trong các nềntảng NodeJS, Browser, Cordova, PhoneGap, Ionic, React Native,NativeScript, Expo và Electron và có thể được sử dụng vớiTypeScript và JavaScript (ES5, ES6, ES7, ES8) Tìm hiểu về cáckhái niệm cơ bản trong typeORM về mô tả entity, các loạirelationships, …
▪ Docker: Docker là một dự án mã nguồn mở giúp tự động triểnkhai các ứng dụng Linux và Windows vào trong các container ảohóa Tìm hiểu các khái niệm cơ bản liên quan đến docker như:image, container, dockerfile, docker-compose, …
- Thực hiện:
o Tham gia đầy đủ các buổi training của công ty
o Thực hành làm việc nhóm tìm hiểu về các loại ORM khác nhau để sosánh và lựa chọn sử dụng cho dự án
o Thực hành cài đặt và sử dụng docker để chạy các ứng dụng demo đơngiản
2.4 Tìm hiểu về product analysis and design
- Thời gian: 0.5 ngày song song với thực hành trong suốt quá trình thực tập.
- Nội dung:
Trang 20o Được giới thiệu và training về phân tích sản phẩm các yếu tố liên quanđến phân tích sản phẩm như: Business context, business challenge,business goals,
o Giới thiệu và training về product design, các nguyên lý cơ bản trongproduct design: user experience, workflow, UI và UX, …
- Thực hiện:
o Tham gia đầy đủ các buổi training
o Áp dụng tốt vào quá trình deliver dự án
- Kết quả: Hiểu được những khái niệm cơ bản về phân tích và thiết kế sản phẩm
để áp dụng trong quá trình deliver dự án
2.5 Tìm hiểu về project management
- Thời gian: 0.5 ngày song song với thực hành trong suốt quá trình thực tập.
- Nội dung:
o Được training kiến thức cơ bản về project management, vai trò của quản
lý dự án đối với quá trình xây dựng sản phẩm
o Training cách sử dụng các công cụ được cung cấp để quản lý dự án
o Tìm hiểu về quản lý dự án theo mô hình agile
- Thực hiện:
o Tham gia đầy đủ các buổi training
o Thực hành sử dụng các công cụ quản lý dự án và các bước trong môhình agile
- Kết quả: Tìm hiểu và rèn luyện những kỹ năng cơ bản về quản lý dự án và áp
dụng tốt vào quá trình deliver sản phẩm