[Year End Talk] HỌC NÀY HỌC NỌ.

By Delimister
Picture of the author
Published on
image alt attribute

Nay đăng bài, có đứa em hỏi anh đi làm thì lấy đâu thời gian mà học, rồi đi làm cứ học như thế thì có bị vướng vào công việc không, có bị chậm đi không?

Ngắn gọn là có. Vướng nhiều và chậm nhiều chứ. Nếu bỏ học từ sớm, chắc hiện giờ mình đã học được nhiều kiến thức sâu về công nghệ rồi. Cơ mà cái gì cũng có sự đánh đổi của nó cả, một điều mình ngộ ra sau quá trình học rất nhiều thứ, đó là càng học nhanh bao nhiêu thì càng bỏ lỡ nhiều thứ hay ho bấy nhiêu.

Phần đấy phải để lên đằng đầu, vì mình là người vội vàng, sống rất vội và làm gì cũng phải nhanh mới chịu được. Có người ưa tính này, hồi xưa mình đi gọi vốn cho công ty cũng thế, người ta thích vì idea vừa ra hôm nay thì ba hôm sau có prototype sờ vào rồi, nói phát là làm luôn không nghĩ ngợi nhiều. Cơ mà lâu dần thì yếu điểm nó bộc lộ lắm tới mức dần mình phải nghiêm túc nghĩ lại về cách nhìn nhận và tiếp thu mọi thứ xung quanh, nhất là những thứ trước giờ vẫn gọi là kinh nghiệm.

Một năm, học cỡ chục công nghệ là chuyện bình thường. Cơ mà mình muốn kể bạn nghe cách mà mình đã học cũng như áp dụng cả mớ công nghệ đó trong năm vừa rồi dù đôi khi kết quả của sự áp dụng đó chưa thật là hiệu quả. Cứ coi như đây là một bài chia sẻ cùng nhau, biết đâu bạn sẽ có những góc nhìn để khiến trong năm tới mình cải thiện bản thân hơn?

Well, tiếp tục nào.

Try, try, fail & try again.

Học một thứ mới, đó là mang thời gian và công sức ra đánh cược. Sau rất nhiều thời gian bỏ ra tự học một mớ thứ, mình nghĩ ai cũng sẽ như mình thôi, nhận ra rằng thứ bản thân học chưa chắc đã dùng tới và đôi khi học nhiều rồi cuối cùng kết quả chả được bao nhiêu.

Trước đi làm, cùng công ty có ông anh làm dự án, hồi đó có cái layer của authentication (xác thực), được dựng bằng OIDC (nói tên, bạn thích tìm hiểu về kỹ thuật thì có thể thử search Google). Cái OIDC nó rất là lằng nhằng, ông anh mình cũng lớn tuổi nên thuộc hệ chắc cú, thế là cắm đầu đọc hết cả cái chuẩn bên RFC, rồi đá qua đọc document chi tiết từng phát một. Suốt một tháng ròng rã, cuối cùng cũng dựng xong được một cái server chuẩn chỉ, cơ mà trễ luôn timeline dự án và sau đó thì hệ thống đấy cũng chuyển luôn qua sử dụng Auth0, một third-party authentication provider cho chắc cú, vì khả năng maintain thấp với ông anh mình nói chuyện chả ai hiểu gì =))

Sau đợt đấy, mình bắt đầu thực sự có thành kiến với việc học quá nhiều rồi kiến thức bị lỗi thời trước khi nó có thể tạo ra những thứ hữu ích. Tất nhiên 1 tháng thì không có gì là lâu cả, nhưng nó cho mình thấy được diễn tiến của một dự án có thể nhanh tới cỡ nào và kiến thức có thể bị "vô dụng hóa" nhanh tới mức nào.

