Chỉ sau 4 tháng đọc FreeCodeCamp, tôi đã là một full-stack developer

Chuyện IT
Chỉ sau 4 tháng đọc FreeCodeCamp, tôi đã là một full-stack developer
Bài viết được biên dịch từ lời chia sẻ của một web developer đến từ miền Nam Châu Âu nhận được gần 13k lượt xem trên FreeCodeCamp Xin chào tất cả anh em đang quan tâm đến câu hỏi làm thế nào để trở thành một lập trình viên, Tôi là một gã khờ 33 tuổi vừa được nhận vào vị trí full-stack developer lần đầu tiên trong cuộc đời sự nghiệp của tôi. Tôi thấy cần chia sẻ những kinh nghiệm quý giá này trên FreeCodeCamp – nơi đã giúp tôi thực hiện giấc mơ này. Việc nghiền ngẫm tất cả những chia sẻ của những người đi trước đã giúp tôi có động lực rất nhiều trên hành trình gian nan này. Kẻ thất bại có “học thức” Hành trình sự nghiệp của tôi những năm đầu đời quả không mấy tốt đẹp. Dù có trong tay tấm bằng đại học chuyên ngành xã hội học và tờ giấy chứng chỉ IT, tôi vẫn không thể kiếm cho mình một công việc tử tế. Thậm chí lúc cuộc khủng hoảng kinh tế đang diễn ra, tôi còn suýt phải đi đặt tờ rơi ở cửa kính trước của ô tô để kiếm sống. Cuối cùng, sau nhiều tháng ngập trong vô vọng, tôi chấp nhận làm việc tại một văn phòng bán bất động sản giá rẻ với mức lương bèo bọt vì không muốn tiếp tục phụ thuộc tài chính vào ba mẹ. Thời gian trôi qua, công ty này trở nên tồi tệ hơn tôi nghĩ. Bất chấp sự đầu tư chăm chỉ vào công việc, mức lương không hề nhúc nhích, môi trường làm việc ngày càng xuống cấp, cũng chẳng tồn tại sự phát triển chuyên sâu về kiến thức nào cả. Tôi đã...

Bài viết được biên dịch từ lời chia sẻ của một web developer đến từ miền Nam Châu Âu nhận được gần 13k lượt xem trên FreeCodeCamp

Xin chào tất cả anh em đang quan tâm đến câu hỏi làm thế nào để trở thành một lập trình viên,

Tôi là một gã khờ 33 tuổi vừa được nhận vào vị trí full-stack developer lần đầu tiên trong cuộc đời sự nghiệp của tôi. Tôi thấy cần chia sẻ những kinh nghiệm quý giá này trên FreeCodeCamp – nơi đã giúp tôi thực hiện giấc mơ này. Việc nghiền ngẫm tất cả những chia sẻ của những người đi trước đã giúp tôi có động lực rất nhiều trên hành trình gian nan này.

Kẻ thất bại có “học thức”

Hành trình sự nghiệp của tôi những năm đầu đời quả không mấy tốt đẹp. Dù có trong tay tấm bằng đại học chuyên ngành xã hội học và tờ giấy chứng chỉ IT, tôi vẫn không thể kiếm cho mình một công việc tử tế. Thậm chí lúc cuộc khủng hoảng kinh tế đang diễn ra, tôi còn suýt phải đi đặt tờ rơi ở cửa kính trước của ô tô để kiếm sống. Cuối cùng, sau nhiều tháng ngập trong vô vọng, tôi chấp nhận làm việc tại một văn phòng bán bất động sản giá rẻ với mức lương bèo bọt vì không muốn tiếp tục phụ thuộc tài chính vào ba mẹ.

