“Full-stack Developer là người phụ trách cả Front-end lẫn Back-end của sản phẩm, từ thiết kế giao diện đến database bạn đều phải ôm trong tay…” – Dưới đây là câu chuyện của tôi – kẻ đã từng gục ngã trên hành trình trở thành full-stack. 
học lập trình angular để thành full stack
học lập trình angular để thành full stack
Thực ra, khái niệm full-stack chẳng còn gì xa lạ với dân lập trình tại Việt Nam. Người người theo trào lưu, nhà nhà tuyển full-stack. Chẳng may nếu bạn chưa biết rõ full-stack trên thế giới được định nghĩa chuẩn thế nào, thì có thể search Google. Trong bài này, topITworks chỉ trích dẫn một số tài liệu hay ho từ nhiều nguồn, để bạn tiện tham khảo.
Silicon Strait Saigon “định nghĩa” Full Stack Developer là 1 người:
> Không giới hạn mình ở bất kỳ 1 language hay 1 framework nào hết.
> Có kiến thức IT tổng quát  và khả năng tìm hiểu sâu khi cần thiết bất kỳ vấn đề gì thuộc: (1) Server – Network (2) Database (3) Web frameworks (4) Mobile frameworks
> Hiểu và ứng dụng được UI/UX vào trong projects
> Nắm bắt nhanh Business Logics và chuyển được thành Technical Logics
> Biết được khi nào cần hiểu rộng, khi nào cần hiểu sâu
> Có thể lập trình được ít nhất 1 ngôn ngữ web và 1 ngôn ngữ mobile (iOS/Android)
Và, cái khó nhất nằm ở chỗ, bạn có sẵn sàng trở thành 1 full-stack Developer không? Làm thế nào để trở thành 1 Full-stack Developer?
học lập trình angular để thành full stack

Khi hành trình full-stack bắt đầu…

BƯỚC 1: KỸ NĂNG >>>
Quản trị hệ thống: Linux và shell script cơ bản | Điện toán đám mây: Amazon, Rackspace,… | Background processing: Gearman, Redis | Search: Elasticsearch, Sphinx, Solr | Caching: Varnish, Memcached, APC / OpCache | Monitoring: Nagios
Công cụ phát triển: Version control: Git, Mercurial, SVN | Máy ảo: VirtualBox, Vagrant, Docker
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
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
Design: Chuyển đổi thiết kế website về front-end code | UI | UX
Mobile: iOS | Android | Hybrid: PhoneGap, Appcelerator

BƯỚC 2: LUYỆN TÍNH KIÊN TRÌ >>>
Kiên trì để liên tục đẩy bản thân mình không ngừng nghỉ. Bạn phải kiên trì liên tục học cái mới. Mỗi tuần bạn không biết thêm và làm thêm 1 cái gì mới coi như bạn đang đi thụt lùi.
Kiên trì cho 1 chuyên môn, 1 ngôn ngữ nhất định thì dễ (như PHP, Ruby, Android, Python, iOS, …). Bạn cứ làm, cứ nghiên cứu thì cũng là tiến bộ rồi. Nhưng bạn có đủ kiên trì để học 2-3 ngôn ngữ, tìm hiểu 2-3 nền tảng cùng 1 lúc không? Bạn có đủ kiên trì để trải qua những cung bậc cảm xúc khi bắt đầu lại từ đầu với 1 ngôn ngữ mới không?
Kiên trì tìm cho mình cơ hội. Cơ hội để được làm, được thực hành.
BƯỚC 3: THỬ LÒNG DŨNG CẢM >>>
Dũng cảm để chọn con đường hơi khác người. Bạn có đủ dũng cảm và tự tin để sale bản thân mình với 1 bộ skillset không giống lắm với những bạn bè của mình? Dũng cảm để có thể bỏ toàn bộ code làm 5-6 tháng trời để nâng cấp lên một ngôn ngữ mới. Dũng cảm để không dùng Code generator mà tự code để hiểu được architecture và nền tảng chuyên sâu bên dưới.

Tôi đã gục ngã trên hành trình đó…

Phương pháp đúng, hiểu rõ vấn đề, nhưng mình không đủ kiên trì và dũng cảm, cũng không đủ 3 đầu 6 tay để ôm trọn cả thế giới công nghệ trong tầm tay. Mình thất bại. Rồi mình nghĩ, 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
.