Hồi đấy là 2019, có thể nói từ 2019 tới mãi nửa năm trước, mình gần như có định kiến sâu sắc với việc học quá kỹ một thứ gì đó. Chân thành thì tới thời điểm hiện tại, nó vẫn ăn vào cái tiềm thức và khiến cho mình khó có thể ngồi nghiêm túc để đọc về một thứ gì đấy nặng ghi nhớ, cũng một phần nữa do mình lười ghi nhớ, cái này thì cha sinh mẹ đẻ rồi :v

Cơ mà, việc không học kỹ không phải không có cái mặt hay của nó. Trước khi nói về mặt dở, mình sẽ kể bạn nghe cách mà trước mình thường sử dụng để học một công nghệ bất kỳ, cũng như vài cái mặt lợi của nó.

Đúng như "try, try, fail & try again", cách mình học kiến thức cho công việc rất nặng những sự thử nghiệm, tới mức có những thứ mình phải làm đi làm lại cả trăm lần để đạt được một kết quả có thể nói là tốt hơn một chút. Có những thời điểm hồi mới đầu mình nghiêm cứu Redux, thậm chí nhiều khi mình cố chấp tới nỗi không muốn học redux (do không thèm đọc docs) và tiếp tục sử dụng một cơ chế tự nghĩ ra để truyền dữ liệu qua lại trong project.

Tất nhiên là những đợt thử nghiệm như thế thì chỉ có nước fail, mà phải là fail nặng. Không ít những projects đã phải đập đi làm lại vì một thằng nắm chuôi như mình chọn những phương án không hợp lí cho roadmap. Trong team của mình, cái web nội bộ cho members sử dụng được đập đi làm lại không dưới chục lần, mà có khi phải hai chục lần chưa chừng...

Đó là mặt tiêu cực, nhưng thực ra chúng ta có thể nhìn thấy rõ mặt tích cực hơn nếu như nêu ra cái tiêu cực trước.

Đôi khi bạn đi đường, lỡ đi phải con đường lắm ổ gà ổ voi, sau này có ai đi vào bạn cũng sẽ biết mà nhắc. Nếu bạn đi lâu trên con đường ổ gà ổ voi đó, nhiều khi bạn sẽ học được những thứ mà người ta nếu đi trên những con đường đẹp sẽ không bao giờ học được. Ngoài việc biết tại sao có ổ gà ổ voi, nghĩ ra lí do chúng xuất hiện và tại sao nó không nên xuất hiện, nhiều khi chính mình còn có thể suy diễn ra những cách để khắc phục mớ ổ gà ổ voi đó. Sau đó lại có thể nghĩ tiếp những con đường đẹp, người ta đã phải làm gì để chúng không bị như con đường xấu kia...

Nó mất thời gian kinh khủng. Sẽ là khó tin nếu nói ra điều này, nhưng mình làm ở nhiều công ty, và thấy hầu như các bạn ở level junior đổ xuống đều cứ đấm thư viện vào mà dùng chứ không thực sự quan tâm những layers bên dưới chúng nó hoạt động như thế nào và làm gì.

Vấn đề là ở chỗ, mình không nghĩ là chỉ có mình lười, con người thì ai cũng lười thôi và cái document thì bao giờ cũng dài nếu như nó chi tiết.

Điều này có nghĩa rằng, nếu cứ đụng công nghệ gì là phải đọc tỉ mẩn, thì không thể nào mà kịp áp dụng được. Mình đi làm, nếu là làm ở chỗ to, có nhiều người, thì mình sẽ chấp nhận ai dùng gì mình dùng nấy. Còn nếu làm ở những nơi mình có thể quyết định được hoặc được trao cơ hội để nghiên cứu, mình sẽ chọn phương án để làm sao có thể thử nghiệm được nhiều nhất và rút được nhiều bài học nhất có thể.

=)) Nó đi ngược với lợi nhuận, thật đấy.

Cơ mà mình mới 21 thôi, tuổi này thì mua được càng nhiều kiến thức làm vốn, sau này lãi kép càng cao.

