Con đường trở thành lập trình viên Web Full-stack
Thuật ngữ lập trình viên Full-stack muốn nói đến những nhà phát triển phần mềm lập trình cả công nghệ back-end lẫn front-end. Hiện nay, lập trình viên Full-stack sẽ đóng một vai trò ngày càng quan trọng trong việc phát triển các ứng dụng web, đặc biệt là khi các kỹ thuật phát triển như DevOps đang trở thành một phần thiết yếu đối với các công ty làm phần mềm, nơi ranh giới giữa các lập trình viên và quản trị viên (administrator) có trách nhiệm triển khai và cài đặt mã nguồn không còn phân biệt rõ ràng như trước. Và con đường để trở thành một lập trình web Full-stack cũng không dễ dàng như bạn nghĩ nhưng không gì là không thể nếu bạn có quyết tâm và kiên trì.
Vậy chúng ta cần gì để trở thành lập trình viên Full-tack?
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. Ngồi đọc 10 bài trên StackOverflow, Reddit, HackerNews mà không bắt tay vào làm thử thì cũng vô dụng. Do đó, tìm cho mình mọi cơ hội để được làm, để được thử. Bạn có thể tự làm project của mình, hoặc xin sếp cho làm thêm 1 project, tìm project freelance,… Bạn có đủ kiên trì làm như vậy trong suốt 2-3 năm trời không?
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.
Dũng cảm để trở thành lại 1 newbie trong khi mình đang là hardcore khi nhảy từ 1 nền tảng ruột (Android), sang 1 nên tảng lạ hoắc (iOS). Và phải đi tầm sự học đạo 1 bạn junior vì bạn đó giỏi hơn mình (trong cái mới này). Tóm lại, về chuyên môn thì ai cũng có thể trở thành 1 Full-stack Developer được hết (ít ra là tự cho mình là vậy). Nhưng về thái độ và bản lĩnh, chưa chắc nhiều bạn sẽ dám dấn thân và thử thách bản thân mình đâu.
Vài lời khuyên dành cho các bạn
- Khi không biết nên học gì, hãy đọc quảng cáo tuyển dụng
- Học chuyên sâu, học cho vững kiến thức nền chứ đừng vội học framework hay công nghệ
- Học kiểu chữ T: Biết rộng và chuyên sâu một thứ
- Không ngại tự học, đừng gắn chặt mình với một ngôn ngữ hay công nghệ. Bạn code được C# thì cũng học được Java, học được PHP để mà code
- Học hỏi không ngừng trên pluralsight, medium, quora
- Tìm hiểu sơ về DevOp: Docker, CI, CD
- Tìm hiểu sơ về Cloud: Azure, AWS
Hi vọng qua bài viết sẽ giúp ích cho các bạn trên con đường bắt đầu trở thành một lập trình viên Web Full-stack. Nếu có thắc mắc gì, các bạn cứ thoải mái hỏi trong phần comment nhé!