Định hướng nghề nghiệp Web Development

Tôi cho rằng cách đây hai mươi năm, khi nhắc tới nghề Lập trình viên – Developer, ắt hẳn nhiều người trong số chúng ta nghĩ rằng đó là một thứ nghề tương tự như nhà du hành vũ trụ.

Nhưng sự thật là, đó hiện tại đang là một trong những nghề mà nhiều, rất nhiều công ty, trong đủ mọi lĩnh vực, đều đang khao khát nhân sự.

Tôi mạnh trong lĩnh vực phát triển website – Web Development. Thế nên trong bài viết này, tôi chỉ chia sẻ cách mình định hướng để trở thành một Web Developer thực sự sẽ như thế nào.

Web Developer cần nắm vững những gì?

Tôi thường có thói quen kiểm tra kĩ CV (bản mô tả rút gọn thông tin của một người xin việc) trước khi quyết định có gặp họ không. Phần lớn các Web Developer đều liệt kê những thứ phổ thông nhất: HTML, CSS, Javascript.

HTML5

Ở thời điểm hiện tại, mặc dù HTML5 đã có một hành trình dài với những gì trải qua, tôi vẫn chưa thấy nhiều bạn sẵn sàng cho nó. Thật bất ngờ khi các bạn chỉ mới nghe nói mà không nắm rõ các khái niệm của nó, như một bác sĩ cần phải biết cách dùng dụng cụ của mình.

Bạn có thể trả lời những câu hỏi sau không? Nếu không trả lời được 2/3, vậy là bạn mới biết đến HTML4 hoặc thấp hơn, chứ không phải HTML5.

  • Có bao nhiêu thẻ <main> bạn có thể sử dụng trong cùng một trang?
  • Khi nào thì bạn dùng thẻ <section> thay cho thẻ <div>? Các điều kiện để sử dụng thẻ <section>
  • Khi nào bạn dùng thẻ <header> thay cho <div>? Các điều kiện để sử dụng thẻ <header>?
  • Có bao nhiêu thẻ <article> có thể đồng thời cùng xuất hiện trong một trang web?
  • Khi bọc ảnh, video, bạn có thể dùng thẻ nào thay thẻ <div>?
  • Bạn có biết “Accessibility” là gì không?

CSS3

Lập trình viên ở thời điểm này hầu như không còn sử dụng CSS hay CSS3 viết chay, tức không qua công cụ nào nữa. Rất ít khi bạn phải sửa file style.css hay đại loại thế. Các phương thức thay thế có thể kể đến:

  • Sử dụng 1 plugin trong Code Editor để compile file .scss, .less, .sass,… sang file css trong một dự án. Tôi đánh giá mức độ là nhanh, nhưng không phải tốt nhất.
  • Sử dụng NodeJS và các packages để tạo một base project có hỗ trợ các command như npm run build hay npm run start, hoặc gulp build hay grunt build. Cách này phổ biến và sẵn sàng cho từng project, và có thể tích hợp mở rộng với nhiều thứ hơn.

Nếu bạn đang còn viết CSS chay, bạn đang đi lùi với thế giới ít nhất 5 năm. Hãy cân nhắc.

Javascript

Javascript không phải là jQuery. Làm ơn, đừng nói với tôi bạn có thể sử dụng vững jQuery tức là bạn đang có skill về Javascript. Bạn đang sử dụng một thư viện, mà ở đó, nó thường hỗ trợ những người bắt đầu, giống món fast-food bỏ ra và ăn ngay chỉ với chút nước sôi. Javascript thực sự khác biệt. Nó cần bạn viết nhiều, thay đổi và nắm vững những thứ từ cơ bản tới phức tạp.

Hãy thử với vài câu hỏi dưới đây.

  • Bạn biết gì về Vanilla Javascript? Bạn có thể viết để gọi 1 object DOM và gọi ra nội dung bên trong, tìm ra class, id và gán các thuộc tính data-attribute không?
  • Bạn có thể làm việc với các module riêng lẻ, chẳng hạn như header, hero, carousel và gọi nó độc lập trong cùng một trang chứ? (Module-pattern)
  • Bạn sẵn sàng cho ES6 chứ? Bạn có biết sự khác nhau giữa ES5 và ES6 không? Bạn có dùng nó trong thực tế chưa? Tại sao chưa sử dụng?
  • Bạn có biết thế nào là Lập trình hướng đối tượng (Object-orientation) trong Javascript? Nó có gì khác so với Lập trình chức năng (Functional programming)?
  • Bạn có biết sử dụng để gọi API Ajax cơ bản không?

