Part 18: Mình đã tiến bộ nhanh bằng cách nào?
Chào các bác, có một bác inbox em hỏi về cách tự học và research sao cho hiệu quả, em cũng để trong đầu hơn 2 tuần rồi, quả thực em cũng không biết làm sao để tiến bộ nhanh (như lụm bí kíp võ công trong phim ấy). Mức độ tiến bộ của em đến từ sự kiên trì và không bỏ cuộc thôi, nhưng mà em vẫn đưa ra vài tips mà em tin là có hiệu quả nha:
- Chiến thuật học top down - bottom up: Mình sẽ học overall trước, cố gắng khi tiếp cận một cái source code mà mình hiểu được những thành phần trong source có nhiệm vụ gì (chỉ cần biết nó làm việc gì thôi). Xong rồi mình mới tìm cách đào sâu vào một mảng (mà trong mảng nhỏ này mình cố chia ra nhiều mảng nhỏ hơn, rỗi hiểu từng mảng nhỏ này có nhiệm vụ gì thì mới đào sâu vào tiếp). Ví dụ như em join vào 1 project mà có xài pattern (Factory, Strategy, Singleton,...) thì thời gian đầu em chỉ cần tìm hiểu là pattern đó có tác dụng gì, implementation của nó ra sao, chứ chưa cần lôi cuốn sách design pattern ra mà học.
- Quan trọng là quá trình, chứ không phải là thời gian: Việc bắt đầu 1 task nào đó sẽ là lúc khó khăn nhất, nhưng khi các báo đã lăn vào tìm hiểu rồi thì thời gian trôi qua nhanh lắm, mình sẽ miệt mài tìm hiểu mà quên thời gian luôn. Cái này thuộc về vấn đề tâm lý khi bắt đầu làm những thứ mà não ta không thích. Tip này được đề cập trong những part trước, lấy trong khoá học: "Learning how to learn" trên coursera.
- Research để có cái nhìn đa chiều, chứ không phải chỉ giải quyết vấn đề: tip này có thể các bác gặp nhiều, research ra vấn đề, tìm ra cách giải quyết thì nó còn low level lắm (Nhìn tích xanh hay lượt vote của answer đó là xong). Mình phải tìm hiểu tại sao họ làm vậy, tham khảo các ý kiến khác trong topic đó xem họ giải quyết thế nào, để có cái nhìn đa chiều. Vì chúng ta là lập trình viên, mỗi anh lại có tư duy giải quyết vấn đề khác nhau, khi mình có cái nhìn đa chiều (tham khảo từ nhiều bộ óc khác nhau mà) thì sẽ dễ thuyết phục người khác hơn, tranh luận nó cũng có vị hơn. Mỗi ông suy nghĩ khác nhau, nói ra thì ông nào cũng đúng cả nhưng để chọn ra cách phù hợp nhất thì phải research có tâm vào. Code là chất xám của mình nhưng mỗi lần bị review mà chỉnh sửa răm rắp theo ý reviewer thì mãi không tiến bộ được.
- Mục tiêu phải hợp lý: thì mình mới theo đuổi, ví dụ: trong 6 tháng nắm HTML, CSS, JS, 6 tháng nắm ReactJs , chia nhỏ từng chặn ra, tìm hiểu phân tích xem mỗi kỹ năng cần bao nhiêu thời gian học. Lên Google search "how long does it take to learn <skill>", nếu skill mình search đủ specific, mình còn có thể tham khảo được những thứ cần học, vì khi vấn đề đủ nhỏ thì họ có thể listout ra.
Quay lại câu chuyện, lúc này em được join vào một project mới của công ty, họ muốn làm sản phẩm cho riêng mình. Tất cả chỉ nằm ở bước ý tưởng của ông sếp người Canada, còn nhiều quá trình ở phía sau. Em được anh Lead. T giao task research những công nghệ mới mà có thể apply vào project. Task này thì trúng tủ của em vì em học theo kiểu
top down - bottom up như trên, nên em biết nhiều thứ nhưng chưa thử dùng bao giờ
.
Vì Domain đang nhắm tới là e-commerce nên em suggest NextJs ( 1 Framework based trên ReactJs), typescript, dùng context để lưu Global State chứ không dùng Redux. Còn phần CSS thì em có cơ hội nghe anh Lead.T. phân tích ưu nhược của từng loại (CSS Module, styled-component, scss), chốt vì resource có hạn nên sẽ custom lại thư viện UI.
Khoảng thời gian này là lúc em chịu khó học, thức dậy từ 4h-5h sáng để ngồi học mà chưa ăn sáng, học đến tầm 7h mới chuẩn bị đi làm. Mỗi ngày đều đặn học tập, đến công ty thì apply kiến thức vừa học vào project luôn
. Em nghĩ nếu qua được giai đoạn khó khăn ban đầu này (lúc start 1 project sẽ có nhiều việc nhất, lúc maintenance sẽ nhàn hơn) thì sẽ làm key-member (kiểu người quan trọng không thay thế được ý), lúc đó tiền tài danh vọng sẽ đến
. Cộng thêm vợ chồng em lên ở chung cư, thuê cũng tầm 10tr 1 tháng rồi
, nên có động lực cài tiền ghê gớm lắm. Việc nhà cửa thoải mái dẫn đến em có nhiều cảm hứng để ngồi vào bàn học hơn nữa.
"Áp lực mới tạo ra kim cương", công việc áp lực, deadline dí tới tấp mới thấy được độ trâu bò của em. Nhiều hôm ở lại công ty OT đến 11h khuya, vợ thì ở nhà trông, nghĩ lại thật tội cho bạn ấy. Em nhớ 3 tháng đầu chỉ là sửa nhanh UI, thêm nhanh tính năng để cho sếp Can demo với khách hàng. Tiền bạc lương thưởng gì của các team outsource còn lại cũng bị cắt vì dồn qua đầu tư bên project này, anh em trong công ty vì thế mà cũng lục đục lắm.
Nói thêm về anh Lead.T, vì ảnh cũng là dân tay ngang, nhiều kinh nghiệm làm trên các nền tảng cơ bản, cũ nên cũng ham học hỏi cái mới lắm. Nhất là khi có cơ hội start 1 project từ con số không, nên 2 anh em lúc đó bắt đầu thân với nhau hơn, em thì không ngại việc, research cũng nhanh, code cũng nhanh nên có vẻ ổng quý em lắm
.
Cho đến khi có một đứa em sinh năm 97 vào tên Dev.M, ông em này thì du học nước ngoài về, tiếng anh cũng khá lắm. Khỏi nói cũng biết là mọi người đánh giá cao dev.M hơn em, mặc dù em là người đầu tiên làm cái project ấy. Lúc đó em cũng buồn, vì bản thân phỏng vấn mất 3 tháng mới vào, còn ku em phỏng vấn xong là tuần sau vào làm luôn (ngoài ra một thời gian sau em mới biết là dev.M có sign-on bonus, tết thì thưởng full lương mặc dù vào sau em
). Lúc đó em cũng nghi ngờ về khả năng bản thân lắm, dù gì học trong trường lớp ra, lại còn du học nước ngoài về thì nói chuyện cũng khác mình. Mang trong đầu tinh thần bất mãn ấy, em cũng bắt đầu hạn chế OT, làm hết giờ rồi về, chiến thuật của em là chú trọng chất lượng hơn số lượng. Ở chiều ngược lại, dev. M lại hăng hái OT, tích cực cống hiến, ku này thích ôm hết việc vào người, lại hay chủ động liên lạc với cấp trên. Em từng nghĩ mình còn trẻ, còn cống hiến được nhiều nhưng mà nhìn ku em vừa trẻ vừa khoẻ, chịu hi sinh thời gian hơn cả mình nữa thì cũng nản lắm các bác
.
(to be continue....)