Thời gian trôi qua, công ty này trở nên tồi tệ hơn tôi nghĩ. Bất chấp sự đầu tư chăm chỉ vào công việc, mức lương không hề nhúc nhích, môi trường làm việc ngày càng xuống cấp, cũng chẳng tồn tại sự phát triển chuyên sâu về kiến thức nào cả. Tôi đã trên 30 tuổi và cảm giác của tôi lúc này về mọi thứ dường như kết thúc khi đối diện với sự cạnh tranh việc làm khốc liệt ở Nam Âu. Và rồi, Reddit đến để giải thoát tôi khỏi mớ bòng bong này, đập vào mặt tôi là hàng tá các tips từ những redditor có tiếng. Những lời khuyên hay ho đó đã vực tôi dậy và giúp tôi phát triển hướng đi mới: trở thành một software developer.

Thay đổi ư?! Nó là cả một quá trình dài

Tôi bắt đầu từ từ học C++ và thực hành một số bài task nhỏ tập hack ranking (chỉ để vui thôi). Cũng chính từ những bước khởi đầu này đã giúp tôi khám phá ra niềm đam mê với code bấy lâu nay bị bỏ quên. Sau vài tháng luyện tập, tôi chuyển sang thực hành với những dự án có giá trị hơn từ Github. 

Quay lại với công việc của tôi vào năm ngoái, tình trạng trở nên báo động: tất cả những công việc đã được tự động hóa và tôi sẽ sớm trở thành người thừa. Tôi phải nhanh chân hơn nữa, sử dụng cả những thời gian rảnh ở nhà để chuẩn bị sẵn sàng cho việc bị sa thải. Đó thực sự là quãng thời gian năng suất nhất trong cuộc đời tôi:

  • Tôi tiết kiệm tối đa đến mức có thể, chỉ sử dụng tiền cho những nhu cầu thiết yếu: tiền thuê nhà, tiền hóa đơn, ăn uống, tiền xăng xe; những chi phí còn lại thì hạn chế tối thiểu.
  • Tháng 6: tôi thực hành với Linux shell, tôi học Git và đăng những dự án tốt nhất tôi thực hành bằng C++ lên Github
  • Tháng 7: học Python và Regex
  • Tháng 8: học chuyên sâu tiếng Tây Ban Nha (đạt chứng chỉ B2) và touch typing (khoảng giữa tháng 7 đến tháng 8, tôi thực sự cần một sự nghỉ ngơi khỏi lập trình để nâng cao một số kĩ năng mềm có lợi cho xin việc sau này)
  • Tháng 9: học lập trình web trên FreeCodeCamp, và tôi nhận ra tôi thích nó hơn là OOP.
  • Tháng 10: tạo Front-end React app
  • Cuối tháng 11: tự tạo full-stack MERN app

Vào cuối năm ngoái, tôi tiết kiệm đủ tiền để duy trì cuộc sống sau thất nghiệp và tự tin thoát khỏi nơi khốn khiếp đó. Dù chỉ có 2 web app, tôi vẫn quyết định chọn đi theo lập trình web và rải hồ sơ ở khắp mọi nơi trên Linkedin. Thật ngạc nhiên, lần này tôi chỉ phải đi phỏng vấn ở 3 nơi. Vị trí đầu tiên làm việc với C++, trong khi công việc thứ 2 và thứ 3 liên quan đến lập trình web (front-end và full-stack) và tôi được cả 2 công ty sau nhận. Cuối cùng tôi chọn công ty thứ 3, tuy hơi xa nhưng ở một nơi phong cảnh lý tưởng, có thể chơi đá banh trong giờ nghỉ giải lao thay vì ngồi ngắm đống warehouse tẻ nhạt như trước kia. Lần nhảy việc này tôi chỉ mất 10 ngày để đi phỏng vấn và tìm việc.

Những bài học tôi rút ra từ quá trình tìm việc

