Home / Grid / Trở thành một full-stack developer?

Trở thành một full-stack developer?

Bất kì ai trong ngành lập trình – phát triển web ngày nay đều có thể nhận ra được một điều rằng để bước vào con đường này hiện nay thực sự không phải khó, tuy nhiên phải công nhận rằng càng ngày nó càng phức tạp hơn bởi sự phát triển mạnh mẽ của công nghệ phần mềm và cả phần cứng.

Nói đúng ra thì nguyên nhân sâu xa của nhận định trên bắt nguồn từ những mong muốn được trở nên phổ biến kiểu như “sản phẩm đứng đầu trong tương lai” của cả những công cụ lẫn ngôn ngữ lập trình. Và điều tất yếu khi có quá nhiều thứ tốt cùng xuất hiện thì việc áp dụng chúng sẽ làm cho công việc của lập trình viên trở nên thú vị hơn (hay là phức tạp hơn?).

Đã qua rồi cái thời mà mỗi dự án sẽ chỉ sử dụng một ngôn ngữ hay chỉ một quy trình cụ thể được cung cấp bởi một nhà phát triển. Ngày nay các lập trình viên cần phải biết một loạt các công nghệ trên nhiều nền tảng khác nhau để có thể làm tốt công việc của mình.

Vậy một full-stack developer là gì?

1409261668002

Thuật ngữ full-stack có nghĩa là developer (tôi sẽ sử dụng từ dev), người mà có khả năng làm việc với các công nghệ của cả back-end và front-end.

Cụ thể hơn thì chúng ta đang nói đến một dev có đủ khả năng để làm việc với cả database, PHP, HTML, CSS, Javascript và tất cả những thứ nằm giữa chúng (thường là có) – thậm chí là anh ta còn cần khả năng chuyển đổi từ thiết kế giao diện ở Photoshop sang code của front-end.

Một full-stack developer không cần phải thực sự trở thành master cho tất cả các lĩnh vực trên, bởi vì để trở thành master tất cả mọi thứ thì gần như bất khả thichỉ là anh ta cần có khả năng để làm việc với chúng, thế là đã quá nhiều rồi.

Vậy ý nghĩa của full-stack ở những năm 2000 và bây giờ thì thế nào?

Năm 2000 thực sự cách ngày nay quá xa, ở thời điểm đó PHP 4.0 mới được phát hành. Vâng, là 4.0. Lúc đó một web developer tốt cần biết chut HTML, CSS và biết code method của PHP, chỉ vậy thôi, bởi vì khái niệm OOP (hướng đối tượng) chưa xuất hiện cho tới tận bản 5.0.

Ngày đó LAMP(Linux – Apache – MySQL – Perl/PHP) gần như là bá chủ gần như là không thể thay thế được. Đầu những năm 2000, nếu ai không sử dụng chúng thì có thể được xem là dị giáo đồ, hay là phù thủy vậy. Ngày nay đó lại là điều bình thường, thậm có có người không sử dụng đến chúng.

Vì vậy chúng ta hãy cũng nhau phân loại xem những gì sẽ được cho là cần thiết cho một full-stack developer ngày hôm nay:

1. Quản trị hệ thống:

  •  Linux và shell script cơ bản.
  • Điện toán đám mây: Amazon, Rackspace, vv
  • Background processing: Gearman, Redis
  • Search: Elasticsearch, Sphinx, Solr
  • Caching: Varnish, Memcached, APC / OpCache
  • Monitoring: Nagios

Linux thực sự được sử dụng phổ biến để làm server trên internet. Phần lớn các máy chủ đều sử dụng Linux (số còn lại dùng Windows cho .NET). Bên cạnh đó một full-stack developer cần phải biết các cloud hosting hoạt động như thế nào Amazon/Rackspace hoặc biết cách sử dụng các API do nó cung cấp.

Tìm kiếm là một phần không thể thiếu của hầu hết các website – một developer cũng cần phải biết thiết lập và sử dụng các máy chủ tìm kiếm như Sphinx hay Elasticsearch.

Caching cũng rất quan trọng, Varnish, reverse proxy, memcache và opcode caching. Anh ta cần phải biết chúng là cái gì và sử dụng chúng ra sao.

2. Công cụ phát triển:

  • Version control: Git, Mercurial, SVN
  • Máy ảo: VirtualBox, Vagrant, Docker

Ngày nay thật sự khó có thể chấp nhận việc không thể sử dụng được version control, kể cả bạn có làm việc 1 mình đi chăng nữa.

Với công cụ ảo hóa, sau khi tách ra môi trường phát triển cho mỗi dự án là thực sự cần thiết, ít nhất phải có thể sử dụng VirtualBox và Vagrant.

Lưu ý: Nếu bạn muốn làm việc với Vagrant thì bạn cũng cần phải biết cú pháp cơ bản của Ruby và shell script.

3. Các công nghệ back-end:

  • Web servers: Apache, Nginx
  • Ngôn ngữ lập trình: PHP, NodeJS, Ruby
  • Cơ sở dữ liệu: MySQL, MongoDB, Cassandra, Redis, SQL/JSON

Apache và Nginx là các server để phát triển web. Một full-stack developer nên biết làm thế nào để thiết lập các ứng dụng và phục vụ các nội dung của trang web của mình.

