Để bắt đầu làm lập trình viên, nên học gì?

Đăng bởi: Admin | Lượt xem: 758 | Chuyên mục: Chia Sẻ

Thực sự thì mình chỉ mới đi làm được gần 1 năm, skill cũng chưa có nhiều nên cũng không thể chém gió sâu vào kỹ thuật được. Lúc trước mình theo mảng front-end nhưng ngày càng nhận ra không có hứng thú nên dần dà chuyển sang back-end từ lúc nào không hay, và mình chỉ có một số lời khuyên dành cho lập trình website chứ bên ứng dụng thì mình không biết.


Kỹ năng cần học thì quá nhiều, mỗi công ty có mỗi yêu cầu và thay đổi theo thời gian. Kỹ thuật phát triển không ngừng nên một khi đã theo ngành này thì xác định là phải học cả đời.

Tới đây nhiều người sẽ có thể chém em rằng ôi chú em mới đi làm được một năm thì biết gì về kỹ thuật mà nói. Thực ra thì trình độ không chỉ cân đo đong đếm bằng số năm kinh nghiệm, chủ yếu là số vấn đề mình đã gặp qua và cách giải quyết nó, số dự án đã hoàn thành, bác tự học bao nhiêu giờ một ngày, từ đó rút ra kỹ năng của bác có cứng không. Chứ còn nói “Tôi có 5-6 năm experience nhưng trong 5-6 năm đó toàn làm xoàng xoàng, dự án thì xong nhưng kiểu đúng deadline không hơn không kém, và chiều chiều canh hết giờ làm rồi về”…. chấm hết, không thể đánh giá chính xác với trường hợp như vậy.

Thôi vô vấn đề chính, vậy để làm lập trình thì cần những gì, lộ trình thế nào….. Cái đó phụ thuộc vào hướng bạn đi.

screen-shot-2016-11-03-at-8-59-18-am

Hướng front-end developer

Hướng này có rất nhiều kỹ thuật, nhưng mình nghĩ các bạn nên học những kỹ thuật chắc chắn cần trước. Còn lại phụ thuộc vào công ty các bạn làm có yêu cầu học thêm không. Danh sách thì dài đằng đẳng như thế này đây: https://github.com/dypsilon/frontend-dev-bookmarks

Nhưng các skill sau đây nhất định phải có khi đi làm, ít nhất là để làm được việc:

  • HTML (HTML5 càng tốt)
  • CSS (CSS3 càng tốt)
  • Javascript cơ bản (jQuery). Nói trước là Javascript chuyên sâu rất hay và rất khó gặm.
  • Photoshop cơ bản
  • Illustrator cơ bản
  • Một số front-end framework như Twitter Bootstrap, AngularJS mới nổi….

Hướng back-end developer

Hướng này thì kinh tởm hơn, theo mình nếu đã chọn con đường chông gai này thì chỉ nên chọn 1-2 ngôn ngữ lập trình mà theo (học sâu). Mình thà làm vua một nước chứ nước nào cũng thích thì dễ tẩu hỏa khi luyện công lắm. Các kỹ năng cần chủ yếu là nền tảng và phụ thuộc vào tư duy logic của bạn:

  • Các nền tảng cơ bản về ngôn ngữ bạn định làm, mấy kiến thức đơn giản này phải khắc cốt ghi tâm chứ đôi khi cũng có người quên và phải đọc lại từ Google. Vòng lặp, cách khai báo biến, hàm, hướng đối tượng….. Đặc biệt phỏng vấn bao giờ cũng có hướng đối tượng.
  • Kiến thức về database MySQL, Microsoft SQL.
  • Rộng hơn là Design Pattern (Singleton, Factory, Strategy, MVC, HMVC….).
  • Các framework hot tính tại thời điểm viết bài này, đơn giản nhất và dễ nhất là CodeIgniter.

Bạn nên học một framework sau đó đi làm và học tiếp theo để dễ thấm và có cơ hội làm nhiều hơn. Theo lời khuyên của mấy đàn anh đi trước thì 1 developer cần biết 2 framework và 1 CMS nếu muốn đi đánh dự án với các công ty outsource.

Hướng full stack

Là full-stack developer có nghĩa là bạn phải cởi mở đối với các công nghệ mới, có hiểu biết sâu về một vài công nghệ và phải có sự hiểu biết về cách một ứng dụng web được thực hiện từ một khái niệm thiết kế cho đến khi các sản phẩm đã hoàn thành.

screen-shot-2016-11-03-at-9-00-03-am

Full-stack developer không có nghĩa là phải thông thạo mọi công nghệ mà chỉ cần có hiểu biết về các ngôn ngữ đang có, có thể giao tiếp một cách thông minh giữa các thành viên trong nhóm và là một nguồn lực tốt, sẵn sàng nếu dự án cần đến bạn.

Full-stack trên thế giới hiện nay có thể cần những kỹ năng sau (tham khảo):

  • Không giới hạn mình ở bất kỳ 1 language hay 1 framework hay 1 chuyên môn cụ thể nào.
  • 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 một vấn đề
  • Có thể lập trình được ít nhất 1 ngôn ngữ lập trình web và 1 ngôn ngữ lập trình mobile (iOS/Android)

Hiện nay khá nhiều người theo hướng này, một phần do cái danh full-stack khá là hay ho (cảm giác như super hero), một phần là hiện nay các nhà tuyển dụng cũng yêu cầu khá cao về skills của developer. Các công nghệ chết tiệt trong thế giới lập trình lỗi thời đủ nhanh để cuốn trôi bất kỳ 1 “nền tảng” vững chãi nào. Do đó nếu bạn chỉ biết 1 ngôn ngữ, biết 1 nền tảng nào đó, hiện tại bạn vẫn có thể kiềm tiền ngon ăn với nó, nhưng liệu 2 – 4 năm nữa thì không chắc chắn.

Do đó bạn có thể là 1 “super-code dạo” hiện tại, nhưng chưa chắc điều đó sẽ đảm bảo cho bạn một tương lai chắc chắn cho những năm tới đâu.

Đối với ai đi theo hướng này, nếu được nên học front-end trước rồi từ từ mò qua back-end bởi vì trong 1 năm bạn không thể nào trở thành full-stack đâu – cũng có nhiều người tự phong, ahihi. Và tất nhiên mình cũng khuyến khích (nếu được) các bạn nên đi theo hướng này (về lâu về dài) để đáp ứng nhu cầu công việc trong tương lai.

Tất cả những gì cần thiết mình đã nêu ở trên, nếu các bạn biết về chúng thì có thể đi code dạo và kiếm cơm được rồi. Sau này đi làm cố gắng trau dồi nhiều thật nhiều kỹ năng để tăng giá trị bản thân lên (tăng lương).

vncoder logo

Theo dõi VnCoder trên Facebook, để cập nhật những bài viết, tin tức và khoá học mới nhất!