Tài liệu tổng hợp kiến thức tổng quan cho Recruiter về kiến thức tuyển dụng IT. Bài viết này sẽ giúp Recruiter có cái nhìn hình dung về các vị trí của ngành IT cũng như một số thuật ngữ chuyên ngành IT
Trang 1TÀI LIỆU TỔNG QUAN
VỀ NGÀNH IT DÀNH CHO IT RECRUITER
Trang 2📌 ABOUT VIECOI
Trang 3 Company info: Viecoi
Address: 10D1 - 10D2, Nguyễn Thị Minh Khai St, Dist 1, HCM
Trang 41 Tại sao các bạn HR phải nên nắm được các kiến thức cơ bản về IT
2 Vị trí cần hướng đến
3 Bốn cấp độ tuyển dụng IT developer
4 Các hình thức phát triển hệ thống
5 Quy trình cơ bản của việc phát triển hệ thống
6 Sự khác biệt giữa Gia công phần mềm (Outsourcing) và phát triển sản phẩm riêng (Product)
7 Cấu trúc cơ bản của ứng dụng WEB
13 Đặc điểm và nội dung của từng vị trí/ từng ngôn ngữ lập trình?
14 Thế nào là bản Mô tả công việc đạt yêu cầu?
15 7 hành động kế tiếp bạn có thể làm
16 2 hướng phát triển sự nghiệp (Career path ) của một Developer
17 Danh sách câu hỏi khi phỏng vấn IT developer
18 Bốn hành động bạn nên thực hiện ngay từ hôm nay
Mục lục
Trang 5Khi đọc quyển Ebook này, bạn có cảm thấy mình đang đương đầu với các vấn đề dưới đây khituyển dụng hay không?
・ Tôi không thể đọc CV một cách chi tiết và tôi không biết liệu rằng kỹ sư IT nào sẽ phù hợp vớicông ty của tôi
・ Tôi không thể tự mình đưa ra các yêu cầu tuyển dụng và tôi không thể đặt câu hỏi cho các kỹsư
・ Tôi không biết cách tìm ứng viên
・ Tôi không biết phương pháp học kiến thức IT cần thiết cho một nhà tuyển dụng
Bạn có thể là một chuyên gia tuyển dụng nhưng có thể bạn vẫn chưa thực sự làm tốt khi tuyểndụng mảng IT/ Kỹ sư
Có rất nhiều cách học để trở thành 1 kỹ sư IT nhưng lại không có nhiều cách dạy bạn làm saotuyển dụng kỹ sư tốt
Cuốn sách này được viết ra với mục đích giúp các bạn HR đang phụ trách việc tuyển dụng IT có thể có được cảm nhận chung về ngành lập trình, hiểu các ngôn ngữ lập trình và vận dụng vào nghiệp vụ tuyển dụng
Chúng tôi hy vọng rằng điều này sẽ làm tăng giá trị bản thân của bạn trên thị trường lao động
Mở đầu
Trang 6Thiếu kiến thức CNTT khi tuyển dụng kỹ sư IT có thể phát sinh nhiều vấn đề:
・ Tôi không biếtmức độ của các yêu cầu tuyển dụng mà Team lập trình mong muốn là thế nào
・ Khi không tìm được ứng viên phù hợp thì chỉ có thể đổikênh tuyển dụng (jobsite hoặc công ty giớithiệu nhân sự)
・ Ngay cả khi nhìn vào CV, tôi không biết dùng điểm nào để đánh giá ngoại trừ thông tin như "3năm kinh nghiệm PHP"
・ Không thể đánh giá các yêu cầu MUST và WANT, hoặc các kỹ năng mà có thể thay thế bằng kỹnăng khác
・ Diễn đạt các vấn đề quan trọng một cáchtrừu tượng
・ Trốn tránh trao đổi về Kỹ thuật/ công nghệ
・ Tạo ra các yêu cầukhông phù hợp với thị trường tuyển dụng
Tại sao HR nên nắm các kiến thức cơ bản về IT
1
Trang 7“Vì tôi không phải là kỹ sư, tôi không cần biết công nghệ vẫn có thể hoàn thành công việc tốt”
Nhưng thật ra nếu bạn là nhà tuyển dụng IT, bạn cần nên học những kiến thức cơ bản về kỹ thuật
để hỗ trợ cho công việc
Vị trí cần hướng đến
2
Tôi không phải là luật sư, nhưng tất nhiên tôi hiểu các điều khoản pháp lý
Tôi không phải là kế toán, nhưng tôi hiểu các thuật ngữ kế toán
Tôi không phải là kỹ sư, vì vậy tôi không biết kỹ thuật
Trang 8Để có thể tuyển dụng được IT thì việc bạn có kiến thức kỹ thuật không có nghĩa là bạn phải là "code" mà là
"hiểu các thuật ngữ IT"
Vị trí cần hướng đến
2
Hiểu các thuật ngữ
Có thể tuyển dụng IT
Mục tiêu ban đầu là
ở mức độ này Lập trình được server đơn giản
Level chuyên môn
Level cơ bản
Lý giải được Sử dụng được
Kiến thức Coding
Trang 9Để có thể tuyển dụng được IT thì việc bạn Có kiến thức kỹ thuật không có nghĩa là bạn phải là
“code" mà là “hiểu các thuật ngữ IT“
・Hiểu tất cả ý nghĩa của các thuật ngữ IT trong yêu cầu tuyển dụng của công ty bạn
・ Có thể giải thích về bối cảnh tuyển dụng và giải thích cụ thể về công việc thực tế sau khi gianhập công ty
・Giải thích điểm mạnh kỹ thuật của công ty bạn để thu hút ứng viên
・Bạn có thể hình dung kỹ năng và kinh nghiệm của ứng viên bằng cách nhìn vào CV của họ
Vị trí cần hướng đến
2
Trang 101 Level beginner
・Chỉ cần làm theo hướng dẫn của các bạn IT developer
2 Level Junior
・Hiểu rõ mục đích và bối cảnh tuyển dụng
・Phải phân biệt được điều kiện MUST và BETTER
・Phải biết được sau khi tuyển ứng viên IT này vào công ty thì phần sản phẩm nào sẽ được cải thiện
・Hiểu được ứng viên sẽ làm việc với ai và cách cộng tác với họ
・Hiểu được ứng viên mong chờ gì ở công việc đang ứng tuyển
3 Level Senior
・Có thể xây dựng các chính sách tuyển dụng phù hợp với từng kỹ sư IT
・Hiểu rõ các thông tin tuyển dụng hơn cả các kỹ sư IT
・Có thể đưa ra phản hồi đối với yêu cầu từ thực tế
4 Level professional
・Có thể tạo một tổ chức mà các kỹ sư cảm thấy muốn gia nhập
・Có thể nắm bắt được dòng chảy, chuyển biến của ngành IT để đưa ra hành động
Bốn cấp độ tuyển dụng IT developer
3
Trang 11📌 TÌM HIỂU CẤU TRÚC CƠ BẢN
CỦA ỨNG DỤNG WEB (WEBAPP)
Trang 13Quy trình cơ bản của việc phát triển hệ thống
5
① Định nghĩa yêu cầu
② Thiết
Muốn tạo racái gì Quyết địnhquy trình Viết code
Test xem code có chạy như thiết kế không
Public hệthống
PM Business Analyst
Trang 14Sự khác biệt giữa Outsourcing và Own product
Client Dev Team Dev Team
Thuận lợi
・Ít sai lệch so với yêu cầu củacông ty
・Có thể suy nghĩ về các chức năng(Function) một cách chủ động
Khó khăn
・Giới hạn về các hình thức/ngônngữ lập trình
Trang 15Cấu trúc cơ bản của Web App
Browser/App HTML/CSS/Javascript
Content
Device OS
Trang 16Cấu trúc cơ bản của Web App
7
Hãy liên kết giữa tên vị trí và tổng quan về Web App, để tìm hiểu xem ứng viên mà công
ty mình đang muốn tuyển dụng sẽ làm những công việc như thế nào nhé!
Internet Internet
Device OS
Browser/App HTML/CSS/Javascript
Content
Device OS
Trang 171 Client side là gì?
・Là bên nhận dịch vụ(phía người dùng)
・Nếu là website EC (web thương mại điện tử) thì phía khách hàng chính là màn hình mọi người đang nhìn thấy
2 Server side là gì?
・Là bên cung cấp dịch vụ
・Nếu là website EC thì server chính là bên gửi/xử lý những thông tin cần thiết
3 Request và Response là gì?
・Request là những yêu cầu của khách hàng
- Nếu là website EC thì sẽ có những yêu cầu như là “Lấy cho tôi hình ảnh bộ trang phục này”
・Response là việc trả lời/phản hồi của máy chủ
- Nếu là website EC thì response chính là việc trả lại hình ảnh bộ trang phục đã được yêu cầu
4 Browser và Web App Server là gì?
・Browser (trình duyệt) là nơi tiếp nhận yêu cầu( Ví dụ Google Chrome, firefox…)
- Browser có vai trò hiển thị các thông tin một cách dễ hiểu cho người dùng
・Web app server là nơi trả lại các phản hồi của máy chủ
Cấu trúc cơ bản của Web App
7
Trang 18Ngôn ngữ lập trình là gì?
Ngôn ngữ lập trình là ngôn ngữ đưa ra những chỉ thị trên máy tính để tạo ra Web/App
・Là ngôn ngữ sử dụng để truyền tải đến máy tính quy trình mà
con người muốn máy tính thực hiện.
Ví dụ như khi giao tiếp với các đồng nghiệp người Việt thì dùng
tiếng Việt
Khi giao tiếp giữa con người với máy tính thì phải sử dụng ngôn ngữ
lập trình
・Số lượng các ngôn ngữ lập trình có tới hàng ngàn loại
- Do đó đương nhiên là không thể nhớ hết toàn bô được
- Mỗi ngôn ngữ sẽ có một đặc trưng và hướng đến một mục đích
・Mobile-Kotlin-Java-Swift-Objective-C
Thuật ngữ
・Backend-PHP-C-Ruby-Java-Python-C++-C#
-.Net-
Trang 19Java Python JavaScript
What language skills do you look for when hiring developers?
Global AMER APAC EMEA
C#
Ruby Swift R Kotlin Go
What languages do you plan on learning next?
Những ngôn ngữ lập trình như Javascript, Java, Python rất quen thuộc trong ngành tuyển dụng,
và những ngôn ngữ như Go, Kotlin, Python sẽ phổ biến và có nhiều người muốn theo học
参照:HackerRank's 2020 Developer Skills Report 1 / 25
Trang 20* Giống như nguyên liệu món ăn đã được sơ chế sẵn.
* Hay xuất hiện trong các tin tuyển dụng Game Engineer và Kỹ sư lậptrình máy học (Machine Learning Engineer)
Thư viện là gì?
Framework là các phần cần thiết đã được chuẩn bị sẵn để xây dựngmột cách hiệu quả các ứng dụng trong danh mục cụ thể
* Giống như công thức nấu ăn
* Tùy thuộc vào framework đó mới hay cũ mà độ khó khi tuyển dụngcũng sẽ thay đổi
* Dù không phải framework đã biết nhưng vẫn có thể học được
Trang 21Which frameworks do you plan on learning next?
Best known languages: 2018-2020
参照:HackerRank's 2020 Developer Skills Report 1 / 25AngularJS và React là 2 trong số các framework nổi tiếng của Javascript
Nhiều người lựa chọn React, AngularJS và Django là các framework mà họ muốn được học tiếp theo
Trang 22・Không cần hiểu chi tiết từng framework khác như thế nào
・Chỉ cần biết công ty mình sử dụng framework nào và lý giải đượctại sao sử dụng nó
Jquery:
・ Là thư viện của Javascript giúp các lập trình viên triển khai JavaScript dễ dàng hơn mà không phảiviết mã code JavaScript phức tạp, nhờ mã code được viết sẵn trong jQuery
・Nhiều kỹ sư có thể sử dụng Jquery như cơ sở để phát triển web
・Đầy đủ chức năng để xây dựng một ứng dụng đơn giản
React
- Đây là framework của Javascript được phát triển chủ yếu ở Facebook
- Được sử dụng trong Mobile App và SPA (Single page application)
Vue.js
- Framework được sử dụng chủ yếu trong phát triển UI design của ứng dụng Web
Framework của Client side
9
Trang 23・Không cần hiểu chi tiết từng framework khác như thế nào
・Chỉ cần biết công ty mình sử dụng cái nào và lý giải được tại sao sử dụng nó
Spring Framework(Java)
・Framework được sử dụng nhiều nhất của Java
Laravel(PHP)
- Framework được sử dụng nhiều nhất của PHP
- Đặc điểm: mức độ tự do phát triển cao
CakePHP(PHP)
- Framework thường được sử dụng của PHP
- Rất được ưa chuộng vào những năm 2009-2017
Ruby on Rails(Ruby)
- 1 framework của Ruby
- Dễ hiểu và dễ viết code đối với cả người mới bắt đầu
TensorFlow
- Được phát triển bởi Google
- Thư viện được sử dụng để học máy (Machine learning), đặc biệt là Deep learning
Framework của Client side
9
Trang 24・Không cần hiểu chi tiết từng framework khác như thế nào
・Chỉ cần biết công ty mình sử dụng cái nào và lý giải được tại sao sử dụng nó
React native:
- Framework được sử dụng để xây dựng các ứng dụng (app) trên cả iOS và Android
- Bạn có thể tạo ra những ứng dụng hoạt động được trên cả iOS và Android chỉ bằng một mã code
Trang 25Cơ sở dữ liệu (Database)
10
Cơ sở dữ liệu là nơi để lưu trữ dữ liệu về nội dung và người dùng
Internet
Device OS
Browser/App HTML/CSS/Javascript
Content
Device OS
Trang 26Cơ sở dữ liệu (Database)
SQL tương tự như Excel
SQL không phải là ngôn ngữ để phát triển Cơ
sở dữ liệu mà là ngôn ngữ để lấy dữ liệu từ
Trang 27Browser/App HTML/CSS/Javascript
Trang 28・Khác-Rental server-VPS(Virtual private server)
Trang 29Browser/App HTML/CSS/Javascript
Content
Device OS
Trang 30・Windows-Windows 7-Windows 10
・Apple-Mac OS X-OS X
-Debian-macOS
Trang 31📌 ĐẶC TRƯNG CỦA NGÔN NGỮ
LẬP TRÌNH
Trang 32Đặc trưng của ngôn ngữ lập trình
13
Hãy liên kết giữa ngôn ngữ và tổng quan về Web App để xác định xem ngôn ngữ nào
có thể thực hiện chức năng nào
Internet
Device OS
Browser/App HTML/CSS/Javascript
Content
Device OS
Trang 33■ Kỹ sư Frontend
Frontend đảm nhiệm nhữngphần mà người dùng nhìn thấy trực tiếp
Dù việc thiết kế trang web đã có Desginer đảm nhiệm nhưng Frontend sẽ sử dụng HTML và CSS
để triển khai thiết kế, và sử dụng Javascript để liên kết với Server Side
■ Kỹ sư Server side
Kỹ sư Server Side là người chịu trách nhiệm lập trình để xử lý dữ liệu diễn ra trên máy chủ, ví dụnhư xử lý dữ liệu đăng nhập, tìm kiếm và mua hàng trên các trang web thương mại điện tử (EC)Các web framework liên quan đến ngôn ngữ mà công ty đang sử dụng như PHP, Java hay Rubythường được đưa vào nội dung yêu cầu tuyển dụng Dù là Kỹ sư Server side thì cũng có trườnghợp là Fullstack developer đảm nhiệm cả Frontend lẫn Infrastructure, hoặc có trường hợp sẽ chỉtập trung vào phát triển các chức năng nhất định
Cần có những kỹ năng cốt lõi như hiểu biết sâu sắc về ngôn ngữ lập trình và kinh nghiệm pháttriển server side Ngoài ra cần có thêm kiến thức về database, infrastructure hay frontend
Frontend và Backend
13
Trang 34■ Mobile Engineer
Mobile Engineer chịu trách nhiệm phát triển app trên smartphone
Swift, objective-C được sử dụng trong iOS và Kotlin, Java được sử dụng trong Android
Những kiến thức liên quan đến server side, design, UI/UX là những kỹ năng bổ sung rất cần thiếtđối với Mobile Engineer
■ Embedded Engineer (Kỹ sư lập trình nhúng)
Embedded Engineer là kỹ sư phát triển hệ thống điều khiển máy tính được cài đặt trong cácmáy móc độc lập chẳng hạn như đồ điện gia dụng, máy móc thiết bị Ngôn ngữ lập trìnhthường sử dụng là C/C++, Java
Vị trí này được kì vọng là tạo ra hệ thống phản hồi nhanh và ổn định
Đồng thời, cần có kiến thức liên quan đến phần cứng của hệ thống
Embedded Engineer thường tham gia vào việc phát triển các sản phẩm như đồ gia dụng, oto,điện thoại
Vị trí này đang thu hút sự chú ý của các kỹ phát triển sản phẩm IoT
Mobile / Embedded Engineer
13
Trang 35■ QA Engineer
QA Engineer là những kỹ sư tham gia vào công việc đảm bảo chất lượng phần mềm Vì mỗi lập trình viên có cách code khác nhau nên các phương pháp kiểm thử cũng như quy tắc QA Engineer sử dụng sẽ khác nhau, không thống nhất Vì vậy họ cần xây dựng thành hệ thống quy tắc chung để nâng cao chất lượng phần mềm Họ cần trang bị những kiến thức về Infrastructure, server side, front-end như một dạng kỹ năng mềm.
■ Machine Learning Engineer
Machine Learning Engineer phân tích đặc tính và xu hướng của dữ liệu, sau đó xây dựng thuật toán để dự đoán Không chỉ ngôn ngữ lập trình, mà năng lực phân tích, năng lực kinh doanh cũng vô cùng cần thiết đối với một Machine Learning Engineer Python là ngôn ngữ thường được sử dụng.
■ Game Engineer
Game Engineer cần có nhiều kỹ năng khác nhau tùy thuộc vào Platform như: smartphone game, console game (máy trò chơi điện tử) Đối với Console game thường sử dụng ngôn ngữ C++, còn đối với smartphone game thì tùy thuộc vào hệ điều hành (OS) sẽ sử dụng ngôn ngữ khác nhau Là một Game Engineer thì có thể phải cần những kiến thức liên quan đến Unity hoặc những kinh nghiệm phát triển mobile app.
QA Engineer/ Machine Learning Engineer/ Game Engineer
13
Trang 36📌 BẢN MÔ TẢ CÔNG VIỆC ĐẠT
YÊU CẦU
Trang 37Bản mô tả công việc không đạt yêu cầu
14
Bối cảnh:
・Cần người phát triển hệ thống Web
Mô tả công việc
・Phát triển hệ thống web
Yêu cầu công việc
・Front-end: Trên 5 năm kinh nghiệm
・Server side: Trên 5 năm kinh nghiệm
・Kinh nghiệm quản lý: Trên 3 năm kinh nghiệm
Mức lương
1000-2500 USD
→ Mô tả công việc chưa rõ ràng
→ Must (yêu cầu bắt buộc) và Want (yêu cầu cộng thêm) chưa rõ ràng
→ Cần những gì ở ứng viên có 5 năm kinh nghiệm thì nên nêu cụ thể ra
→ Range lương quá rộng, không làm rõ được đối tượng ứng viên mà công ty muốnnhắm đến
Trang 38Bối cảnh
・Đang áp dụng Scrum, nhưng chưa hoạt động hiệu quả
・Thiếu nhân lực phụ trách Infrastructure
Mô tả công việc
・Tham gia vào team phát triển Scrum
・Có trách nhiệm hoàn thiện tất cả các tính năng liên quan đến sản phẩm, bảo trì, hoàn thiện cơ sở hạ tầng có sử dụng Terraform hoặc Kubernetes
・Tham gia phát triển chức năng mở rộng của Chrome nếu có hứng thú
Yêu cầu công việc Bắt buộc:
・Backend developer có kinh nghiệm với Scrum
・Kinh nghiệm xây dựng dựa trên cloud AWS/GCP
Mong muốn
・Backend: Có kinh nghiệm về Diango
・Front-end: Có kinh nghiệm về Vue.js
Mức lương:
2000-2500 USD
Bản mô tả công việc đạt yêu cầu
14
Trang 391.Xác định bối cảnh tuyển dụng2.Xác định rõ ràng, chi tiết về dự án và phương pháp phát triển phần mềm3.Xác nhận rõ ràng, chi tiết về công việc mà công ty muốn ứng viên đó đảm nhiệm4.Xác định rõ yếu tố bắt buộc (Must) và bổ sung (Want) đối với ứng viên
5.Xác định cách thức kiểm tra kỹ năng của ứng viên trong lúc phỏng vấn6.Xác định được lý do công ty mình sử dụng ngôn ngữ đó
7.Xác định những điều ứng viên có thể làm được tương ứng với số năm kinh nghiệm
7 việc cần được thực hiện ngay
15