Cách tiếp cận 1 ngôn ngữ/công nghệ mới – Phần 1

Mình đã từng nói về tầm quan trọng của việc cập nhật kiến thứcbài viết trước:

Không như các ngành khác, kiến thức trong ngành IT rất nhanh hết hạn. Với ngành xây dựng, xây một cây cầu cách đây 50 năm cũng chẳng khác gì xây một cây cầu bây giờ. Với ngành y, bệnh cảm cúm cách đây 50 năm triệu chứng cũng giống bệnh cảm cúm bây giờ. Nhưng với ngành IT, công nghệ, ngôn ngữ hoặc framework  nổi tiếng cách năm 10-15 năm giờ chẳng ai xài nữa cả.

Như đã hứa, mình sẽ dành bài viết này để hướng dẫn các bạn cách tiếp cận một công nghệ mới. Đây là những cách mà mình tự tìm ra, tự tổng hợp trên mạng, cộng với một số lời khuyên của các bậc đàn anh. Bản thân mình thấy nó khá là hữu dụng, hi vọng chúng cũng sẽ hữu dụng với các bạn.

Nói về lý thuyết một chút, những kiến thức bạn cần học về một công nghệ có thế chia làm 4 loại sau (Lấy ngôn ngữ C# làm ví dụ):

  • Nền tảng (Fundamentals)
  • Kiến thức (Information)
  • Kĩ năng (Skills)
  • Nâng cao (Innovation)

12

1. Nền tảng (Fundamentals)

Đây là những kiến thức cơ sở nhất, là những viên gạch đặt nền móng cho kiến thức sau này (VD như: cấu trúc dữ liệu, OOP, vòng lặp, đệ qui, callback, 1 số mô hình MVC MVVM, cơ chế hoạt động của web, …). Vì chúng là kiến thức nền tảng, mang tính học thuật nhiều nên đôi khi khá là phi thực tế và buồn ngủ. Chắc hẳn ai cũng từng nhức đầu đau não khi nghe các thầy giảng về sự kiện, con trỏ hàm, cây nhị phân, đệ qui… .

Tuy nhiên, nếu nắm vững những kiến thức nền tảng này, bạn sẽ thấy việc chuyển đổi qua lại giữa các ngôn ngữ khác nhau rất dễ dàng, vì chúng được xây dựng dựa trên nền tảng chung (Như bản thân mình, vì đã rõ cơ chế get/post, giao tiếp giữa client/server, mô hình MVC, mình có thể học nhanh Zend của PHP, Struts2 của Java, ASP.MVC của C#).

Trường đại học chủ yếu dạy những kiến thức này, do đó đôi khi bạn sẽ thấy chương trình học khá khô khan. Hãy nhớ điều mình từng học khi xem phim kiếm hiệp thời xưa, để học được võ công thượng thừa, phải rành những chiêu thức cơ bản trước. Những chiêu thức hoa mĩ đều từ cơ bản mà ra cả. Ngoài ra, những kiến thức cơ bản này thường “sống lâu”, rất khó “hết hạn” : hàm sort qua 10,20 năm vẫn giữ nguyên cách sort; cấu trúc dữ liệu stack, binary tree, mô hình MVC qua 10,20 năm vẫn không hề thay đổi.

Fundamental Media Logo

2. Kiến thức (Information)

Đây là những kiến thức bậc cao hơn, liên quan tới từng ngôn ngữ/framework chuyên biệt (VD như LINQ, Event, WinForm, WebForm, …). Những kiến thức này gắn liền với thực tế, có thể áp dụng được ngay vào làm việc. Để học nhanh, áp dụng được những kiến thức này, các bạn phải có fundamental vững. Mình từng gặp khó khăn khi viết ajax, viết jQuery, function lồng vào nhau v…v. Khi mình hiểu ra chúng gọi là callback, mình học và viết code ajax, jQuery dễ hơn nhiều.

Một số trường dạy nghề (APTech, Nhất Nghệ …) thường tập trung nhiều vào kiến thức dạng information, lướt qua kiến thức cơ bản dạng fundamentals. Do đó học viên được đào tạo ra thường có kiến thức thực tiễn, có thể làm được việc ngay. Nhưng vấn đề chung mà một số bạn hay gặp là: tuy làm được nhưng lại không hiểu cơ chế hoạt động, khi gặp lỗi ko biết nguyên nhân, không biết cách sửa. Lý do là vì kiến thức cơ bản (fundamentals) không đủ.

Một điều cần lưu ý nữa là những kiến thức dạng này khá nhanh “hết hạn”, vd như cách routing trong MVC 4 sẽ khác MVC 2, một số hàm trong Entity Framework 6 sẽ khác Entity Framework 4. Do đó nếu không kịp cập nhật, bạn sẽ dễ trở nên lỗi thời, vì kiến thức cũ không sử dụng được nữa.

information-overload-01

3. Kĩ năng (Skills)

Đây là loại kiến thức đáng giá nhất (theo nghĩa đen), các công ty sẽ trả lương cho bạn nếu bạn có skills, có thể làm được việc. Kĩ năng có thể học được 1 phần từ trong sách vở, nhưng phần lớn bạn học được là do quá trình làm việc lâu dài, tiếp xúc nhiều với một công nghệ, giải quyết những tình huống cơ bản và phức tạp.

Ví dụ như: Infomation là việc bạn biết cơ chế routing, binding của ASP MVC. Skill là việc bạn biết áp dụng cơ chế routing, binding để tạo 1 trang search, insert, update. Skill phức tạp hơn là khi bạn đọc yêu cầu của khách hàng, bạn sẽ mường tượng ra cách viết front end thế nào, back end ra sao, bắt tay vào code ở đâu.

Lương ở các vị trí senior thường cao hơn, lý do là họ đã tiếp xúc với công nghệ nhiều, kĩ năng liên quan tới công nghệ đó sẽ giỏi hơn. Skill có dựa trên infomation, do đó nó cũng khá dễ hết hạn. Nếu bạn là senior ngôn ngữ Cobol, Basic nhưng thị trường không cần những skill đó nữa, skill của bạn sẽ trở nên vô dụng. Hãy tập trung đầu tư làm mới skill cho mình nhé.

EmploySkills

4. Thuần thục (Innovation)

Đây là cảnh giới tối cao của kiến thức, đạt tới cảnh giới này bạn sẽ được gọi là senior, master, hoặc được phong thánh. Để đạt được cảnh giới này, ngoài quá trình làm việc, tiếp xúc lâu dài với công nghệ, họ còn phải bỏ thời gian đào sâu, mày mò, nghiên cứu công nghệ đó.

Ngoài những kiến thức chung, họ còn biết vô số những thứ chuyên sâu  như: Code C# được biên dịch như thế nào, quan hệ giữa các component trong C#, performance của Interface và Abstract class, … Bạn không cần lo lắng quá về cảnh giới này, bản thân chúng ta có thể lên được vị trí cao, có mức lương thoải mái mà không cần những kiến thức dạng innovation thế này.

Innovation Road Sign with dramatic clouds and sky.

Ở phần này, mình đã có 1 cái nhìn tổng quát về những kiến thức bạn cần có khi tiếp xúc với một công nghệ mới. Ở phần tiếp theo, mình sẽ hướng dẫn các bạn từng bước để dần đạt được những kiến thức này, chia sẻ những khó khăn mình từng gặp phải cũng như cách giải quyết. Mong các bạn đón đọc.

30s quảng cáo

book.jpg

Đây là một bài viết được trích dẫn từ cuốn sách “Code dạo kí sự – Lập trình viên đâu phải chỉ biết code” do mình viết. Quyển sách bao gồm những kĩ năng từ mềm đến cứng mà mỗi developer phải có, đảm bảo sẽ rất có ích cho các bạn sinh viên hoặc lập trình viên đã đi làm. Các bạn xem thông tin và đặt mua sách tại đây nhé: Sách Code Dạo Ký Sự.

Advertisements

19 thoughts on “Cách tiếp cận 1 ngôn ngữ/công nghệ mới – Phần 1”

  1. Tác giả rất nhiệt tình chia sẻ kinh nghiệm, thứ mà tôi và những người khác có thể sẽ phải mất vài năm mới nhận ra. Bây giờ chỉ cần ngồi đọc, ngẫm nghĩ trong vài phút.
    Đang đợi bài viết thứ 2.

    Like

  2. Dạo này thấy suy nghĩ ra được nhiều thứ hay ho nhỉ ? Đúng là đi làm môi trường chuyên nghiệp rồi có khác. Cố gắn phát huy cho anh em học hỏi nhé Hoàng G ! =))))

    Like

  3. Bài viết súc tích quá. Mình đã bỏ qua những gì bạn đã đề cập. Mình vừa mới nhận ra, thì gặp được bài này của bạn. Cảm ơn nhé!

    Like

  4. Tôi đánh giá cao nội dung bài viết và tinh thần chia sẽ của bạn, bản thân tôi cũng nhận thức được những điều nói trên khá lâu rồi nhưng tôi không tìm được hay chính xác là chưa có bài viết chia sẽ đọc dễ hiểu thế này cho bạn bè và đàn em. Xin cảm ơn bạn, xin phép bạn cho tôi được copy nguyên văn trích dẫn nguồn để chia sẽ lại cho những bạn khác trên page facebook.com/thuvienlaptrinh

    Like

    1. Cảm ơn bạn, bạn cứ thoải mái chia sẻ bài viết của mình, không cần xin phép nhé. Thứ mình viết ra được nhiều người đọc thì mình càng vui thôi 😀

      Like

  5. chao cac ban minh , dang muon tim hieu ngon ngu lap trinh android nhung khong biet bat dau tu dau vay xin cac ban co the huong dan cho minh duoc khong minh xin cam on

    Like

  6. bạn có biết quyển sách nào hay nói về kiến thức nền tảng như bạn đã nói ở trên như con trỏ hàm, cây nhị phân, đệ qui,.. bằng ngôn ngữ java ko nhỉ ?
    Thanks bạn.

    Like

  7. em chào a ạ , em đã đọc một số bài viết của anh và quả thực những điều này rất tích cực trong đường lối suy nghĩ, hiện giờ em muốn tìm hiểu về nền tảng(fundamental) trước thì em nên tìm hiểu và đọc sách như thế nào trước ạ , em cảm ơn!!…Mong nhận được câu trả lời sớm từ anh 😀

    Like

  8. Xin phép được nhờ vả chuối 1 câu : mình có thể củng cố phần nền tảng (Fundamentals) từ đâu, có danh sách các thứ cần nắm vững hay không, vì trên bài viết bạn để “v.v…” hoặc 3 dấu chấm lửng lơ nên mình cũng không biết cần vững những gì.

    Like

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s