Việc học lướt lướt, sau đó fail liên tục, cho bạn cơ hội để nhìn nhận vấn đề. Chúng ta không thể trưởng thành nếu không có bài học và sẽ không có tiến bộ nếu không có sai lầm, vậy nên nếu xét về mặt kỹ thuật, phải tìm cho bản thân đủ không gian để có thể thử nghiệm và sai lầm. Còn mình, mỗi lần fail khi áp dụng một cái gì đó, trong đầu sẽ phải nảy ra nhiều câu hỏi để biết tại sao lại fail.

Có những hồi dịch Covid mình ở quê, mẹ mình thấy mình dậy lúc 12h trưa (gọi dậy ăn cơm), mình kêu vào xử lí công việc tí rồi phi ngay vào bàn làm việc (thực ra lúc đó nghĩ ra một phương án mới để thử sau khi fail). Thế rồi mẹ mình cứ năm lần bảy lượt gọi, đúng 12h trưa NGÀY HÔM SAU, mình lững thững bước ra ngoài ăn cơm với cả nhà vì không còn phương án nào để thử và cạn luôn ý tưởng để có thể tiếp tục.

2 ngày sau đó, mình chỉ có thể nằm xem netflix để cho bớt bất an và cảm thấy đỡ chán. Cơ mà những lúc thoải mái hơn, đầu mình lại bắt đầu nảy số và mình ngộ được ra việc cần phải đọc lại một vài phần để có thể hiểu rõ hơn những vấn đề đang gặp phải thuộc vào vấn đề nào. Đó chính là thời điểm mà những sự yếu kém của phương pháp học chày cối này lộ ra.

Cơ bản thì, vấn đề đó nó liên quan tới một sản phẩm cũ của mình, đó chính là cái auto reply của Extension MonokaiToolkit. Hồi đó mình "không dám" học TypeScript, cũng không biết nhiều về React hay các công nghệ khác. Đại khái là biết một số kiến thức và đủ dùng để code ra cái extension đấy. Còn nếu nói về chuẩn hóa, không dám đâu, kiến thức của mình tới tận bây giờ đều đa phần là do khả năng tự luận mà ra chứ cũng không có nhiều phần đọc từ sách vở.

Nên, nói đừng ai cười, mình sợ nhất là phần hỏi đáp của phần phỏng vấn, nhưng đây cũng là phần mà mình thường trả lời sõi nhất. Hôm nào rảnh, mình sẽ share kỹ cách để biến những kiến thức tầm thường thành những kỹ năng đặc biệt và cách để biến những điều chưa biết thành những lời hứa tiềm năng trong mắt nhà tuyển dụng... Cơ mà quay lại vấn đề =))

Hồi đó yếu tay quá, nên mình không biết làm sao để có thể có cơ hội học mà áp dụng cả. Mình sợ rằng nếu giờ phải học cả cái công nghệ đấy thì biết bao giờ mới xong, nhưng cứ thử rồi fail, thử rồi fail mãi như này thì biết tới bao giờ mới code ra cho được tử tế? Dần dần theo năm tháng, sợ thì vẫn cứ sợ, sai lầm thì vẫn cứ thế tiếp diễn. Nhưng được cái, theo thời gian thì kỹ năng cũng tốt lên, tư duy cũng sáng ra và kiến thức cũng rộng dần, thế nên nỗi sợ phần nào cũng vơi bớt.