Tôi biết chắc sẽ có nhiều bạn nghĩ điều kiện của tôi khá hơn so với mặt bằng chung: tôi sống ở châu Âu, đã có một nền tảng về IT từ thời trung học và được cung cấp tài chính từ gia đình. Nhưng tôi vẫn muốn đưa ra một số lời khuyên bởi ít hay nhiều nó cũng sẽ phần nào áp dụng được cho tình hình của bạn:

  • Nếu bạn đang có ý định thử sức với lĩnh vực này, xin chúc mừng bạn thật may mắn: thời điểm ngày nay có một sự khan hiếm nhân lực trong ngành lập trình đặc biệt là ở châu Âu. Khác xa với những lĩnh vực khác, các công ty không quan tâm đến bằng cấp, cái họ quan tâm là NĂNG LỰC THỰC SỰ.
  • Kĩ năng mềm là rất cần thiết, nếu bỏ qua nó bạn sẽ là kẻ thất bại. Tin hay không, bạn có cơ hội được nhận cao hơn khi bạn có một quan điểm sống tích cực và năng động. Hãy thể hiện một cách chân thành cho nhà tuyển dụng thấy bạn yêu thích những điều bạn làm và đừng ngại trình bày những điểm mạnh và điểm yếu của bạn. 
  • Hãy đánh bóng hồ sơ Linkedin của bạn: hồ sơ phải hoàn thiện, với dòng bio đầy đủ súc tích và một bức hình thật chuyên nghiệp. Nếu bạn đang thất nghiệp, hãy khéo léo ghi rằng bạn là một software/web developer “đang tìm kiếm cơ hội việc làm.” Hãy để nhà tuyển dụng thấy bạn đang tìm chứ không phải đang cần họ.
  • Hãy giữ resume của bạn đơn giản: sử dụng bản thiết kế tối giản với font chữ dễ đọc. Lọc sơ những kĩ năng bạn cần để trên CV, không nên quá chi tiết hoặc làm quá trình độ của bạn. Đừng liệt kê quá cụ thể công việc trước, hãy để những mô tả đó trên Linkedin. Không nên để thông tin về nơi ở và ngày tháng năm sinh của bạn.
  • Tạo một cover letter ấn tượng, nhưng hãy dành thời gian nghiên cứu công ty bạn sắp apply vào để viết sao cho phù hợp. Tránh văn phong mẫu sáo rỗng. Bạn nên thêm địa chỉ của bạn vào nữa.
  • Học Git, áp dụng nó và đăng tải những dự án của bạn lên Github. Hãy để tối thiểu 2-3 dự án tốt nhất của bạn với cách trình bày ấn tượng nhất. Hãy commit hàng ngày để gây ấn tượng với những nhà tuyển dụng, đừng đơn thuần chỉ commit cho 1 dự án rồi thôi.
  • Thật may mắn nếu bạn không hề gặp trở ngại nào khi viết code, nhưng ở một khía cạnh nào đó, nó đồng nghĩa với việc bạn không học thêm điều gì mới. Điều bạn cần làm đó là thoát ra khỏi vùng an toàn và chuẩn bị cho hướng đi mới trong tương lai.

Hãy lập danh sách những yêu cầu của nhà tuyển dụng – điều họ mong muốn từ ứng viên. Cụ thể như sau:

  • “Yêu cầu tối thiểu 2 năm kinh nghiệm” đồng nghĩa với việc “không yêu cầu kinh nghiệm.” Apply!
  • “Yêu cầu bằng cấp liên quan” đồng nghĩa với “không yêu cầu bằng cấp”. Apply!
  • “Chúng tôi đang tìm kiếm một senior dev” đồng nghĩa với “thực ra thì một junior cũng có thể đáp ứng đấy!”. Apply!

Đọc điều thứ 3 một lần nữa, và sau đó apply. Đó là cách tôi lấy tự tin để đi phỏng vấn và thành công.

