Full-stack developer là một kỹ sư (engineer) có thể xử lý tất cả các việc như cơ sở dữ liệu, máy chủ, thiết kế hệ thống và khách hàng.
Là một trong những chủ đề nóng nhất trong giới developer, các thảo luận chưa bao giờ dừng lại.
Trên LinkedIn và Facebook, rất nhiều người đặt chức danh cho mình là full stack developer. Bên cạnh đó, dường như “Full Stack” đã trở thành một xu hướng việc làm mới.
Một bài báo trên Medium thảo luận về full stack designer đã nhận được cả khen ngợi lẫn chê trách. Một số người cho rằng full stack chỉ là một chức danh, cái mà người đó nên tập trung là thực lực cá nhân và công nghệ.
Về cơ bản, tôi nghĩ thảo luận về full stack cũng là một loại tranh luận liên quan đến những người toàn diện và chuyên gia trong ngành CNTT, và tranh luận về độ sâu rộng của kỹ năng development.
Bạn không thể vừa muốn có cái bánh, vừa muốn ăn bánh được. Nhưng full stack developer và full stack designer có vẻ như đang thách thức khả năng này. Bởi vì cây kỹ năng theo chiều ngang mang lại cho họ khả năng vừa có bánh, vừa ăn được bánh.
Có một câu nói khác là cái gì cũng biết, nhưng không biết cái gì sâu. Vậy nên, cần phải suy nghĩ về cách trở thành một full stack developer thực thụ chứ không phải một chức danh trống rỗng.
Nói một cách đơn giản, full stack developer là kiểu người thành thạo nhiều kỹ năng và sử dụng những kỹ năng này để hoàn thành sản phẩm một cách độc lập.
1 câu trả lời được bình chọn nhiều nhất trên Quora khi giải thích một full stack developer là gì:
“Full-stack developer là một kỹ sư (engineer) có thể xử lý tất cả các việc như cơ sở dữ liệu, máy chủ, thiết kế hệ thống và khách hàng.“
Tùy vào dự án, những gì khách hàng cần có thể là các stack mobile, Web hoặc native app.
Trên thực tế, “full stack” đề cập đến tập hợp các công nghệ cần thiết để hoàn thành dự án.
“Stack” đề cập đến tập hợp các mô-đun con. Các mô-đun con hoặc thành phần phần mềm này kết hợp với nhau để đạt được chức năng đã thiết lập mà không cần đến các mô-đun khác.
Như đã đề cập ở trên, thảo luận về full stack developer thực sự là cuộc tranh luận về độ sâu rộng của các kỹ năng.
Đặc biệt tại hội nghị OSCON, một kỹ sư của Facebook cho biết họ chỉ thuê một “full stack developer” mà thôi.
Chủ đề này là kết quả của một cuộc thảo luận sôi nổi về ưu và nhược điểm của việc trở thành một full stack developer.
Điểm mạnh
Các full stack developer tham gia vào một yêu cầu kỹ thuật theo chiều ngang, vì vậy họ có thể tạo thiết kế nguyên mẫu cho một sản phẩm rất nhanh chóng nhờ kỹ thuật đa dạng của mình.
Với khả năng full stack, họ có góc nhìn rộng hơn và tư duy tích cực hơn. Hơn nữa, họ sẽ nhạy cảm hơn với kỹ thuật và sản phẩm.
Vì vậy, những người này luôn có thể có ý kiến của mình đối với sản phẩm hoặc thiết kế.
Từ một khía cạnh khác, họ có thể giúp đỡ mọi người trong nhóm và giảm đáng kể thời gian và chi phí kỹ thuật của giao tiếp nhóm, cập nhật công nghệ.
Vì vậy, nhiều người trong số họ trở thành doanh nhân hoặc là đối tác kỹ thuật trong các công ty mới thành lập.
Nhược điểm
Chính vì sự phát triển công nghệ theo chiều ngang, một số full stack developer không thể chuyên sâu một kỹ năng.
Hầu hết những người tự nhận là “full stack dev” chỉ biết một chút ở nhiều kỹ năng. Đối với việc làm thế nào để làm cho kiến trúc phù hợp hơn với sự phát triển mô-đun, đó là một câu hỏi.
Mặc dù vậy, vẫn có người đặt câu hỏi…
Một full stack dev chất lượng phải có kiến thức và khả năng vận hành đối với tất cả các khía cạnh liên quan đến việc xây dựng ứng dụng. Kiến thức này bao gồm:
Bạn cần phải thành thạo nhiều ngôn ngữ lập trình, chẳng hạn như JAVA, PHP, C#, Python, Ruby, Perl, v.v.
Vì hầu hết các quy trình kinh doanh cốt lõi của bạn cần phải được viết bằng các ngôn ngữ này.
Nhưng bạn cũng phải nắm vững ngữ pháp ngôn ngữ và quen thuộc với cách cấu trúc, thiết kế, triển khai và kiểm tra dự án dựa trên một ngôn ngữ hoặc nhiều 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 và phát triển, các mẫu thiết kế, các thành phần dựa trên J2EE của quá trình phát triển, v.v.
Nơi học: Git / GitHub – Bạn phải biết cách sử dụng Git để quản lý và chia sẻ code của mình.
Các ngôn ngữ phát triển phổ biến thường đi kèm với một khung phát triển tốt (development framework), chẳng hạn như JAVA Spring, MyBatis, Hibernate, Python Django, PHP thinkphp, Yin, nodeJs express, v.v.
Công nghệ front-end ngày càng trở nên quan trọng hơn trong quá trình phát triển sản phẩm và dự án ngày nay.
Ngoài tính năng của sản phẩm thì trải nghiệm của người dùng cũng là một trong những tiêu chí để kiểm chứng sự thành công của một sản phẩm.
Tất cả điều đó phụ thuộc vào việc triển khai công nghệ front-end, vì vậy bạn cần phải nắm vững một số công nghệ front-end cơ bản như HTML5, CSS3, JavaScript và nghiên cứu sâu hơn về các khuôn khổ front-end hoặc thư viện của bên thứ ba như JQuery, LESS, SASS, AngularJS hoặc REACT.
Bất kỳ sản phẩm hay dự án nào cũng cần có cơ sở dữ liệu để lưu trữ dữ liệu.
Là một full stack developer, bạn cũng cần phải có ít nhất một hoặc hai cơ sở dữ liệu và biết cách tương tác với cơ sở dữ liệu.
Hiện tại, cơ sở dữ liệu phổ biến là MySQL, MongoDB, Redis, Oracle, SQLServer, v.v.
Là một cơ sở dữ liệu dạng tài liệu, MongoDB, đang được sử dụng rộng rãi hơn trong các sản phẩm Internet.
Đối với các dự án lớn hơn, khuyên bạn nên sử dụng MySQL hoặc Oracle thương mại làm cơ sở dữ liệu back-end.
Trong khi cơ sở dữ liệu bộ nhớ, chẳng hạn như Redis, có thể được sử dụng để lưu vào bộ nhớ đệm nhằm cải thiện hiệu suất hệ thống.
Hầu hết các bài báo hoặc thảo luận về full stack developer khi liên quan đến các yêu cầu thiết kế.
Nhưng tôi nghĩ kỹ năng thiết kế rất quan trọng, nguyên tắc và kỹ năng của thiết kế nguyên mẫu cơ bản, thiết kế UI, UX cũng cần hiểu rõ.
Yêu cầu bản thân cũng là một yếu tố cần thiết để trở thành full stack developer
Tổng kết
Theo luật 10.000 giờ của Gladwell, bạn sẽ mất 10 năm để nắm vững nội dung kiến thức hướng đến khách hàng, front-end và back-end để trở thành một full stack developer.
Do đó, full stack developer hoàn toàn không thể đạt được trong một sớm một chiều. Những gì bạn cần làm là đặt nền tảng kỹ thuật, củng cố các kỹ năng cốt lõi và tiếp tục học hỏi để đạt được nhiều thử thách hơn.
Gambaru Team. Lược dịch từ hackernoon.com.