Những cái yếu điểm chính, thay vì nói lảm nhảm như phần ưu điểm, mình sẽ list ra để bạn xem muốn học như thế sẽ phải đánh đổi gì:

  • Tốn rất nhiều thời gian. Chữ rất nhiều thì có hơi nhẹ nhàng, vì thực tế nó là rất rất rất nhiều, còn phụ thuộc vào độ cứng đầu của bạn nữa.

  • Tiến độ chậm chạp, dễ chán nản, đi ngược với cảm xúc và dễ gây stress. Cái này thì không phải nói rồi, vì thực tế làm một cái gì hoặc học một cái gì hào hứng trước mắt thì khi đụng tới phần khó, dễ là hộc máu vì bực lắm.

  • Thiếu định hướng, thiếu tầm nhìn và thiếu luôn cả độ tin cậy. Bạn đã bao giờ học xong một thứ gì đó rồi không biết học gì tiếp theo chưa? Nó chính là vấn đề liên quan tới việc thiếu định hướng dấy. Cách học chày cối thì thường gặp phải vấn đề này, và kiến thức thu thập được thì cũng nặng tính chủ quan. Không khéo thu thập, dễ là tới khi học xong mới ngộ ra mình có suy nghĩ lệch lạc và không phù hợp mất.

  • Yêu cầu khả năng chịu đòn cao, khả năng cày cuốc như nông dân cũng quan trọng. Thật thế, nếu bạn muốn có thể "đào" ra kiến thức bằng cách này, thực sự bạn cần phải mạnh tay khi cuốc và cần phải nhẫn nại. Vì không chắc bạn có thể học được gì đâu, có thể là những thứ hay ho, hoặc đôi lúc cũng có thể là ngộ ra dự án này đi vào vô vọng rồi...

Trên thực tế, mình là người từng đi theo con đường này rồi, và mình dám khẳng định với bạn 100% về khả năng cung cấp kiến thức của nó. Và mình cũng chắc 100% với bạn về việc nó hành xác mình kinh khủng cũng như khiến mình cáu bẩn vô cùng... (không che đậy :v)

Try, learn, fail, learn & try

Khi mình "nghiên cứu" theo phương án kể trên, thực sự nó cho mình nhiều bài học hơn so với hai chữ kiến thức. Nó bắt mình phải thử nghiệm nhiều thứ, và nó đưa tới cho mình một cái cụm mà ai cũng cho là quan trọng đối với một người trẻ, đó là "kinh nghiệm".

Kinh nghiệm là thứ mà người ta đúc rút ra sau khi hoàn tất một công việc hoặc hành động nào đó mà không kể kết quả hay hậu quả. Bạn biết đấy, mình học được đa phần là từ hậu quả. Cơ mà gặp hậu quả nhiều nên mình dần dần mở rộng đôi mắt ra và tiếp thu kiến thức chứ không còn quá cố chấp như ngày xưa nữa (nhưng mức độ lì đòn thì vẫn không hề suy giảm).

Qua giữa năm nay, mình quyết định làm thêm ở một chỗ nữa ngoài công việc chính để gia tăng "độ tử tế" của code mình viết ra. Chỗ mới mình làm, kỳ quặc thay, vẫn là một nơi không áp quá nhiều yêu cầu về mặt hình thức lẫn khuôn mẫu vào sản phẩm, thế nên mình lại tiếp tục tự tung tự tác. Cơ mà lần áp dụng này, tâm thế của mình đã phải cẩn thận hơn rất nhiều, cũng từ đó, mình bắt đầu hiểu được giá trị của việc đọc document, viết document và cẩn thận nghiên cứu trước khi áp dụng.

Chuyện là, cũng liên quan tới Authentication, nhưng không giống ông anh mình phải làm phía server, mình cần nghiên cứu cho phía client-side. Khổ một điều, bên phía công ty đang sử dụng Appcenter để đóng gói và phân phối ứng dụng. Cái này thoạt đầu thì rất tiện, vì mọi thứ đều được tự động hóa, kiểu như chỉ cần đẩy code lên là nó tự làm gần như hết rồi. Rắc rối chính xác là bắt đầu từ đây.

Để tiết kiệm chi phí, phía bên kia yêu cầu mình phải distribute sản phẩm ra nhiều môi trường khác nhau, kiểu như khách hàng dùng một bản, test sẽ dùng một bản để thử nghiệm, đại khái thế, nhưng không được bóc ra hai app riêng do nếu bóc như thế sẽ gấp đôi chi phí.

