Lời nhắn nhủ và cách học hành
Từ những cảm nhận của bản thân về những lời nhắn nhủ dành cho các bạn trẻ, cho đến cách tôi nghĩ về học hành, và cách làm sao để học hiệu quả hơn trong ngành tech này.
Từ những lời nhắn nhủ dành cho Juniors
Ý tưởng của bài viết nhen nhúm trong mình, khi mình quan sát trên các cộng đồng trên mạng, về việc học tập bổ sung kiến thức của các bạn trẻ (cũng như là theo dõi mấy bên bán khoá học nữa). Một điểm chung mình có thể thấy là mọi người đều khao khát kiến thức, đều mong muốn học thêm nhiều điều giá trị. Ai cũng mong muốn thành công trong công việc, trong cuộc sống; bằng cách học thêm những thứ mới, đó có thể là giải pháp để mọi người có thể thoát ra sự vướng mắc hiện tại hoặc là vươn lên những nấc thang mới.
Với gần chục năm làm manager, mình cũng có kha khá nhiều kinh nghiệm hướng dẫn các bạn reports của mình. Một thứ mình rất quan tâm đến đó là people leadership: khác với project leadership, khi bạn tập trung vào sự thành công của dự án trước mắt; people leadership là khi bạn tập trung vào sự thành công của con người mà bạn đang dẫn dắt. Mình có nói qua trong một bài trước (về hai người sếp của mình), nhưng một trong những mục tiêu cá nhân của mình, đó là sự phát triển của các reports của mình. Mình hy vọng mỗi người đã làm việc với mình, thì có thể nhận ra thêm nhiều điều về bản thân, và có thể phát triển hơn, về cả bản thân lẫn sự nghiệp.
Mình có một thứ mình hay nhắn nhủ các juniors của mình: để phát triển tốt hơn, thì một bạn trẻ nên tập trung vào 3 thứ quan trọng.
Một, là khả năng học thêm điều mới, learning how to learn. Với việc xã hội cũng như ngành nghề phát triển thần tốc, đừng nên hy vọng có thể học trước và nắm bắt được hết mọi thứ. Điều quan trọng là mình phải có khả năng để học thêm những thứ mới, tuỳ theo nhu cầu của công việc. Bởi vì cuộc đời sẽ là quãng đường đi học thêm không ngừng nghỉ.
Hai, đó là critical thinking, khả năng tư duy phản biện. Trau dồi khả năng tư duy, đào sâu suy nghĩ, nắm bắt đúng sai, đánh giá sự việc - đó là mấu chốt cho hầu hết mọi thứ mình cần làm với tư cách là một knowledge worker. Khả năng suy nghĩ sâu xa, đặt ra các câu hỏi và tranh luận, đánh giá, nó sẽ đi cùng với bạn đến hết cuộc đời.
Cuối cùng, đó là communication. Communication ở đây mang nghĩa rộng, đó là giao tiếp nhưng có thể là verbal hay là written. Bạn có xuất sắc đến đâu, mà không thể giải thích và trình bày những gì mình làm, thì bạn cũng khó có thể tiến xa được. Bạn cũng cần có khả năng lắng nghe, khả năng cảm nhận, để nắm bắt được sếp, đồng nghiệp hoặc juniors nói gì, và xây dựng mối quan hệ làm việc hiệu quả và lành mạnh.
Kể cũng hay, những thứ này mình đã đúc kết ra từ 7-8 năm về trước, thế mà đến bây giờ mình vẫn chưa thấy nó sai. Đó gần như là gốc gác của những gì mình hay khuyên các juniors của mình (kể cả trong công việc hoặc là ngoài công việc luôn), vì mình nghĩ đó là những thứ vô cùng quan trọng. Đây cũng là những lời nhắn nhủ của mình cho các bạn trẻ, nếu các bạn có đọc được những dòng này; mình không nghĩ đây sẽ là những thứ sẽ lỗi thời, vì nó có thể sẽ đi theo bạn trong một quãng đường sự nghiệp rất là dài.
Về cách để học trong ngành Tech
Một trong những thứ mình đã nhắc đến ở trên, đó là về cách học thêm những thứ mới. Nếu các bạn ở trong ngành Tech, thì chắc chắn mọi người đều có thể thấy về sự phát triển của ngành, mỗi ngày lại có thêm kiến thức mới, công nghệ mới, thông tin mới cần phải học, phải đọc và nghiền ngẫm.
Nếu bạn là một người mới chập chững bước vào ngành, thì chắc điều đầu tiên bạn sẽ thấy đó là sự choáng ngợp, không biết bắt đầu từ đâu và đi đến đâu, làm thế nào cho nó đúng nó đủ.
Một hướng mà mình suy nghĩ về ngành Tech, đó là đây là một ngành có sự kết hợp khá là nhịp nhàng của kiến thức và kỹ năng. Hai phần này nó đi song song với nhau và không nên tách rời, nên mình sẽ bổ sung thêm phần thứ 3, đó là sự kết nối; Tech là một ngành mang tính ứng dụng cao, phải vận dung được những gì mình đang có để giải quyết bài toán thực tế.
Bắt đầu từ kiến thức, đó là việc xây cho bản thân một hệ thống kiến thức vững chãi với nhiều tầng, đi từ căn bản đến nâng cao và ứng dụng. Những kiến thức căn bản sẽ là các kiến thức về toán, về logic, về toán rời rạc. Đây là nền tảng đầu tiên về công nghệ, và nó sẽ là bước đầu tiên trước khi có sự phân nhánh về kiến thức. Các kiến thức tiếp theo sẽ chia ra thành các loại: kiến thức về giải thuật (Data Structures và Algo), kiến thức về hệ thống (các phần của hệ thống máy tính sẽ hoạt động như thế nào, OS, network, chip xử lý, internet..). Tiếp thêm một tầng nữa, đó là các kiến thức nâng cao và cụ thể hơn về một hệ thống phức tạp (ví dụ như database, distributed system, search engine/information retrieval, machine learning..). Ở lớp ngoài cùng, đó là những kiến thức về technical domain(frontend, backend, mobile..) hoặc business domain mà khi bạn đi làm bạn sẽ phải đối diện (E-comm, logistics, fintech, vân vân và mây mây), và cách công nghệ được áp dụng để xử lý bài toán trước mắt.
Kỹ năng, đó là những thứ mà trăm hay không bằng tay quen; những thứ bạn sẽ làm đi làm lại cho đến khi bạn thuần thục. Bắt đầu đơn giản sẽ là việc viết code, những thứ đầu tiên bạn sẽ biết đó là từ việc viết Hello World cho đến khi được giao các bài toán phức tạp hơn một chút về sử dụng control flow (if/else, loop, rồi đến function call). Đến đây, kỹ năng sẽ dần chia ra thành 2 phần để tiếp tục phát triển. Một là kỹ năng lập trình, đó là kỹ năng viết và đọc hiểu code(phần đọc hiểu này vô cùng quan trọng, từ việc đọc hiểu code của mình đến đọc code của người khác); theo dõi nắm bắt các control flow để thiết kế giải thuật và debug(mường tượng ra cách chạy của code, tưởng tượng ra trạng thái của hệ thống ở từng bước, validate logic của chính mình). Hai, thì là về kỹ năng vận dụng các “tool”. Tool ở đây, đó là version control, là IDE, là terminal; tool ở đây cũng là các ngôn ngữ lập trình, cách để diễn tả suy nghĩ của mình thành câu lệnh trên các ngôn ngữ khác nhau. Nâng các kỹ năng về lập tình thì sẽ thành các kỹ năng về thiết kế thuật toán, thiết kế architecture, data modeling, thiết kế workflow. Ngược lại đi sâu hơn về các tool thì sẽ là sử dụng frameworks hay library chuyên môn hơn, sử dụng và quản lý các system phức tạp hơn.
Một điều cần chú ý khi học tập, đó là phải kết nối được những kỹ năng và kiến thức với nhau. Tech là một ngành ứng dụng, nên sự cân bằng giữa việc học và hành là một điều vô cùng quan trọng. Kiến thức cũng như kỹ năng, cũng sẽ đều bắt đầu từ một cái gốc nhất định, càng lên cao thì nó sẽ càng ngày càng phân hoá và cụ thể. Kết hợp của kiến thức và kỹ năng ở các tầng thấp càng vững thì sẽ là nền tảng vững chắc để bạn đi sâu thêm ở các tầng cao hơn. Ví dụ, khi bạn đã rất vững về khả năng viết và đọc hiểu code, thì bạn có thể học thêm một ngôn ngữ mới rất nhanh. Bạn hiểu về OS hoặc networking vững, cộng thêm kinh nghiệm quản trị hệ thống, thì tự nhiên Kubernetes cũng ko đáng sợ như thế. Mường tượng như là bạn đang có một nhân vật trong game vậy, khi bạn có được những requirement này thì bạn sẽ unlock được 1 cái skill tree khác.
Khác từ nơi bắt đầu
Một điểm thú vị của một ngành hot, đó là có nhiều người đến với ngành từ các hướng khác nhau. Có những bạn theo học từ thời sinh viên, có người thì tự nhiên phải learn on the job, hoặc là các bạn muốn nhảy vào ngành từ các công việc khác nhau. Các bạn ở trong ngành rồi, thì lại vẫn phải liên tục bổ sung thêm kiến thức mới, vì ngành cũng phát triển vô cùng nhanh. Đó là những khởi điểm khác biệt, dẫn đến các lộ trình học khác biệt
Các bạn sinh viên trong trường, với các giáo trình kiến thức có thể sẽ hơi bị thiên về lý thuyết. Một cách giúp các bạn tiến bộ hơn đó sẽ là luyện tập thật nhiều để bổ sung thêm các kỹ năng lập trình cho bản thân, để làm quen với tư duy, với ngôn ngữ, với cách đọc đề bài. Để mở mang hơn, đọc thêm về các việc ứng dụng của công nghệ trong các bài toán thực tế, để hiểu cách công nghệ được đưa vào cuộc sống thế nào.
Nếu bạn phải học thêm code trong lúc đi làm, hoặc là bạn là một tay ngang muốn nhảy vào; trước hết bạn nên nhận biết là bạn đã có những kiến thức domain là gì; và những kiến thức đó có thể giúp ích được gì không. Với việc là bắt đầu sau những người khác với ít thời gian hơn, lộ trình học của bạn vẫn nên có những kiến thức và kỹ năng nền cơ bản, tuy nhiên ở các tầng kiến thức nâng cao hơn thì bạn có thể tập trung vào số lượng kiến thức và kỹ năng ít hơn, không nên quá lan man, và làm sao mà bạn có thể vận dụng được càng nhiều các kiến thức có sẵn của bạn thì càng tốt (chứ các bạn đang ở ngành khác mà lại bị bắt đi học operating system với process và fork thì chớt…)
Cả hai trường hợp trên cũng đều sẽ là các bạn còn trong giai đoạn phát triển và quá trình học vẫn nên có một chút supervised (hoặc là có khung vững để phát triển theo). Nếu bạn có thầy cô hoặc mentor thì nên làm việc cùng họ 1 cách sát sao; nếu bạn tự học thì nên chọn những nguồn học một cách chính thức: nếu làm bài thì có thể practice với leetcode, học theo các guided tutorials/video series.
Nếu bạn cũng đi làm trong ngành một thời gian rồi; việc sẵn sàng để học thêm những thứ mới là điều hiển nhiên. Tập trung và củng cố những kiến thức và kỹ năng nền là một điều không thể thiếu; biết mình còn thiếu sót ở đâu sẽ khá quan trọng trong quá trình này. Nếu bạn thấy có kiến thức mới mà khó nắm bắt, thực tế ra là bạn đã bị hổng một kiến thức nền từ trước đó. Đôi khi, lùi lại một bước lại là cách để bạn tiến được xa hơn.
Kết
Chả hiểu sao hồi bé thì mình ghét học thế, nhưng mà lớn lên thì suốt ngày nhắn nhủ mọi người phải học cái này cái kia, học thế này thế nọ…
Xin được phép share bài này cho một số người em ạ 🫡
Cảm ơn anh vì bài viết ạ, hôm nọ em cứ nghĩ mãi về những kỹ năng mà AI ko thể thay thế trong 1 thời đại mà bất cứ thứ gì cg có thể học đc và có câu trả lời chỉ vs 1 (hoặc vài) câu prompt