Những nguồn tham khảo đáng xem

  • Hãy bắt đầu với kiến thức giới thiệu về CS50 trong khoa học máy tính trên edX CS50’s Introduction to Computer Science, đây đơn giản là những tài liệu cho người mới miễn phí tốt nhất mà tôi từng tìm. Sau đó hãy đọc tiếp lập trình web CS50 bằng Python và JavaScript CS50’s Web Programming with Python and JavaScript.
  • Xem qua lộ trình mới nhất về thiết kế web qua video tại đây.
  • FreeCodeCamp là nguồn hiệu quả nhất để đi từ con số 0 lên con số 10. Ghi chú lại tất cả những gì bạn học được và thực hành nó.
  • Một số subreddit mà tôi theo dõi: r/learnprogramming, r/programming, r/webdev, r/web_design, r/reactjs, r/freecodecamp, r/cscareerquestions (tôi liệt kê một số tiêu biểu thôi nhé). Tôi tự tạo một tài khoản Reddit chỉ đơn thuần cập nhật các subreddit về CS, để đảm bảo rằng feed của tôi không bị nhiễm những thứ không liên quan khác.
  • Udemy: khóa học duy nhất tôi từng mua là MERN Stack Front To Back của Brad Traversy. Những video hướng dẫn rất tuyệt vời sẽ giúp bạn trở thành một chuyên gia trên các platform mạng xã hội. Tuy nó mất phí nhưng tin tôi đi, nó rất đáng đồng tiền bát gạo đấy.
  • Hướng dẫn của Net Ninja về Node/Express tại đây
  • Stack Overflow, cái này thì không cần phải động não quá nhiều. Search GG và đọc định nghĩa là đủ.
  • Học CSS qua các kênh Flexbox Froggy, Grid Garden. Xem xong bạn sẽ vận dụng khá tốt cho các buổi phỏng vấn đấy.
  • Các nguồn sách ebook về JavaScript miễn phí: The Road to Learn React, You Don’t Know JS, và Eloquent Javascript nếu bạn muốn thử cái gì khó hơn.
  • Hackerrank hoặc Leetcode để rèn luyện kĩ năng problem solving (giải toán) của bạn. Nếu bạn thực sự giỏi kĩ năng này bạn có thể apply vào Big-N.
  • Tính chần chừ không dám hành động có thể là một trở ngại lớn trong công việc của bạn. Nếu bạn đang là một con người như vậy, đừng lo lắng hãy yên vị ở một công ty tốt và bạn sẽ cải thiện được tính chất này. 

Và đó là tất cả những gì tôi muốn chia sẻ. Tuy dài dòng nhưng hi vọng bài viết đang và sẽ truyền động lực cho những anh em có chung ước mơ giống như tôi. Chúc may mắn!

Station D via FreeCodeCamp

Đừng quên cập nhật các công việc lập trình Full Stack hấp dẫn tại đây

Bài viết liên quan

Thị trường EdTech Vietnam- Nhiều tiềm năng nhưng còn bị bỏ ngỏ tại Việt Nam

Thị trường EdTech Vietnam- Nhiều tiềm năng nhưng còn bị bỏ ngỏ tại Việt Nam

Lĩnh vực EdTech (ứng dụng công nghệ vào các sản phẩm giáo dục) trên toàn cầu hiện nay đã tương đối phong phú với nhiều tên tuổi lớn phân phối đều trên các hạng mục như Broad Online Learning Platforms (nền tảng cung cấp khóa học online đại chúng – tiêu biểu như Coursera, Udemy, KhanAcademy,…) Learning Management Systems (hệ thống quản lý lớp học – tiêu biểu như Schoology, Edmodo, ClassDojo,…) Next-Gen Study Tools (công cụ hỗ trợ học tập – tiểu biểu như Kahoot!, Lumosity, Curriculet,…) Tech Learning (đào tạo công nghệ – tiêu biểu như Udacity, Codecademy, PluralSight,…), Enterprise Learning (đào tạo trong doanh nghiệp – tiêu biểu như Edcast, ExecOnline, Grovo,..),… Hiện nay thị trường EdTech tại Việt Nam đã đón nhận khoảng đầu tư khoảng 55 triệu đô cho lĩnh vực này nhiều đơn vị nước ngoài đang quan tâm mạnh đến thị trường này ngày càng nhiều hơn. Là một trong những xu hướng phát triển tốt, và có doanh nghiệp đã hoạt động khá lâu trong ngành nêu tại infographic như Topica, nhưng EdTech vẫn chỉ đang trong giai đoạn sơ khai tại Việt Nam. Tại Việt Nam, hệ sinh thái EdTech trong nước vẫn còn rất non trẻ và thiếu vắng nhiều tên tuổi trong các hạng mục như Enterprise Learning (mới chỉ có MANA), School Administration (hệ thống quản lý trường học) hay Search (tìm kiếm, so sánh trường và khóa học),… Với chỉ dưới 5% số dân công sở có sử dụng một trong các dịch vụ giáo dục online, EdTech cho thấy vẫn còn một thị trường rộng lớn đang chờ được khai phá. *** Vừa qua Station D đã công bố Báo cáo Vietnam IT Landscape 2019 đem đến cái nhìn toàn cảnh về các ứng dụng công...

