Hướng dẫn chi tiết cách trở thành lập trình viên trong 5 tháng

Ngoc-Anh Mai
Ngoc-Anh Mai
Published in
14 min readJul 15, 2017

Dịch từ bài: This developer’s 5-month guide to learn code and get hired is all you need của Andrei Neagoie — software developer ở Toronto.

Anh âý cũng có một website: www.kunuretreats.com.

Năm ngoái, tôi đã viết một bài hướng dẫn học code từ đâù và được tuyển dụng trong 5 tháng. Từ đấy đến giờ, có vài thứ đã thay đổi, nên tôi muốn viết một bài có tính cập nhật và hoàn thiện hơn. Nếu bạn là một lập trình viên mới vào nghề hoặc quan tâm đến ngành này, bài viết này là dành cho bạn. Nếu bạn là một lập trình viên đã có kinh nghiệm, bạn có thể tìm thấy một vài link có ích trong post này.

Nếu bạn thấy bài viết này quá dài, bạn có thể bỏ qua phần đầu và bắt đầu đọc từ phần Hướng dẫn từng bước một trong 5 tháng. Nhưng tôi sẽ cảm thấy tổn thương đấy.

Ok, bạn vẫn ở đây. Tốt rồi. Tiếp tục nhé.

Sử dụng các khóa học online và hầu hết công cụ miễn phí, bạn có thể học được những kỹ năng có giá trị mà cho phép bạn có một công việc trong một ngành công nghiệp thú vị như một phần thưởng cũng như thách thức và có nhiều cơ hội đi khắp nơi trên thế giới.

Lưu ý quan trọng: bài viết này là một dạng hướng dẫn chi tiết để trở thành một lập trình viên. Nhưng nếu để ý, bạn sẽ thấy đây cũng là cách mà bạn có thể áp dụng cho mọi thứ mà bạn muốn học.

Bắt đầu nào.

Vì sao lại là lập trình?

Trước khi nói về trở thành một lập trình viên, chúng ta phải đào sâu vào việc vì sao bạn muốn đi trên con đường này. Đây là một vài lý do hợp lý:

- Bạn muốn làm việc trong một ngành công nghiệp, ngành mà có nhu cầu cao về kỹ năng và có nhiều khả năng nắm một vai trò quan trọng trong chuỗi cung ứng.

- Bạn yêu việc làm việc tự do (không phải đến văn phòng — location-independent). Bạn muốn một kỹ năng có thể giúp bạn đi khắp nơi mà vẫn dễ dàng tìm được việc làm. Nếu bạn quyết định đến Iceland ngày mai, bạn muốn chắc chắn rằng bạn sẽ không gặp khó khăn khi tìm một công việc.

- Bạn nghĩ thay đổi là tốt và việc học không bao giờ kết thúc. Vì thế tại sao không làm một điều gì đó mới?

- Bạn nhận ra sự thay đổi giữ 2002 và 2017 và công nghệ đã thay đổi nhiều như thế nào trong 15 năm, và bạn muốn trở thành một người đứng đầu trong một ngành công nghiệp có tác động to lớn đến thế giới.

Nhưng bạn có thể nghĩ: “Tôi không có bằng về ngành khoa học máy tính và tôi thậm chí còn không biết cách mà internet hoạt động”. Đừng lo, chúng tôi sẽ hướng dẫn bạn. Đọc tiếp nhé.

Khi chọn một con đường sự nghiệp mới, đây là một vài điều phải có:

  1. Nó phải thích hợp cho 10 năm tới.
  2. Nhu cầu của thị trường phải cao hơn nguồn cung.
  3. Bạn có thể có một mức lương cao xứng đáng với kinh nghiệm của bạn trong ngành này.
  4. Ngành này không yêu cầu một bằng chứng nhận đặc biệt nào từ đại học.
  5. Bạn có thẻ bắt kịp những người giỏi nhất trong nganhfnayf trong một thời gian ngắn.
  6. Bạn phải thấy vui.

Với kinh nghiệm của mình, tôi thấy lập trình đáp ứng tất cả các tiêu chí trên. Hãy tự đánh giá nó và xem nó có đúng với bạn không.