Thế là mình phải ngồi nghiên cứu làm sao để cái định danh của app nó thay đổi theo từng giai đoạn trong quá trình đóng gói, và phải xuất được ra hai phiên bản khác nhau nhưng cùng một đầu ra =)) Đoạn này mình nói hơi khó hiểu vì nó liên quan nặng vào bên mobile, mình cũng không rõ thuật ngữ này ở nơi khác nói như nào, nhưng đại khái là vậy.

Vấn đề nó nằm ở chỗ, mình chưa bao giờ mò native nhiều và cái authentication nó có những cơ chế liên quan tới việc redirect, nằm trong scope của deeplinks. Well, 1-2 ngày đầu tiên mình mò thì đúng là trong vô vọng, document thì túng thiếu, giải thích sơ sài mà lại còn toàn dùng những chuẩn RFC lạ hoắc và dài như tờ sớ.

Cục diện chỉ thay đổi khi mình bắt đầu mò tới bái sư ông anh ngày xưa từng chịu trận. Ngạc nhiên là bây giờ ông anh già đang làm cho một công ty về giải pháp bảo mật, nghe kể lúc thấy ổng đọc vanh vách về chi tiết kỹ thuật của OIDC cũng như các chuẩn authentication, phía tuyển dụng há hốc mồm rồi kháo nhau tuyển liền =))

Quả thật, chưa bao giờ mình cảm thấy ấn tượng về việc người khác mọt sách như ở thời điểm đấy, sau vụ đó thì mình cũng đã lại quay xe cái góc nhìn đối với những người đọc nhiều. Cơ mà chỉ là không cảm thấy kỳ quặc nữa thôi, chứ bắt mình học kiểu đó thì mình chịu.

Nói chuyện mất nửa cốc cà phê, ông anh ném cho hai ba cái links để đọc về authentication, nói chung cũng vẫn là những document liên quan tới cơ chế hoạt động của chúng, cơ mà nó đánh đúng vào các vấn đề mình đang cần phải giải quyết. Sau đấy thì mất thêm cỡ một ngày, mình xử lí xong vấn đề và để ngộ ra rằng thực ra để có thể tách ra hai môi trường như trên, mình có thể yêu cầu phía backend chia token ra cho tiện =)))

Cơ mà đấy, kinh nghiệm đã cho mình thêm một phương án để xử lí vấn đề bằng cách chia environment ngay từ phía backend, tuy nhiên thực tế cũng đã dạy mình một kiến thức rất có ích về cách vận hành của các module xác thực trên ứng dụng điện thoại.

Thực tế là việc nghiên cứu kiến thức theo sách vở như ông anh mình thường tốn ít thời gian hơn rất nhiều so với cách cày bừa lạng lách của mình, nhưng việc đọc sách vở nó cũng giống như đi học hồi xưa, không phải ai cũng học giỏi những môn học thuộc. Với mình thì mình chịu, và mình dễ có cảm hứng hơn với những dòng code và những ý tưởng, thế nên mình thích việc ngồi vào bàn và bị hành hạ bởi những ý tưởng của bản thân hơn.

Sau cái buổi nói chuyện với ông anh mình cũng như nghiên cứu và áp dụng xong, mình tiếp tục quay lại đọc thêm về các vấn đề bảo mật và mình cho rằng, thời điểm sau khi áp dụng là thời điểm tốt nhất để mình đọc lại về mọi thứ. Vì khi đó, những yếu tố sau đã được đáp ứng:

  • Biết những thứ mình đọc có ích lợi gì.

  • Tính liên kết của kiến thức sẽ cao hơn, do có những kiến thức sẵn trong đầu.

  • Cảm giác không quá bị khô khan và nhàm chán vì có những điều biết rồi xen kẽ với những điều lạ hoắc.

