Tăng gấp đôi lương và tôi đã có một công việc tuyệt vời
Sáu tháng trước, tôi nghỉ việc khi đang là một Javascript Junior Dev và đã đi du lịch vòng quanh Đông Nam Á trong vòng 5 tháng. Một tuần sau khi trở lại UK, tôi nhận được 3 offer về công việc và đã đồng ý với một offer với mức lương gần như gấp đôi mức lương cũ. Quá trình này ko hề dễ dàng nhưng với tôi nó hoàn toàn xứng đáng. Sau đây là cách tôi đã thực hiện
You don’t know JS (Tiếng Việt)”]
1. Mục tiêu
Tôi đã lên kế hoạch cho việc du lịch vòng quanh Đông Nam Á trong vòng 3 đến 6 tháng, và tôi nhận thức rằng tôi muốn có một công việc tốt hơn sau khi quay trở lại. Công việc cũ với vai trò là một Junior JS đã khiến tôi nhận ra 3 điều:
- Tôi yêu việc lập trình, không chỉ như là một sở thích mà còn như là một công việc
- Tôi tận hưởng việc lập trình phía back-end vì nó tránh xa được việc viết CSS và design giao diện, vốn là một phần công việc của frontend
- Tôi không thích Angular nhiều lắm
Với những kiến thức này, tôi đã đặt mục tiêu veef con đường mình muốn trở thành sau khi hoàn thành việc du lịch, và đưa ra những thứ tôi cần để đạt được mục tiêu đó.
Mục tiêu của tôi là trở thành lập trình viên full stack cấp trung.
2. Các yêu cầu
Để tìm hiểu các yêu cầu với một lập trình viên full stack ở mức độ trung bình, và tìm ra các điểm cần cải thiện, tôi đã tìm kiếm các công việc mà mình thực sự muốn. Tôi đã tham khảo thông qua những điều mà họ cần ở một ứng viên và những điều họ đã nói, và nó khá là ổn.
Thông qua quá trình tìm hiểu này, tôi đã lên được một danh sách các điều mà hầu hết các công việc đều yêu cầu:
- Có hiểu biết tốt và sâu về JavaScript
- Biết được ít nhất một framework (React hoặc là Angular)
- Có khả năng tạo ra một REST API (thường là express)
- Có kiến thức trong một hoặc nhiều cơ sở dữ liệu (thường là MongoDB hoặc SQL)
3. Lên kế hoạch
Với những thông tin vừa nhận được, tôi hiểu rằng mình phải hoàn thành một số công việc trong một vài khu vực chủ chốt như sau:
- Tôi cần hoàn thành việc đọc quyển You Don’t Know JS. Quyển sách này đã giúp tôi thực sự hiểu được bản chất cơ bản của JavaScript, và nó sẽ là bàn đạp rất vững chắc để tôi có thể học được những thứ cao cấp hơn.
- Tôi cần phải thành thạo một framework frontend. Tôi đã xem Angular, Vue, React và cuối cùng tôi đã chọn React. Tôi đã thử React một chút trước đó và tôi thích nó. Tôi không khoái Angular lắm, còn Vue thì có vẻ không được yêu cầu nhiều trong các quảng cáo tuyển dụng
- Mặc dù tôi có thể tạo ra một API bằng express từ đầu, nhưng tôi cũng không hoàn toàn tự tin lắm và cảm giác mình chỉ có thể làm được ở mức cơ bản. Tôi cần phải nâng cấp kiến thức phần này, đặc biệt nếu tôi muốn những công việc chú trọng vào phần back end.
- Tôi có thể tiếp tục gắn bó với hệ cơ sở dữ liệu quan hệ (postgreSQL) hoặc học một DB mới. Tôi quyết định rằng mình sẽ bắt đầu học MongoDB vì nó rất rất phổ biến và có thể thêm được vào CV của tôi phần về NoSQL.
Tôi không chắc rằng mình sẽ du lịch trong bao lâu, vì thế tôi đã quyết định việc học của mình như sau:
- Học React (và Redux) trong khi đang đọc You don’t know Javascript
- Cải thiện kiến thức về express và học MongoDB
- Làm ra một cái gì đó với kiến thức tôi đã học được
- Học những thứ khác
Tôi đã làm ra danh sách học hành này khá là hợp lý. Nếu tôi kết thúc việc du lịch của mình trong 3 tháng và đã hoàn thành mục 1 nhưng vẫn đang trên đường với mục 2, thì tôi vẫn có thể ứng tuyển cho vị trí lập trình viên cấp trung – vì chúng thường giới hạn hầu hết trong các công việc chuyên về frontend.
Nếu tôi học về back end đầu tiên, sau 3 tháng tôi vẫn chưa hoàn toàn tự tin với bất kì framework frontend nào. Trong khi việc đó sẽ khá là cần thiết cho bất kì công việc cấp trung nào. Tôi cũng có thể thử ứng tuyển cho vị trí developer chỉ yêu cầu back end, nhưng chúng hầu hết đều có vẻ cần nhiều kinh nghiệm hơn so với những gì tôi có.
4. Học React và Redux, đồng thời đọc You Don’t Know JS
Tôi đã học một ít về React trước đó, thông qua các video Youtube và các tutorial thông thường trên web, nhưng lần này tôi muốn học nó một cách bài bản. Do đó tôi đã đăng ký khoá học ReactJS and Redux: Mastering Web App từ Udemy.
Phải nói rằng khoá học này rất tuyệt vời, và chút kiến thức ít ỏi về React trước đó của tôi đã giúp đỡ rất nhiều, nhưng tôi hầu như không biết gì về Redux. Sau khoá học này, tôi cảm giác rằng mình có thể tạo ra những trang web khá là phức tạp và cũng khá là tự tin với syntax, format của React cũng như các điều khiển dữ liệu của Redux.
Khoá học này tiêu tốn của tôi 2 tuần để hoàn thành, nhưng hầu như tôi chỉ dành ra một tiếng trong một hoặc 2 lần trong tuần. Tôi đang đi du lịch ở Châu Á nên nó không là ưu tiên chính của tôi.
Trong quá trình học React/Redux, khi có laptop, tôi đã đọc vài cuốn cuối cùng trong series You Don’t Know JS. Tôi cũng lưu bản Github trên điện thoại và đọc chúng mỗi khi nghỉ ngơi giữa nhưng lần leo trèo.
Với việc đã có một vài kiến thức thực tế, tôi đã hiểu thêm rất nhiều so với lần cuối thử đọc những cuốn sách này. Những thứ như là Promises sẽ rất khó để hiểu nếu bạn chưa bao giờ sử dụng chúng.
5. Cải thiện kiến thức về express và học MongoDB
Giờ sau khi đã khá thoải mái với việc làm front end, đã đến lúc tôi nâng cấp kiến thức back end cuả mình.
Một lần nữa tôi quyết định sẽ học thêm một khoá ở Udemy. Tôi nhận thấy rằng bởi vì các khoá học này là các gói hoàn thiện, nên quá trình học sẽ giúp bạn thực sự tiến bộ và có thể bao quát toàn bộ qua trình. Tất nhiên là bạn cũng có thể học các nội dung tương tự ở trên các video miễn phí trên Youtube hoặc các hướng dẫn trực tuyến khác, nhưng chúng có vẻ sẽ không bao giờ bao quát được toàn bộ chủ đề tốt như này.
Câu hỏi tiếp theo là tôi sẽ học khoá nào đây. Có những khoá miễn phí và trả tiền, có những khoá ngắn hạn và dại hạn.
Tôi quyết định rằng mình sẽ đầu tư cho bản thân và mua một khoá học (10 đô la là một khoản đầu tư rất nhỏ cho rất nhiều thông tin) và tôi đã giới hạn lại vào 3 khoá. Chúng có độ dài từ 7 tiếng đến 25.5 tiếng.
Tôi đã bị lôi cuốn bởi khoá học 7 tiếng – tôi có thể hoàn thành nó trong một hoặc 2 tuần trong khi vẫn tận hưởng kì nghỉ của mình. Khoá học 25 tiếng đương nhiên là sẽ mất thời gian hơn, nhưng có vẻ sẽ chứa nhiều chủ đề hơn. Vào thời điểm khi đang đi du lịch, tôi quyết định rằng mình sẽ đi du lịch càng dài càng tốt trong khi tài khoản ngân hàng vẫn cho phép, và vì thế khoá học 25 giờ đã được lựa chọn
Node with React: Fullstack Web Development
Thực tế là tôi đã viết một bài review rất đầy đủ về khoá học này tại đây, và nó thực sự là một khoá học tuyệt vời.
Sau khi hoàn thành khoá học về React và Redux trước đó, các kiến thức về React sẽ được tận dụng ở đây. Vì thế bạn sẽ không mất thời gian mà có thể bỏ qua những video đã biết hoặc set tốc độ lên 2x và đọc lướt qua để tham khảo hoặc xem những lời khuyên hữu ích.
Phần backend là những thứ mà course này thực sự giá trị. Nó mô tả rất nhiều chủ đề: oAuth, xử lý email, thanh toán, xử lý API key, MongoDB, mongoose và nâng cao về deploy.
Lý do cho việc course này rất dài là bởi vì nó gồm rất nhiều chủ đề với mức độ chi tiết tuyệt với. Điều này vừa có mặt tốt lẫn xấu, nhưng tôi đã xử lý được bằng cách xem các video ở tốc độ 1.5 và dừng lại khi cần thiết.
Mặc dù vậy khoá học này cũng mất nhiều thời gian hơn khoá trước đó, và tôi đã hoàn thành chúng trong vòng 1.5 tháng.
6. Tôi bắt đầu viết lách
Khi đang ở Trung Quốc, tôi đã quyết định viết một bài về việc phát triển phần mềm ở Trung Quốc đáng sợ như thế nào. Bài viết đó đã được xuất bản ở freeCodeCamp, và giờ nó đã thu hút được 1600 lượt đọc cùng với 791 claps. Tôi đã thực sự ngạc nhiên về cách mọi người đã đọc về những điều tôi viết, và tôi thích điều đó.
Vì thế tôi quyết định rằng mình sẽ thử viết thêm những bài viết khác về những gì tôi đang làm và những thứ thú vị mà tôi tìm thấy. Việc này cũng đồng thời đem lại cho tôi những chủ đề nói chuyện tuyệt vời trong các buổi phỏng vấn.
Viết blog là một cách tuyệt vời để lưu trữ qúa trình của bạn và cho phép bạn nhìn lại mình đã trưởng thành ra sao.
7. Tạo ra thành phẩm từ kiến thức đã học
Giờ thì tôi đã có tất cả công cụ cần thiết, tôi sẽ tạo ra một thứ gì đó từ những thứ đã học được. Đồng thời tôi đã trả qua 3 tháng rưỡi trong chuyến du lịch của mình, và tôi nghĩ rằng mình có thể du lịch thêm khoảng 3 tháng nữa. Điều này khiến tôi cảm thấy đã đến lúc cần bắt đầu nghĩ về công việc nếu như tôi muốn bắt đầu càng sớm càng tốt sau kì nghỉ.
Để ứng tuyển, tôi cần phải cập nhật CV và Portfolio của bản thân. Việc này đưa đến cho tôi một cơ hội rất lớn để sử dụng những gì tôi đã được học vào việc tạo ra một portfolio mới sử dụng Node và React.
Và nó là thực tế những gì tôi đã làm. Với kết quả bạn có thể thấy được ở hình dưới đây. Giống như tôi đã nói trước đó, tôi không phải là một designer, nhưng nó cũng hoạt động khá ổn. Tôi thậm chí còn dùng một WordPress API để lưu trữ các bài blog trên trang của mình.
Tôi đã post trang web của mình lên một subreddit review về web design. Và kết quả là tôi đã thu được rất nhiều lời khuyên hữu ích, và hầu hết trong số chúng đã tiêu tốn của tôi vài tháng tiếp theo để nghiên cứu và học về những điều cơ bản trong việc thiết kế weB.
Một trong số những lời khuyên mà tôi đã làm theo đó là sử dụng các công cụ bootstraps đã có sẵn. Và kết quả là một trang web hoàn toàn mới, sử dụng những kĩ năng mà trước đây tôi chưa từng biết đến, nhưng đã bớt loè loẹt.
8. Ứng tuyển
Chỗ tiếp theo trong hành trình du lịch của tôi là một khu vực leo núi ở Lào. Tôi dự đoán rằng khu vực này sẽ rất hạn chế về wifi và nguồn điện, và tôi đã để lại laptop của mình trong thời gian 2 tuần ở Lào.
Tuy nhiên khi đến khu cắm trại ở Lào, tôi đã nhận ra rằng họ có 4G! Tôi đã mua một sim card bản địa (2 euro cho 1.5GB và 89 cent cho mỗi GB thêm vào) và có một kết nối internet khá ổn định. Ở thời điểm này tôi nhận thấy là mình còn 2 tuần ở Lào và 4 tuần về lại Trung Quốc trước khi quay về nhà. Đã đến lúc để ứng tuyển cho một công việc mới.
9. Quá trình ứng tuyển
Trong quá trình học course tiếp theo trên Udemy, tôi đồng thời cũng ứng tuyển cho hơn 50 công việc, đã gửi mail và trao đổi qua LinkedIn, trao đổi với khoảng 25 người, và đã đảm bảo được 5 buổi phỏng vấn vào tuần ngay sau khi trở về. Hầu hết trao đổi được diễn ra trên mail, nhưng một số người muốn gọi điện nói chuyện trực tiếp nên tôi đã cố hết sức mình để đáp ứng họ (lúc này tôi lệch với họ 8 tiếng lận).
Tôi nghĩ rằng có một cuộc đối thoại trực tiếp là một cách rất tuyệt để cải thiện mối quan hệ giữa bạn và người khác, tăng khả năng họ sẽ mời bạn đến buổi phỏng vấn hoặc giới thiệu cho bạn một công việc.
Nếu bạn thấy không thoải mái với việc gọi điện thoại hoặc Skype thì bạn vẫn có thể sử dụng email bình thường, nhưng tôi nghĩ rằng bạn sẽ bỏ lỡ việc cải thiện các cơ hội của bản thân.
10. Tạo ra nhiều thứ hơn
Một trong những buổi phỏng vấn, người ta đã hỏi tôi về việc tạo ra một mẫu thử (prototype) mà tôi sẽ làm cho một công ty với một trang web ngon lành và một dịch vụ khách hàng tối thiểu. Việc này khá là hay ho vì nó đã bắt ép tôi học về prototyping. Tôi đã viết một series về việc tôi đã tạo ra một mẫu thử và hoàn thiện một trang web . Bạn có thể tham khảo trang web ở đây và các bài viết của tôi ở đây
Việc cuối cùng mà tôi đã làm trong dự án này, đó là tạo ra một con chat bot để gửi lại các order. Tôi đã phải học về việc tạo ra chat bot và nó tốn mất của tôi gần một tuần để tạo ra một phiên bản hoạt động khá ổn. Đó đã là môt trong những yếu tố có tác động lớn khiến tôi có được công việc.
11. Phỏng vấn
Giờ tôi đã có tất cả 5 cuộc phỏng vấn đang chờ mình, việc cần làm bây giờ là biến chúng thành các offer.
12. Chuẩn bị
Tôi hiểu rằng tất cả những thứ tôi làm là để gấn ấn tượng, thông qua cách trả lời từng câu hỏi về điểm yếu của bản thân và những điều mà từng công ty đã làm.
13. Buổi phỏng vấn
Tôi đã luôn thể hiện khá tốt trong các buổi phỏng vấn, mặc dù tôi là người hướng nội tự nhiên. Tôi luôn dạy dỗ bản thân mình để ứng xử hướng ngoại và giao tiếp với người phỏng vấn mình nhiều hơn. Nếu bạn thấy bản thân mình ngại ngùng và bối rối trong các buổi phỏng vấn, tôi đề nghị bạn nên tìm đọc một quyển sách về trí thông minh cảm xúc và các cách để trở nên tự tin hơn.
Tôi đã có những bài test về kiến thức công nghệ ở ba buổi phỏng vấn (2 buổi còn lại là làm online) và sự chuẩn bị của tôi là hoàn toàn xứng đáng. Có một vài vấn đề khá khó, nhưng tôi đã điều chỉnh lại tư duy của mình và hoàn thành chúng khá tốt.
14. Offer và đàm phán
Sau ba buổi phỏng vấn, tôi đã có 2 offer. Sau buổi phỏng vấn thứ 4 tôi biết rằng họ không phải là công ty dành cho mình, vì thế tôi đã từ chối họ bằng cách nói cho họ biết rằng tôi sẽ không cân nhắc offer của họ. Nếu bạn ở trong trường hợp tương tự, cố gắng không dắt mũi họ nếu bạn biết rằng mình sẽ không chấp nhận offer từ phía họ.
Giờ tôi đã có 2 công ty rất muốn tuyển dụng mình. Giờ đã đến lúc để đàm phán. Tôi chưa bao giờ giỏi trong khoản đàm phán hoặc đòi hỏi nhiều hơn, nhưng tôi đã đọc được một vài điều và quyết định sẽ áp dụng nó.
Bạn có thể nghĩ với bản thân rằng: ” Ồ, tôi không muốn mình được đặt kì vọng quá cao, và offer thì khá là ổn, vì thế tôi nên chấp nhận thôi.” KHÔNG, hãy đàm phán!
Hoặc có thể là: “Tôi không muốn bắt đầu với những bưới đi chuệch choạc và trở nên tham lam trong mắt đồng nghiệp tương lai.” KHÔNG, hãy đàm phán!
“Nhưng công ty này nhỏ và …”. “KHÔNG, im đi và đàm phán”
15. Tổng kết
Tôi đã tìm ra những thứ mình cần để có thể có công việc tôi muôn. Tôi đã sử dụng chúng để tạo ra một kế hoạch và mua những khoá học online để tăng tốc thời gian học hỏi.
Tôi đã ứng tuyển rất nhiều công việc và có 5 cuộc phỏng vấn. Tôi đã đám phán với 2 công ty mà tôi thích nhất.
Và giờ tôi đã đang làm việc ở MissionLabs được hơn 2 tuần và tôi rất thích nó!
Còn bạn thì sao?
Theo dõi VnCoder trên Facebook, để cập nhật những bài viết, tin tức và khoá học mới nhất!