By stationd
Bộ cài đặt Laravel Installer đã hỗ trợ tích hợp Jetstream

Bộ cài đặt Laravel Installer đã hỗ trợ tích hợp Jetstream

Bài viết được sự cho phép của tác giả Chung Nguyễn Hôm nay, nhóm Laravel đã phát hành một phiên bản chính mới của “ laravel/installer ” bao gồm hỗ trợ khởi động nhanh các dự án Jetstream. Với phiên bản mới này khi bạn chạy laravel new project-name , bạn sẽ nhận được các tùy chọn Jetstream. Ví dụ: API Authentication trong Laravel-Vue SPA sử dụng Jwt-auth Cách sử dụng Laravel với Socket.IO laravel new foo --jet --dev Sau đó, nó sẽ hỏi bạn thích stack Jetstream nào hơn: Which Jetstream stack do you prefer? [0] Livewire [1] inertia > livewire Will your application use teams? (yes/no) [no]: ... Nếu bạn đã cài bộ Laravel Installer, để nâng cấp lên phiên bản mới bạn chạy lệnh: composer global update Một số trường hợp cập nhật bị thất bại, bạn hãy thử, gỡ đi và cài đặt lại nha composer global remove laravel/installer composer global require laravel/installer Bài viết gốc được đăng tải tại chungnguyen.xyz Có thể bạn quan tâm: Cài đặt Laravel Làm thế nào để chạy Sql Server Installation Center sau khi đã cài đặt xong Sql Server? Quản lý các Laravel route gọn hơn và dễ dàng hơn Xem thêm Tuyển dụng lập trình Laravel hấp dẫn trên Station D

By stationd
Principle thiết kế của các sản phẩm nổi tiếng

Principle thiết kế của các sản phẩm nổi tiếng

Tác giả: Lưu Bình An Phù hợp cho các bạn thiết kế nào ko muốn làm code dạo, design dạo nữa, bạn muốn cái gì đó cao hơn ở tầng khái niệm Nếu lập trình chúng ta có các nguyên tắc chung khi viết code như KISS , DRY , thì trong thiết kế cũng có những nguyên tắc chính khi làm việc. Những nguyên tắc này sẽ là kim chỉ nam, nếu có tranh cãi giữa các member trong team, thì cứ đè nguyên tắc này ra mà giải quyết (nghe hơi có mùi cứng nhắc, mình thì thích tùy cơ ứng biến hơn) Tìm các vị trí tuyển dụng designer lương cao cho bạn Nguyên tắc thiết kế của GOV.UK Đây là danh sách của trang GOV.UK Bắt đầu với thứ user cần Làm ít hơn Thiết kế với dữ liệu Làm mọi thứ thật dễ dàng Lặp. Rồi lặp lại lần nữa Dành cho tất cả mọi người Hiểu ngữ cảnh hiện tại Làm dịch vụ digital, không phải làm website Nhất quán, nhưng không hòa tan (phải có chất riêng với thằng khác) Cởi mở, mọi thứ tốt hơn Bao trừu tượng luôn các bạn, trang Gov.uk này cũng có câu tổng quát rất hay Thiết kế tốt là thiết kế có thể sử dụng. Phục vụ cho nhiều đối tượng sử dụng, dễ đọc nhất nhất có thể. Nếu phải từ bỏ đẹp tinh tế – thì cứ bỏ luôn . Chúng ta tạo sản phẩm cho nhu cầu sử dụng, không phải cho người hâm mộ . Chúng ta thiết kế để cả nước sử dụng, không phải những người đã từng sử dụng web. Những người cần dịch vụ của chúng ta nhất là những người đang cảm thấy khó sử dụng dịch...