PHP

Là một ngôn ngữ có tuổi đời, PHP vẫn chiếm phần đông những gì mà một Lập trình viên Web vẫn cần phải biết. Rất nhiều người nghĩ rằng họ chỉ đơn giản là “Frontend Web Developer”, tức làm nhiệm vụ cắt bản vẽ ra những đoạn code markup đơn giản và lắp style. Sự thật là, bạn không nên trở thành một công nhân với mục tiêu hoàn thành nhiệm vụ trong chuỗi dây chuyền như vậy. Tôi gặp ít nhất 1/3 số lập trình viên khi phỏng vấn thừa nhận rằng họ mất 2-3 năm cho một công việc đều đặn và không có tính phát triển như thế.

Lập trình web thực chất là công việc đòi hỏi bạn phải có con mắt nhìn tổng thể, nắm vững không chỉ về mặt trông nó ra sao, mà còn phải hiểu ra từ một bản vẽ thì nó có những gì.

Nếu bạn chỉ biết Frontend, và ai đó chỉ biết Backend, nó không giúp hai người tăng kinh nghiệm gì hơn cả. Còn ngược lại, khi bạn làm Frontend nhưng lại cố gắng để tìm hiểu và xử lý cả Backend, tư duy và khả năng của bạn sẽ tăng lên rất nhiều. Đã bao giờ bạn mơ về việc bạn có thể làm trọn gói 1 project web chưa?

Tất nhiên, ta không đòi hỏi bạn phải nắm vững PHP. Nhưng bạn cần biết những CMS nào phổ thông, chẳng hạn như WordPress, hay các custom script hoạt động ra sao và ta có thể làm gì với nó.

Web Developer nên định hướng tương lai ra sao?

Tôi nghĩ có mấy vấn đề các bạn cần nhìn thẳng thắn vào thực tế và điều chỉnh.

Giai đoạn trên ghế nhà trường

Nhà trường là nơi bạn có các kiến thức cơ bản, nhưng lại khó định hình thực tế sẽ ra sao. Trong thời gian học tập quan trọng này, tốt nhất là bạn nên dành thời gian tham khảo:

– Các tài liệu bằng tiếng Anh về các khái niệm chuyên môn. Đọc bằng tiếng Anh là thói quen không thể thiếu của lập trình viên, vì bản thân nó nếu dịch sang tiếng Việt cũng đôi khi không thể hiện đủ thông tin ta cần. Hơn nữa, anh bạn tốt “Google” cũng sẽ khó tra cứu bằng tiếng Việt hơn. Không phải ai cũng biết codetot.net, blog tôi chuyển tải tiếng Việt tới cho mọi người những gì tôi và đồng đội làm.

– Thử thách bằng các dự án thực tế, chẳng hạn, như làm website cho cá nhân mình, hoặc đề nghị ai đó để bạn được làm website cho họ. Lắng nghe tiếng gọi của tự nhiên là cách tốt nhất giúp bạn hình dung ra công việc trong các công ty. Khách hàng phản hồi các yêu cầu tương tự như làm đề bài, và ta giải bài toán đó. Tôi cho rằng với mỗi năm bạn học ở trên ghế nhà trường, bạn nên làm ít nhất 4-5 project, từ web giới thiệu cá nhân, web công ty, tổ chức đơn giản cho tới web bán hàng. Còn nếu không ai cần? Hãy tự nhìn vài cái web trông có vẻ ổn và thử bắt chước. Tội gì không thử?

– Xin làm thực tập viên cho một công ty nào đó chuyên làm web. Lương có thể thấp, nhưng bạn được thực sự trong môi trường công việc. Và bạn chắc chắn sẽ ngẫm ra nhiều thứ hay ho để học thêm. Chẳng hạn như cách sử dụng Git – thứ mà bạn sẽ chẳng cần đến nếu làm một mình một dự án.

