Nếu bạn là người làm trong lĩnh vực phần mềm thì full stack developer là một vị trí khá quen thuộc. Theo một khảo sát gần đây trên Stack Over Flow, có đến 60% những người tham gia xem họ là kỹ sư full-stack (full-stack engineer). Bạn muốn tìm hiểu chỉ cần gõ Full stack developer là gì sẽ có hàng trăm nghìn bài viết để đọc. Thế nhưng để cái nhìn toàn cảnh về lập trình full stack developer, làm thế nào để làm vị trí này, phát triển nghề nghiệp thế nào, lương bổng ra sao… thì cũng khá mất thời gian để tìm kiếm. Bài viết này sẽ mang lại cho bạn những thông tin mà bạn cần.
Full Stack Developer là gì?
Từ full-stack bản thân đã nói lên nhiều điều. Trong thực tế, full-stack đề cập đến hàng loạt các công nghệ cần thiết để hoàn thành một dự án (phát triển ứng dụng, web…). Full-stack developer là người có thể làm việc trên cả Back-end lẫn front-end, database, hệ thống, server, bảo mật… Mặc dù vậy, lập trình viên full-stack không phải là người giỏi về tất cả các công nghệ. Họ là người hiểu rõ những công nghệ cần thiết cho dự án hay công việc họ làm. Tuy nhiên, Full-stack developer có thể nhanh chóng học hỏi những công nghệ khác khi cần.
Trước năm 2010, không mấy ai sử dụng từ full-stack trong giới công nghệ. Cho đến khi Facebook thông báo họ chỉ tuyển Full-stack developer trong sự kiện mã nguồn mở OSCON (Open Source Software Conference) năm 2012, Full-stack developer mới trở nên thông dụng.
Thông thường nói về full-stack developer người ta thường nghĩ về full-stack web developer nhưng bên cạnh đó còn có mobile stack, native application stack, IoT.. và các kiến thức, kỹ năng cần thiết cũng khác nhau trong các lĩnh vực. Ví dụ full-strack developer trong lĩnh vực Internet vạn vật (IoT), bạn cần phải có thêm những kiến thức về embedded & firmware systems, các kỹ thuật về truyền tin (communication technologies), networking protocol, công nghệ sensor và nhiều kiến thức khác. Trong khuôn khổ bài này chúng ta mặc nhiên xem full-tack developer là web developer.
Full stack developer làm gì?
Là một lập trình viên full stack bạn có thể sẽ tham gia vào các việc cụ thể sau:
- Đưa ra giải pháp và xây dựng cấu trúc phù hợp để xây dựng ứng dụng theo yêu cầu
- Quản lý dự án và làm việc với các stack holder khi cần thiết
- Viết code back-end trên các ngôn ngữ phù hợp (Java, PHP, Ruby, Python…)
- Thiết kế và làm việc trên front-end sử dụng html, CSS, JavaScript…
- Tạo và phát triển cờ sở dữ liệu
- Thiết kế xây dựng các API
- Tham gia và vào quá trình kiểm thử ứng dụng.
- Theo dõi và cải thiện performance của của các ứng dụng.
- Tham gia xây dựng tài liệu kỹ thuật
Full Stack Developer khác gì với Full Stack Engineer?
Trong thực tế, full stack developer và full-stack engineer được sử dụng mà không có sự phân biệt trong phần lớn trường hợp. Tuy nhiên cũng có sự khác nhau giữa 2 vị trí này. Full stack engineer được sử dụng để chỉ những vi trí đã có kinh nghiệm (senior). Thêm vào đó full-stack engineer còn là người chịu trách nhiệm nhiều hơn so với develoepr trong các dự án, đặc biệt là trong việc đưa ra cấu trúc và thiết kế hệ thống. Kỹ sư full-stack cũng có các kỹ năng khác như quản lý dự án, DevOps…
Full Stack Developer cần những kỹ năng gì?
Để trở thành hoặc làm tốt trong vài trò một full-stack developer bạn cần sử dụng tốt các công nghệ sau:
- Ngôn ngữ lập trình:
Bạn cần phải nắm vững một số ngôn ngữ lập trình mà nơi bạn làm việc cần sử dụng, ví dụ PHP, C#, Python, Ruby…. Điều không kém quan trọng là bạn phải thật chắc về cấu trúc, thiết kế, các triển khai và có thể kiểm thử các đối tượng (object) đã được xây dựng dùng các ngôn ngữ lập trình trong dự án của bạn. Ví dụ, bạn tham gia xây dựng một ứng dụng bằng Java. Là một Full-stack developer bạn cần phải thật sự kiểm soát được việc thiết kế và phát triển hướng đối tượng (object oriented design), các design patterns, các J2EE-based components..
- Các framework, nền tảng, thư viện
Bạn cũng cần phải thật vững về các framework cần sử dụng. Ví dụ nếu bạn sử dụng Python thì có thể Django là framework bạn cần hiểu rõ. Hoặc khi bạn xây dựng các dịch vụ đám mây, hoặc các ứng dụng real-time data có thể bạn sẽ cần sử dụng nền tảng NodeJs thay vì chỉ biết JavaScript.
- Các công cụ, công nghệ thiết kế front-end
Nắm vững các công nghệ về front-end cần thiết là không thể thiếu với người làm Full-stack developer. Thêm vào đó, hiểu biết về User Experience (UX) cũng giúp bạn thành công hơn. Các công nghệ, kỹ thuật, ngôn ngữ hay front-end framework như HTML, CSS, JavaScript, JQuery, AngularJS, REACT… là những thứ bạn cần.
- Cơ sở dữ liệu & caching.
Là một người phát triển full-stack, bạn không thể không nắm vững ít nhất một hoặc nhiều hơn các hệ thống cơ sở dữ liệu: Oracle, MySQL, SQL Server, MongoDB.. Tùy vào dự án, độ phức tạp của dữ liệu, yêu cầu hệ thống mà chọn CSDL phù hợp. Bạn cũng cần nắm các kỹ thuật caching như Redis, varnish, memcached…
- Kỹ năng thiết kế cơ bản
Hiểu về các kỹ thuật, quy trình, các nguyên lý của thiết kế prototype, UX, UI.. dù không quá chuyên sâu cũng giúp ích cho các công việc của bạn rất nhiều.
- Server
Tùy môi trường mà bạn có thể cần hiểu về các hệ điều hành như Linux, Windows… hay các web server như Apache, nginx..
- Quản lý phiên bản – Version control system
Có lẽ không thừa khi đề cập đến version control system đối với người làm full-stack. Bạn cần phải có kiến thức về Git để có thể quản lý được code một cách tốt nhất
- Làm việc với API
Với một full-stack developer, có kiến thức về API (REST & SOAP), Web service là cực kỳ quan trọng.
- Một số kỹ thuật khác
Một số kỹ thuật nếu bạn nắm được sẽ giúp ích cho bạn trong vai trò là người phát triển full-stack
- Có khả năng viết các unit test
- Hiểu được các quy trình hoặc biết cách xây dựng automation testing
- Hiểu về bảo mật
- Nắm vững kiến thức về giải thuật, cấu trúc dữ liệu
Các kỹ năng mềm
Ngoài những kỹ năng kỹ thuật bên trên, bạn cần có những kỹ năng mềm:
- Suy nghĩ vượt qua khuôn khỗ những gì mình thường làm (think out of the box, think globally)
- Kỹ năng giao tiếp
- Sáng tạo
- Kỹ năng phân tích
- Luôn tìm hiểu, học hỏi những kỹ thuật, kỹ năng mới
- Quản lý thời gian, quản lý dự án
- Kỹ năng giải quyết vấn đề (problem solving)
- Làm việc có kỷ luật
Có phải ai cũng có thể làm Full Stack Developer?
Về lý thuyết, nếu bạn làm Front-End thì có thể học thêm các kỹ thuật Back-End cùng các kỹ năng cần thiết khác để trở thành full-stack developer và ngược lại. Tuy nhiên trong thực tế không đơn giản như vậy. Trước hết bạn phải thực sự vững vàng trong lĩnh vực bạn đang làm việc (back-end hay front-end) trước khi học sang những kỹ thuật, ngôn ngữ, kiến thức mới. Bạn cũng cần phải xác định full-stack có thật sự thích hợp đối với mình không. Để làm tốt một full-stack ngoài việc bạn cần có kỹ năng nhiều hơn là chỉ làm về front-end hay back-end, bạn cũng cần nhìn các vấn đề ở mức độ mộ bức tranh lớn (big picture). Bạn cũng cần học hỏi và cập nhật kiến thức thường xuyên hơn, học hỏi và cải thiện các kỹ năng mềm.
Nên nhớ, nếu bạn là thực sự là một full-stack developer, bạn thật sự là tài sản của team hay công ty bạn. Ngược lại, biết mỗi thứ một chút không thể gọi là full-stack và sự đóng góp của bạn là rất hạn chế.
Tại sao bạn nên trở thành lập trình viên full-stack
Trở thành một lập trình viên full-stack có những lợi ích sau:
- Bạn có nhiều cơ hội trong việc phát triển nghề nghiệp
- Full-stack developer dễ tìm việc. Theo khảo sát gần đây của Topdev, full stack là một trong những vị trí được các nhà tuyển dụng săn tìm nhiều nhất.
- Mức lương khá ổn (xem phần sau)
- Học hỏi và áp dụng nhiều kiến thức, kỹ thuật trong các dự án.
- Dể có khả năng thăng tiến lên những vị trí quản lý, project manager, product manager…
Làm thế nào để trở thành một Full-stack developer?
Để trở thành một lập trình viên full stack bạn cần có nhiều năm kinh nghiệm trong lĩnh vực phát triển phần mềm. Và như trên đã đề cập, bạn cần phải vững cả front-end lẫn back-end, database, storage.. và nhiều kiến thức kỹ thuật khác. Trong thực tế, bạn không thể chỉ tham dự vài khóa học là đã trở thành một Full-stack developer ngay. Cái mà bạn cần là liên tục tích lũy kinh nghiệm thực tế cả về Front-end, back-end … để trở thành một lập trình viên full stack thật thụ.
Lương Full stack developer
Theo khảo sát gần với thời điểm bài viết này của Robert Walters, một công ty chuyên về tuyển dụng có trụ sở chính tại London và hoạt động trên 75 quốc gia, lương của Full Stack Developer tại Việt Nam trong tầm 30,000 đến 48,000 USD một năm. Tức mức lương tháng vào tầm 2,500 đến 4,000 USD. Tuy nhiên bản báo cáo không cho biết kinh nghiệm cũng như những điều kiện khác để có được mức lương này. Thông tin thêm là theo một khảo sát mới nhất của công ty tuyển dụng và tư vấn nhân sự Adecco vào tháng 4 2020, lương của kỹ sư phần mềm tại Việt Nam có mức lương 50 – 75 triệu đồng cho kinh nghiệm từ 3-5 năm.
Bạn có phải là một lập trình viên full stack? Hay bạn đang tìm hiểu về vị trí này? Hãy để lại comment bên dưới nhé.
Nếu bạn muốn tìm hiểu thế nào là Technical Stack thì bài viết này bạn nên đọc.
Bạn có biết?
tham gia cộng đồng ITguru trên Linkedin, Facebook và các kênh mạng xã hội khác có thể giúp bạn nhanh chóng tìm được những chủ đề phát triển nghề nghiệp và cập nhật thông tin về việc làm IT mới nhất
Linkedin Page:
Facebook Group:
cơ hội việc làm IT : ITguru.vn
Công nhận với bạn là lương của fullstack engineer cao thật. Nhưng để đạt cảnh giới mà giỏi toàn diện như yêu cầu fullstack quả thật là rất khó