Roadmap cho lập trình viên trong năm 2018
Trước khi quyết định trở thành một lập trình viên hay làm bất cứ điều gì, trước hết chúng ta phải hiểu tại sao bạn lại muốn đi theo con đường này. Mỗi quyết định sẽ đòi hỏi thời gian đáng kể của cuộc đời bạn. Và thời gian, sau tất cả, vẫn là tài nguyên quan trọng nhất của đời người: ...
Trước khi quyết định trở thành một lập trình viên hay làm bất cứ điều gì, trước hết chúng ta phải hiểu tại sao bạn lại muốn đi theo con đường này. Mỗi quyết định sẽ đòi hỏi thời gian đáng kể của cuộc đời bạn. Và thời gian, sau tất cả, vẫn là tài nguyên quan trọng nhất của đời người:
Có thể bạn quan tâm:
Khi chọn một con đường sự nghiệp mới, nó cần phải hội tụ được những điều sau:
1. Vẫn có tiềm năng trong 10 năm tới. Điều này nên được đánh giá nhiều năm trong tương lai để đảm bảo cho bạn sự ổn định của công việc.
2. Nhu cầu đối với người có kỹ năng này phải cao hơn lượng cung. Càng có ít người giỏi, bạn càng dễ được nhiều công ty săn đón.
3. Luôn có mức lương cao. Bạn không muốn phải mất nhiều năm để leo lên bậc thang của công ty cho đến khi thật sự có tí dư dả.
4. Một ngành không đòi hỏi bằng cấp chuyên môn từ một trường đại học. Bạn không muốn phải mất 4 năm tiếp theo chỉ để bổ sung một cái bằng mình còn thiếu mới có thể vào làm được. Và tôi nghĩ rằng có những lựa chọn thay thế tốt hơn như là chọn một khóa bootcamp đắt tiền.
5. Có khả năng bắt kịp với những người đứng đầu trong ngành với quãng thời gian ngắn nhất.
6. Nó phải cho phép bạn có nhiều lựa chọn nghề nghiệp bất kể tương lai sẽ ra sao. Ví dụ: bằng cách học code, bạn có thể hiểu rõ hơn về các công nghệ sắp tới mới như blockchain và điện toán đám mây để chọn hướng đi mới tiếp theo cho mình.
7. Thích thú. Điều quan trọng nhất. Liệu bạn có thể chấp nhận việc mình làm khoảng 40 giờ một tuần trong một thời gian dài?
Nghề lập trình sẽ có những chặng như trên mà bất cứ ai cũng đều phải đi qua. Một trong những cuốn sách yêu thích của tôi, có tiêu đề là So Good They Can’t Ignore You, viết rằng niềm đam mê vẫn là chưa đủ. Bạn không nên đi vào ngành du lịch vì bạn “đam mê” về du lịch. Hầu hết mọi người tìm thấy niềm đam mê của mình bằng cách đấu tranh và làm việc chăm chỉ để làm chủ một kỹ năng. Một khi mọi người bắt đầu thừa nhận những kỹ năng có giá trị của bạn, và bạn có thể cảm thấy được sự tôn trọng đối với những kỹ năng này, đó là khi bạn phát triển niềm đam mê cho những gì bạn làm.
Bạn muốn tự mình đánh giá và xem nghề này có thực sự phù hợp với bạn không
Điều quan trọng bạn cần biết: hãy ghi nhớ rằng 2 tháng đầu sẽ cảm thấy như đang leo lên một ngọn núi không thể vượt qua được. Mỗi hướng dẫn, khóa học hoặc bài tập sẽ làm cho bạn cảm thấy như bạn là người duy nhất trên thế giới mà không biết xài công cụ này. Chúng tôi gọi đây là Hội chứng của người ngốc (Impostor’s Syndrome): nơi bạn cảm thấy như bạn là người duy nhất không biết thông tin này và bạn bị bao quanh bởi sự tự nghi ngờ. Tuy vậy, hãy mạnh mẽ lên! Bạn sẽ đạt được thành công. Hãy yên tâm rằng tất cả chúng ta đều cảm thấy như vậy khi mới bắt đầu học.
Bạn sẽ học được rằng một nhà phát triển tốt không nhất thiết phải ghi nhớ một núi tài liệu hướng dẫn. Mà họ học về cách giải quyết các vấn đề bằng việc sử dụng tất cả các công cụ có sẵn cho bạn.
Tôi là ai? Vì sao bạn nên nghe theo tôi?
Trước tiên, tôi là một nhà phát triển phần mềm đã làm việc ở nhiều nơi khác nhau bao gồm cả thung lũng Silicon cũng như là một số công ty công nghệ hàng đầu. Tôi đã rất may mắn trong sự nghiệp của mình và đang cố gắng trong 2018 để giúp người khác học các kỹ năng phần mềm. Nhưng tôi không phải là một thiên tài về code cũng như chả có tốt nghiệp với bằng khoa học máy tính.
Tất cả bắt đầu từ nhiều năm trước … Tôi muốn có một sự thay đổi nghề nghiệp và quyết định tự dạy cho mình một chương trình máy tính.
Tôi đã dành tháng đầu tiên để tránh đọc bất kỳ hướng dẫn hoặc sách nào. Thay vào đó, tôi dùng khoảng thời gian này để tìm kiếm cách tốt nhất nhằm học hỏi và có được việc làm. Tôi không muốn lãng phí thời gian và học phải các công nghệ đã lỗi thời, hoặc học những điều mà bản thân sẽ quên sau một tháng. Khi đấy, tôi nhìn vào các bài đăng tuyển dụng, nói chuyện với các nhà phát triển, xem xét các khóa học trực tuyến, bootcamps, và thậm chí đọc các bài báo của các nhà dự đoán về viễn cảnh công nghệ trong 20 năm tới. Dựa vào đó, tôi tạo ra một chương trình học cho bản thân mình với mục tiêu: tập hợp số lượng lớn các bài học để có thể sử dụng trong khoảng thời gian ngắn nhất.
Nếu bạn yêu thích tác phẩm của Tim Ferriss nhiều như tôi, bạn sẽ yêu thích điều này. Nó không tập trung vào việc làm một công việc dễ nhất có thể. Thay vào đó, nó tập trung vào những điều quan trọng nhất để được sử dụng một cách tối ưu. May mắn thay cho bạn tôi đã sàng lọc tất cả mọi thứ trong quá trình này.
Mặc dù tôi đã dành một tháng để lên kế hoạch học tập của mình thay vì thực sự học tập, nhưng đó là một lợi ích lâu dài bởi vì tôi không bị “mù”. Đó là vì tôi biết phương hướng mình đang đi và nơi đến là ở đâu.
Thật đáng buồn là có nhiều người uyên bác về kỹ thuật nhưng lại không có khả năng dạy một người mới tốt. Và khi đó, tôi chợt nghĩ rằng sao mình không thử chia sẽ và giúp các bạn, những người đồng môn vẫn con đang loay hoay mới bước vào.
Kể từ đó, tôi đã tư vấn cho các công ty công nghệ của Fortune500, tổ chức hội thảo code, tham khảo ý kiến về các sách công nghệ và trao đổi kỹ thuật. Bây giờ tôi đang ở một vị trí mà bản thân không phải làm việc cho bất cứ ai. Tôi yêu sự nghiệp này và tôi nghĩ nhiều người cũng sẽ thích nó.
Chúng ta nên học ngôn ngữ gì?
Bạn sẽ trở thành một ninja Javascript vì những lý do sau:
→ Javascript ở khắp mọi nơi. Mỗi công ty có một trang web hoặc một ứng dụng cần người có kiến thức về Javascript. Có vô số các tin tuyển dụng luôn đòi hỏi tới ngôn ngữ này.
→ Với việc xuất hiện của Node.js, bạn giờ đã có thể sử dụng Javascript để tạo một full-stack app ( bạn có thể sử dụng javascript để xây dựng cho toàn bộ dự án của mình). Sử dụng các công cụ như Electron, React Native và nhiều thứ khác, Javascript cho phép bạn tạo bất cứ ứng dụng nào trên desktop, mobile và thậm chí cho cả VR. Bạn có thể kiểm soát robot bằng cách sử dụng một tool gì đó như Jonny-Five. Ngay cả blockchain cũng có thể được tạo ra với javascript.
→ Nếu bạn không đọc điều đầu tiên và đang nghĩ về cái gì khác, hãy để tôi nhắc lại: Nhu cầu về các chuyên gia về Javascript là rất lớn. Thường thì các developer có thể liên hệ với nhà tuyển dụng và headhunter nhiều lần trong tuần để được cung cấp việc làm.
→ Cộng đồng Javascript đang phát triển với tốc độ chóng mặt. Bạn sẽ được học những công nghệ mới cùng một lúc với những người đã từng làm việc trong ngành trong nhiều năm.
Hãy tin vào những gì tôi nói. Đây là một cộng đồng lớn với rất nhiều nhu cầu cũng như cơ hội.
Trong phần sau tôi sẽ nói về cách thức để trở thành một lập trình viên với những bộ kĩ năng tốt nhất chỉ trong vòng 5 tháng. Xin hãy lưu ý rằng đây là một khóa học không dễ dàng nhưng sẽ cho kết quả tuyệt vời nếu bạn đủ sự kiên nhẫn.
Chúng ta sẽ tập trung vào các kỹ năng có nhu cầu nhiều nhất vào năm 2018. Bạn sẽ nhận ra là ta không có thời gian cho các công nghệ lạc hậu như PHP hay jQuery. Tuy không có gì sai trái với chúng nhưng dựa trên một số email mà tôi nhận được qua nhiều năm, rất nhiều người đang có nhu cầu về tài chính và có gia đình họ phải hỗ trợ. Thời gian là quan trọng đối với bất cứ ai và chúng ta luôn muốn sử dụng chúng triệt để.
Tháng đầu tiên: Nhìn xa trông rộng
Câu hỏi lớn bạn cần trả lời: Cách máy tính, internet và các trang web làm việc? Làm thế nào tôi có thể xây dựng một trang web?
Hiểu kỹ thuật Feynman để bạn thực sự học được trong quá trình 5 tháng tiếp theo thay vì chỉ sử dụng bộ nhớ “ngắn hạn” của mình.
- Internet hoạt động như thế nào: Tham gia khóa học tại LearnCode.academy và thenewboston.
- Tổng quan về khoa học máy tính: Khóa học Crash
- Thực hiện theo khóa học Harvard này trên youtube. Đây là nguồn học “vàng” khoa học máy tính tốt nhất.
- Làm thế nào để sử dụng dòng lệnh: Hãy học từ Zed Shaw.
- Làm thế nào để xây dựng một trang web / có được một tên miền / và nó chạy ngon lành: LearnCode.academy Video.
- HTML, CSS và Javascript khớp với nhau như thế nào: Khóa học FrontendMasters về phát triển web.
- Tìm hiểu để xây dựng các trang web với Bootstrap. Sau đó chuyển qua Bootstrap 4 và thêm các component bạn thấy ở đó vào một trang web mẫu. Hiểu những lợi ích mà nó mang lại và viết CSS cho chính mình.
- Hiểu cách sử dụng template để xây dựng các trang web bằng themes và templates miễn phí.
- Nếu bạn có thời gian, bạn có thể thực hiện một vài khóa học về phần HTML và CSS tại freeCodeCamp.
Tháng thứ hai: Javascript
Câu hỏi lớn bạn cần trả lời: Làm thế nào để javascript khiến máy tính làm những gì như bạn muốn?
Đây là nơi tập trung nhiều nhất vào những tháng sau đó. Javascript giải quyết vấn đề gì? Cũng như bắt đầu viết một số chương trình bằng Javascript để làm cho trang web của bạn hoạt động. Bắt đầu với hai khóa học này: một và hai
- Đọc cuốn sách Eloquent Javascript.
- Tìm hiểu về DOM.
- Đọc bài viết tuyệt vời này về lập trình.
- Tìm hiểu cách bạn có thể sử dụng chrome developer console để viết javascript. Thực hiện khóa học CodeSchool này (chỉ phần giao diện điều khiển). Sau đó, học cách chèn thẻ <script> trong html của bạn để chạy tệp javascript.
- Học khóa học của Kyle Simpson, và hoàn thành phần còn lại của khóa học bạn bắt đầu tháng đầu tiên. Cuối cùng, hoàn thành năm khóa học này từ CodeSchool.
- Sử dụng bài hướng dẫn này từ freeCodeCamp cho tra cứu nếu bạn có thắc mắc trong suốt 5 tháng.
- Tìm hiểu các tính năng ES6 mới trong loạt bài gồm hai phần này: một và hai.
- Học git và Github với các khóa học này. Tạo tiểu sử Github và bắt đầu thực hiện commit mỗi ngày. Bắt đầu phát triển một trang web mẫu.
- Terminology/Jargon: video này và đây nữa.
- Cuối cùng, xem danh sách phát tuyệt vời này trên youtube. Bỏ qua các phần trên jQuery và Grunt.
- Bắt đầu sử dụng hướng dẫn này bất cứ khi nào bạn có câu hỏi và bạn muốn đào sâu vào một chủ đề.
Tháng thứ ba: Javascript + NPM + Xây dựng Website của bạn
Câu hỏi lớn bạn cần trả lời: Tôi có thể xây dựng một trang web tìm kiếm chuyên nghiệp và hiểu hết toàn bộ quá trình?
Công cụ Google Developer Tools → tìm hiểu cách debug các chương trình và trang web của bạn bằng cách sử dụng Google Chrome. Hoàn thành khóa học CodeSchool này nếu bạn vẫn chưa học qua nó.
- Bắt đầu tham dự các cuộc meet up về code và Javascript.
- Tìm hiểu sự khác biệt giữa javascript đồng bộ và không đồng bộ.
- Event loop là gì? → Một khi bạn có một nền tảng tốt về Javascript thì khóa học này thật sự sẽ thay đổi tất cả.
- Tìm hiểu về Promises và Async Await trong ES7
- Cuối cùng, xem khóa học này của Douglas Crockford
- Tìm hiểu về lịch sử của các mô-đun trong Javascript
- Tải về node.js và npm. Tải lodash từ npm và sử dụng browserify để sử dụng Common Js imports. Học cách đó ở đây. Hiểu được tại sao NPM là một công cụ tuyệt vời cho các nhà phát triển.
- Vào cuối tháng, bạn nên có một trang web cá nhân với codebase trên Github. Sử dụng Github pages để có một trang web trực tiếp miễn phí.
Tháng thứ tư: React.js (hoặc Vue.js)
Câu hỏi lớn bạn cần trả lời: Vấn đề gì thường được giải quyết bởi React hoặc Vue?
Tôi yêu React.js. Trên thực tế, tôi dạy nó cho người khác và làm các cuộc hội thảo về nó. Do đó hãy tìm hiểu React.js trước trừ khi bạn có một lý do chính đáng để học Vue.js. Bởi dù nó mới và thú vị, nhưng nhu cầu việc làm hiện vẫn chưa có.
- React → Thực hiện theo thứ tự: một, hai, ba. Sau đó đọc qua các tài liệu này. Nếu bạn có tiền, đây là hướng dẫn React tốt nhất.
- Nếu thích bạn có thể: Học Redux
- Xây dựng một React application mẫu bằng cách sử dụng create-react-app
- Deploy app của bạn trên Heroku.
- Deploy app của bạn trên GitHub pages.
- Bắt đầu theo dõi 10 bài báo hàng đầu trên Medium và đọc bất kỳ bài viết nào về code. Đăng ký vào danh sách email để luôn được cập nhật với những gì đang xảy ra trong ngành: Javascript và React.
- Bắt đầu xây dựng online resume của bạn. Bạn có thể xem thêm tại đây.
Tháng cuối: Servers, Databases và tổng kết lại mọi thứ
Câu hỏi lớn bạn cần trả lời: Chỗ chứa nào cho servers, databases, và raspberryPis trong JavaScript?
- HTTP, JSON và AJAX. Tìm hiểu cách những điều này cho phép bạn giao tiếp với máy chủ.
- Tìm hiểu cách xây dựng một máy chủ API. Sau đó làm chủ node và Express.js.
- Một khi bạn đã hoàn tất việc này, hãy sử dụng một API thú vị và xây dựng một ứng dụng đơn giản.
- Đăng ký theo dõi kênh youtube computerphile và xem video của họ. Mặc dù các chủ đề có thể khó khăn nhưng nó sẽ giới thiệu cho bạn một số điều tuyệt vời.
- Computer/Server/OS là gì: mua một raspberryPi và xây dựng máy chủ của riêng bạn. Tìm kiếm các dự án khác nhau trên youtube mà bạn có thể làm với raspberryPi của mình.
- Bạn cần phải hiểu được vì sao chúng lại có mặt tại đây cũng như những vấn đề mà chúng giải quyết: Testing, Machine Learning, Time Complexity, SQL, UX/UI, Continuous Delivery, Basic Data structures (Arrays và Objects).
*** Tôi đã có thể nghe mọi người la hét với tôi rằng “Bạn mất trí rồi à?! Bạn không nghĩ rằng testing là quan trọng à? “Nhưng xin hãy lắng nghe tôi. Testing là rất quan trọng để trở thành một developer tốt, và mọi người nên học các kỹ năng đó. Tuy nhiên, chúng tôi đang cố gắng xây dựng một nền tảng ở đây. Thật dễ dàng để bắt đầu lặn sâu vào một chủ đề, nhưng nếu không có nền tảng, bạn sẽ lạc lối ngay lập tức. Ngoài ra, trong hầu hết các bài đăng công việc tôi tìm thấy, có rất ít đề cập đến các kỹ năng nói trên. Chỉ cần để việc học chúng cho đến khi bạn vào làmviệc. ***
Hãy nhớ rằng: mục tiêu của bạn là làm việc theo cách hiệu quả nhất.
Techtalk via hackernoon