Những điều mình ước mình biết được khi mới bắt đầu học lập trình (Phần 2)

Tiếp tục series Những điều mình ước mình biết được khi mới bắt đầu học lập trình, hôm nay mình sẽ tiếp tục chia sẻ các kinh nghiệm cá nhân mình đã rút ra được trong suốt quá trình học và làm lập trình.

Các bạn có thể xem lại phần 1 ở đây nha!

Nào, tiếp đến sẽ là:

1.Học thôi chưa đủ, bạn phải thực sự làm

Ngày nay, học lập trình nói riêng hay học bất cứ thứ gì nói chung, chúng ta có hàng tá sự lựa chọn, vô vàn platform. Nào udemy, nào pluralsight, youtube, sách, trung tâm, … Rất nhiều trong số những khóa học kia có chất lượng rất tốt, các instructor tận tâm, kiến thức mới lạ, hấp dẫn và bổ ích.

Và nếu dùng sai cách, điều này vô tình đưa bạn (hoặc chí ít là mình đã từng)… rơi vào tutorial hell.

Nếu bạn đã học và làm với javascript, chắc hẳn đã nghe qua khái niệm callback hell, là mội chuỗi các callback lồng vào nhau, thay vì 2, 3 level, các callback này lồng nhau đến cả chục cấp, debug hay đọc hiểu đống code này sẽ luôn là một ác mộng, vì bạn rất dễ lạc lối và không tìm được lối ra.

Tutorial hell cũng tương tự vậy. Đó là khi mà bạn thấy mình nằm ườn ra, coi video tutorial youtube, học hết khóa học udemy này đến khóa học pluralsight khác, xong rồi quên sạch.

Điều này cũng giống như hồi ôn thi đại học ấy. Thấy bạn bè có sách hay, là mượn photo liền tay. Đống sách trong nhà ngày càng tăng, sách còn mới tinh tươm, mà bạn chẳng mảy may đụng tới.

Sự nguy hiểm của tutorial hell là nó khiến bạn ảo tưởng rằng mình đã biết và giỏi về vấn đề đó, trong khi thực sự thì không.

À đúng rồi, mình sẽ học PHP, cPenl, rồi làm 30 projects nhỏ, tạo một portfolio show off hết tất cả ra, hmm… à học tiếp Python, Machine Learning. Dạo này nghe hai món này có vẻ hot. Rồi ok, tới bộ ba framework, library front-end là Vue, Angular, React, mà để dễ xin việc phải học và nắm thiệt cứng thêm JavaScript nữa. Mình sẽ tải video để dành, học từ mọi nguồn. Xong hết rồi thì làm Blockchain. Ok ok, search vài video youtube tìm hiểu xem thử nào.

Và bạn cố gắng học nhồi nhét, học nhanh nhất có thể.

Không ai chỉ trích ước mơ biết nhiều thứ hay trở thành một fullstack developer. Nhưng cơ bản để đạt được điều này sẽ phải cần thời gian, và chúng ta đang làm nó sai cách.

Khi học một khóa học trên udemy hoặc youtube, thay vì học nhanh như muốn nuốt trọn tất cả nội dung, bạn nên làm cách ngược lại.

Học từ tốn, vừa học vừa suy ngẫm, liên tục đặt các câu hỏi tại sao. Ngoài ra còn cần phải đọc thêm các article, techblog liên quan đến chủ đề đang học để có cái nhìn sâu hơn nữa, vì một điều mình chắc chắn rằng với mấy mươi phút vỏn vẹn trên video hay đứng lớp, người giáo viên sẽ không thể nào truyền tải được hết kiến thức, nội dung của chủ đề đó.

Và quan trọng nhất là bắt tay vào làm project

Bắt tay làm, truyền đạt kiến thức đến người khác

Bắt tay làm, truyền đạt kiến thức đến người khác

Đúng vậy, sau cùng hết phải là thực sự thực hành, thực sự làm nó.

Bản thân mình lúc mới học react hooks đã ngồi đọc tới đọc lui các concept về useContext, useCallback, useMemo, … cả thảy phải đến bốn, năm lần… và rồi quên sạch.

Chỉ đến khi dự án trong công ty có xài đến, mình bắt đầu áp dụng và ngay lập tức ghi nhớ, dùng khá thoải mái, hiểu các concept, các special case mà đó giờ đọc doc react mãi vẫn cứ quên, hoặc hiểu một cách mơ hồ.