QUAN TRỌNG: Hãy nhớ rằng 2 tháng đầu tiên bạn sẽ cảm thấy như đang leo một ngọn núi không thể vượt qua. Mỗi hướng dẫn, khóa học hoặc bài học sẽ khiến bạn cảm thấy như bạn là nguời duy nhất trên thế giới không biết những thứ này. Hãy giữ vững niềm tin. Bạn sẽ vượt qua được và sẽ có nhiều khoảnh khắc aha (aha moment) hơn trong quá trình. Chúng tôi gọi đó là hội chúng mạo danh ( Impostor’s Syndrome): khi mà bạn cảm thấy như mình là người duy nhất không biết những điều này và lúc nào cũng cảm thấy mất tự tin vì điều đó. Hãy yên tâm là chúng ta sẽ cảm nhận con đường này khi chúng ta học một điêu gì đó mới.

Cái mà bạn sẽ học để trở thành một lập trình viên giỏi không phải là nhớ cả đống tài liệu mà là học cách để giải quyết các vấn đề bằng những công cụ sẵn có mà bạn biết.

Tại sao bạn phải nghe tôi?

Wow, bạn khá quyết liệt đấy. Nhưng tôi nghĩ đây là một câu hỏi sai. Một vài năm trước, tôi đã muốn một sự thay đổi trong sự nghiệp và quyết định tự học lập trình.

Tôi sử dụng tháng đầu tiên mà không dùng bất cứ phương pháp hay sách gì. Thay vào đó, tôi sử dụng nó để tìm cách phù hợp nhất với mình để học và được tuyển dụng. Tôi học từ kinh nghiệm của những người khác, nhìn vào những tin tuyển dụng, nói chuyện với những lập trình viên có kinh nghiệm, xem những khóa học online, tìm kiếm các bootcamp và thậm chí đọc các bài báo của những nhà nghiên cứu mà theo đó, công nghệ sẽ gắn theo chúng ta trong 20 năm tới. Dựa trên những điều đó, tôi đã tạo nên một chương trình giảng dạy cho mình tập trung vào sự hiệu quả (tập trung vào việc học để có công việc trong một thời gian ngắn).

Mặc dù tôi đã sử dụng một tháng để lên kế hoạch học tập thay vì thực sự học, nó đã có một lợi ích trong cho một kế hoạch dài hơi vì tôi không muốn chạy mà không có phương hướng. Tôi biết nơi mà mình muốn đến và tối có một bản đỗ rõ ràng để đến đích. Bạn cũng có thể làm được như vậy.

Vì thế nên tôi hiểu rằng tôi đã từng ở nơi mà bạn đang đứng và tôi biết con đường này sẽ dẫn đến đâu. Khi tôi bắt đầu, tôi đã ước rằng có một điều gì đó như bài viết này có thể phác họa mọi thứ cho tôi. Tôi đã đọc và học từng video, hướng dẫn và các khóa học có yêu cầu về thời gian,và tôi vẫn đang tiếp tục làm điều đó.

Từ đó, tôi đã tư vấn cho rất nhiều dự án, viết code, và tiếp tục phát triển những kỹ năng của mình. Tôi yêu sự nghiệp này và tôi nghĩa nhiều người cũng yêu thích nó cũng như những lợi ích mà nó mang lại. Vì thế, tôi có một sứ mệnh lafgiups những người khác,những người mà cũng muốn có một sự thay đổi như thé,

Ok, câu cuối vừa rồi có một làm quá…..

Chúng ta sẽ học ngôn ngữ gì?

Bạn sẽ trở thành một cao thủ Javascript vì các lý do sau:

- Nó có ở mọi nơi. Mọi công ty dều có một website cần một ai đó biết javascript.

- Với sự mở đầu của Node.js, bạn có thể sử dụng javascript để tạo nên một app hoàn chỉnh (nói một cách đơn giản, bạn có thể dùng javascript để tự xây dựng dự án của mình)

- Nếu bạn bỏ qua điểm đầu tiên và bạn nghĩ về một thứ gì đó khác, hãy để tôi nhắc lại: Ngành này cần rất nhiều chuyên gia về javascript. Không phải bình thường khi một lập trình viên được các nhà tuyển dụng liên hệ rất nhiều lần trong một tuần cho 1 job offers.

