Làm sao để trở thành Full Stack Developer
Bài đăng này đã không được cập nhật trong 5 năm
"Bài viết dưới đây đã được hoàn thành từ lâu nên trong bài có đề cập tới một vài công nghệ đã cũ"
Chủ đề về Full Stack Developer là một trong những chủ đề nóng nhất hiện tại, kéo theo những cuộc tranh luận thường không có hồi kết.
Trên LinkedIn và Facebook, có rất nhiều người ghi chức vụ hiện tại là Full Stack Developer. Các bài viết về vấn đề này trên Medium cũng nhận lại nhiều comment trái chiều nhau từ phía người đọc. Một vài người cho rằng nên tập trung vào các kỹ năng cá nhân và tìm hiểu sâu về công nghệ, hơn là hướng tới một thứ mơ hồ như Full Stack Developer.
Theo quan điểm cá nhân, tôi thấy chủ yếu các cuộc tranh luận hướng đến việc so sánh một người thợ toàn năng với một chuyên gia lành nghề trong ngành công nghiệp IT. Đó là 2 tính chất "rộng" và "sâu" khi nhắc đến năng lực công nghệ của mỗi người.
"Một nghề cho chín còn hơn chín nghề" - ông cha ta khi xưa cũng từng răn dạy các con cháu rằng "hãy thực sự thành thạo một thứ, thay vì mỗi thứ chỉ biết một chút". Thế nhưng, một Full Stack Developer (hay Full Stack Designer) đúng nghĩa cần đi ngược lại lời khuyên đó, khi thử thách bản thân phải tinh thông không chỉ một kỹ thuật, mà nhiều kỹ thuật một lúc.
Full Stack Developer là gì ?
Trên Quora có giải thích thế nào là một Full Stack Developer :
Một Full Stack Developer là một kỹ sư có thể đáp ứng mọi công việc liên quan đến databases, servers, systems engineering, clients. Tuỳ thuộc vào yêu cầu của dự án khi khách hàng cần một mobile stack, web stack hay native application stack, kỹ sư đó đều hoàn thành được một cách độc lập.
Trong thực tế, full stack là tập hợp một chuỗi các công nghệ cần thiết cho một dự án. Một Full Stack Developer là người có khả năng phối hợp các kiến thức của mình về nhiều lĩnh vực khác nhau để triển khai dự án, mà không cần thêm sự trợ giúp.
Ưu điểm, nhược điểm của Full Stack Developer
Ở hội nghị OSCON, một kỹ sư của Facebook đã nói rằng họ chỉ tuyển full stack developer, mang đến tranh luận về điểm mạnh cũng như điểm yếu của những ai lựa chọn con đường này.
Ưu điểm
Với hiểu biết rộng về kỹ thuật, full stack developers có thể nhanh chóng hoàn thành prototype của sản phẩm, có cái nhìn mở và chủ động hơn các kỹ sư khác. Những người này cũng đóng góp được nhiều ý kiến có ích cho sản phẩm nhờ sự nhạy cảm công nghệ của mình.
Ở một góc nhìn khác, full stack developers có thể giúp đỡ mọi người trong team, giảm thiểu được time và cost cho các vấn đề về tech hay communication.
Rất nhiều full stack developers sau này trở thành nhà sáng lập hoặc tư vấn công nghệ của các công ty start-up.
Nhược điểm
Khi lựa chọn phát triển kỹ năng theo chiều ngang, họ phải chấp nhận đánh đổi lại là sự thiếu chiều sâu. Một vài full stack developers không thể thành thạo được một kỹ năng nhất định nào đó. Thậm chí, nhiều người tự xưng là full stack developer nhưng mỗi lĩnh vực lại chỉ biết qua loa đại khái.
Làm sao để trở thành một Full Stack Developer ?
Một Full Stack Developer cần có kiến thức đáp ứng được mọi lĩnh vực liên quan đến xây dựng một chương trình phần mềm.
Ngôn ngữ lập trình
Đầu tiên, bạn cần biết nhiều ngôn ngữ lập trình, như Java, PHP, C#, Ruby, Python v.vv.. Đương nhiên bạn ko cần phải biết tất cả, nhưng ít nhất bạn cũng phải tinh thông được ít nhất một ngôn ngữ, phải hiểu làm sao để thiết kế, code, test với dự án sử dụng ngôn ngữ đó. Ví dụ, nếu bạn chọn Java, thì bạn cần phải nắm vững thiết kế hướng đối tượng, design patterns, J2EE-based components v.vv..
Frameworks và các thư viện ngoài
Các ngôn ngữ lập trình phổ biến đều có các framework tốt đi cùng, ví dụ như Java Spring, MyBatis, Hibernate, Python Django v.vv.. Bạn phải biết vận dụng linh hoạt các framework này với các thư viện hỗ trợ từ bên thứ ba tuỳ vào yêu cầu dự án.
Front-end
Front-end ngày càng trở nên quan trọng trong ngành công nghiệp phần mềm hiện tại. Trải nghiệm người dùng là một trong những yếu tố hàng đầu để đánh giá sản phẩm thành công hay thất bại.
Là một full stack developer, bạn không thể bỏ qua các kiến thức về front-end như HTML5, CSS, JS và các framework phổ biến như JQuery, AngularJS, REACT v.vv..
Database
Mọi chương trình đều cần một cơ sở dữ liệu để lưu trữ data. Bạn cần hiểu cách giao tiếp với ít nhất 1-2 databases khác nhau, như MySQL, MongoDB, Redis, Oracle v.vv..
MongoDB với tính linh hoạt cao, thường được sử dụng ở các dịch vụ Internet. Trong khi đó, với các dự án lớn, tôi khuyên nên sử dụng MySQL hoặc Oracle. Còn Redis có thể sử dụng để lưu cache, cải thiện performance cho hệ thống.
Design
Hầu hết các cuộc tranh luận về Full Stack Developer không nhắc đến thiết kế (design), nhưng theo tôi thì đây cũng là một kỹ năng cần có đối với ai muốn trở thành một kỹ sư toàn năng. Bạn nên bổ sung thêm kiến thức về cách design một prototype đơn giản, UI/UX design.
Các yêu cầu khác
- Có suy nghĩ mở, bao quát cho toàn bộ các khía cạnh của sản phẩm
- Giao tiếp tốt
- Sáng tạo
- Luôn hiếu kỳ, sẵn sàng tìm hiểu các kiến thức mới
- Quản lý thời gian tốt
Kết luận
Áp dụng quy luật 10,000 giờ của Gladwell, có lẽ phải mất 10 năm để thông thạo front-end, back-end, client-oriented knowledge mới có thể trở thành một Full Stack Developer. Tuy nhiên, đấy vẫn chưa phải là cái đích cuối cùng, vì bạn cần phải liên tục học thêm các kiến thức mới và đào sâu thêm những kỹ năng đã có, để thực sự toàn năng cân cả bản đồ (j/k).
Source: https://hackernoon.com/6-essential-tips-on-how-to-become-a-full-stack-developer-1d10965aaead
All rights reserved