Quý công ty đã hỗ trợ em rất nhiều trong suốt thời gian thực tập vừa qua,dạy em những kỹ năng cần thiết, truyền đạt cho em những kinh nghiệm mà các anh chị đãtrải qua trong quá trình làm
Trang 1KHOA CÔNG NGHỆ PHẦN MỀM
THỰC TẬP TỐT NGHIỆP
ĐỀ TÀI: Harmonia – CRM Tool
Lớp: SE501.L11.PMCL
Sinh viên thực hiện: Đào Hữu Duy Quân – 17520136
TP Hồ Chí Minh, ngày 29 tháng 9 năm 2020
Trang 2NHẬN XÉT
(Của giảng viê n )
Trang 3
MỤC LỤC
Trang 4LỜI NÓI ĐẦU
Ngày nay, ngành công nghiệp phát triển ứng dụng web là một bộ phận không thểthiếu của ngành công nghiệp phần mềm Với tốc độ phát triển vô cùng mạnh mẽ, ngànhphát triển ứng dụng web đã 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ả về phần cứng và phần mềm
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 web non trẻ Việt Nam đã và đang phát triển mạnh mẽ, đểhòa nhập với những công ty hàng đầu về xây dựng nền tảng web trên thế giới Bên cạnh
sự phát triển của web thì những ngành nghề được tiếp cận người dùng một cách nhanhchóng như những gì ta có thể thấy là mạng xã hội hay những website bán hàng trực tuyếncũng đang rất thịnh hành trên cả thế giới lẫn Việt Nam
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 tìm hiểu, bổ sung kiến thức trong một môi trường chuyên nghiệp,
em có dự định là sẽ thực tập trong học kì Vì vậy, em quyết định chọn Công Ty Cổ phầnCông nghệ Geek Up - một môi trường lý tưởng, hiện đại, chuyên nghiệp - là nơi sẽ giúp
em thực hiện được dự định này
Trang 5LỜI CẢM ƠN
Em xin chân thành cảm ơn ban giám hiệu và quý thầy cô trường Đại học Côngnghệ thông tin đã cung cấp và bồi dưỡng cho em những kiến thức cơ bản trong suốt 4năm ngồi trên giảng đường đại học, để từ đó em có nền tảng áp dụng vào đợt thực tậpmột cách hiệu quả nhất có thể
Em xin gửi lời cảm ơn quý Công Ty Cổ phần Công nghệ Geek Up đã tạo điều kiệncho em thực tập tại công ty cũng như cung cấp, bổ sung cho em những kiến thức mà emcòn thiếu sót Quý công ty đã hỗ trợ em rất nhiều trong suốt thời gian thực tập vừa qua,dạy em những kỹ năng cần thiết, truyền đạt cho em những kinh nghiệm mà các anh chị đãtrải qua trong quá trình làm việc, trao đổi với khách hàng, tác phong và tinh thần tráchnhiệm trước công việc được giao, những suy nghĩ tích cực Các anh chị cũng đã tạo cho
em nhiều điều kiện để ứng dụng những kiến thức đã học vào thực tế để xây dựng những
dự án thự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
Vì kiến thức bản thân còn hạn chế cũng như là lần đầu tiên được va chạm và tiếpxúc với thực tế, áp dụng lý thuyết vào công việc nên bản thân còn bỡ ngỡ và lúng túng,không tránh khỏi những thiếu sót, mong quý Thầy (Cô) có thể đóng góp ý kiến để em cóthể hoàn thiện hơn
Em xin chân thành cảm ơn!
Đào Hữu Duy Quân
TP Hồ Chí Minh, ngày 29 tháng 09 năm 2020
Trang 6DANH MỤC CÁC CỤM TỪ VIẾT TẮT
Trang 7CHƯƠNG 1: GIỚI THIỆU CÔNG TY THỰC TẬP
I Giới thiệu chung về công ty
- Tên đơn vị: Công ty cổ phần công nghệ Geek Up (GEEK UP TECHNOLOGY JSC)
- Thời gian làm việc: Thứ 2 đến thứ 6: 08h30 - 17h30
- 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ười dùng
• High standard: luôn thử thách bản thân để nâng cao trình độ chuyên môn
• Stay Hunry Stay Foolish: không dừng lại với khả năng hiện tại, luôn tiếp tục trau dồi học hỏi
Hình 1.1: Logo Công ty cổ phần công nghệ Geek Up
- GeeK Up là công ty tư vấn, cung cấp xây dựng các sản phẩm công nghệ phầnmềm tối ưu nhất cho cộng đồng, doanh nghiệp và cá nhân: đối tác của công ty baoquát từ các công ty khởi nghiệp cho đến các doanh nghiệp lớn Mục tiêu của công
Trang 8ty là tạo ra những giá trị tích cực cũng như những sản phẩm đẳng cấp phù hợp vớicác tiêu chuẩn quốc tế Geek Up không ngừng gia tăng giá trị cộng đồng bằng khảnăng cung cấp cho khách hàng những sản phẩm và dịch vụ chất lượng cao nhấttrong các lĩnh vực phát triển phần mềm Công ty sẽ phát triển và cung cấp phầnmềm đúng thời gian, trong phạm vi ngân sách và chất lượng cao nhất đem đến chokhách hàng sự hài lòng tuyệt đối, lợi nhuận tối đa, sự phát triển mạnh mẽ củathương hiệu sản phẩm
- Nắm bắt nhu cầu và thường xuyên cập nhật xu hướng trong ngành, mỗi một thànhviên của công ty luôn không ngừng nâng cao khả năng của bản thân để mang đếngiá trị tích cực cho khách hàng
II Cơ cấu tổ chức
GEEK Up được tổ chức theo mô hình phẳng Một thành viên sẽ đóng các vai trò linh hoạt trong các nhóm tổ chức khác nhau:
• Squad là các thành viên trong cùng một nhóm cùng nhau thực hiện các công việc cần thiết để đạt được mục tiêu (goal) chung của dự án
• Chapter: các thành viên trong cùng một nhóm có chung chuyên môn
(expertise), mục đích là hỗ trợ nhau về mặt chuyên môn, cùng nhau trưởng thành về mặt chuyên môn
• Guild: các thành viên trong cùng một nhóm có chung một sở thích (interest), mối quan tâm nào đó, mục đích là cùng tham gia các hoạt động thuộc về sở thích, các môi quan tâm ngoài công việc
Trang 9Hình 1.2: GEEK Up Organization Chart
III Tổng quan việc kinh doanh
GEEK Up là công ty phần mềm được thành lập từ năm 2014, với đội ngũ hơn 60 thành viên của GEEK Up đã phát triển hơn 300 dự án phần mềm, tạo ra hơn 100 sản phẩm phần mềm mang lại giá trị cao về kinh doanh cho những khách hàng lớn trên thếgiới như SMRT (Singapore), Nikkei (Nhật), D2O (Mỹ) Riêng ở Việt Nam, GEEK Up
là đối tác tin cậy số 1 trong các dự án chuyển đổi số (digital transformation) cho các doanh nghiệp hàng đầu như: ACB, TPBank, Heineken, FPT, Viettel, ELSA…
Có thể kể tên cho một số sản phẩm GEEK Up đã xây dựng và được ứng dụng trên thị trường Việt Nam hiện tại:
Trang 101 The Coffee House - Chuỗi cà phê tăng trưởng nhanh số 1 tại Việt Nam
Hình 1.3 UI design - The Coffee House - Loyalty application
Trang 112 Wall Street English application - Simple & fun booking app for English classVisit site: http://wallstreetenglish.edu.vn/ung-dung-dien-thoai.html
Hình 1.4 UI design - Wall-street English - Class booking application
Trang 123 Wumbo – A high-level project management solution
Visit site: https://www.wewumbo.io/feature.html
Hình 1.5 UI design – Wumbo – A project management solution
Bên cạnh việc phát triển sản phẩm phần mềm, GEEK Up đã đầu tư và kinh doanh GEEK Hub - Cafeteria & Workspace, một nơi dành cho bạn muốn học, làm việc và trao đổi kiến thức
Trang 13IV Văn hóa công ty
Văn hóa ở GEEK Up được xây dựng theo các giá trị cốt lõi:
• “Awesome Comrade”: Luôn luôn ủng hộ và sẵn sàng nỗ lực hơn nữa để giúp
nhóm và đồng đội của mình tiến về phía trước
• “Commitment”: Giữ lời hứa, sẵn sàng thực hiện lời hứa bằng mọi giá.
• “Contribution”: Đóng góp phát triển nhóm ngay cả khi không thuộc trách nhiệm
của bạn
• “Ownership”: Suy nghĩ, quan tâm và hành động, vì quyền lợi nhóm cũng là
quyền lợi của cá nhân
Thời gian làm việc từ thứ 2 đến thứ 6: 8h30 – 17h30
Thời gian nghỉ trưa từ 11:30 PM đến 1:30 PM, mọi nhân viên có thể ăn trưa và ngủtrước khi bắt đầu công việc vào buổi chiều
Nhân viên được khuyến khích sử dụng tiếng Anh khi giao tiếp Nhân viên công ty saumỗi giờ làm việc đều phải ghi rõ thời gian thực hiện các "task" của dự án, để đảm bảorằng dự án đang được thực hiện
Đồ ăn nhẹ, trà, cà phê, trái cây miễn phí cho tất cả nhân viên vào thời gian nghỉ ngơi Sau mỗi ngày làm từ thứ 2 đến thứ 5 luôn có Workshop về những kinh nghiệm trongcông việc cũng như trong cuộc sống, giúp trau dồi những kiến thức chuyên môn cũngnhư những kỹ năng mềm cho nhân viên công ty
Thứ 6 sẽ diễn ra "Friday Meetup" là nơi để nhân viên công ty bày tỏ lòng cảm ơn vớinhững cộng sự của mình trong tuần vừa qua, và một bữa tiệc nhẹ cho cuối tuần
Trang 14V Một số hình ảnh công ty
Hình 1.6: Tầng trệt của công ty Geek Up.
Hình 1.7: Buổi Thursday - Workshop về kỹ năng quản lý dự án.
Trang 15Hình 1.8: Buổi Friday Meetup - Nơi bày tỏ lòng biết ơn với những cộng sự trong suốt tuần
vừa qua.
Hình 1.9: Phòng làm việc của thực tập sinh.
Trang 16Hình 1.10: Cuộc họp của bộ phận Design.
Trang 17CHƯƠNG 2: NỘI DUNG THỰC TẬP
I Công nghệ, giải pháp và quy trình áp dụng
1 Giới thiệu về Git
Hình 2.1: Mô hình công cụ Git.
Git là tên gọi của một Hệ thống quản lý phiên bản phân tán (Distributed Version Control System – DVCS) là một trong những hệ thống quản lý phiên bản phân tán phổ
biến nhất hiện nay DVCS nghĩa là hệ thống giúp mỗi máy tính có thể lưu trữ nhiều phiên
bản khác nhau của một mã nguồn được nhân bản (clone) từ một kho chứa mã nguồn (repository), mỗi thay đổi vào mã nguồn trên máy tính sẽ có thể ủy thác (commit) rồi
đưa lên máy chủ nơi đặt kho chứa chính Và một máy tính khác (nếu họ có quyền truycập) cũng có thể clone lại mã nguồn từ kho chứa hoặc clone lại một tập hợp các thay đổi
mới nhất trên máy tính kia Trong Git, thư mục làm việc trên máy tính gọi là Working Tree.
Trang 18Hình 2.2: Sơ đồ liên hệ giữa các máy tính.
Trang 19dàng mà không cần copy lại mã nguồn rồi cất vào đâu đó Và một người khác có thể xemcác thay đổi của bạn ở từng phiên bản, họ cũng có thể đối chiếu các thay đổi của bạn rồigộp phiên bản của bạn vào phiên bản của họ Cuối cùng là tất cả có thể đưa các thay đổivào mã nguồn của mình lên một kho chứa mã nguồn.
Cơ chế lưu trữ phiên bản của Git là nó sẽ tạo ra một “ảnh chụp” (snapshot) trênmỗi tập tin và thư mục sau khi commit, từ đó nó có thể cho phép bạn tái sử dụng lại mộtảnh chụp nào đó mà bạn có thể hiểu đó là một phiên bản Đây cũng chính là lợi thế củaGit so với các DVCS khác khi nó không “lưu cứng” dữ liệu mà sẽ lưu với dạng snapshot
Hình 2.3: Sơ đồ cơ cấu của Git.
- Master: là nhánh chính, run trên production
Trang 20- Dev: là nhánh replica cho nhánh master cộng với các nhánh feature đang đượcphát triển.
- Feature: được tách từ nhánh dev, chức năng sau khi được phát triển sẽ được mergevào dev trước khi merge vào master
Hình 2.4: Git branching
Trang 212 Giới thiệu về VSCode
Hình 2.5: Chương trình VSCode
Visual Studio Code là sản phẩm của Microsoft, ra mắt vào tháng 4 năm 2015 ở hội nghị
Build Đặc điểm nổi bật là đơn giản, gọn nhẹ, dễ dàng cài đặt
Visual Studio Code có thể cài đặt được trên cả Windows, Linux và Mac OS và hỗ trợ
nhiều ngôn ngữ khác nhau
Hình ảnh giao diện ban đầu của VSCode như sau:
Trang 22Hình 2.6: Giao diện ban đầu của VSCode.
Nhìn sang thanh sidebar ta thấy 4 biểu tượng, đầu tiên là hai tờ giấy xếp chồng lênnhau, đây là cây thư mục chứ những file mà chúng ta đang làm việc Hình chiếc kính lúp
hỗ trợ chức năng tìm kiếm Một điểm đặc biệt là Visual Studio Code được tính hợp luôngit, rất tiện cho việc quản lý code của chúng ta
Biểu tượng thứ 4 là diệt con bọ, chính là chức năng hỗ trợ chúng ta fix bug Hìnhvuông cuối cùng là nơi cho phép chúng ta cài thêm các phần extensions mà Microsoft vàcộng đồng viết thêm cho chúng ta, hỗ trợ quá trình code
Trang 233 Giới thiệu về mô hình làm việc Agile – Scrum
• Tại sao cần Agile?
Sự khác nhau giữa phương pháp làm việc truyền thống-Waterfall và Agile có thể tổng kết trong 2 từ: cứng nhắc và linh hoạt Trong khi Waterfall là 1 process khá cứng
nhắc và nguyên tắc, thì Agile lại rất linh hoạt và không ngừng thay đổi sao cho phù hợpvới thời đại và ý kiến của khách hàng Chi tiết hơn về sự khác nhau như sau:
- Waterfall là quy trình có cấu trúc, bạn không thể bắt đầu công đoạn mới cho đến khi công đoạn trước đấy được hoàn thành Agile là quy trình linh hoạt, cho phép bạn chạy dự án theo cách mà bạn muốn Waterfall là tuần tự, và Agile thì
không ép buộc vào 1 quy trình tuần tự nào
- Các dự án theo quy trình Waterfall thường cần define cụ thể yêu cầu của dự án, trong khi các yêu cầu trong các dự án Agile có thể thay đổi và phát triển.
- Trong các dự án Waterfall, bạn không thể thay đổi những thứ bạn đã làm trong những công đoạn trước, tuy nhiên Agile rất phù hợp và có thể đáp ứng được các
thay đổi
Hình 2.7: Mô hình Agile và Waterfall.
Trang 24Một cách tổng quát, khi một sản phẩm được xây dựng theo mô hình Waterfall, thì các
công việc trong dự án được xác định theo nguyên tắc lúc ban đầu, và không tiếp thu được
ý kiến của người sử dụng trong quá trình hình thành sản phẩm Việc giành quá nhiều thờigian cho một sản phẩm mà không biết được rằng mức độ khả thi cũng như những điều
mà người sử dụng quan tâm sẽ gây ảnh hưởng rất nhiều đến chất lượng sản phẩm
Trong khi đó, Agile giúp các nhà phát triển có thể nhận dạng, điều chỉnh các vấn đề và khiếm khuyết một cách nhanh chóng Các điểm mạnh của Agile là:
- Thực hiện thay đổi dễ dàng: Bởi vì dự án được chia thành các phần nhỏ,
riêng biệt, không phụ thuộc lẫn nhau, nên những thay đổi được thực hiện rất
dễ dàng, ở bất kỳ giai đoạn nào của dự án.
- Không cần phải nắm mọi thông tin ngay từ đầu: Phù hợp với những dự án
chưa xác định được mục tiêu cuối cùng rõ ràng, vì việc này không quá cần thiết trong giai đoạn đầu
- Bàn giao nhanh hơn: Việc chia nhỏ dự án cho phép đội ngũ có thể tiến hành
kiểm tra theo từng phần, xác định và sửa chữa vấn đề nhanh hơn, nhờ đó việc bàn giao công việc sẽ nhất quán và thành công hơn.
- Chú ý đến phản hồi của khách hàng và người dùng: Cả khách hàng và
người dùng cuối đều có cơ hội để đóng góp các ý kiến và phản hồi, từ đó họ sẽ
có ảnh hưởng một cách mạnh mẽ và tích cực tới sản phẩm cuối cùng.
- Cải tiến liên tục: Agile khuyến khích thành viên trong đội ngũ làm việc và
khách hàng cung cấp phản hồi của mình, khi đó các giai đoạn khác nhau của sản phẩm cuối có thể được kiểm tra và cải thiện lại nhiều lần nếu cần.
Trong ngành công nghiệp phần mềm, phương thức sản xuất phần mềm có một vai trò
vô cùng quan trọng, nó quyết định cấu trúc tổ chức, qui trình phát triển, khả năng thành
công của các dự án Trong những năm gần đây Agile- Scrum nổi lên và thay thế mô hình
Trang 25Hình 2.8: Quy trình Agile.
• Định nghĩa mô hình Agile.
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 quy trình phát triển phần mềm với
mục tiêu là đưa sản phẩm đến tay người dùng càng nhanh càng tốt Nguyên tắc phát triển mô hình là phân đoạn lặp (iterative) và tăng trưởng (incremental), theo đó nhu
cầu và giải pháp tiến hóa thông qua sự hợp tác giữa các nhóm tự quản và liên chức năng
Rất nhiều nơi định nghĩa Agile như một phương pháp Thực chất, Agile giống nhưmột phương pháp luận, một triết lý dựa trên hơn nguyên tắc phân đoạn vòng lặp(iterative) và tăng trưởng (incremental)
Trang 26Ngà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ểnphần mềm để đóng góp sự thay đổi trong cách thức làm việc, quản lí, sản xuất ở cácngành khác như sản xuất, dịch vụ, sales, marketing, giáo dục và trở thành một phươngthứ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ươngpháp “họ Agile”.
• 4 tôn chỉ trong 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êncon người, xây dựng tương tác và hỗ trợ giữa các thành viên trong nhóm Nhữngthành viên có năng lực, chịu tương trợ nhau trong công việc sẽ mang đến thànhcông cho dự án
- 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ầnmềm hoàn chỉnh đáp ứng hoàn hảo yêu cầu khách hà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áchhàng cần gì để tư vấn và điều chỉnh sản phẩm thay vì chỉ dựa vào các điều khoảntrong hợp đồng
- Phản hồi thay đổi hơn là bám sát kế hoạch: Agile khuyến khích thí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
- Đáp ứng toàn diện nhu cầu khách hàng thông qua việc giao hàng sớm và sảnphẩ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ường xuyên
- Nhà kinh doanh và các kỹ sư phần mềm cần làm việc cùng nhau trong 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ầnthiết, môi trường làm việc và niềm tin để hoàn thà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