Em không những học được những kỹ thuật, kiến thức trong các dự án thực tế, mà còn tích góp được cho bản thân những kinh nghiệm khi làm một nhân viên trong công ty, cách giao tiếp, làm vi
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
REACT - JAVA ENGINEER TRAINEE
TP Hồ Chí Minh, tháng 12 năm 2021
Trang 2LỜI MỞ ĐẦU
Với sự phát triển nhanh chóng mặt của thị trường phần mềm, hiện nay ở Việt Nam cũng
đã có rất nhiều công ty phát triển các phần mềm hay hệ thống mã nguồn mở, một trong số đó là công ty ELCA Việt Nam Là một công ty phần mềm đa quốc gia có nguồn gốc từ Thụy Sĩ, ELCA không chỉ phát triển các sản phẩm phần mềm mới, mà còn đảm nhận cả những dự án mã nguồn mở theo yêu cầu khách hàng
Định hướng nghề nghiệp của em rất phù hợp với hướng đi của việc phát triển phần mềm, mục tiêu và giá trị của công ty ELCA Do đó, em đã chọn ELCA là nơi thực tập đầu tiên và trải nghiệm nhiều kiến thức thực tế
Trang 3LỜI CẢM ƠN
Trân trọng gửi lời cảm ơn đến Công ty ELCA Việt Nam đã tạo điều kiện cho em có cơ hội được thực tập tại công ty
Kỳ thực tập tuy ngắn, nhưng em đã được học rất nhiều thứ từ sự chỉ dẫn nhiệt tình của các anh Coach trong phòng ban Em không những học được những kỹ thuật, kiến thức trong các
dự án thực tế, mà còn tích góp được cho bản thân những kinh nghiệm khi làm một nhân viên trong công ty, cách giao tiếp, làm việc nhóm trong các dự án chung Chân thành cảm ơn các anh chị đã giúp đỡ, hướng dẫn cũng như theo sát để góp ý em trong suốt quá trình thực tập
Đặc biệt em xin gửi lời cảm ơn sâu sắc đến anh Hồ Văn Thiện Tâm, đã giúp em
training rất nhiều về kiến thức ReactJS, Spring, đến những khó khăn trong việc làm quen với môi trường mới, cũng được anh chỉ dẫn rất tận tình Với kiến thức rộng và sâu của anh, em đã học hỏi được rất nhiều Anh đã hỗ trợ em rất nhiều về kiến thức nghiệp vụ của sản phẩm SecuTix, cũng như quy trình làm việc và cách thức sử dụng các công cụ Jira, Bitbucket, Vertec, …
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ài báo cáo này
Đinh Ngọc Uyên Phương TpHCM, ngày 25 tháng 12 năm 2021
Trang 4NHẬN XÉT CỦA KHOA
Trang 5MỤC LỤC
2.1 Tìm hiểu công ty và các kỹ năng cơ bản trong công ty 4
Trang 6TÀI LIỆU THAM KHẢO 11
Trang 7Chương 1: GIỚI THIỆU CÔNG TY THỰC TẬP
1 Giới thiệu công ty ELCA
ELCA được thành lập vào năm 1968 tại Thụy Sĩ, là một tập đoàn chuyên cung cấp các giải pháp IT cho khách hàng, thiết kế lại các phần mềm cho phù hợp với nghiệp vụ từng doanh nghiệp yêu cầu ELCA đã có cơ hội hợp tác với hơn 500 doanh nghiệp nhằm cung cấp các giải pháp phần mềm thông minh, hiệu quả ELCA luôn tự hào chuyển giao các phần mềmbền vững đến khách hàng
Sau hơn 50 năm thành lập và phát triển, ELCA đã khẳng định được vị thế và niềm tin ở khách hàng bằng những giá trị mà công ty mang lại Thông qua những dự án lớn như: Giải pháp quản lý ID cho người dân và tội phạm – Hợp tác với chính phủ Thụy Sĩ, Giải pháp hệ thống bán
vé cho UEFA,… ELCA đã dần chứng minh được đây là một công ty đáng tin cậy và đã gây dựng được mối quan hệ với rất nhiều khách hàng lớn trên toàn thế giới
ELCA có văn phòng đặt tại Thụy Sĩ, Tây Ban Nha, Pháp, Anh, Đức, Ý và Việt Nam, với hơn 1300 nhân viên làm việc tại tất cả các văn phòng trên thế giới ELCA đã có kinh nghiệm làm việc với gần 1000 dự án cho khách hàng, doanh thu năm 2019 đạt 170 triệu Franc
2 Sản phẩm của công ty
Những sản phẩm phần mềm của ELCA được phát triển nhắm tới tệp khách hàng rất đa dạng, từ trong nước cho tới ngoài nước, từ chính phủ cho tới các doanh nghiệp, tập đoàn lớn Là một công ty chuyên cung cấp các giải pháp, các sản phẩm trải rộng trên nhiều lĩnh vực như: Quản lý bảo hiểm (IPENSION), Quản lý định danh (trustID), Bán vé trực tuyến (Secutix), …
Trang 82 Giải pháp nổi bật của ELCA như:
- SecuTix: ban đầu là một giải pháp bán vé xem Euro 2016 tại Pháp, và sau đó đã tách riêng ra thành một công ty dưới sự quản lý của ELCA, là nơi cung cấp các nền tảng bán vé trực tuyến được phát triển cho phù hợp với từng tổ chức Phần mềm này được sử dụng bởi lượng lớn khách hàng như quản lý bảo tàng, các câu lạc bộ thể thao, các nhà thi đấu, các buổi biểu diễn trực tiếp, lễ hội khắp Châu Âu ELCA là công ty đầu tiên ở Châu Âu cung cấp các giải pháp để đảm bảo ngành bán vé (ngăn chặn thị trường chợ đen) dựa trên công nghệ blockchain Giải pháp được thử nghiệm thành công trong Lễ hội Paleo 2017 và Siêu cúp UEFA ở Skopje 2017
Trang 9Chương 2: NỘI DUNG THỰC TẬP
1 Giới thiệu chung
Kế hoạch training dành cho thực tập sinh đi kèm với đánh giá chất lượng nhân sự
đầu vào của ELCA được chia làm hai giai đoạn: Giai đoạn training kiến thức cơ bản và
giai đoạn thực hiện project
1.1 Giai đoạn training kiến thức:
Thực tập sinh sẽ được training kiến thức về công nghệ, các best practices và các coding convention trong ELCA Thứ 6 hằng tuần, coach sẽ tạo một buổi checkpoint meeting với thực tập sinh để giải đáp thắc mắc cũng như đánh giá khả năng tiếp thu kiến thức của thực tập sinh
Sau 4 tuần training kiến thức cơ bản, thực tập sinh sẽ tiến hành soạn slide, thuyết trình về những kiến thức đã học được trong suốt 4 tuần training và demo sản phẩm cá nhân với coach, scrum master, project manager Các anh chị trong team sẽ tiến hành đặt câu hỏi, xem hướng giải quyết vấn đề và các coding convention cũng như source code chi tiết của sản phẩm
Nếu thực tập sinh có thể nắm vững các kiến thức cần thiết trong 4 tuần training thì được training về nghiệp vụ và thử sức với project tế
1.2 Giai đoạn thực hiện project:
Thực tập sinh sẽ được product owner trực tiếp hướng dẫn về nghiệp vụ của sản phẩm
Sau khi training, thực tập sinh tiến hành thực hiện tính năng của sản phẩm trong vòng một tháng Team luôn tổ chức daily meeting nhằm giúp các thành viên trong team (bao gồm cả thực tập sinh) báo cáo những công việc đã hoàn thành vào ngày làm việc trước đó, công việc cho hôm nay, những vấn đề cần thảo luận (nếu có)
Sau khi hoàn thành tính năng được giao, thực tập sinh sẽ tham gia một buổi demo tính năng với sự tham gia của product owner, scrum master, coach, tester và các thành viên khách trong team, nhằm đánh giá kết quả của tính năng, góp ý để hiệu chính (nếu có)
Trang 10Kết thúc giai đoạn thực tập, thực tập sinh sẽ tham gia buổi meeting có sự tham gia của project manager, scrum master, coach và HR với mục tiêu là thuyết trình về những gì đã học được trong suốt thời gian thực tập tại ELCA, chi tiết về công việc được giao (tính năng trong sản phẩm thực tế), những khó khăn gặp phải, hướng giải quyết, hướng phát triển của cá nhân trong tương lai và đánh giá về kế hoạch training cũng như môi trường làm việc tại ELCA
2 Chi tiết nội dung thực tập
2.1 Tìm hiểu công ty và các kỹ năng cơ bản trong công ty
Nội dung: Giới thiệu về công ty, cách tổ chức của công ty.
Thực tập sinh sẽ được bộ phận nhân sự 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
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ách sử dụng các phần mềm phục vụ việc quản lý nhân sự
Kết quả: Hiểu thêm về văn hoá công ty ELCA, quá trình thành lập và phát triển.
Có thêm một số kỹ năng về việc sử dụng các phần mềm nội bộ của công ty, có kỷ luật và trách nghiệm hơn
2.2 Giai đoạn training kiến thức cơ bản
Thực tập sinh tham gia vào team SecuTix sẽ được training các kiến thức cơ bản từ frontend - ReactJS đến backend - Java Spring
2.2.1 Java
Nội dung
● Ôn các kiến thức cơ bản liên quan đến OOP, các cú pháp cơ bản, lớp và đối tượng, interface, kế thừa, Generics, Packages, phạm vi truy cập trong OOP, Nested class, Collections
● Ôn lại một số thành phần khác của Java: Java NIO.2, Lambda Expression,
method references, DateTime API, thư viện Apache Commons
● Tìm hiểu về Stream API trong Java
● Các design pattern được sử dụng nhiều trong java: singleton, factory pattern
Trang 11● Về nguyên lý SOLID: Tìm hiểu về Single Responsibility Principle, Open-closed principle, Liskov Substitution Principle, Interface Segregation Principle, Dependency Injection
● Về xử lý Exception: Tìm hiểu về cấu trúc cây Exception trong Java
● Phân biệt Checked và Unchecked exception: Checked exception sẽ được kiểm tra bởi compiler, thực hiện xử lý bằng try/catch Unchecked exception
có hai loại: RuntimeException (gây ra bởi việc lập trình không đúng) và System Errors (gây ra bởi hệ thống, vd như khi hết bộ nhớ) Runtime exception không nên được catch
Thực hiện: Tiến hành tìm hiểu các kiến thức nêu trên đặc biệt quan tâm tới java 8
sau đó checkpoint cùng coach
Làm bài tập java bằng các kiến thức đã tìm hiểu được ở phía trên Nội dung bài tập liên quan đến một java console app có khả năng đọc file csv và xuất ra kết quả theo yêu cầu Đồng thời, ứng dụng phải có khả năng đọc nhiều định dạng file khác nhau
Kết quả:
Hiểu và có thể áp dụng những kiến thức đã được nêu trên
2.2.2 Spring
Nội dung: Vì Spring là một đề tài rất rộng, vì vậy trong giới hạn thời gian training,
coach chỉ yêu cầu thực tập sinh nắm được các phần sau:
● Cách thức hoạt động của các annotation sau: @Configuration, @Bean,
@Component, @Controller, @Service, @Repository, @Autowired (có thể dùng hoặc không dùng với @Qualifier)
● Chức năng của Dispatcher Servlet, Handler Mapping, Controller,
ModelAndView, ViewResolver và View
● Hiểu rõ và có thể giải thích được ở mức độ chi tiết cách thức hoạt động của
@RequestMapping/@RequestParam, @RequestBody/@ResponseBody,
@ModelAttribute, @InitBinder
● Sự khác biệt giữa RestController, và Controller
Trang 12Thực hiện: Tiến hành tìm hiểu các kiến thức nêu trên sau đó checkpoint
cùng coach
Kết quả: Hiểu và có thể áp dụng những kiến thức đã được nêu trên.
2.2.3 Tìm hiểu về CSS
Nội dung:
● Các vấn đề cơ bản trong CSS: Giới thiệu về CSS, Syntax
● Selectors trong CSS: Rules, Document Tree, Selectors
● Formatting với CSS: Background, Text, Font
● Các khái niệm cơ bản: Box Model, Border, Outline,
Margin, Padding Positioning trong CSS: Absolute positioning, Relative positioning
● Bootstrap
● Tìm hiểu về FlexBox
● CSS pseudo class và pseudo element
Thực hiện: Tiến hành tìm hiểu các kiến thức nêu trên sau đó checkpoint cùng
coach
Kết quả: Hiểu và có thể áp dụng những kiến thức đã được nêu trên.
2.2.4 Tìm hiểu về Javascript
Nội dung:
● Các khái niệm cơ bản: Javascript là gì, sử dụng Javascript vào những mục đích
● Tìm hiểu về những thành phần lõi trong Javascript
Thực hiện: Tiến hành tìm hiểu các kiến thức nêu trên sau đó checkpoint cùng
coach
Kết quả: Hiểu và có thể áp dụng những kiến thức đã được nêu trên.
Trang 132.2.5 Tìm hiểu về ReactJS
Nội dung: Học ReactJS trên khóa học udemy công ty cung cấp để nắm rõ những
kiến thức căn bản nhất về ReactJS
Thực hiện: Tiến hành tìm hiểu các kiến thức nêu trên sau đó checkpoint cùng
coach
Kết quả: Hiểu và có thể áp dụng những kiến thức đã được nêu trên.
2.2.6 Tìm hiểu về Coding best practices
Nội dung: Tìm hiểu về các coding best practices đang được áp dụng tại ELCA Thực hiện: Tiến hành tìm hiểu các kiến thức nêu trên sau đó checkpoint cùng
mentor
Kết quả: Hiểu và có thể áp dụng những kiến thức đã được nêu trên.
2.3 Thực hiện project
Sau hơn một tháng được training những công cụ, công nghệ, kiến thức nền từ cơ bản đến nâng cao, thực tập sinh đã nắm được các kỹ thuật và nội dung cơ bản khi lập trình Coach sẽ cho trainee tham gia vào một dự án thật của công ty
Trang 14Chương 3: Chi tiết về project
1 User story 1: Donation Task
1.1 Yêu cầu nghiệp vụ:
Người dùng có thể quyên góp cho bất kì hạng mục nào trực thuộc hệ thống Người dùng có thể quyên góp một lần hoặc theo chu kỳ mỗi tuần, mỗi tháng, mỗi tháng với số tiền cố định Sau đó họ có thể theo dõi và huỷ những donation đã mua Người dùng tiến hành thanh toán thông qua các thẻ VISA, Mastercard, …
1.2 Mô tả công việc:
● Xây dựng màn hình giao diện để người dùng chọn hạng mục quyên góp, nhập thông tin thanh toán, đăng nhập để xem hạng mục đã thanh toán
● Viết api bằng java để trả về thông tin hạng mục, gửi thông tin thanh toán, thông tin quyên góp thông qua các service có sẵn
● Viết integration testing cho giao diện
Trang 152 User story 2: Suspend Ticket Task
1.1 Yêu cầu nghiệp vụ:
Sau khi khách hàng đặt vé do hệ thống cung cấp, họ chưa thanh toán ngay mà vì một số lý do cá nhân khiến họ sẽ quay lại thanh toán sau Lúc này nhân viên tiến hành lưu trữ (suspend) những vé tham quan mà khách hàng đã chọn đợi khách hàng quay lại thanh toán
1.2 Mô tả công việc:
● Xây dựng màn hình giao diện để nhân viên có thể xem danh sách các ticket đã suspend và cho phép nhân viên mở lại (reopen) hoặc suspend các ticket của khách hàng
● Viết api bằng java để trả về thông tin các ticket đã suspend, suspend và reopen các ticket thông qua các service có sẵn
● Viết integration testing cho giao diện
Trang 1610
Trang 17TÀI LIỆU THAM KHẢO
[1] Java:https://www.tutorialspoint.com/java8/index.htm
[2] Hibernate Annotation:
http://docs.jboss.org/hibernate/annotations/3.5/reference/en/html_single/
[3] Spring Data References:https://docs.spring.io/spring
data/jpa/docs/current/reference/html/#repositories
[4] CSS tutorial:http://www.w3schools.com/css/default.asp
[5] CSS Selector: http://css.maxdesign.com.au/selectutorial/index.htm
[6] ReactJS:https://reactjs.org/docs/getting-started.html
[6] Typescript:https://www.typescriptlang.org/docs/handbook/intro.html
Trang 18TỔNG KẾT
Như vậy, trong thời gian thực tập, em đã tham gia và hoàn thành được 2 công việc nhỏ trong dự án thực tế là Donation Task và Suspend Ticket Task Dù đây là lần đầu tiên được tiếp xúc với dự án thực tế, em vẫn rất cố gắng hoàn thiện đầy đủ yêu cầu từ cơ bản đến nâng cao, kết quả đạt được đã tốt hơn mong đợi rất nhiều Nếu sau này còn có thời gian để bảo trì và phát triển thêm cho dự án, em sẽ có thể hoàn thành tốt hơn những yêu cầu nâng cao từ phía khách hàng
Chân thành cảm ơn sự giúp đỡ của các anh chị trong phòng ban ELCA Engineering ở ELCA, đặc biệt là anh Hồ Văn Thiện Tâm đã theo sát và hướng dẫn, giúp em hoàn thành tốt dự
án và cả đợt thực tập này tại ELCA