- Cộng đồng javascript phát triển rất nhanh. Một vài phàn nàn về sự không cần thiết của javascript từ khi có nhiều công cụ mới được phát triển hàng ngày. Tuy nhiên, chúng ta có thể sử dụng nó làm lợi thế của mình. Bạn có thể học những công nghệ mới cùng lúc với những người đã có kinh nghiệm lâu năm trong ngành này.

Chém gió đủ rồi. Bắt đầu nào.

Ở dưới, bạn sẽ tìm thấy những gì mà tôi tin là cách tốt nhất để bạn sự dụng thời gian của mình. Sau 5 tháng, bạn có thể có khả năng tự đứng trên công việc lập trình không phải ở level ban đầu, chỉ cần bạn và sự quyết tâm của mình.

Hướng dẫn chi tiết trong 5 tháng

Tháng đầu tiên: Bức tranh toàn cảnh.

Đây là một câu hỏi lớn cần trả lời: Máy tính, internet và wesite hoạt động như thế nào?

Đây là hướng dẫn cụ thể:

Muốn biết cách mà internet hoạt động? Đọc bài này trên learncode.academy và bài này từ thenewboston.

Follow khóa học này của harvard trên youtube, cái là mỏ vàng thực sự từ những thấy giáo về khóa học máy tính giỏi nhất.

- Học cách sử dụng câu lệnh. Đọc cái này từ Zed Shaw.

- Học cách build một website/mua một domain và sử dụng nó. Xem cái này

- Learn cách html.css và javascript hoạt động cùng nhau. Học khóa frontend master code này (chỉ có và bao gồm các bài học về javascript)

- Nếu có thời gian, bạn có thể học một vài khóa về html và css trên freecoecamp.

Tháng thứ 2: javasvript

Đây là một câu hỏi lớn cần trả lời: javascript làm cuộc sống tốt hơn như thế nào?

Đây là nơi mà hầu hết sự tập trung của bạn sẽ dành cho trong tháng này. Javascript có thể giải quyết những vấn đề gì?

Đây là hướng dẫn:

- Bắt đầu viết những chương trình đơn giản trên javascript để làm website của bạn chạy được.

- Học cách sử dụng nó bên ngoài của một trình duyệt.

- Bạn có thể xem video này của Kyle Simmson và kết thuc nó trong tháng đầu tiên.

- Hoàn thành 5 khóa học javáscript trên codeschool.

- Bạn có thể học git và github bằng khóa học này, tạo một github profile và bắt đầu cam kết hàng ngày. Đây, bạn sẽ muốn bắt đầu lập trình bằng một website đơn giản.

- Để hiểu nhiều hơn về các thuật ngữ/từ chuyên môn, xem cái nàycái này.

- Cuối cùng, xem playlist Youtube tuyệt vời này.

Tháng thứ 3: javascript + Jquery + tự xây dựng website của bạn

Đây là câu hỏi lớn cần trả lời: tôi có thẻ xây dựng một website cá nhân chuyên nghiệp và hiểu toàn bộ quá trình này ko?

Đây là hướng dẫn.

Học cái này bằng Jquery trên freecodecamp. Mặc dù nó đã trở nên ít thông dụng hơn, nhưng biết về điều này và sức mạnh của nó có thể sẽ có ích trong tương lại. Sau này, bạn sẽ học về cách mà những freamworks như react.js, vue.js và angular sẽ thay thế hầu hết công cụ này.

Học công cụ phát triển của google. Học cách sửa lỗi chương trình của mình và website sử dụng gg chrome bằng cách học khóa này.

Bạn cũng sẽ muốn bắt đầu tham gia các buổi gặp với những người cùng đam mê về lập trình và javascript.

Học về event loop. Một khi bạn có một sự hiểu biết chắc chắn về javascript, bài talk này sẽ là một kẻ thay đổi cuộc chơi.

Cuối cùng, học khóa này bởi Douglas Crockford.

Cuối tháng, bạn sẽ có một website cá nhận bằng codebase trên github

Tháng thứ 4: servers. Databases và kết nối các điểm nối

Đây là câu hỏi lớn cần trả lời: đâu là nơi mà servers, databases và rasberry pis kết hợp với nhau?

Đây là hướng dẫn:

Học về servers/OS.

Mua một Raspberry Pi và tự build 1 server của bạn.

