Khái niệm Full-Stack đang phát triển mạnh mẽ như là một HOT TREND trong vài năm gần đây. Nó cũng là đích hướng tới của nhiều developer có nhiều kinh nghiệm. Thị trường tuyển dụng cũng sôi nổi hơn với nhiều nhu cầu tuyển dụng nóng dành cho vị trí này. GrowUpWork xin làm rõ hơn về nhu cầu của thị trường hiện nay đối với vị trí Full-Stack và Half-Stack giúp các ứng viên hiểu rõ hơn và có lựa chọn hướng đi chính xác cho sự nghiệp của mình nhé.
Full-Stack developer có thể được coi là một kỹ sư phần mềm toàn năng. Người có thể tự mình đảm đương được tất cả (full) các công đoạn (stack) mà phát triển web yêu cầu.
Tương tự như một chàng Cowboy hai tay hai súng bách phát bách trúng. Full-Stack developer thành thạo cả về Front-End lẫn Back-End, một lập trình viên không những thành thạo về ngôn ngữ lập trình trên máy chủ (PHP, Java, Ruby, Python, .Net...), kiến trúc logic, hệ thống, thiết kế Database, APIs, Libs, Framework, server, OS, Git… mà còn làm tốt các nhiệm vụ của lập trình trên trình duyệt Front-End (giao diện người dùng) như layout, Css, html, javascript, animation…
Có rất nhiều tin đăng tuyển dụng dành cho vị trí Full-Stack developer với mức lương cao trong ngành IT cùng nhiều đãi ngộ rất tốt. Chúng tôi (GrowUpWork) từng phụ trách tuyển dụng nhiều ứng viên vị trí này cho các công ty trong nước. Lượng ứng viên nộp đơn vô cũng khá nhiều, tuy nhiên, trong suốt một năm chúng tôi chưa từng tìm kiếm được một ứng viên thực sự là một “Full-Stack developer”.
“Không, thực sự là không tồn tại Full-Stack developer đúng nghĩa!”
Tôi chưa gặp một người nào có khả năng làm tốt cả Front-End và Back-End như nhau. Nhiều người sẽ nói rằng họ rất vui khi được làm việc ở cả hai vị trí, nhưng sau khi trò chuyện với họ, tôi nhanh chóng phát hiện ra rằng họ chỉ có sở thích và thực sự giỏi ở một lĩnh vực mà thôi. Họ sẽ mất nhiều thời gian hơn rất nhiều để hoàn thành và chất lượng sẽ bị ảnh hưởng (rất có thể họ sẽ không thừa nhận điều đó).
Hầu hết ứng viên pass qua các vòng tuyển dụng là những ứng viên “có nhiều kinh nghiệm” làm việc và có khả năng nghiên cứu và hoàn thành các công đoạn khác trong yêu cầu “khá tốt”.
Họ có thể là một người giỏi Back-End và có kinh nghiệm khá cũng như phải xử lý về Front-End trong một số dự án, nhưng không thực sự giỏi.
Quả thực, các yêu cầu dành cho Full-Stack developer là quá nhiều, từng lĩnh vực trong đó đều đòi hỏi ngoài tố chất học hỏi thì cần rất nhiều thời gian thực hành và đúc kết kinh nghiệm. Không ai có đủ “thời gian” để hoàn thiện điều này.
Các nhà phát triển phần mềm Back-End thường coi mình là full-stack. Dưới đây là một số lý do:
Thực tế công việc của một Back-End hàng ngày vẫn phải tự xử lý những phần công việc của Front-End đơn giản như chỉnh sửa html và css. Còn ngược lại thì rất hiếm nếu không nói là không có ai.
Front-End là công đoạn cần phải hoàn thành trước khi Back-End bắt tay vào việc. Do đó, những thay đổi, chỉnh sửa vốn phát sinh rất nhiều trong quá trình Back-End họ đều cố gắng tự xử lý sẽ nhanh hơn là nhờ Front-End làm.
Front-End mãi mãi chỉ là Front-End, còn Back-End luôn là một Back-End+ hoặc đôi khi có thể gọi là Full-Stack developer.
Ngay ở thời điểm hiện tại, các yêu cầu về Front-End chưa thực sự cao. Phần lớn các công ty phần mềm hiện nay vẫn thiếu vằng vị trí này. Trong công đoạn phát triển của họ sẽ từ Designer ⇒ Back-End developer, như vậy các Back-End nhiều kinh nghiệm luôn phải kiêm nhiệm công việc của một Front-End developer như là một điều hiển nhiên.
Phía khách hàng cũng thường chấp nhận mức giảm yêu cầu về Front-End để giảm chi phí và thời gian phát triển. Phía công ty cũng giảm được nhiều chi phí dành cho vị trí Front-End khi mà các Back-End developer nhiều kinh nghiệm của họ có thể đảm đương được.
Full stack development tuy rất hot nhưng không phải ai cũng có thể theo đuổi, nó cũng có một số hạn chế và điểm yếu riêng:
Theo nhiều báo cáo của các công ty dịch vụ nhân sự CNTT, mức lương của các Full-Stack developer hiện nay tuy rất cao nhưng vẫn thấp hơn Back-End. Điều này cũng dễ hiểu bởi các Back-End hiện tại có thể hiểu là Full-Stack có kỹ năng Back-End chuyên sâu và nhiều kinh nghiệm. Full-Stack chưa thực sự chứng minh được giá trị nổi bật của mình trước Back-End.
Một nghiên cứu về mức lương từ Indeed.com cho biết rằng một lập trình viên full stack trung bình tại San Francisco, CA kiếm được gần $ 1,30,576 một năm, trong khi một lập trình viên web thông thường là khoảng $ 94,614.
Mức lương trung bình của Lập Trình Full stack là 24 Triệu VNĐ trên toàn quốc (Trong khi Front-End là 16 triệu và Back-End là 19 triệu). Theo thống kê dữ liệu trên hệ thống JobsGO kết hợp với dữ liệu do các ứng viên cung cấp (https://jobsgo.vn/muc-luong-lap-trinh-full-stack.html).
Cơ hội việc làm cho các full stack developer tại Việt Nam hiện đang rất cao. Công nghệ thông tin có vai trò quan trọng trong hội nhập với thế giới cùng với làn sóng chuyển đổi số, sự bùng nổ của các doanh nghiệp startups công nghệ.
Đó là lý do tại sao nhu cầu thị trường phát triển website trong lĩnh vực CNTT luôn tăng cao nhất. Nó mở ra cơ hội cho nhiều lập trình viên đa năng (Full-Stack). Đó cũng là lý do tại sao mức lương lập trình viên full-stack luôn tăng nhanh và thuộc top đứng đầu ngành.
Như đã phân tích ở trên, chúng ta biết rằng một Full Stack Developers toàn năng không thực sự tồn tại. Tuy nhiên, các nhà phát triển muốn cả chuyên môn hóa nhưng cũng muốn có sự đa dạng trong khả năng của các developer của họ. Lúc này khái niệm nhà phát triển Half-Stack sẽ phù hợp với quan điểm này.
Nguồn: https://annex.com.au/careers/half-stack-developer
Như vậy, Half-Stack developer chính là những Full Stack Developers chưa hoàn thiện, họ vẫn chỉ thành thạo và mạnh thực sự với một kỹ năng chính là Front-End hoặc là Back-End mà thôi. Tuy nhiên, với phần còn thiếu kia họ cũng có khả năng làm việc, hoặc đang học hỏi để hoàn thiện nốt. Họ chính là những Full Stack Developers trong tương lai.
Ngày nay, các công nghệ và công cụ hỗ trợ lập trình viên như APIs, Frameworks, SDKs, Plugins, Themes… đã làm rất rốt và trợ giúp cho các nhà phát triển rất nhiều. Họ không còn phải tốn quá nhiều thời gian để nghiên cứu chuyên sâu và tự làm mọi thứ từ con số 0 nữa. Một Half-Stack developer một khi nắm vững các công cụ này sẽ có thể nhanh chóng đạt được level của Full Stack Developers.
Tóm lại, Half-Stack developer = Front-End+ hoặc là Back-End+.
Các công ty vẫn luôn tìm Half-Stack developer, bởi nếu các Full-Stack cùng làm việc trong một dự án quả là một sự lãng phí đồng thời dễ dẫn đến xung đột. Ngược lại nếu chỉ có các Front-End hoặc Back-End làm việc độc lập, rời rạc thì hiệu quả cũng suy giảm và gia tăng rủi ro.
Những Front-End developer phải có một số kiến thức về Back-End và những gì có thể triển khai và ngược lại. Cả hai cần phải hiểu cách họ làm để kết hợp với người khác, phù hợp với bức tranh lớn hơn. Trong trường hợp này các Half-Stack developer chính là lựa chọn tốt nhất.
Các công ty không nên tìm kiếm những kỹ sư đánh dấu vào tất cả các ô (Full-Stack) vì thường thì đó chỉ là những gì họ quảng cáo. Họ nên tập trung vào những người có sở thích và kỹ năng chuyên sâu về một vài công nghệ cụ thể mà công ty cần (Half-Stack) và kinh nghiệm với các ngôn ngữ / lĩnh vực khác như là một lợi thế.
Những Half-Stack này chỉ cần có cơ hội trau dồi thêm kinh nghiệm để trở thành Full-Stack trong tương lai trong khi vẫn đảm bảo các key skill đạt mức độ chuyên sâu như công ty cần. Điều này hiển nhiên là sẽ đem lại lợi ích rất lớn cho công ty về sau.
"Muốn đi nhanh thì đi một mình, muốn đi xa thì đi cùng nhau."
Khi các dự án đạt đến một quy mô nhất định, việc duy trì các Full-Stack này sẽ bị giảm sút do khả năng hiểu biết và áp dụng thực tiễn tốt nhất của họ là hữu hạn. Lúc này các Half-Stack developer sẽ thực sự thể hiện tốt vai trò và hiệu quả của họ hơn so với các Full-Stack vốn cần thiết trong giai đoạn đầu khi quy mô công ty còn nhỏ.
Như vậy, trong giai đoạn đầu của một startup company khi tiềm lực và quy mô còn nhỏ, họ sẽ cần các Full-Stack developer để có thể nhanh chóng tích lũy kinh nghiệm cũng như phát triển quy mô và tiềm lực. Tuy nhiên trong giai đoạn sau họ cần củng cố chuyên sâu về kỹ thuật (chuyên môn hóa) để có thể cạnh tranh với các đối thủ lớn trong ngành lúc này vai trò của Full-Stack sẽ dần bị thay thế bởi các Half-Stack và Back-End developer thuần túy.
Ở hiện tại Half-Stack không phải là một khái niệm phổ biến. Họ vẫn chỉ được coi là các Front-End hoặc Back-End thuần túy nhưng có nhiều điểm check hơn trong skill-sheet của họ.
Mức lương của Half-Stack sẽ nằm ở khoảng trên trung bình của mức lương vị trí tương đương cho tới gần mức lương trung bình của Full-Stack:
⇒ Mức lương Half-Stack = 16~24 triệu
Bài viết này được tổng hợp từ nhiều nguồn và viết lại dựa trên quan điểm và kinh nghiệm của các Full-Stack developer công ty chúng tôi. Bài viết giúp làm rõ khái niệm Full-Stack và Half-Stack cũng như nhu cầu của thị trường, mức lương cùng những phân tích ưu nhược điểm xoay quanh vị trí Full-Stack developer. Chúng tôi có tham chiếu và ghi rõ nguồn để các bạn có thể tham khảo thêm. Hy vọng bài viết sẽ giúp ích cho các bạn developer trong việc quyết định chọn lựa con đường nào mà mình sẽ theo đuổi để phát triển sự nghiệp của mình.
Bạn có nghĩ rằng Front-End và Back-End không nên được kết hợp trong một vị trí công việc? Hoặc Full-Stack thật là tuyệt vời là lựa chọn đúng đắn trong con đường phát triển sự nghiệp của developer? Các công ty nên tuyển dụng và khuyến khích mọi người up skill lên Full-Stack? Lương của Full-Stack lẽ ra phải là top 1 của ngành IT? Bạn không đồng ý với bất kỳ quan điểm hoặc giải thích nào của chúng tôi trong bài viết này?