Đối tượng nghiên cứu: Các kỹ năng cần có của một lập trình viên website gồm lập trình Frontend, Backend, sơ lược về Fullstack và một số kỹ năng mềm cần có.. Phương pháp nghiên cứu Các p
Trang 1- -TIỂU LUẬN MÔN:
CÔNG TÁC KĨ SƯ NGHÀNH CÔNG NGHỆ THÔNG TIN
Đề tài:
KỸ NĂNG LẬP TRÌNH FRONTEND, BACKEND
Sinh viên thực hiện:
Lê Song Vĩ
Nguyễn Mậu Chánh
Nguyễn Hữu Minh
Lê Thanh Huy
Bùi Minh Quyết
- MSSV: 1811061712
- MSSV: 1811061485
- MSSV: 1811062193
- MSSV: 1811064699
- MSSV: 1811061537
TP Hồ Chí Minh, 2018
Trang 2MỤC LỤC
1 MỞ ĐẦU:
1.1 L Ý DO CHỌN CHỦ ĐỀ :
1.2 M ỤC TIÊU NGHIÊN CỨU CHỦ ĐỀ
1.3 Đ ỐI TƯỢNG VÀ PHẠM VI NGHIÊN CỨU CHỦ ĐỀ
1.3.1 Đ ỐI TƯỢNG NGHIÊN CỨU:
1.3.2 PHẠM VI NGHIÊN CỨU:
1.4 P HƯƠNG PHÁP NGHIÊN CỨ U
1.5 N GUỒN SỐ LIỆU :
2 NỘI DUNG BÁO CÁO:
2.1 K Ỹ NĂNG LẬP TRÌNH F RONTEND , B ACKEND :
2.1.1 LẬP TRÌNH F RONTEND:
2.1.2 KỸ NĂNG LẬP TRÌNH B ACKEND:
2.1.3 C ÁC TRANG WEB HỌC LẬP TRÌNH WEB TRÊN MẠNG PHỔ BIẾN :
2.2 N HỮNG HẠN CHẾ CỦA LẬP TRÌNH VIÊN F RONTEND , B ACKEND :
2.3 N HỮNG HẠN CHẾ CỦA CÔNG VIỆC IT TẠI V IỆT N AM :
3 GIẢI PHÁP:
3.1 G IẢI QUYẾT CÁC HẠN CHẾ CỦA LẬP TRÌNH VIÊN F RONTEND , B ACKEND : 3.2 K HẮC PHỤC HẠN CHẾ CỦA CÔNG VIỆC IT TẠI V IỆT N AM :
4 KẾT LUẬN:
4.1 T ÓM TẮT NỘI DUNG :
4.2 G IẢI PHÁP KHẮC PHỤC HẠN CHẾ
Trang 31 Mở đầu:
1.1 Lý do chọn chủ đề:
Trong môi trường kinh doanh thời đại 4.0 hiện đại, để đánh bại đối thủ, các công ty doanh nghiệp lớn hoặc nhỏ chắc chắn cần phải có một trang web tốt Nhiều doanh nghiệp thấy việc có một trang web không cần thiết Nhưng trang web chuyên nghiệp là một cách tuyệt vời để củng cố các niềm tin cá nhân của các
khách hàng
Dịch vụ phát triển web giúp công ty tăng kiến thức về sản phẩm, duy trì kết nối giữa công ty và các khách hàng tiềm năng, bán sản phẩm hoặc dịch vụ tốt hơn, có thêm nhiều khách hàng tiềm năng cho công ty và tăng mức độ phổ biến của công ty và hơn thế nữa.
Các công ty phát triển web đã nổi lên như một ngành công nghiệp trong thập
kỷ qua Trong lĩnh vực phát triển trang web, một công ty hoặc một người phát triển (developer) các trang web sẽ được đặt trên World Wide Web Số lượng trang web đang tăng với tốc độ rất là nhanh Các nhà phát triển web và thiết kế web kiếm được một khoản tiền lớn khi xây dựng các trang web này Phát triển web là một lĩnh vực có thể đem lại cho lập trình viên rất nhiều lợi nhuận nếu họ thật sự quan tâm đến việc xây dựng trang web một cách nghiêm túc Hiện tại số lượng các trang web trên web đã lên đến hàng triệu Do đó, phát triển trang web có thể được coi như một công cụ kiếm tiền trực tuyến trong thời đại này.
1.2 Mục tiêu nghiên cứu chủ đề
Khi nhấp vào một trang web nào đó, cuộn xuống để đọc nhiều hơn và nhiều
hơn nữa, nhưng ta có bao giờ tự hỏi có bao nhiêu nỗ lực trong việc tạo ra trang
web này?
Phải mất một khoảng thời gian đáng kể để một nhà phát triển web xây dựng
một trang web kỹ lưỡng Các công ty phát triển trang web liên quan đến mã hóa và triển khai nghiêm ngặt để trình bày trang web theo hình thức bạn thấy và cố gắng duy trì khả năng tải nhanh nhất có thể Cái trước là một phần Frontend trong khi
cái sau là một phần của Backend Hai phân khúc này chính là sự phát triển của
trang web
Trang 41.3 Đối tượng và phạm vi nghiên cứu chủ đề
1.3.1 Đối tượng nghiên cứu:
Các kỹ năng cần có của một lập trình viên website gồm lập trình
Frontend, Backend, sơ lược về Fullstack và một số kỹ năng mềm cần có.
1.3.2 Phạm vi nghiên cứu:
- Nhu cầu tuyển dụng việc làm của các công ty, doanh nghiệp.
- Thế giới thời đại công nghệ 4.0.
1.4 Phương pháp nghiên cứu
Các phương pháp chính được sử dụng trong quá trình thực hiện luận án gồm:
- Phương pháp phân tích: Để phân tích chi tiết các kỹ năng cần có của việc lập trình Frontend, Backend.
- Phương pháp so sánh: Để đưa ra những sự khác nhau, giống nhau giữa lập
trình Frontend, Backend
- Phương pháp tổng hợp: Để tổng hợp lại những kỹ năng cần thiết nhất của một người lập trình Frontend, Backend hoặc Fullstack.
1.5 Nguồn số liệu:
- Số liệu của bài báo cáo được lấy từ VIBLO, Hosting
Advice, VietnamWorks, kenhtuyensinh
2. Nội dung báo cáo:
2.1 Kỹ năng lập trình Frontend, Backend:
- Trước tiên, Hãy nghĩ về cái con người Khuôn mặt sẽ là frontend - khuôn mặt tương tác với người khác bằng cách sử dụng mắt, tai và mũi và nói ra qua miệng Bộ não sẽ là backend - nơi lưu trữ thông tin từ mắt, tai, mũi và tiếng nói phát ra từ miệng được gửi từ đó Còn cả con người thì đó là Fullstack.
- Hãy nghĩ về một ngôi nhà Những thứ như thiết kế nội thất, đồ nội thất, ván lợp, vách ngoài, cửa sổ, cửa ra vào, v v sẽ là frontend Khung, cách nhiệt, dầm và móng sẽ là backend Vậy thì cả ngôi nhà sẽ là Fullstack.
Trang 5- Hãy nghĩ về một chiếc xe Động cơ, hệ thống máy tính, dầu, ga, đèn, v v là một phần của back-end Tất cả mọi thứ khác là frontend Vậy thì cả chiếc xe
chính là Fullstack
Vậy nhà phát triển frontend là người tạo giao diện người dùng của trang web hoặc ứng dụng khác Và phần mà người dùng tham gia để có được thông tin là do người phát triển backend quyết định Nhà phát triển backend
là người xây dựng lên khả năng lưu trữ và xuất ra thông tin đã có.
2.1.1 Lập trình Frontend:
Frontend được coi là một phần quan trọng nhất trong việc xây dựng một trang web, nó không chỉ là sự hấp dẫn, ấn tượng cho khách hàng, mà còn
có thể giới thiệu thương hiệu của công ty thành công Vì nó đại diện cho toàn thể công ty, có thể coi nó là thương hiệu, là triển vọng phát triển của công ty.
Các kỹ năng cần có của một lập trình viên Frontend:
a HTML/CSS:
- HTML (Hyper Text Markup Language) và CSS (Cascading Style Sheets)
là các khối mã xây dựng cơ bản nhất trong lập trình web Nếu không có hai thứ này, chúng ta không thể thiết kế trang web.
- Phần quan trọng nhất đó là chỉ cần có 1 trong 2 kiến thức về HTML hoặc CSS là sẽ xây dựng được trang web cơ bản.
- Cả hai ngôn ngữ này là hoàn toàn cần thiết để trở thành một nhà phát triển front end Nói một cách đơn giản, không có HTML/CSS thì không lập trình web.
b JavaScript/jQuery:
nhất, JS hỗ trợ thêm rất nhiều element tương tác cho trang web – những yếu tố được sử dụng để tạo ra những thứ như bản đồ, các interactive films và các trò chơi trực tuyến Các trang web như Pinterest sử dụng JavaScript rất nhiều để giao diện người dùng (UI) dễ sử dụng hơn JS cũng là ngôn ngữ lập trình phổ biến nhất trên thế giới Query là một thư viện JavaScript: một tập hợp các plugin và phần extension giúp việc phát triển với JavaScript nhanh hơn và dễ dàng hơn Thay vì phải coding tất cả mọi thứ từ đầu, nhờ có jQuery, các lập trình viên có thêm các yếu tố có sẵn vào dự án và tùy chỉnh khi cần thiết.
Trang 6c Các framework của JavaScript:
ReactJS) cung cấp cấu trúc có sẵn cho Javascript Có nhiều framework khác nhau phù hợp với từng yêu cầu khác nhau.Những framework này giúp tăng tốc độ lập trình, có thể sử dụng cùng với các thư viện như jQuery để giảm thiểu việc phải lập trình lại từ đầu.
d Framework của CSS:
- Framework của CSS (phổ biến nhất chính là Bootstrap) hỗ trợ CSS như chính những gì mà các frameworks JS hỗ trợ cho JavaScript: điểm khởi đầu để xây dựng trang web nhanh hơn Vì CSS thường bắt đầu với các giá trị (element) giống nhau từ dự án này đến dự án khác, nên chúng ta cần 1 framework để định nghĩa (define) trước những giá trị này Hầu hết các công việc hiện này cho lập trình viên frontend yêu cầu am hiểu và vận dụng tốt các framework này.
e Ngôn ngữ tiền xử lý CSS (CSS Preprocessing):
- Ngôn ngữ tiền xử lý CSS là yếu tố khác mà có thể tăng tốc độ lập trình CSS Một ngôn ngữ tiền xử lý CSS bổ sung thêm chức năng (function) cho CSS
để CSS được cấu trúc và dễ làm việc hơn Nó xử lý code trước khi lập trình viên tải lên website, và biến nó thành 1 CSS tương thích với trình duyệt và có định dạng tốt Theo danh sách nhu cầu các công việc phổ biến cho frontend thì SASS
(Syntactically Awesome Style Sheets) và LESS (Leaner Style Sheets) là hai ngôn
ngữ tiền xử lý CSS được sử dụng nhiều nhất.
f Các hệ thống quản lý phiên bản và Git:
- Các hệ thống quản lý phiên bản giúp lập trình viên theo dõi các thay đổi đã được tạo ra trong mã nguồn theo thời gian, cũng như dễ dàng trong việc quay trở lại phiên bản trước.
- Git được sử dụng rộng rãi nhất trong các hệ thống quản lý kiểm soát phiên bản Biết cách sử dụng Git là 1 yêu cầu bắt buộc trong công việc lập trình.
g Thiết kế Responsive và Thiết kế Mobile:
- Chỉ riêng tại Mỹ, lượng truy cập Internet từ thiết bị di động đã cao hơn từ
máy tính, vì vậy không có gì ngạc nhiên khi kỹ năng thiết kế web trên thiết bị di
động lại đóng vai trò quan trọng trong mắt các nhà tuyển dụng Responsive design
Trang 7chính là là bố trí của trang web (và đôi khi chức năng và nội dung) thay đổi dựa trên kích thước màn hình và thiết bị đang dùng.
- Thiết kế mobile có thể bao gồm thiết kế responsive, cũng như các thiết kế mobile cụ thể riêng biệt Đôi khi trải nghiệm của người dùng mà lập trình viên muốn khi họ vào trang web trên desktop sẽ hoàn toàn khác với những trải nghiệm xảy ra trên mobile Ví dụ, một trang web ngân hàng với online banking sẽ được hưởng lợi từ 1 mobile site riêng biệt cho phép người dùng xem những thứ như vị trí ngân hàng gần nhất và kiểm tra tài khoản.
h Test và Debug:
- Có 1 thực tế trong lập trình web không thể tránh khỏi: đó chính là bug.
- Kỹ năng này không chỉ cần thiết với lập trình Frontend mà nó quan trọng với tất cả mọi ngôn ngữ lập trình trên thế giới.
i Các kĩ năng giải quyết vấn đề
- Biết cách hoàn thành 1 trang web như thế nào là tốt nhất, biết cách sửa lỗi, biết cách nhận diện hoạt động của mã nguồn frontend với mã nguồn backend đang được hoàn thành… tất cả đều liên quan đến kĩ năng giải quyết vấn đề.
2.1.2 Kỹ năng lập trình Backend:
a Kỹ năng đọc, hiểu:
- Luôn tìm hiểu kỹ trước khi bắt tay vào lập trình, viết code Cần phải biết làm việc với những thứ gì, và sau đó dành thời gian tìm hiểu kỹ hơn về những việc sẽ phải làm Ví dụ như ngôn ngữ lập trình (PHP, Ruby …),
framework, nền tảng sẽ làm việc (Laravel, Magento, Ruby on Rails …) Việc này không chỉ cho lập trình viên có một cái nhìn cụ thể về những việc sẽ phải làm, mà còn giúp họ có một sơ đồ khái quát rằng sẽ phải làm gì và đích đến của là ở đâu, từ đó tiết kiệm thời gian khi làm việc.
b Hiểu biết cả frontend:
- Luôn nhớ rằng lập trình viên backend sẽ làm việc với tất cả mọi người để cùng làm ra một sản phẩm hoàn chỉnh.
- Bởi thế, lập trình viên backend cũng cần phải biết frontend làm được những gì Biết giao tiếp và tìm hiểu cả những việc mà lập trình viên frontend làm
Trang 8để có những hiểu biết cơ bản về những công nghệ và khái niệm của frontend như
HTML, CSS, hay JavaScript
c Môi trường hệ điều hành, hosting và CSDL:
- Đây là những yếu tố rất quan trọng trong công việc của một lập trình viên backend 55.6% môi trường bang thông (hosting) trên Internet là Linux, đứng sau đó là Window với 35% Việc tìm hiểu về hệ điều hành đó và cách thức
nó hoạt động ra sao là hiểu biết mà một lập trình viên backend cần phải có.
- Kiến thức về CSDL cũng rất quan trọng Nó có ảnh hưởng nhất định tới chất lượng của một trang web Kỹ năng viết câu truy vấn (SQL Querry) hay hiểu biết về mỗi hệ quản trị CSDL là nội dung mà lập trình viên cần phải biết được càng nhiều càng tốt.
d Khả năng truy cập và tính bảo mật:
- Khả năng bảo mật trang web là một kiến thức rất quan trọng, để cho trang web được an toàn và luôn hoạt động với tình trạng tốt nhất với độ tấn công mạng tối thiểu thì lập trình viên phải có khả năng bảo mật trang web tốt.
e Các hệ thống quản lý phiên bản và Git:
Lỗi trong quá trình lập trình backend là điều không thể tránh khỏi Công cụ kiểm soát phiên bản sẽ rất hữu ích trong việc lưu trữ và kiểm soát những thay đổi với mã nguồn, giúp lập trình viên theo dõi được lộ trình phát triển của mình để nhanh chóng tìm ra những dòng mã nguồn nào gây ra lỗi, backup được mã nguồn tránh mất mát, hay cập nhật các phiên bản mà
không phải lo lắng về việc mất đi các phiên bản cũ.
2.1.3 Các trang web học lập trình web trên mạng phổ biến:
a CodeAcademy:
CodeAcademy cung cấp một loạt các hướng dẫn tự thực hành cho người mới bắt đầu tìm hiểu những điều cơ bản về lập trình phát triển web Một môi trường phát triển độc lập trong trình duyệt được tạo ra nơi người học có thể tìm hiểu các cấu trúc cơ bản của mã frontend như HTML và CSS, trước khi chuyển sang các ngôn ngữ backend ví dụ như Ruby on Rails và Python.
b Khan Academy:
Trang 9Một trang web học tập cực kỳ hữu ích bao gồm tất cả các cách thức môn học, và phần lập trình máy tính của Khan Academy nói riêng không thể bỏ qua
Nó có nhiều hướng dẫn tự thực hành, được các chuyên gia về lập trình cung cấp hướng dẫn bằng chữ, âm thanh hoặc video về chủ đề cùng với các cửa sổ trên màn hình tương tác hiển thị mã và xuất kết quả trong khi thực hành.
c MIT OpenCourseware:
Sự phong phú của các khóa học tự thực hành từ một trong những trường kỹ thuật lập trình tốt nhất của Hoa Kỳ, MIT Chương trình MIT OpenCourseware cung cấp nhiều chủ đề đáng kinh ngạc để người học tìm hiểu, bao gồm hàng trăm khóa học liên quan đến lập trình, phát triển xây dựng, toán học và kỹ thuật máy
tính
d Coursera:
Tương tự như MIT OpenCourseware, Coursera cung cấp miễn phí rất nhiều khóa học trực tuyến từ nhiều trường đại học trên thế giới Mỗi khóa học khác nhau một chút về định dạng và thời gian, nhưng nhiều khóa học luôn
có sẵn để lập trình, phát triển và khoa học máy tính.
e Mozilla Developer Network:
Mozilla, đội ngũ phát triển đứng sau trình duyệt web Firefox nổi tiếng, đã tạo ra một nguồn tài nguyên đáng kinh ngạc cho các nhà phát triển thuộc mọi cấp
độ kỹ năng và chuyên môn thông qua Mozilla Developer Network Những tài
nguyên, bài viết và hướng dẫn này hoàn toàn hoàn hảo cho những người tiếp thu
thông tin và học tốt nhất bằng cách sử dụng phương pháp đọc và thử các từ và xem các ví dụ ngay trên trang Phạm vi của các chủ đề rất rộng, từ giới thiệu web cơ bản, ngôn ngữ frontend đến từ vựng thông thường hay tối ưu hóa & hiệu suất.
f HTML5 Rocks:
Mặc dù giao diện hơi mờ nhạt và việc tìm kiếm các bài viết có liên quan có thể hơi khó khăn, nhưng trang web HTML5 Rocks – được cung cấp bởi Google – sở hữu nhiều loại bài viết và hướng dẫn tất cả các chủ đề phát triển web, với đối tượng tham gia là từ người mới bắt đầu học lập trình đến nhà phát triển nghiệp dư hoặc chuyên nghiệp.
g A List Apart:
Trang 10Một trong những tạp chí trực tuyến chuyên nghiệp và cập nhật thường xuyên nhất nhắm trực tiếp đến các nhà phát triển và thiết kế web, A List Apart là nơi có vô số bài viết đặc biệt liên quan đến mọi thứ, từ mã (code), kỹ thuật lập trình đến thiết kế và trải nghiệm người dung Nếu bạn muốn đọc sơ qua và học hỏi kinh nghiệm, lời khuyên của các chuyên gia khác trong lĩnh vực lập trình web, xem qua các bài viết ở đây là một điều mới tuyệt vời.
h Coding Dojo Algorithm Prep:
Đối với các nhà phát triển nghiệp dư, Coding Dojo Algorithm Prep cực
kỳ quan trọng để làm quen với các thuật toán lập trình.
2.2 Những hạn chế của lập trình viên Frontend, Backend:
Ví dụ như với một chiếc xe máy bị hỏng Một người trong gia đình biết cách thay lốp Một người biết thay dầu và một số người biết những thứ khác Tuy nhiên, có một người có thể tháo tung chiếc xe máy đó ra và có thể sửa lại từng chi tiết của nó mà không cần ai phải ra tay giúp đỡ Thì về cơ bản chắc chắn rằng người đó luôn là giải pháp cho mọi vấn đề khi mọi người trong gia đình có xe máy bị hư hỏng.
Các công việc chuyên ngành chỉ đơn giản là để mọi người tạo ra sự nghiệp mà không cần phải học tất cả mọi thứ Điều này có nghĩa là ta có thể giới hạn phạm vi kiến thức và học chúng nhanh hơn vậy nên khi xe máy của mình bị hỏng cần sửa chữa nhiều thứ, mình phải gọi chú để sửa dùm lốp xe, anh thay dầu và bố sửa vài thứ khác Và việc này cần bạn phải có khả năng giao tiếp và làm việc theo nhóm tốt hơn Thứ kỹ năng mà phần lớn các lập trình viên frontend, backend vẫn đang thiếu rất nhiều.
2.3 Những hạn chế của công việc IT tại Việt Nam:
Theo phân tích của VietnamWorks, trong 3 năm vừa qua, số lượng công việc ngành Công Nghệ Thông Tin – Phần Mềm đã tăng trung bình 47% mỗi năm Tuy nhiên, số lượng nhân sự ngành này chỉ tăng ở mức trung bình 8% Nếu sự cách biệt về mức độ tăng trưởng giữa cung và cầu tiếp tục trong
những năm tới, Việt Nam sẽ ngày càng thiếu hụt nguồn nhân lực để đáp ứng cho ngành dẫn đầu thị trường tuyển dụng này.