Xem cách dự án khác nhau mà bạn có thể làm với nó trên youtube.

Làm một script đơn giản để khiến đèn gắn trên raspberry pi nhấp nháy. Bạn có thể follow khóa này, host website trên raspberry và cảm thấy how cool you are — mình cool như thế nào.

Học testing hàng ngày, machine learning, time complexity, SQL và UX/UI. Bạn không cần hiểu rõ về tất cả, chỉ cần hiểu về nguyên lý và những vấn đề mà nó có thể giải quyết.

Tôi đã nghe nhiều người kêu gào:”Mày điên à? Mày không nghĩ testing là quan trọng?” nhưng nghe này. Tôi đồng ý rằng những điều trên là quan trọng để trở thành một lập trinh viên giỏi, và mọi người nên học những kỹ năng ấy. Tuy nhiên, chúng ta đang cố gắng xây dựng nền móng. Rất dễ để bắt đầu đào sâu vào một chủ để cụ thể, nhưng nếu không có nền tảng, bạn sẽ không thực sự hiểu được sự quan trọng của nó hay những cái đó sẽ liên quan đến nhau như thế nào trong quá trình làm việc. thêm vào đó, trong hầu hết những tin tuyển dụng mà tôi tìm thấy, rất ít khi có nhắc đến tất cả các kỹ năng trên. Hãy tiết kiếm thời gian học những điều này đến khi bạn có một công việc

Bạn cũng có thể tự làm một dự án nhỏ bằng firebase như 1 database

Đọc The Two Pillars of JavaScript Part 1The Two Pillars of JavaScript Part 2.

Tháng cuối: react.js hoặc angular 2

Đây là câu hỏi lớn cần trả lời: react và angular có thể giải quyết vấn đề gì?

Tôi có một định kiến lớn vì tôi yêu react.js. một sự thật là tôi đã dạy nó cho những người khác và đã run những workshop về nó. Vì thế, hãy tin tôi lần này thôi. Học react trừ khi bạn có một lý do tốt hơn học angular 2.

Hướng dẫn.

- Học react. Làm 1, 2, 3 cái theo yêu cầu. Sau đó, tìm những tài liệu chính thống và đọc hết nó.

- Học redux. Xem khóa học này và đừng để đầu bạn nổ tung. Sau đó đọc tài liệu này.

- Xây dựng một ứng dụng đơn giản bằng react và redux.

- Triển khai app của bạn trên Heroku

- Triển khai app của bạn trên Github page

- Bắt đầu theo dõi Dan Abramov, Eric Elliott, David Gilbertson, Quincy Larson, and Tyler McGinnis trên medium và twitter và đọc mọi thứ họ viết.

- Bắt đầu làm CV online của bạn. Xem cái nàycái này. Tôi cũng đã viết một bài về cái này và bạn có thể xem dù mặc bài này đã quá dài và bạn bắt đầu nhìn tôi với một ánh mắt hình viên đạn.

Tóm lại

Sau 5 tháng, bạn có thể đạt được những tiêu chuẩn sau:

  1. Học html và css. Sau đó mua một domain và hosting từ Bluehost và làm 1 website. Điều này sẽ có trong porfolio của bạn, vì thế hãy học cách update và chỉnh sửa nó. Đây là cái của tôi sau 5 háng. Không quá cầu kỳ, nhưng dùng được.

2. Bắt đầu học javascript.

3. Bắt đầu đưa dự án của bạn lên github. Nhà tuyển dụng sẽ nhìn vào profile github của bạn và mức độ hoạt động của bạn ở đây. Hãy cam kết 5 lần/tuần vào dự án cá nhân của bạn.

4. Học google và sử dụng Stack overflow khi bạn gặp vấn đề. 99% vấn đề mà bạn gặp từ đầu có thể được tìm thấy online. Hoặc, tham gia Javascript IRC Channel và hỏi khi bạn gặp khó khăn.

5. Trở nên thoải mái khi dùng những câu lệnh để làm việc. luôn mở nó khi thực hành và cố gắng sử dụng nó thay vì GUI (graphical user interface).

6. Học một ngôn ngữ mới nhất và theo xu hướng trên javascript và học cách giải quyết vấn đề với nó.

