Con đường tự học của tôi

 

Con đường tự học là khó khăn và đầy bất trắc. Không có một đường thẳng nào từ người mới đến nghề lập trình viên. Vì điều này, tôi tin rằng mỗi cá nhân trải qua quá trình tự học đều có một câu chuyện độc đáo riêng để kể.

Trong bài viết này, tôi sẽ chia sẻ hành trình tự học của mình thông qua một loạt bài học tôi đã học được trong suốt quá trình. Hy vọng rằng việc đọc về kinh nghiệm của tôi khi tự tìm kiếm con đường học sẽ giúp bạn suy ngẫm về quá khứ của chính mình, và thúc đẩy bạn tiếp tục tiến lên.

 

Bài học số 1: Tập trung vào quy trình

 

Khi tôi mới bắt đầu học lập trình, tôi chưa bao giờ có ý định lập nghiệp từ nó. Tôi chỉ muốn tạo một ứng dụng cụ thể.

Cuộc hành trình của tôi bắt đầu khi tôi là sinh viên năm cuối đại học. Tôi vừa đọc xong tiểu sử của Richard Branson và có lẽ tôi đã đọc quá nhiều TechCrunch. Tôi tràn đầy năng lượng kinh doanh. Tôi đã liên tục tìm hiểu về cách mà các anh chị đi trước nhận được học bổng của các doanh nghiệp. Tôi nghĩ tôi có thể là một trong những người như thế. Một ngày nọ, khi đang đi giữa các lớp học, một ý tưởng ứng dụng đã đến với tôi. Tôi nhanh chóng bị thuyết phục rằng tôi sẽ tìm thấy điều lớn lao tiếp theo.

Tôi bị cuốn hút bởi ý tưởng đó và ngừng chú ý đến các bài giảng. Sự hào hứng của tôi đối với ý tưởng này nhanh chóng tăng đến mức tôi cảm thấy mình cần phải hành động. Nhưng có một vấn đề lớn là ý tưởng của tôi là một ứng dụng dành cho thiết bị di động và tôi không biết rằng không phải ai cũng có thể tạo ứng dụng dành cho thiết bị di động. Rơi vào bế tắc, tôi mất luôn hứng thú với chuyên ngành của mình và tôi đã lao vào chơi game để quên đi điều đó.


 

Tôi là một sinh viên đại học không có kinh nghiệm lập trình, kinh doanh hay thiết kế, đang cố gắng học Android để có thể xây dựng một ứng dụng di động phức tạp. Nếu cứ chơi game mãi thế này thì tương lại mình sẽ đi về đâu? Và câu trả lời đã tát vào mặt tôi một cái tát thật đau. Vì vậy tôi quyết tâm thay đổi, tôi ước tôi có thể nói với bạn rằng mọi thứ đã diễn ra tốt đẹp từ đây.

 

Tôi đã mua một vài cuốn sách về phát triển Android và dành vô số giờ trong phòng để cố gắng dán các ứng dụng của mình lại với nhau. Tôi không quan tâm ứng dụng hoạt động như thế nào, tôi chỉ muốn có một sản phẩm hoàn chỉnh. Thời gian trôi qua và ứng dụng biến thành một Frankenstein của mã sao chép và dán. Ứng dụng không có nhiều tính năng và hầu như chưa có lần chạy nào mà không gặp sự cố.

 

Cho đến khi vô tình tham gia một lớp Khoa học Máy tính, tôi mới nhận ra rằng mình nên tập trung hơn vào việc thực sự cố gắng học phát triển phần mềm. Không có khả năng lập trình khiến tôi từ bỏ ý tưởng ứng dụng ban đầu của mình. Tôi nhận ra rằng tôi sẽ không làm nên điều lớn lao tiếp theo, ít nhất là chưa.Theo thời gian, tôi đã sửa chữa hành vi của mình và học tập nghiêm túc hơn. Tôi bắt đầu thích lập trình và cuối cùng bắt đầu sự nghiệp của một nhà phát triển phần mềm.

 

Ý tưởng ứng dụng lớn của tôi đã tiêu thụ tôi trong một thời gian dài. Nó khiến tôi tập trung vào kết quả cuối cùng hơn là quá trình đạt được điều đó.