Well, try, fail, learn, try, fail, learn

Không có một cách nào hiệu quả cả. Nhưng mình có thể cho bạn biết rằng nửa năm vừa rồi, mình học được nhiều bằng cả ba năm trước cộng lại. Có thể ba năm trước mình học rất ít, cũng có thể những gì mình biết vẫn còn hạn chế, nhưng mình cho rằng mình đã tìm ra được một cách học hiệu quả cho bản thân, chí ít là thế.

Bây giờ, mỗi khi đụng tới dự án, mình sẽ thử vài ba cách nhẹ nhàng và gợi mở những vấn đề cần nghiên cứu, sau đó sẽ bắt đầu lọc ra những thất bại để nghiên cứu thêm về vấn đề cần đọc.

Kiểu như, bạn tập đánh tennis, cứ phải ra đánh thử vài cú, xong bị thua vài ván, rồi lại hỏi huấn luyện viên xem thử mình sai ở đâu, đọc kiến thức xem cách cải thiện rồi lại ra đánh vài cú tiếp.

Mình cho rằng tính tới thời điểm hiện tại, mình vẫn duy trì một khả năng cày cuốc rất trâu bò nhờ những nguồn cảm hứng bất tận khi áp dụng phương án học đi học lại trên. Mà thực tế, mình không chỉ áp dụng về mặt kỹ thuật. Năm vừa rồi, có nhiều thứ mình học được hơn là hai chữ kỹ thuật, có những thứ trả giá rất đắt, có những thứ thì chỉ trả bằng thời gian, cơ mà đều là những lần thử, thất bại và học hỏi.

2023 sắp đến gần, sẽ có vô vàn thứ để học. Cuối năm rồi, kể vài chuyện tán gẫu, nếu bạn không biết học thế nào hay học gì, đọc qua, mong rằng bạn sẽ thấy đôi ba ý tưởng thú vị trong thứ mình viết.

Mình viết bài này, như một phút ngẫu hứng về năm cũ, một năm vừa đáng nhớ vừa đáng quên của bản thân. Hy vọng rằng năm mới sắp tới, rồi chúng ta sẽ vẫn cười vui, điều gì tệ sẽ bỏ lại phía sau và hít một hơi sẵn sàng cho những kiến thức mới, bài học mới.

Đối với mình, thấy bản thân tiến bộ hơn cũng là một dạng hạnh phúc, vốn không phải cái đích, nó là hành trình.

PS: Quả ảnh hồi Offline của bịp thủ Làng vòng =)) Một điều mình học được rằng, nếu có điều gì khiến bản thân có thể tự tin làm mọi thứ (dù thứ đó rõ ràng chuyên môn mình đáng ra không có) đấy là thử nghiệm và thất bại quá nhiều dần sẽ cho bản thân đủ kinh nghiệm và sự chai mặt =))

Ban đầu tính viết gì đó để chửi một vài người quá hãm trong năm rồi =)) Nhưng nghĩ lại thì thôi. Hai chữ "đạo đức", mình nghĩ nói ra cũng nhạy cảm, nhưng ai cũng sẽ làm điều họ cho là đúng, và bản thân con người khi đã cho mình đúng thì không bao giờ chịu nhận về việc đạo đức của bản thân có vấn đề.

Năm rồi, mình phạm phải nhiều sai lầm to lớn, có thể hành xử bullshit và xấu xí, cơ mà tính ra cũng chưa cố tình hại ai bao giờ cả. Cứ cho rằng đó là một điểm cứu vãn năm cũ đi :)) Còn những con người vẫn ngầm ngầm nói xấu và bàn tán á? Phắc diu! Năm mới mình sẽ vẫn lừng lững ở đây và nhìn bọn lắm chuyện nói trong khi chúng nó vẫn đang cố để học cho qua môn hoặc nghĩ làm gì cho đúng ngành =))