7. Tham gia các buổi meetup và bắt đầu nói huyện với mọi người. Bạn sẽ bị ngợp lúc bắt đầu. Đừng lo, chỉ cần bắt đầu gặp các coder khác và bao quanh mình với những thuật ngữ và từ chuyên môn.

8. Bắt đầu nghe postcast Javascript Jabber. Nó sẽ giúp bạn quen với các thuật ngữ khi phỏng vấn đang đến gần, nó sẽ ko làm bạn choáng ngợp.

9. Bắt đầu ứng tuyển. hầu hết những chỗ này sẽ có phỏng vấn tập trước với những coder chuyên nghiệp để đánh giá khả năng của bạn, nhưng bạn có thể dùng nó như là một nơi để thực tập những câu hỏi về lập trình và hỏi chuyên gia về những câu hỏi mà bạn có

10. Bạn đầu ứng tuyển các công việc mà bạn thừa khả năng. Bạn sẽ nhận được một vài cuộc phỏng vấn, nhưng bạn không nên tập trung vào những công việc này.

11. Đảm bảo rằng profile linkedin của bạn nhìn đẹp. đứng sử dụng quá nhiều thời gian vào CV. Làm trong 1 trang và show tất cả những kỹ năng bạn học được trong những tháng trước đó. Tự học sẽ thể hiện rất nhiều lợi thế. Nhớ rằng CV của bạn chỉ giúp bạn được phỏng vấn, sau đó, nó sẽ như giấy vệ sinh(ok, một ví dụ tồi vì giấy vệ sinh cũng có ích).

12. Phỏng vấn và gây ấn tượng với những kỹ năng mà bạn có. Không phải tất cả sẽ tốt nhưng một lần nữa, không nhiều lập trình viên sẽ học được tất cả mọi thứ chỉ trong 5 tháng.

Hãy nhớ điều này: hầu hết mọi người nghĩ họ cần tập trung 100% vào thứ gì trước khi có thể sang bước tiếp theo. Nhưng với hầu hết kỹ năng, bao gồm lập trình, bạn càng dành nhiều thời gian và tâm trí bao nhiêu thì bạn càng lâu đạt được mục đích. 20% cuối cùng sẽ đáp ứng cho công việc tốt hơn khi làm việc cho những dự án thực tế (và được trả tiền). Vì thế chúng ta chỉ nên dành 80% vào kiến thức để sử dụng thời gian một cách hiệu quả.

Thách thức lớn nhất

Cong nghệ luôn thay đổi. ĐIều này đặc biệt đúng với javascript. Mọi thứ thay đổi rất nhanh và rất khó để biết tất cả mọi kiến thức, thuật ngữ hay framework. Cái mà bạn cần biết là cách mà mọi thứ kết hợp với nhau như thế nào và mỗi công nghệ dùng để giải quyết chính xác vấn đề gì. Quan trọng nhất, bạn cần biết là nó tồn tại nên bạn có thể nhìn thấy và tìm ra thời điểm nó(thay đổi) sẽ đến.

Lập trình viên là người giải quyết vấn đề. Học cách giải quyết vấn đề với những công cụ sẵn có của bạn.

Động lực

Tập trung vào sự hiệu quả. Lý do hầy hết chúng ta từ bỏ mục đích vì chúng ta không nhìn thấy kết quả. Bằng cách tập trung vào đúng thứ cần thiết, nó sẽ khiến việc học trở nên thú vị. Nhưng nó chưa dừng lại ở đây. Việc học không bao giờ là đủ, và mục đích của bạn là có một công việc càng sớm càng tốt từ điểm bắt đầu này. Mỗi ngày bạn đang được trả lương để học.

Chúng ta đang xây dựng một cái cây (quá trình). Khi cái cây lớn lên, rễ sẽ bám ở khắp nơi, khả năng học những kiến thức mới của bạn cũng sẽ phát triển như thế. Bạn sẽ dễ dàng học những kiến thức mới hàng ngày.

Hãy để năm nay là năm mà bạn sẽ chấp nhận mạo hiểm, học một kỹ năng có nhu cầu cao, cảm thấy sợ hãi, có nhiều trải nghiệm mới và nhận lại những cơ hội mới. Chỉ cần thử thôi.

Here is the next post in the series:
How To Become A Senior Developer

--

--