Khi bạn quá tập trung vào kết quả cuối cùng, bạn bắt đầu sử dụng các phím tắt. Các phím tắt có thể dẫn đến một số tiến bộ ngắn hạn nhưng về lâu dài, sự thiếu kiến ​​thức của bạn sẽ luôn bắt kịp bạn. Điều quan trọng cần nhớ là học bất cứ thứ gì lớn, như lập trình, đòi hỏi nhiều bước nhỏ. Mỗi bước sẽ cần được điều trị cẩn thận. Học những điều mới giống như xây một ngôi nhà. Bạn bắt đầu với nền tảng và xây dựng. Nếu nền móng bị lỗi thì sớm muộn gì thì toàn bộ sẽ sụp đổ. Đôi khi việc xây dựng một nền tảng vững chắc đòi hỏi bạn phải chậm lại. Không có gì xấu hổ khi đi chậm. Những người hiểu những điều cơ bản lần đầu tiên sẽ đi trước những người phải quay lại và học lại chúng.

 

Có một câu tục ngữ cổ của Trung Quốc: "Tốt hơn là thực hiện nhiều bước nhỏ đúng hướng hơn là thực hiện một bước nhảy vọt về phía trước chỉ để vấp ngã."

Không phải là bạn có thể làm điều gì đó nhanh đến mức nào, mà là bạn có thể làm nó một cách chính xác chậm đến mức nào. Tôi là một ví dụ hoàn hảo. Nhìn từ bên ngoài, có thể trông giống như tôi là một đứa trẻ biết lập trình. Trên thực tế, tôi không thể tạo một ứng dụng để cứu mạng mình. Tập trung vào quá trình và bạn sẽ ngạc nhiên với mức độ tiến bộ của bạn mỗi ngày.

 

Bài học # 2: Stack Overflow thật tuyệt vời (Nhưng nguy hiểm)

 

Khi tôi đang xây dựng ứng dụng siêu khủng của mình, Stack Overflow đã trở thành người bạn tốt nhất của tôi. Bất cứ khi nào tôi gặp khó khăn, tôi sẽ cố gắng tạo ra một câu hỏi hoàn hảo để hỏi cộng đồng Stack Overflow. Trung bình một ngày tôi hỏi vài câu. Tôi dành thời gian rà soát trang web để cố gắng tìm một đoạn mã chính xác có thể khắc phục sự cố của tôi.

 

Khi tôi tìm thấy câu trả lời phù hợp, tôi sẽ sao chép và dán nó ngay vào cơ sở mã của mình và cố gắng làm cho nó hoạt động với mã hiện có của tôi. Nhưng tôi lại chẳng dành thời gian để hiểu mã mà tôi đã thêm. Quá trình này diễn ra trong một thời gian cho đến khi tôi tìm hiểu kỹ và nhận ra những sai sót trong cách tiếp cận của mình.

 

Stack Overflow là một con dao hai lưỡi. Nó rất tốt trong việc giúp bạn giải quyết vấn đề - tuy nhiên, nếu không cẩn thận, bạn có thể nhanh chóng trở nên phụ thuộc vào nó. Đôi khi trang web giải quyết vấn đề quá tốt, nó tạo ra cảm giác tự tin sai lầm. Stack Overflow chỉ cho bạn cách bắt một thứ gì đó hoạt động nhưng nó thường không cho bạn biết rõ ràng tại sao nó hoạt động. Hiểu được lý do tại sao điều gì đó hoạt động là điều sẽ giúp bạn áp dụng lại kiến ​​thức trong tương lai. Nó giống như câu trích dẫn "Cho cần câu chứ đừng cho cá", bởi cho cá bạn chỉ giúp được họ trong hôm hôm nay, nhưng nếu cho họ cần câu và dạy họ cách câu cá thì bạn sẽ giúp họ cả đời. Sao chép và dán mã từ Stack Overflow giống như cho ai đó một con cá. Hiểu tại sao một đoạn mã hoạt động giống như dạy chúng câu cá.

 

Không có gì sai khi sao chép và dán mã. Tất cả chúng ta đều làm được. Đó chỉ là vấn đề khi nó trở thành một cái nạng và cản trở sự phát triển của bạn. Không có đường tắt trong quá trình học tập. Khi bạn gặp khó khăn, hãy cố gắng giải quyết vấn đề mã hóa của bạn ít nhất một vài lần trước khi truy cập Google. Khi bạn thấy mình đang sao chép và dán mã, hãy dành một chút thời gian để cố gắng hiểu đoạn mã trước khi tiếp tục.

 

Bài học số 3: Tìm hiểu cách tìm trợ giúp có kinh nghiệm

 

Điều đầu tiên tôi làm sau khi quyết định học lập trình là mua hai cuốn sách phát triển Android. Khi bắt đầu, tôi theo sát các bài tập trong sách và làm việc thông qua các dự án ví dụ. Tuy nhiên, tôi nhanh chóng thất vọng với sự tiến bộ mà tôi đang đạt được sau cuốn sách. Tôi đã dành vô số giờ bị cô lập trong phòng của mình để cố gắng tìm ra các vấn đề lập trình đơn giản. Tôi bị mắc kẹt với mọi dòng mã mới và không có cảm giác như tôi đang tiến bộ nhiều. Tôi bế tắc một cách bất lực và cuộc sống của tôi là một hỗn hợp của sự nghi ngờ, thất vọng và cảm giác lạc lõng.

 

Và còn tồi tệ hơn nữa khi tôi có một ý tưởng sáng tạo là bắt đầu sử dụng một thư viện C khổng lồ có tên là FFMPEG. Ứng dụng của tôi cần để chỉnh sửa video, vì vậy, tôi nghĩ tốt hơn hết là sử dụng chức năng mạnh mẽ của thư viện. Tôi đã lãng phí rất nhiều thời gian để đọc mã C và tìm cách sử dụng nó trong ứng dụng của mình. Tôi đã đấu tranh để thậm chí nhập thư viện vào dự án Android của mình. 

 

Sau nhiều giờ không đi đến đâu, cuối cùng tôi đã chán nản và từ bỏ thư viện. Cùng thời điểm với sự cố FFMPEG, tôi đã đăng ký một lớp Lập trình hướng đối tượng. Thành thật mà nói, tôi không chắc mình vào bằng cách nào. Sau đó, tôi phát hiện ra rằng tôi là sinh viên duy nhất không thuộc chuyên ngành Khoa học Máy tính trong lớp. 

 

Nhiệm vụ đầu tiên là xây dựng một chương trình Blackjack. Đến thời điểm này, tôi đã tự học lập trình được 5-6 tháng và tôi cảm thấy tự tin với kỹ năng của mình. Tôi đã hoàn thành bài tập và cảm thấy hài lòng về công việc của mình. Không mất nhiều thời gian để cảm giác đó phai nhạt. Toàn bộ chương trình của tôi được viết theo một phương pháp lớn. Mọi người khác trong lớp đều có thể nhận ra rằng chương trình cần được tách thành các lớp. May mắn thay, bài tập trên lớp và sự hướng dẫn từ giáo viên đã cho phép tôi lùi lại một bước khỏi ứng dụng Android và suy ngẫm về khả năng lập trình của mình. Tôi bắt đầu coi trọng việc học và khắc phục mong muốn của mình là tạo ra một ứng dụng hoàn chỉnh.

 

Bây giờ tôi nhận ra rằng nếu tôi chỉ nói chuyện với một nhà phát triển có kinh nghiệm trong những ngày đầu tiên đó, họ sẽ thấy những gì tôi đang làm. Họ sẽ giúp tôi sửa chữa con đường của mình khi tôi đi vào những ngõ cụt vô ích (như cố gắng làm việc với FFMPEG). Nhưng hồi đó tôi lại tự cô lập mình với thế giới một phần vì tôi cảm thấy như không có ai có thể giúp tôi. Cô lập là một con dao hai lưỡi. Một mặt, nó giúp bạn tập trung vào nhiệm vụ trong tầm tay. Mặt khác, nó loại bỏ bạn khỏi thế giới, khiến bạn đói những phản hồi quan trọng.

 

Có rất nhiều cách tôi có thể tìm thấy sự trợ giúp. Tôi có thể cố gắng tìm một giáo sư / sinh viên tại trường đại học có kinh nghiệm về Android hoặc tìm đến cộng đồng địa phương để được trợ giúp. Tôi cũng có thể đã thử tìm một cộng đồng Android trực tuyến. Các nhà phát triển có kinh nghiệm giống như một chiếc la bàn. Họ sẽ không đưa bạn đến đích nhưng họ sẽ đảm bảo bạn được chỉ dẫn đúng hướng. Sự giúp đỡ của họ thường có thể là sự khác biệt giữa thành công và thất bại. Hãy chắc chắn rằng bạn tìm kiếm hướng dẫn ở bất cứ nơi nào bạn có thể tìm thấy. Nó sẽ giúp bạn tiết kiệm thời gian và sự thất vọng trên đường.

 

Bài học số 4: Tạo dựng môi trường của bạn

 

Đây có thể là điều duy nhất tôi cảm thấy mình đã làm đúng khi tự học lập trình.

Trong suốt cuộc đời của mình, tôi thực sự rất tệ khi học bài kiểm tra hoặc làm bài tập ở nhà. Tôi thường cố gắng tìm nơi ẩn náu trong thư viện hoặc quán cà phê. May mắn thay, tôi đã áp dụng quy tắc này khi tôi đang tự học lập trình. Cuối cùng tôi đã trở thành một khách quen tại một vài quán cà phê địa phương. Nếu tôi học ở nhà, tôi chắc chắn rằng cửa của tôi đã được đóng chặt và các bạn cùng phòng của tôi không thể làm phiền tôi trong một khoảng thời gian đó. Và một điều nữa là tôi sẽ đảm bảo âm nhạc của mình đủ lớn để tôi không thể nghe thấy những gì đang diễn ra xung quanh mình.

 

Tôi không thể nói rằng tôi đã hoàn hảo trong việc tìm kiếm một môi trường làm việc không bị phân tâm nhưng tôi đã có thể tập trung hoàn toàn trong thời gian đó. Tập trung là một thành phần cơ bản của việc thu nhận trí nhớ và kỹ năng. Khi bạn cố gắng học một điều gì đó mới, sức mạnh của việc học được liên kết trực tiếp với cường độ tập trung của bạn. Khi sự tập trung của bạn yếu, thông tin mới sẽ ít dính hơn, dẫn đến việc học chậm hơn và mất nhiều thời gian hơn.

 

Môi trường làm việc của bạn phải không bị phân tâm và phải cho phép tập trung lâu không bị gián đoạn. Ngay cả khi COVID-19 cần làm việc từ xa, bạn vẫn có thể thực hiện các hành động để thiết kế môi trường học tập của mình.

 

Dưới đây là một số điều bạn có thể làm: 

  • Tìm một vị trí mà mọi người sẽ không làm phiền bạn. Đặt điện thoại của bạn ở chế độ trên máy bay

  • Sử dụng một số loại trình chặn trang web được hẹn giờ cho các trang web truyền thông xã hội và tin tức

  • Đeo tai nghe và nghe nhạc không gây mất tập trung (tốt nhất là danh sách phát dài để bạn không phải liên tục chuyển bài hát)

  • Tránh TV hoặc các môi trường xung quanh có tính kích thích cao khác

  • Có một cuốn sổ bên cạnh để viết ra bất kỳ nhiệm vụ hoặc ý tưởng nào nảy ra trong đầu bạn

  • Cho những người xung quanh biết rằng bạn không muốn bị quấy rầy

Chỉ bạn mới có thể quyết định vị trí và cách tạo ra môi trường của bạn. Nhưng hãy chắc chắn rằng bạn làm vì điều đó rất đáng giá.


 

Bài học số 5: Bước ra thế giới và gặp gỡ mọi người

 

Việc đạt được công việc lập trình đầu tiên của tôi là một sự xuất hiện ngẫu nhiên. Tôi vừa chuyển đến Omaha, Nebraska và tôi đã có khoảng một năm phát triển khả năng tự học. Tôi biết rất ít người ở Omaha, vì vậy tôi đã tìm kiếm Meetup.com để thử và tìm những người khác quan tâm đến phát triển Android. Tôi nhận thấy một Meetup tập trung vào phát triển di động, bao gồm cả phát triển iOS và Android và tôi quyết định tham gia.

 

Đến cuộc gặp gỡ đầu tiên đó thật là căng thẳng. Tôi đã dành khoảng 10 phút trên xe của mình để quyết định xem tôi nên đi vào hay lái xe đi. Tôi không tự tin về kỹ năng lập trình của mình và tôi biết mọi người tại Buổi gặp mặt có nhiều kinh nghiệm hơn tôi. Cuối cùng tôi quyết định đi vào trong.

 

Tôi rất vui vì tôi đã làm. Tôi bắt đầu tham dự thường xuyên và trong một buổi Meetup, không lâu sau khi chuyển đến Omaha, tôi đã gặp một nhà tuyển dụng đang tìm kiếm một nhà thầu Android. Chúng tôi đã nói chuyện một lúc và tôi đã nhận được một cuộc phỏng vấn cho công việc vào cuối tuần đó. Trước khi phỏng vấn, tôi cảm thấy tự tin. Trong cuộc phỏng vấn, tôi là một con nai trong đèn pha. Người phỏng vấn đang nói về dự án mà tôi đang thực hiện và tất cả đều lướt qua đầu tôi. Tôi đã cố gắng tiếp tục tham gia nhưng họ có thể nói rằng nó nằm ngoài phạm vi của tôi. Sau cuộc phỏng vấn, họ yêu cầu tôi đi chơi trong một giờ để tôi có thể nói chuyện với người khác. Biết mình đã làm nổ tung nó, tôi đi quanh khu trung tâm để cố gắng tỉnh táo.

 

Tôi đã kết thúc cuộc phỏng vấn với một người khác ở công ty, và ngay sau đó, họ đề nghị tôi thực tập. Công việc thực tập trở thành một công việc toàn thời gian và tôi bắt đầu sự nghiệp của mình với tư cách là một nhà phát triển phần mềm.

 

Khi bạn tự học, mọi người sẽ không đến và tìm kiếm bạn. Bạn sẽ cần tìm cơ hội cho chính mình. Sinh viên tốt nghiệp các trường đại học bốn năm và các trường mã có lợi thế tận dụng mạng lưới của trường khi tìm việc làm. 

 

Các nhà phát triển tự học sẽ cần phải ra ngoài thế giới và tự xây dựng mạng lưới của họ.

Các nhà tuyển dụng gọi điện lạnh lùng và gửi hồ sơ xin việc có thể hiệu quả. Tuy nhiên, tôi đã tìm thấy những người thích thuê những người thân thiết với họ trên mạng xã hội của họ.

 

Các trang web như Meetup.com là nơi tuyệt vời để tìm kiếm các nhóm dành riêng cho lập trình hàng tháng. Ngay cả trong một đại dịch, vẫn có nhiều cuộc Gặp gỡ ảo rất nhiều thông tin và có lợi.

 

Ngoài ra còn có các kênh Slack hoặc cộng đồng Discord khác mà bạn có thể tận dụng để tạo các mối quan hệ có ý nghĩa. Bạn cũng có thể thử tiếp cận với nhiều người khác nhau trong khu vực của mình và yêu cầu uống cà phê ảo trong 15 phút nhanh với họ.

 

Hãy làm những gì bạn có thể để tăng cường can đảm tiếp cận và trò chuyện với mọi người. Hãy thân thiện và nói chuyện với họ về kinh nghiệm của bạn. Đảm bảo mọi người biết về mục tiêu dài hạn của bạn là tìm việc.

Đặt mình vào những tình huống mà điều gì đó tích cực có thể xảy ra. Bạn không thể thắng xổ số nếu bạn không bao giờ mua vé.

Hãy xem xét bất kỳ cơ hội nào đến với bạn, bởi vì ngay cả khi nó trông giống như ngõ cụt, nó vẫn có khả năng dẫn đến một điều gì đó lớn hơn.

Công việc thực tập của tôi là một khoản giảm đáng kể so với những lời đề nghị khác mà tôi có vào thời điểm đó. Tuy nhiên, tôi biết nếu tôi làm việc chăm chỉ thì đó sẽ là cơ hội để tôi lấn sân sang lĩnh vực công nghệ. Điều quan trọng là phải nghĩ đến cơ hội việc làm trong dài hạn. Thực tập hoặc công việc bán thời gian có thể không trả trước cho bạn mức lương mong muốn nhưng chúng có thể mở ra cánh cửa trong tương lai.

 

Tôi hy vọng bạn học được từ sai lầm của tôi và làm cho sai lầm mới thú vị của riêng bạn

Như bạn có thể thấy, tôi đã mắc rất nhiều sai lầm trong hành trình tự học của mình.

Tự học code không bao giờ là một con đường thẳng. Tất cả những câu chuyện của chúng tôi là duy nhất. Điều quan trọng là tiếp tục và tránh nản lòng khi mọi thứ không theo ý bạn.

 

Tôi khuyến khích các nhà phát triển tự học khác chia sẻ câu chuyện của họ. Chúng không chỉ cung cấp thông tin chi tiết có giá trị mà còn giúp soi sáng những con đường độc đáo mà chúng tôi đã đi. Hy vọng rằng câu chuyện của tôi và những bài học tôi rút ra được sẽ giúp bạn tiến lên phía trước.