PHP cần phải thông thạo, biết thêm NodeJS, Ruby thực sự là một lợi thế lớn.

Quản lí database cũng là một yêu cầu quan trọng của một full-stack developer, mà nói đúng ra thì tự bản thân nó cũng là 1 thách thức không hề nhỏ.

Những database có quan hệ (như MySQL, PosgreSQL) và database không quan hệ (MongoDB, Redis hoặc Cassandra) có sự khác biệt lớn và bạn cần phải biết điều đó, bên cạnh những kiến thức về XML/JSON.

4. Các công nghệ front-end:

  • HTML / HTML5: Semantic web
  • CSS / CSS3: LESS, SASS, Media Queries
  • JavaScript: jQuery, AngularJS, Knockout, vv.
  • Khả năng tương thích trên các trình duyệt.
  • Responsive design
  • AJAX, JSON, XML, WebSocket

Điều thú vị ở đây là nếu bạn muốn có một website đẹp thì bạn nên biết tất tần tật những thứ ở trên.

JavaScript là một trò đùa trong những ngày đầu mới xuất hiện, ngày nay nó đã phát triển thành một trong những ngôn ngữ phổ biến và mạnh mẽ ngày nay. Các framework mới đang xuất hiện mỗi ngày, MVC, MVVM, MVP, góc, Knockout, Ember, vv và bạn cần theo kịp chúng.

Cùng với HTML, CSS, Javascript, một nhà phát triển full-stack cũng nên biết về responsive design và làm thế nào để làm việc với các truy vấn và preprocessors CSS như LESS và Sass.

Bên cạnh đó cũng nên biết làm thế nào để giao tiếp back-end thông qua AJAX hoặc WebSockets.

5. Design

  • Chuyển đổi thiết kế website về front-end code
  • UI
  • UX

Ngoài các công nghệ front-end, một nhà full-stack developer cũng cần hiểu những gì nên và những gì không để tạo ra giao diện với HTML/CSS/Javascript cũng như chuyển đổi từ thiết kế (file Photoshop / Illustrator) cho phù hợp.

Với rất nhiều các công nghệ đã nêu trên một nhà developer có thể làm việc mặc dù chưa biết code hoặc sử dụng, chẳng hạn như Ruby hay thư viện JavaScript riêng, tuy nhiên đừng lo lắng vì tất cả chúng sẽ đều có sự liên hệ với nhau bằng cách này hay cách khác.

Ví dụ, nếu bạn muốn thiết lập Vagrant bạn cần phải biết cú pháp của Ruby, hay thao tác với các DOM ở giao diện thì jQuery là công nghệ tốt.

6. Mobile

1409261683003

Một loại tiêu chí khác đáng nhắc đến là công nghệ di động. Đó là một ngành công nghiệp rất năng động và liên quan chặt chẽ với phát triển web:

  • iOS
  • Android
  • Hybrid: PhoneGap, Appcelerator

Có sự khác biệt khá lớn giữa việc phát triển web và mobile. Tuy nhiên nó đã thu hẹp lại một cách nhanh chóng.

Một full-stack developer nên biết về các công nghệ này thì sẽ thực sự tuyệt vời.

Liệu trở thành một full-stack developer có thực sự là lựa chọn tốt?

Một full-stack developer có nghĩa là phải sẵn sàng tiếp nhận các công nghệ mới, bạn cần nhúng tay vào tất cả các công nghệ được sử dụng trong dự án, tuy nhiên điều đó sẽ giúp bạn có hiểu một cách toàn diện thiết kế của hệ thống của dự án.

Ý tưởng về “full-stack developer” không phải là để thông thạo mọi công nghệ có thể có, bởi vì mỗi chuyên môn tồn tại đều có lí do của nó và cần những người chuyên sâu để giải quyết vấn đề của chuyên môn đó gặp phải. Tuy nhiên để các thành phần trong hệ thống có thể giao tiếp với nhau suôn sẻ thì họ là những thành viên không thể thiếu, và họ là những tài sản thực sự quý giá nếu biết sử dụng hiệu quả.

Các full-stack developer ngày càng có vai trò quan trọng trong việc phát triển web trong tương lai đặc biệt khi các phương pháp phát triển như DevOps (Development và Operations) đang trở thành một phần thiết yếu của các công ty phần mềm, nơi ranh giới giữa developer và người quản trị (administrators – người triển khai source code) ngày một trở nên nhỏ hơn.

Vậy lựa chọn của bạn là gì? Hãy cho chúng tôi biết ý kiến của bạn ở phần comment nhé.

About Thiện Trần

Rất ham chơi - hơi ham học - luôn mong muốn được chia sẻ kiến thức của mình, hy vọng có thể giúp đỡ được mọi người. Bên cạnh đó cũng đang cố gắng xây dựng một cộng đồng xoay quanh việc giúp đỡ nhau trong học tập và công việc để góp phần đưa nền công nghệ thông tin đi lên.

Check Also

Yii Framework Development Services

[Yii2] – Hướng dẫn lấy và xóa dữ liệu

Mình sẽ có một series videos để hướng dẫn các bạn về Yii framework version ...

Top-12-Framework-for-Android-App-Development

12 Framework tốt nhất cho Android Developer

Android là platform cho thiết bị di động lớn nhất thế giới với hàng triệu ...

Leave a Reply

Your email address will not be published. Required fields are marked *