Nếu chưa đi làm, và còn đang ngồi trên ghế nhà trường, thì khoảng giữa các khóa học hãy tranh thủ bắt tay làm ngay một project nho nhỏ để áp dụng kiến thức vừa học, đào sâu vào nó. Gặp vấn đề, giải quyết vấn đề, nhớ lâu, thuần thục,… Thay vì nhồm nhoàm ngấu nghiến kiến thức một cách hời hợt bạn nhé.

Một cách khá hay nữa đó chính là truyền đạt, dạy lại các kiến thức này cho các bạn mới. Nếu bạn thấy bản thân đã diễn giải một vấn đề theo cách đơn giản và dễ hiểu cho mọi người chứng tỏ rằng bạn đã thực sự nắm trong tay phần kiến thức đó rồi đấy.

2.Tìm mentor

Thật may mắn cho những ai có mentor chỉ bảo

Thật may mắn cho những ai có mentor chỉ bảo - ảnh minh họa

Kinh nghiệm sẽ là thứ cần thời gian, qua việc làm dự án, sẽ không có cách nào khác ngoài việc thực sự trải qua theo năm tháng để có được vốn tích lũy kinh nghiệm.

Kinh nghiệm trong lập trình không chỉ là vấn đề về kiến thức, mà còn là các kỹ năng quan trọng khác, đơn cử như là việc biết đâu là điều quan trọng nên học, nên làm trước thảy những thức khác.

Tìm được mentor hướng dẫn bạn ở những bước đi đầu tiên là rất rất quan trọng, và thật may mắn cho những ai tìm được những người anh tận tình chỉ bảo trong suốt quá trình học lập trình.

Được một anh senior mentor chỉ dạy thì cũng giống như trong phim chưởng, một thằng ất ơ trói gà không chặt vô tình gặp được cao nhân đắc đạo truyền dạy võ công vậy. Còn tùy thuộc vào cơ duyên, nhưng cơ bản anh chàng ấy phải có tố chất, phải là người tốt.

Trước khi muốn tìm được người chỉ dẫn mình, hãy đặt vị trí mình vào người senior đó.

Liệu khi bạn đã giỏi, biết nhiều thứ, bạn có muốn dẫn dắt, chỉ bảo một thằng em không quen biết, chưa biết gì về lập trình thậm chí là những cái cơ bản mà chẳng thu về tí lợi lộc gì không? Hay là không quan tâm, về nhà chơi với vợ con, dành thời gian cho bản thân. Chẳng phải sướng hơn sao?

Hiểu được như thế để có khi vô tình bạn đặt câu hỏi trên các trang blog, các diễn đàn, hay inbox hỏi người lạ mà không được hồi đáp thì cũng đừng oán giận, vì đó là lẽ đương nhiên. Còn nếu bạn may mắn được hướng dẫn tận tình, thì hãy tỏ lòng biết ơn và trân trọng.

Về cơ bản muốn được người khác giúp đỡ bạn nên học cách biết ơn. Biết ơn từ những lời khuyên, những feedback mà người khác dành cho.

Hãy thể hiện thái độ trân trọng và biết ơn đến những người giúp đỡ ta. Nếu bạn đã từng đọc cuốn “Đắc nhân tâm” thì thì càng biết đến sự quan trọng của đức tính này.

Nếu còn đang ngồi trên ghế nhà trường, hãy giao lưu, học hỏi, mở rộng network với các anh khóa trên, các anh đã tốt nghiệp đi làm.

Nếu đã và đang làm việc tại một công ty, thì những người anh trong team, trong công ty, những người có kiến thức sâu rộng, từng trải hơn ta, luôn sẽ là một cơ hội tốt để chúng ta học hỏi và tìm kiếm một người mentor đích thực.

3.Bạn sẽ tiến rất nhanh khi tinh thần thoải mái

Vui vẻ và tích cực

Vui vẻ và tích cực - ảnh minh họa

Như mình đã kể mình bắt đầu tự học web từ con số 0 và đa số là tự mày mò học qua video, các khóa học trên udemy.

Khoảng thời gian đầu mình đã loay hoay khá lâu và mắc nhiều sai lầm. Kết hợp điều này với gánh nặng kinh tế trong những ngày tháng thất nghiệp đã vô tình gây ra một tâm lý nặng nề và tiêu cực cho bản thân mình.

Lấy ví dụ khi tìm hiểu về bootstrap, thấy sao mà nó mông lung quá, nguyên một trang document dài đằng đẵng. Rồi không biết nên xài grid của bootstrap hay dùng flex, css grid ta?