By stationd
Applicant Tracking System là gì? ATS hoạt động ra sao

Applicant Tracking System là gì? ATS hoạt động ra sao

Công nghệ phát triển hướng đến giải quyết và cải tiến cho mỗi quy trình, hoạt động của doanh nghiệp cũng như đời sống. Đối với lĩnh vực tuyển dụng, sự xuất hiện của phần mềm ATS (Applicant Tracking System) mang đến nhiều thay đổi đáng kể, cả đối với nhà tuyển dụng và ứng viên. Vậy phần mềm ATS là gì? Chúng được sử dụng ra sao? Những thắc mắc về phần mềm ATS trong tuyển dụng sẽ được Station D giải đáp tại bài viết dưới đây. Hệ thống sàng lọc ứng viên ATS (Applicant Tracking System) Applicant Tracking System là gì? Applicant Tracking System (ATS) hay còn gọi là Hệ thống quản lý hồ sơ ứng viên là phần mềm quản lý quy trình tuyển dụng từ đầu đến cuối một cách tự động hóa. ATS được thiết kế để giúp nhà tuyển dụng tiết kiệm thời gian và chi phí trong việc thu thập, sắp xếp và sàng lọc hồ sơ các ứng viên. Các tính năng nổi bật của Applicant Tracking System Các tính năng nổi bật của Applicant Tracking System Applicant Tracking System (ATS) là một công cụ quan trọng giúp các công ty quản lý quy trình tuyển dụng hiệu quả hơn. Cùng chúng tôi điểm qua các tính năng nổi bật của ATS: Sàng lọc và quản lý hồ sơ ứng viên Khả năng tìm kiếm và sàng lọc ứng viên là một trong các tính năng nổi bật nhất của ATS. Với việc sử dụng từ khóa và tiêu chí cụ thể, hệ thống có thể nhanh chóng tìm kiếm và sàng lọc các hồ sơ phù hợp, tự động loại bỏ những ứng viên không đạt yêu cầu. Điều này giúp nhà tuyển dụng tập trung vào những ứng viên...

By stationd
Hiểu về trình duyệt – How browsers work

Hiểu về trình duyệt – How browsers work

Bài viết được sự cho phép của vntesters.com Khi nhìn từ bên ngoài, trình duyệt web giống như một ứng dụng hiển thị những thông tin và tài nguyên từ server lên màn hình người sử dụng, nhưng để làm được công việc hiển thị đó đòi hỏi trình duyệt phải xử lý rất nhiều thông tin và nhiều tầng phía bên dưới. Việc chúng ta (Developers, Testers) tìm hiểu càng sâu tầng bên dưới để nắm được nguyên tắc hoạt động và xử lý của trình duyệt sẽ rất hữu ích trong công việc viết code, sử dụng các tài nguyên cũng như kiểm thử ứng dụng của mình. Cách để npm packages chạy trong browser Câu hỏi phỏng vấn mẹo về React: Component hay element được render trong browser? Khi hiểu được cách thức hoạt động của trình duyệt chúng ta có thể trả lời được rất nhiều câu hỏi như: Tại sao cùng một trang web lại hiển thị khác nhau trên hai trình duyệt? Tại sao chức năng này đang chạy tốt trên trình duyệt Firefox nhưng qua trình duyệt khác lại bị lỗi? Làm sao để trang web hiển thị nội dung nhanh và tối ưu hơn một chút?… Hy vọng sau bài này sẽ giúp các bạn có một cái nhìn rõ hơn cũng như giúp ích được trong công việc hiện tại. 1. Cấu trúc của một trình duyệt Trước tiên chúng ta đi qua cấu trúc, thành phần chung và cơ bản nhất của một trình duyệt web hiện đại, nó sẽ gồm các thành phần (tầng) như sau: Thành phần nằm phía trên là những thành phần gần với tương tác của người dùng, càng phía dưới thì càng sâu và nặng về xử lý dữ liệu hơn tương tác. Nhiệm...

By stationd