Giai đoạn bắt đầu đi làm

Tôi cho rằng bạn có 2 năm để va chạm với các dự án thực tế, các công ty và tiếp xúc với các đồng nghiệp. Đây là giai đoạn quan trọng để bạn điều chỉnh mục tiêu sẽ cần nắm vững các skill gì tiếp theo. Nó quan trọng đấy, vì nhiều người mất 3 năm để nhận ra mình cần học cái gì đó. Còn bạn, nếu mới ra trường, thì học gì cũng tốt.

Nhưng quan trọng hơn cả là bạn cần biết học từ đâu. Nhiều người đi phỏng vấn bảo định hướng muốn học React, Vue.js, nhưng khi tôi hỏi về ES6 thì không trả lời được lấy một câu. Nếu bạn đưa ra hướng đi sai, nhảy vọt mà không hiểu căn bản, bạn có chắc mình sẽ làm được?

Bởi vậy, điều đầu tiên bạn cần nắm được là học có trình tự. Chẳng hạn, tôi thường lựa chọn cách thức xoay quanh một website hoạt động để bản thân mình có thể tự xây dựng một dự án thành công:

  • Cách viết module hoá cho các phần trên website
  • Cách viết responsive website
  • Thử nghiệm các base project cho tới khi cảm thấy chắc chắn và gọn gàng
  • Tối ưu hoá hình ảnh bằng các plugin hoặc third party
  • Xây dựng các helper function để tiết kiệm thời gian
  • Tối ưu website WordPress về tốc độ và trải nghiệm
  • Cài đặt website trên hosting
  • Sao lưu dữ liệu website

Giai đoạn này cũng rất tuyệt nếu bạn làm càng nhiều càng tốt, chẳng hạn như nhận cả các dự án ngoài để tìm hiểu và đáp ứng yêu cầu khách hàng. Tôi cho rằng freelancer làm thật sự là những trải nghiệm khó quên.

Giai đoạn xác định mục tiêu 5 năm tiếp theo

Sau 2 năm đi làm, bạn sẽ cần xác định tiếp mục tiêu tiếp theo. Công ty của bạn đang làm có thực sự mang lại cho bạn nhiều kinh nghiệm như bạn trông chờ không? Bạn thường làm điều gì không được và phải nhờ tới sự trợ giúp của người khác? Xu hướng công nghệ hiện tại là gì và ưu/nhược điểm của nó ra sao?

Tôi cho rằng một cách lý tưởng hoá, sau đây là những gì bạn nên làm ở thời gian này:

  • Bạn có sẵn sàng từ bỏ một thư viện nào đó và chuyển qua viết cho mình một cái tương tự, theo cách của bạn?
  • Bạn cần học một framework mới, thứ mà đáp ứng nhu cầu của các project hiện tại của bạn.
  • Bạn muốn mình có khả năng quan sát tổng thể dự án và định hình lại toàn bộ những gì mình biết để tối ưu vào những cái mình mạnh nhất.
  • Bạn sẵn sàng chuyển đổi giữa các môi trường, ví dụ từ production sang outsource, hay từ web sang web app.

Và tiếp theo…

Nếu bạn đã có hơn 7 năm kinh nghiệm, tôi cho rằng tới lúc bạn tự quyết định những gì định làm rồi.

Kết luận

Trong bài viết này, tôi đưa ra những gì theo quan điểm của tôi ở thời điểm hiện tại, sau khi phỏng vấn kha khá ứng viên trong suốt 2 năm vừa qua khi làm việc tại Solis Lab. Phải thừa nhận là tôi có may mắn khi làm việc tại Solis Lab, được va chạm và tiếp xúc với rất nhiều thử thách cả frontend lẫn backend. Và có lẽ, đó là cơ hội công việc tuyệt vời nhất mà tôi có cho tới giờ.

Hi vọng rằng, bản thân các bạn cũng sẽ tìm thấy những chỉ hướng nhất định khi đọc bài viết này. Hãy chia sẻ cho ai đó cần, vì tôi biết rất nhiều trong số chúng ta vẫn “mông lung như một trò đùa”.

 

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *