Hành trình học code và Bí quyết để sống sót

Học code thật là khó!

Quincy Larson chỉ là một “anh chàng công sở”. Một ngày nọ, anh ta quyết định mình muốn học code. Anh hỏi ý kiến mọi người xung quanh. Thế rồi, anh bắt đầu với một chút Ruby và lướt qua vài ngôn ngữ như Scala, Clojure và Go. Anh học Emacs rồi đến Vim và ngay cả Dvorak keyboard layout cũng không chừa. Anh chọn Linux, vọc Lisp và viết code Python trong khi sống chung với command line hơn nửa năm.

Như một chiếc lá vật vờ giữa cơn bão, mỗi lời khuyên thổi bay Quincy từ ngã này sang ngã khác cho đến khi anh học hết “mọi khoá học online có thể nghĩ đến”. Đến cuối cùng, dù đã có được một công việc trong lĩnh vực phát triển phần mềm, Quincy:

… tin chắc rằng những lập trình viên trông có vẻ bình thường mà tôi gặp thực ra là những kẻ điên đã từng trải qua, xong lại bị đàn áp, bởi những tổn thương khi học code.

Bạn có cảm thấy điều này rất quen không?

Giai đoạn I: Trăng mật tay trong tay

Thật khó để đổ lỗi cho những ai mang theo những kì vọng quá cao đến với cái nghề lập trình.

Một mặt, bạn nghe những lời đồn đại rằng lập trình khó như thế nào từ lúc còn nhỏ, như những câu chuyện mà người lớn hay hù doạ trẻ con để chúng đi học những ngành khoa học xã hội.

Mặt khác, hiện tượng “Learn to Code” đã tạo nên một chuyển biến tuyệt vời khi phá vỡ những rào cản và cho mọi người thấy rằng lập trình thực ra cũng khá vô hại. Những công cụ như Codeademy, Treehouse và Code School xuất hiện với những cử chỉ thân thiện đảm bảo ngay cả bạn (à không, tất cả mọi người!) không chỉ học code mà còn trở thành một developer thành thạo.

Bất ngờ thay, vấn đề ở đây không phải là nỗi sợ khi học lập trình, mà là những hi vọng và kì vọng thái quá.

Hơn nữa, trong hầu hết câu chuyện, những công cụ mở đường này làm rất tốt việc dẫn dắt bạn như một đứa nhóc băng qua con đường với những thứ đáng sợ như biến, lệnh điều kiện và căn bản của cú pháp lập trình. Khi bạn chinh phục hết thử thách này đến thử thách khác như những trò chơi, sự tự tin của bạn tăng lên. Bạn nghĩ rằng sau tất cả chuyện này, bạn có thể làm được! Nó khó như thế nào chứ? Chẳng mấy chốc bạn sẽ sớm trở thành một developer thôi!

Giai đoạn Trăng mật tay trong tay

Vấn đề là ở đây, bạn đang trong giai đoạn mà tôi gọi là “Trăng mật tay trong tay”. Mặc dù bạn có thể cảm thấy như điểm cuối của chặng đường ở đâu đó quanh đây, nhưng bạn thực sự chỉ mới đi được vài bước của cả quãng đường. Mọi thứ chỉ mới bắt đầu…

Biểu đồ minh hoạ cuộc hành trình phía trước

Trước khi chúng ta đi sâu vào Giai đoạn II, hãy nhìn một bức tranh lớn hơn.

Trong bài viết này, tôi sẽ dẫn bạn đi qua bốn giai đoạn của cuộc hành trình học code và những điều bạn cần làm để sống sót vượt qua chúng. Bạn cũng sẽ thấy làm thế nào hai yếu tố chính mật độ tài nguyên và phạm vi kiến thức cần thiết, quyết định cuộc hành trình này.

Chuyến viễn du để đến được giai đoạn sẵn sàng cho công việc có thể được vẽ nên từ sự thay đổi mức độ tự tin của bạn khi năng lực của bạn ngày phát triển.

Biểu đồ Tự tin vs Năng lực

Đây là một mối quan hệ tương quan bởi sự tự tin của bạn có liên hệ với niềm vui của bạn và bởi vì khi sự tự tin và năng lực của bạn giao nhau cũng là thời điểm bạn chính thức “sẵn sàng cho công việc”.

Chúng ta sẽ đi vào những thử thách đặc biệt của ba giai đoạn còn lại chốc nữa thôi, nhưng đây là những thứ mà chúng có dính dáng với nhau:

  1. Trăng mật tay trong tay là quãng thời gian vui vẻ khi mà các khoá học trực tuyến hướng dẫn bạn vượt qua những bài học tưởng chừng như khó khăn nhưng hoàn toàn có thể thực hiện được nhờ sự hỗ trợ của chúng. Bạn sẽ chính thức học những cú pháp cơ bản nhưng cảm thấy vô cùng hài lòng với thành quả đạt được.
  2. Dốc mơ hồ là khoảnh khoắc bạn đau đớn nhận ra rằng mọi thứ thật khó khăn khi quãng thời gian trăng mật chấm dứt và nó cho bạn cảm giác không thể làm tất cả mọi chuyện bằng chính sức mình. Những thách thức chính mà bạn gặp là liên tục sửa lỗi và không biết nên đặt câu hỏi nào cho hợp lý khi bạn chiến đấu để đạt được bất kỳ nguồn động lực để tiến tới.
  3. Sa mạc tuyệt vọng là một hành trình dai dẳng và đơn độc đi qua vùng đất chưa từng được khai phá, nơi mỗi hướng đi mới đều trông như đúng đắn nhưng bạn thường đi quanh quẩn và bạn cảm thấy đói khát những nguồn tài nguyên có thể giúp mình vượt qua nơi hoang vu này. Hãy cẩn thận với “Những ảo ảnh sa mạc”, chúng như những bài hát cám dỗ bạn xuống địa ngục.
  4. Cất cánh ngoạn mục là thời điểm bạn cuối cùng cũng tìm thấy con đường băng qua sa mạc và kết nối mọi thứ về cách xây dựng và phát triển ứng dụng. Nhưng code của bạn vẫn còn bị giấu kín và mỏng manh như một ngôi nhà giấy. Bạn có được tự tin bởi vì  ứng dụng của bạn chạy được, bạn đã thành thạo vài phương pháp thông dụng. Bạn bè của bạn nghĩ rằng giao diện của ứng dụng thật tuyệt nhưng bạn lại sợ hãi khi nhìn vào bên trong nó và bạn không biết làm thế nào để có được code “thành phẩm” (production ready). Làm thế nào bạn rút ngắn khoảng cách để có một công việc thực sự?

Tôi đã phỏng vấn hàng trăm developer đầy tham vọng vài năm trước đây và nghe cùng một câu chuyện lặp đi lặp lại. Mục đích của tôi khi thực hiện bài viết này là giúp bạn tiếp cận cuộc hành trình học code thật cẩn thận, lên kế hoạch đầy đủ và tránh phải rơi vào những cái bẫy thường gặp mà những người đi trước mắc phải.

Bây giờ thì chúng ta quay lại Giai đoạn II…

Giai đoạn II: Dốc mơ hồ

Vậy là, bạn đang ở Giai doạn I – “Trăng mật tay trong tay”, kiểm tra đống huy hiệu và những thử thách đã hoàn thành khi sự tự tin và năng lực của bạn đang tăng lên. Chuyện này cũng không tệ lắm… chả có chút khó khăn nào. Bạn chạm đến “Đỉnh cao của sự hào hứng phi lý” (Peak of Irrational Exuberance)…

Hãy cẩn thận! Bạn sắp bước qua cái ngưỡng làm sụp đổ bao kẻ hiếu học và bị tống vào khu vực “học code khó quá”. Thời điểm chính xác chuyện này xảy ra là khoảnh khắc đầu tiên bạn ngồi xuống trước máy tính, mở trình soạn thảo, và thử xây dựng một project từ đầu mà không có sự trợ giúp nào từ trình duyệt, những đoạn code có sẵn hoặc những gợi ý hữu ích.

Chết thật!!!

Bạn có thể cố gắng kéo chút hơi tàn bằng cách làm theo các bài hướng dẫn (tutorial), nhưng không ai có thể chạm được bầu trời mà không rời khởi mặt đất, và, đến một lúc nào đó, bạn sẽ phải tạo ra điều kì diệu chỉ từ một tập tin rỗng. Bạn đã bước vào giai đoạn thứ hai, nơi mà sự tự tin rơi thẳng xuống mặt đất – “Dốc mơ hồ”:

Dốc mơ hồ

Rồi bạn cũng bắt tay vào làm. Bạn chiến đấu và lần mò ra giải pháp chỉ vừa đủ các tính năng nhưng có gì đó vẫn còn thiếu. Cuộc chiến của bạn với các “con bọ” (bugs) căng thẳng đến nỗi ngay cả phim Starship Troopers trông cũng hết sức bình thường. Bạn cảm giác mỗi một chiến thắng đều nhờ vào công sức của anh cả Google và sự tự tin của bạn tụt dốc thê thảm.

Đây là giai đoạn đặc biệt bực bội đối với cả người huấn luyện cũng như tất cả học viên. Lập trình có lẽ không phải là một nghề hoàn hảo cho tất cả mọi người, nhưng chúng tôi muốn bạn tiến bộ bởi vì đôi khi những điều bất hợp lý trong câu chuyện có thể trở thành những điểm nhấn thành công nhất.

Khi khoảnh khắc tay trong tay kết thúc, các học viên bị dồn đến bờ vực và bị yêu cầu phải nhảy xuống, nhiều người tuyệt vời đầy tiềm năng va đập vào những tảng đá thất vọng mà không học được cách để cất cánh bay lên.

Điều đáng sợ là bạn vẫn chưa được chạm đến những thứ thú vị. Giai đoạn thứ hai này, Dốc mơ hồ, vẫn còn rất sớm trong cả cuộc hành trình. Một khi bạn cuối cùng cũng tiêu diệt đủ “bọ” để chấm dứt tai hoạ thứ tám của Ai Cập và hoàn thành một vài project – đánh dấu sự chấp dứt của Giai đoạn II – bạn vẫn chỉ vừa mới bắt đầu.

Đối với những ai thực sự sẵn sàng tìm kiếm một công việc, sống sót vượt qua Dốc mơ hồ thường là thời điểm bạn quyết định bắt đầu một cuộc sống mới. Nhưng vẫn còn rất nhiều thứ. Và, thật không may, bạn chỉ mới bước vào “Sa mạc Tuyệt vọng”.

Hai yếu tố đóng vai trò quan trọng trong tất cả mọi chuyện

Vậy cái gì thực sự tạo nên khác biệt giữa một giai đoạn và giai đoạn sau nó? Tại sao Giai đoạn II (Dốc mơ hồ) lại kinh khủng so với Giai đoạn I (Trăng mật tay trong tay)? Hiểu ra chuyện này sẽ giúp bạn nhận ra rằng đó không hẳn là lỗi của bạn nếu như cuộc hành trình của bạn giống như những gì tôi vừa mô tả.

Nói một cách đơn giản, có hai yếu tố chính trong mỗi giai đoạn: Mật độ Tài nguyênPhạm vi Kiến thức. Cùng xem chúng là gì trước khi chúng ta đi vào khám phá chúng quyết định Giai đoạn III như thế nào.

Yếu tố 1: Mật độ Tài nguyên

Như tôi vừa nói ở trên, khi bạn vừa mới bắt đầu, dường như có hàng triệu nguồn tài nguyên ở ngoài kia cố gắng lôi kéo bạn vào con đường viết code. Quả thật đúng như vậy!

Thử tìm kiếm từ khoá “Learn to Code” và bạn sẽ bị đập vào mắt một đống thứ hữu ích như công cụ, trình soạn thảo, videos, và bài hướng dẫn. Thật bất ngờ hơn nữa, chúng cũng rất tốt! Từ trước đến nay tôi chưa từng thấy có nhiều phương pháp để bắt đầu học code như vậy.

Nhưng thật không may, vào các giai đoạn sau, mật độ tài nguyên cũng thưa thớt dần. Bất cứ ai nhảy từ lính mới sang sĩ quan có thể nhận ra sự khác biệt to lớn giữa nguồn tài nguyên hiện hữu khi bạn mới bắt đầu so với khi bạn lần đầu tiên tìm kiếm sự giúp đỡ để phát triển những thứ của riêng bạn mà không cần sự hỗ trợ của các khoá học.

Vấn đề này càng thể hiện rõ ràng hơn khi lượng kiến thức cũng tăng nhanh chóng mặt khi bước vào Giai đoạn III, và đây là một trong những lý do mà chúng tôi gọi đó là giai đoạn “Sa mạc Tuyệt vọng”. Một khi bạn vượt qua giai đoạn này và bắt đầu trở nên thoải mái với những thứ bạn cần tìm kiếm, nguồn tài nguyên quay trở lại và bạn có thể làm việc với nhiều công cụ kĩ thuật như các blog công nghệ và screencasts. Một phần trong đó là hiểu ra cách đặt câu hỏi như thế nào.

Mật độ tài nguyên sẽ trông như thế này ở từng giai đoạn (càng nhiều đường gạch cho thấy có nhiều tài nguyên hơn):

Mật độ tài nguyên khi học code

Yếu tố 2: Phạm vi kiến thức

Bây giờ chúng ta sẽ nói về một yếu tố quan trọng khác – Phạm vi Kiến thức. Dưới đây là hình minh hoạ độ rộng của các chủ đề chính mà bạn phải học ở mỗi giai đoạn. Nó trông như thế này:

Phạm vi kiến thức

Khi mới bắt đầu học, những điều bạn cần biết khá ít. Tất cả mọi người bất chấp mục đích, ngôn ngữ, bối cảnh đều phải tìm hiểu vòng lặp for dùng như thế nào, làm sao để xây dựng các điều kiện logic, và các cấu trúc cơ bản của cú pháp lập trình. Thậm chí cũng chẳng có mấy bài học nền tảng ở giai đoạn này vì thế Phạm vi Kiến thức cũng rất hẹp.

Ngay khi bạn học xong những điều cơ bản, bạn thấy sự mở rộng nhanh chóng của Phạm vi Kiến thức khi bạn bắn đầu tìm hiểu những thứ khó hơn như hiểu các lỗi xảy ra và khi nào thì sử dụng những đoạn code mà bạn biết cách sử dụng. Bắt đầu có chút khác biệt ở đây bởi vì không có câu trả lời “chính xác” cho một câu hỏi… mọi thứ trở nên mờ mờ ảo ảo.

Khi bạn tiến vào giai đoạn ba, quả bóng kiến thức càng to hơn nữa. Bạn lúc này phải biết công cụ nào dùng cho mục đích nào, ngôn ngữ nào phải học, nắm vững kiến thức Khoa học Máy tính nền tảng, cách viết modular code, lý thuyết hướng đối tượng, phong cách viết code tốt, và làm thế nào để tìm được trợ giúp (đây chỉ là vài cái bạn phải biết). Mỗi lần viếng thăm Google hoặc Hacker News đưa bạn xuống một hang động kì bí khác và nhiều thứ dồn dập đến mà bạn chẳng biết chúng là gì nhưng có cảm giác là bạn cần phải biết về chúng.

Bạn không biết những cái bạn không biết.

Chỉ khi cuối cùng bạn lần ra vài manh mối và tìm được con đường rời khỏi sa mạc, phạm vi kiến thức cũng bắt đầu hẹp lại. Khi ấy, bạn tìm thấy công nghệ bạn lựa chọn và vị trí của nó trong ecosystem. Bạn cuối cùng biết được những cái bạn không biết và lên kế hoạch vượt qua nó. Bạn sẽ tiếp tục cần nhiều sự tập trung hơn nữa khi bạn tiến về phía trước và bắt đầu công việc mới của mình.

Giai đoạn III: Sa mạc Tuyệt vọng

Sau khi hiểu thấu những yếu tố này, bạn có thể thấy rằng Dốc mơ hồ thật ra chỉ là một ngã rẽ. Hậu quả gây ra do sự kết hợp kinh khủng của sự gia tăng chóng mặt Phạm vi Kiến Thức và sự thiếu hụt Mật độ Tài nguyên là thứ mà tôi gọi là “Sa mạc Tuyệt vọng”

Về bản chất, sa mạc này là nơi bạn nhận ra là ở đâu đó có điểm cuối bạn cần tìm nhưng bạn không biết cách để đến được đó.

Giai đoạn III - Sa mạc Tuyệt vọng

Cuộc hành trình băng qua sa mạc dài dăng dẳng và đầy rẫy hiểm nguy. Bạn sẽ thấy bản thân bị cám dỗ bởi các “Ảo ảnh Sa mạc” trong suốt chặng đường – hàng tá nguồn tài nguyên hấp dẫn xuất hiện tưởng chừng như nắm giữ lời giải cho những gì bạn đang tìm kiếm nhưng chúng lại làm bạn thất vọng, một lần nữa, tại cái nơi mà chỉ có cát và cát kéo dài suốt tận chân trời.

Có thể bạn sẽ đăng ký vài khoá học MOOC ở Coursera hay Udacity hay edX. Hoặc bạn tìm thấy một bài hướng dẫn có mục đích giúp bạn đi hết chặng đường. Bạn từng nghĩ mình đã học được bài học của giai đoạn Trăng mật tay trong tay – không có câu trả lời nào dễ dàng – nhưng sự dụ dỗ được giải thoát quá to lớn và bạn rơi vào lời hứa rằng thứ này sẽ giúp bạn đến đích mà những chỗ khác không thể làm được.

Bạn không thể học tất cả điều này chỉ trong một tuần, một tháng hoặc một khoá học dù cho bất cứ ai nói gì đi nữa, vì thế đừng mắc bẫy!

Có rất nhiều thứ phải học hơn bạn nghĩ đấy. Thậm chí nếu bạn có thể làm vài ứng dụng chạy được, rất khó để không phải cảm thấy lạc lối trong một kế hoạch lớn hơn để trở thành một chuyên gia đích thực. Thật khó để đo được tiến bộ của bạn. Làm thế nào bạn biết được mình cần học gì hay những thứ bạn học có chính xác không?

Thậm chí ngay cả khi bạn nhắm đúng hướng, vẫn rất khó khăn để biết được tiến độ của mình. Bạn có thể cảm thấy hoàn toàn lạc lối cho đến khoảnh khắc khi bạn nhận ra cuối cùng mình cũng có thể xây dựng thứ gì đó trông ổn và chạy được như mình mong đợi. Nhưng, với đầy đủ điều kiện và một chiếc la bàn tốt, bạn thậm chí có thể tung ra vài project “thực sự” đầu tiên và bạn nhận ra bạn cuối cùng cũng đã hiểu.

Chắc chắn là mọi việc đến giờ luôn khó khăn, nhưng có thể công việc phát triển web cũng không đến nỗi tệ lắm… Hãy suy nghĩ tích cực chút xíu đi nào!

Giai đoạn IV: Cất cạnh Ngoạn mục

Bạn đã vượt qua sa mạc và sự tự tin trong bạn đang tăng lên. Kĩ năng Google của bạn trở nên xuất sắc và bạn cuối cùng có thể hiểu được những bài blog dài ngoằn và cả screencast nữa. Có thể bạn đã đi sâu vào một ngôn ngữ cụ thể hoặc framework và bạn cảm thấy tự tin khi có thể xây dựng và công bố một ứng dụng đầy đủ tính năng.

Đây là khoảnh khắc “Cất cánh Ngoạn mục”:

Giai đoạn IV - Cất cánh Ngoạn mục

Mọi thứ trông ổn ở bên ngoài nhưng bạn biết rằng ở tận sâu thẩm bên trong bạn vẫn chưa xong.

Bạn có thể làm cho ứng dụng đó chạy nhưng chuyện gì đang diễn ra ở bên dưới? Code của bạn đầy rẫy chắp vá, và tệ nhất là bạn thậm chí còn không biết chỗ nào không ổn. Sự thông minh sáng suốt của bạn bị chống trả bởi những lỗi vụn vặt và, tệ hơn nữa, một sự nghi ngờ len lỏi khi bạn thâm chí còn không biết là mình đang làm gì.

Đây là một giai đoạn lưỡng cực. Bạn cảm giác như một nửa của bạn là một lập trình viên được trang bị đầy đủ và một nửa kia là một tay gà mờ dấn thân vào một nơi quá sâu vì bị che mắt. Bạn càng tiến bộ lên, bạn càng cảm thấy cảm giác nhộn nhạo không chắc chắn lớn lên khi có ai đó sẽ chỉ ra bạn là một kẻ bịp bợm.

Bạn cảm giác như bạn đã trở thành một lập trình viên nhưng khoảng cách giữa code bạn viết và sản phẩm của một “chuyên gia” không có chỗ nào dính dáng với nhau…

Nhưng đến cuối cùng, bạn sẽ làm được! Đã có rất nhiều lúc bạn tưởng chừng như không làm được rồi! Sa mạc Tuyệt vọng đã ở phía sau và Dốc mơ hồ chỉ là một ký ức xa xăm. Bạn cuối cùng, thực sự, bắt đầu cất cánh. Bạn học hỏi nhanh hơn và thông minh hơn bao giờ hết và, cuối cùng, bạn tiếp thu những giải pháp tốt nhất để đống kiến thức lộn xộn của bạn kết hợp lại thành bộ kĩ năng cần thiết cho công việc.

Giai đoạn Cất cánh Ngoạn mục luôn luôn tốn nhiều thời gian hơn bạn nghĩ và cảm giác dai dẳng hiện hữu bởi vì bạn đã đến quá gần đích… nhưng trước sau gì bạn cũng sẽ đặt chân đến. Nếu bạn đủ kiên trì theo những cách đúng đắn, bạn sẽ thuyết phục ai đó trả tiền cho bạn để bạn tiếp tục học hỏi. Công việc là của bạn.

Làm sao để sống sót vượt qua cuộc hành trình này?

Cuộc hành trình này thường sẽ vô cùng khốc liệt. Điều quan trọng là bạn hiểu được mình sẽ đối mặt với những gì, nếu như bạn muốn làm điều này một mình. Nhưng bạn không cần phải làm vậy. Có nhiều lối tắt để giải quyết những vấn đề này. Học code không quá dễ như mọi người lầm tưởng nhưng cũng không quá khó như trong sâu thẩm nỗi tuyệt vọng của bạn.

Dưới đây, tôi sẽ giới thiệu một số chiến thuật quan trọng bạn có thể sử dụng để luôn giữ mình tiến về một hướng đúng đắn.

I: Sống sót vượt qua giai đoạn Trăng mật tay trong tay

Sự phong phú của những nguồn tài nguyên hiện có trong giai đoạn Trăng mật tay trong tay khiến cho nó khá thú vị. Họ đã làm rất tốt khi giúp bạn hình thành một lối suy nghĩ logic bạn cần cho những giai đoạn sau này. Đây là giai đoạn tuyệt vời để bắt đầu học code vì thế cứ thưởng thức nó và lưu ý hai điều sau:

  1. Bắt đầu bằng việc thử các nguồn tài nguyên khác nhau để tìm ra bạn học tốt nhất ở nơi nào và những loại project nào tạo hứng thú nhiều nhất cho bạn. Đó có thể là Khan Academy với những thử thách ngắn, các bài thực tập ngay trên trình duyệt của Codecademy, quyển Learn to Program của Chris Pine hoặc trải nghiệm thú vị try Ruby của Code School. Nếu bạn có hứng thú với javascript thì FreeCodeCamp cũng là một lựa chọn không tồi. Hãy cởi mở khi bắt đầu và phớt lờ suy nghĩ bạn nên học những gì… tất cả code đều như nhau ở giai đoạn này.
  2. Sau đó chọn một và bám lấy nó khi bạn đã tìm ra cái nào phù hợp với mình. Hãy hoàn thành các bài học giới thiệu của họ, chúng sẽ cung cấp những kiến thức cơ bản để bạn có thể viết những đoạn mã hoặc ứng dụng đơn giản. Sau đó hãy sẵn sàng bắt đầu xây dựng những thứ của riêng bạn.

II: Sống sót vượt qua giai đoạn Dốc mơ hồ

Hầu như tất cả mọi người sẽ trải qua Dốc mơ hồ bởi vì cách duy nhất để trở thành một developer là… develop. Bạn có thể giả vờ xây dựng một cái gì đó dựa theo các hướng dẫn (hoặc các bài hướng dẫn mạo nhận là các khoá học “hoàn chỉnh”), nhưng bạn chỉ đang cố lẩn tránh mà thôi. Các bài hướng dẫn là một cách tốt để làm quen một chút với những kiến thức nâng cao nhưng bạn sẽ cần phải chấm dứt sự ỷ lại này và đối diện với hiện thực vào một lúc nào đó.

Ba gợi ý giúp bạn chuyển sang xây dựng những thứ của riêng mình:

  1. Làm chung với người khác, thậm chí dù người đó cũng là lính mới như bạn. Bạn sẽ ngạc nhiên mọi chuyện dễ dàng hơn biết bao khi debug những lỗi vô cùng khó khi có nhiều hơn hai con mắt.
  2. Đọc code của người khác để làm quen với cách viết code tốt. Cố gắng hiểu tại sao tác giả đoạn code đó lại làm như thế. Bạn không thể trở thành một tiểu thuyết gia mà không đọc một quyển sách nào, đúng không? Hãy luôn quan sát cách các developer khác giải quyết những vấn đề hoặc project nhỏ.
  3. Bắt đầu nhỏ và phát triển liên tục. Bạn nên có các project lớn thú vị cho tương lai, nhưng bạn cần phải quen thuộc với việc debug và tìm kiếm các nguồn tài nguyên có những thử thách tương đối. Chẳng có cách nào khác có thể thay thế được kinh nghiệm.

III: Sống sót vượt qua giai đoạn Sa mạc Tuyệt vọng

Một khi bạn đã quen thuộc với công việc debug, vấn đề lớn nhất của bạn là sự đòi hỏi của một lượng lớn kiến thức và bạn hoàn toàn lạc lối khi không biết làm thế nào để học được tất cả chúng… đây chính là Sa mạc Tuyệt vọng. Trong trường hợp này, cái bạn cần là một sự kiên định tiến về phía trước. Ảo ảnh Sa mạc thể hiện ở những ngã rẽ thú vị, những hang động chằn chịt và những chương trình học-nhanh-kĩ-năng-X, tất cả chúng đều lãng phí thời gian của bạn.

Đây là những lưu ý giúp bạn thoát khỏi Sa mạc Tuyệt vọng:

  1. Có một mục tiêu mạnh mẽ cho thứ bạn muốn đạt được bởi vì nếu không bạn sẽ lẩn quẩn học những thứ thú vị nhưng chẳng mang lại ích lợi nào cả. Nếu bạn có thời gian rảnh, hãy bỏ qua những thứ này…
  2. Tìm một con đường chắc chắn trực tiếp dẫn bạn đến mục tiêu bạn đặt ra và xác minh là nó thực sự sẽ giúp bạn đến đích. Đây là lúc bạn cần đào sâu hơn bên dưới những khẩu hiệu marketing và những gương mặt rạng rỡ trên các website hoặc bìa sách và hỏi bản thân rằng “liệu thứ này có giúp mình hoàn thành mục tiêu mình đề ra?”
  3. Tập trung và tránh các quấy nhiễu, bởi vì nếu bạn là loại người có hứng thú với việc học code, bạn cũng là loại người hứng thú với mọi thứ thú vị. Khi cảm thấy khó khăn khi code, bạn cần phải tiếp tục tiến tới thay vì thử nghiệm mấy thứ trông có vẻ hay ho.

Nếu bạn có thể tìm ra một con đường và đeo đuổi nó, bạn cuối cùng sẽ tiến vào giai đoạn tiếp theo thay vì lãng phí nhiều tháng hoặc mấy năm trời theo đuổi những ảo ảnh trên các đồi cát của sa mạc.

IV: Sống sót vượt qua giai đoạn Cất cánh Ngoạn mục

Cất cánh Ngoạn mục là giai đoạn chuyển giao khó khăn nhất. Bạn có thể phát triển ứng dụng nhưng bạn thực sự muốn trở thành một web developer. Vượt qua giai đoạn này và đạt được các yêu cầu của công việc, bạn cần làm ba việc sau:

  1. Tìm và làm theo các best practice trong lập trình. Bạn cần hiểu sự khác nhau giữa một giải pháp và giải pháp tốt nhất. Best practice là sự khác biệt lớn nhất giữa hacking và xây dựng một đoạn code chất lượng.
  2. Kiểm tra lại kiến thức của bạn bởi vì bạn có thể bỏ lỡ vài lỗ hổng mà ngay cả bản thân bạn cũng chẳng biết. Bạn cần kiểm tra và khắc phục những lỗ hổng này.
  3. Khắc phục những kĩ năng không hấp dẫn mà thường ngày hiếm khi được chú ý đến nhưng vô cùng quan trọng trong giai đoạn chuyển tiếp trở thành một chuyên gia. Những kĩ năng này bao gồm testing, data modeling, architecture và deployment, những thứ rất dễ bỏ sót nhưng hoàn toàn là nền tảng.

Yếu tố quan trọng để đạt được những việc này và vượt qua giai đoạn Cất cánh Ngoạn mục là nhận phản hồi. Tự học có thể hiệu quả nhưng code của bạn hiếm khi dễ đọc, chia thành từng phần, và dễ maintain, đây là những thứ cần thiết khi đi trên con đường lập trình chuyên nghiệp. Bạn cần làm việc với những người khác, những người sẽ thách thức kiến thức của bạn, đặt những câu hỏi khó khăn, và bắt bạn phải vá những lỗ hổng kiến thức của mình.

Hi vọng bạn sẽ thành công trên cuộc hành trình trở thành một developer của mình!

Biên dịch từ bài viết Why Learning to Code is So Damn Hard.

SSS Full-stack Engineer

Love Silicon Straits and want to know more about our company culture, working environment or job vacancies?
Find out more at careers.siliconstraits.vn.

Silicon Straits
Be Challenged. Be Inspired. Be Different.




  • Tùng Xuân

    thanks for slapping my face

Posted by

on March 16, 2016

in ,

Comments

Follow us for more later

or subscribe with