Như vậy thay vì vui vẻ tập trung học và tìm hiểu một thứ (ví dụ flexbox), thì mình lại lo sợ, sợ học cái này tốn thời gian, mà công ty không cần tới, rồi không có việc. Học cái này khó quá, nghe mấy trang báo lá cải bảo muốn master cái này cần đến cả năm.

Chỉ đến khi có việc làm fresher đầu tay, và vô tình thời gian rảnh task trong vòng 2 tuần mình đã tìm hiểu và thoải mái sử dụng flexbox để layout giao diện, rồi tiếp đến là grid, css-in-js, rồi js thuần, các concept cao hơn,...

Hmmm..., mọi thứ đâu có quá khó và áp lực như mình nghĩ ta? Tự mình tạo áp lực cho bản thân thôi.

Dần dà trong con đường đi làm, bạn sẽ phát hiện được rằng: bạn sẽ học hỏi, tiến rất nhanh khi tinh thần thoải mái, không vướng bận gì nhiều.

Tựu chung não chúng ta trong một ngày chỉ có chừng đó năng lượng. Dùng vào việc nào thì tùy bạn quyết. Và thường thì thứ cảm xúc giận dữ, mệt mỏi, tiêu cực sẽ đốt hết năng lượng cực nhanh.

Khi gặp một task khó hay vấn đề cần giải quyết, tập thói quen thay vì tránh né hay lo sợ, hãy cứ mạnh dạn nhận làm và tin rằng mình sẽ học hỏi được nhiều điều từ chính những vấn đề kia.

Cứ giành task khó mà làm, OT cũng được, cuối tuần dành thời gian tìm hiểu thêm thì càng tốt.

Hầu như hết thảy người thành công, cụ thể là trong lĩnh vực lập trình như anh: tôi đi code dạo, nghiepuit, hay các developer người nước ngoài khác đều có đặc điểm chung là vui vẻ và tích cực. Và mình tin rằng đây chính là một yếu tố rất quan trọng quyết định bạn có tiến nhanh hay không.

4.Đầu tiên đừng đọc document, sau đó hãy đọc document

Có một sự thật đối với fresher hay những người chưa có kinh nghiệm là khi mới bắt đầu học một thứ gì, thường thì đọc document của framework đó, library đó, sẽ không hiểu mô tê gì hết.

Nhìn vào đống document toàn chữ là chữ khiến chúng ta phát nản, lại toàn thuật ngữ mới lạ, cái này liên kết đến cái kia. Rất dễ bị lạc lối.

Nỗi ám ảnh mang tên document

Nỗi ám ảnh mang tên document - ảnh minh họa

Nếu bạn là người mới và đã học React thì mình cá là lần đầu đọc qua document của React thì phải đến 90% là không hiểu gì hết, hoặc hiểu rất mơ hồ, không thể đặt tay xuống viết code theo được.

Vì vậy chiến lược ở đây sẽ là học và tìm hiểu theo structure của khóa học (ví dụ nếu bạn học các khóa online trên udemy), tìm hiểu demo, các bước làm cơ bản.

Việc đọc vào document của framework ngay lúc này chỉ càng làm bạn thấy chán nản hơn mà thôi. Hãy tập trung theo khóa học, những anh chị constructor sẽ có kinh nghiệm diễn giải các vấn đề technical kia một cách dễ hiểu hơn nhiều.

Rồi sau đó,... quay lại đọc document.

Đúng vậy, sau khi có cái nhìn và biết làm cơ bản, hãy quay lại đọc document, bạn sẽ gặt hái được những kiến thức chuyên sâu vô cùng bổ ích.

Có rất nhiều framework và library mà tác giả đã bỏ công sức để viết document vô vùng chi tiết và dễ hiểu.

Như document của redux, nếu bạn có đọc và tìm hiểu sẽ biết đến một section rất hay về cách injectReducer, hay document của react-redux nói đến các lưu ý về performance với việc sử dụng mapStateToProps

Ví như cái document của React mình đã đọc không dưới bảy lần - đọc một cách chi tiết, đôi khi chỉ để hiểu là tại sao không nên dùng index để set key :)). Và mỗi lần đọc và tìm hiểu thì mình lại ngộ ra nhiều điều mới.

5.Kết luận

Qua hai bài viết trên mình đã tổng hợp ra được các kinh nghiệm mà cá nhân mình nghĩ các bạn mới nên biết. Hy vọng sẽ giúp ích được các bạn trên bước đường tự học lập trình của mình.

Nếu các bạn thấy hay và ủng hộ, mình sẽ cho ra nhiều bài viết về kinh nghiệm học tiếng Anh, kinh nghiệm đi làm nữa nha. Mến chào các bạn!