- 13 kỹ năng cần có để trở thành Frontend Developer
- Người mới bắt đầu học lập trình máy tính cần tập trung vào những gì?
- 9 lý do bạn nên trang bị một chút kiến thức về HTML và CSS
Dưới đây là hành trình của tác giả Sean Smith từ chưa biết gì đến trở thành kỹ sư phần mềm tại San Francisco trong 12 tháng. Mời các bạn cùng đón đọc!
Một năm trước, tôi - tác giả bài viết đã làm công việc bán thời gian tại trung tâm tập leo núi trong nhà ở Tennessee. Còn hiện giờ tôi đang làm việc tại một startup an ninh mạng ở San Francisco với tư cách một kỹ sư phần mềm.
Để đạt được điều này, tôi đã trải qua một hành trình không thể nào quên và nó làm thay đổi hoàn toàn cuộc đời tôi. Thách thức ở đâu chả có nhưng nếu bạn là người có đủ động lực thì bạn có thể đạt được thành tựu giống như tôi.
Quang cảnh San Franciso, ngôi nhà mới của tôi.
Trong thời đại công nghệ hiện nay, ai trong chúng ta cũng có quyền truy cập vào kho kiến thức của nhân loại. Do đó, tất cả những gì bạn cần để đạt được một vị trí trong lĩnh vực của mình chỉ là THỜI GIAN và SỰ CỐNG HIẾN. Điều này đặc biệt đúng trong lĩnh vực kỹ sư phần mềm.
Năm 2016, cuộc đời tôi sụp đổ
Khi bắt đầu học code vào năm 2016, cuộc đời tôi đang ở trong một giai đoạn cực kỳ tệ hại. Tôi vào trường đại học như một sinh viên sơ cấp y khoa với bằng cấp trong lĩnh vực hóa sinh và nhân chủng học. Tuy nhiên, sau đó tôi nhanh chóng cảm thấy bất mãn với khoa học và y học nên đã quyết định bỏ đại học mà không hề có một kế hoạch dự phòng cụ thể nào cả.
Trong gần 2 năm, tôi làm việc với vai trò người hướng dẫn tại các trung tâm tập leo núi nhưng mọi việc lại không được suôn sẻ cho lắm. Lúc này, tôi nhận ra rằng bản thân cần thay đổi.
Tôi đã ngừng học code trong một thời gian dài nhưng tôi biết đó là công việc mà tôi thực sự muốn làm. Cuối cùng, vào ngày sinh nhật của mình năm 2016, tôi đã tự hứa với bản thân rằng sẽ học code. Tôi sẽ không hối hận và chùn bước.
Tại thời điểm đó, tôi còn khá mơ hồ về các lớp, trang web dạy code (codecamp), thứ đã trở nên phổ biến trong vài năm gần đây. May mắn thay, tôi mau chóng tìm ra freeCodeCamp. Khi nhận ra rằng mình hoàn toàn có thể hoàn thành khóa học của họ bằng cách viết phần mềm cho các tổ chức phi lợi nhuận, tôi đã ngay lập tức gia nhập và quyết định rằng mình sẽ hoàn thành chương trình học mã nguồn mở của freeCodeCamp. Thậm chí, tôi còn chưa xem xét bất cứ codecamp nào khác.
freeCodeCamp mau chóng trở thành cốt lõi trong chương trình học của tôi, một phần vì nó hoàn toàn miễn phí. Bên cạnh đó, tôi đã bổ sung thêm nhiều nguồn tài nguyên khác như các bài giảng podcast trên mạng, các khóa học miễn phí và một liều lượng hợp lý của tài liệu và code mẫu trên Stack Overflow khi cần.
Từng ngày làm việc, tôi vượt qua những thử thách và dự án trên freeCodeCamp, giúp cải thiện dần các kỹ năng của bản thân.
Khi ngồi học và viết code trên máy tính không hiệu quả, tôi tìm cách thu thập kiến thức qua những kênh khác: âm thanh, hình ảnh... Tôi chuyển đổi qua lại giữa các phương thức học khác nhau và điều này rất hữu ích trong việc duy trì sự tập trung và tương tác ở mức cao. Đây là quá trình học cơ bản của tôi và nó cho phép tôi dành nhiều thời gian cho việc học.
Dưới đây là một vài con số (ước tính):
- Tổng thời gian học: Dưới 12 tháng;
- Tổng số giờ: Khoảng 2.500 giờ;
- Tổng các dự án đã hoàn thành: Hơn 70;
- Tổng các khóa học CS - Khoa học Máy tính đã theo dõi: Xấp xỉ 10;
- Tổng số commit trên Github: Hơn 1.500;
- Tổng số dòng JavaScript đã viết: Hơn 20.000.
Hầu hết việc học này diễn ra tại Knoxville, Tennessee, nơi tôi đang sống lúc đó. Tôi rất muốn tới một trong những thành phố công nghệ lớn, vì thế vào một ngày nọ tôi thức dậy và quyết định đã đến lúc lái xe tới San Francisco. Đó chính xác là cách nó đã xảy ra.
Đêm hôm đó, tôi bắt đầu lên đường và khoảng ba tuần sau, tôi mới có mặt tại Bay Area. Một chặng đường dài, tôi dành thời gian để nghe thêm những bài học mới.
Một nơi nào đó ở trung tây Hoa Kỳ.
Đến San Francisco để tìm kiếm công việc thực sự đầu tiên
Sau khi đến San Francisco và hoàn thành chương trình học của freeCodeCamp (front-end, data visualization và back-end). Tôi bắt đầu ứng tuyển xin việc. Tôi đã ứng tuyển vào 65 công ty hoặc hơn nhưng không hề nhận được phản hồi.
Bạn nhớ chứ? Tôi vừa vượt qua gần như toàn bộ chiều ngang của nước Mỹ để tới Bay Area. Tôi không hề biết mức độ cạnh tranh nghề nghiệp trong lĩnh vực này gay gắt như thế nào và cũng không rõ các kỹ năng của mình có đủ để gây ấn tượng với các nhà tuyển dụng hay không. Liệu hoàn thành chương trình học của freeCodeCamp có thực sự tương đương với việc tham gia bootcamp?
Những lần ứng tuyển thất bại đã giúp tôi nhận thấy rằng: Tôi cần phải cố gắng nhiều hơn nữa. Ở đây, thị trường lao động cực kỳ cạnh tranh. Vì vậy, tôi mau chóng điều chỉnh kế hoạch của mình, mở rộng quỹ thời gian và bắt đầu triển khai một dự án phi lợi nhuận trên freeCodeCamp.
Trong khi đó, tôi bắt đầu xây dựng một mạng lưới bạn bè trong thành phố càng đông càng tốt. Việc này diễn ra một cách khá mau chóng và dễ dàng bởi freeCodeCamp có các nhóm hoạt động ở nhiều thành phố trên thế giới.
Tôi đã nhanh chóng nhận được phản hồi từ nhóm freeCodeCamp về các dự án phi lợi nhuận của mình. Một vài dự án React của tôi đã được Quincy Larson, sáng lập freeCodeCamp và Michael D. Johnson, COO freeCodeCamp để ý tới. Và họ đã hỏi tôi rằng có quan tâm tới việc viết các chương trình học React cho họ hay không. Bản thân freeCodeCamp cũng là một tổ chức phi lợi nhuận. Tôi đã giúp xây dựng một công cụ quản lý hội nghị cho Hội nghị về Tội phạm Chống lại Phụ nữ.
Tôi rất vui khi có thể quay lại đóng góp một phần công sức cho cộng đồng freeCodeCamp nên nhanh chóng chấp nhận thử thách của Larson. Các bài học, thử thách React và Redux của tôi hiện đang được tích hợp vào chương trình học mở rộng của freeCodeCamp.
Thêm vào đó, tôi gia hạn thời gian biểu của mình tới tận năm 2017. Trước khi xin việc, tôi sẽ tiếp tục tự học cho tới hết năm 2016. Tôi rời San Francisco băng qua Portland và Seattle sau đó tới Bellingham, Washington.
Trong những ngày ở tây bắc Thái Bình Dương, tôi đã làm việc không ngừng nghỉ để hoàn thành các thử thách React và Redux. Tôi đã hợp tác cùng với một người đóng góp cho freeCodeCamp tới từ New York mang tên Peter Weinberg và xây dựng được khoảng 80 thử thách về lập trình.
Đây có lẽ là một bước tiến quan trọng giúp hồ sơ xin việc của tôi nổi trội giữa đám đông.
Trở lại San Francisco và xin việc thành công
Trở lại San Francisco, tôi sẵn sàng đi xin việc một lần nữa. Tôi quyết định tham gia Outco, một khóa học chuẩn bị cho các cuộc phỏng vấn vào vị trí kỹ sư phần mềm. Tôi luôn phản đối việc chi tiền cho các codecamp, một phần là vì tôi không có tiền, nhưng tôi lại tham gia Outco bởi dưới góc nhìn của tôi họ đang cố phục vụ một mục đích khác. Outco đặc biệt nhắm vào các cuộc phỏng vấn dành cho kỹ sư phần mềm, một quá trình có thể khiến rất nhiều người "hụt hơi", kể cả các kỹ sư nhiều kỹ năng và giàu kinh nghiệm.
Mặc dù thời điểm này tôi có thể viết code JavaScript khá tốt nhưng tôi chưa chắc mình đã sẵn sàng cho việc giải quyết các câu hỏi ngẫu nhiên về thuật toán trên bảng. Đó là một trong những lĩnh vực mà Outco cố gắng chuẩn bị cho sinh viên bởi cho tới nay việc phỏng vấn và trả lời phỏng vấn trên bảng vẫn là chiến thuật ưa thích của nhiều công ty công nghệ. Ngoài ra, tôi chỉ phải thanh toán cho Outco phí đào tạo khi xin được việc.
Trên thực tế, tôi đã tiến bộ vượt bậc với hơn 50 giờ một tuần để học và code. Giờ tôi đặt cược tất cả khả năng của mình để có được một công việc tại một trong những thành phố đắt đỏ và cạnh tranh nhất nước Mỹ.
Tôi đã từng cố gắng hết sức để ứng tuyển vào các công ty và thất bại thảm hại nên giờ tôi cảm thấy rất áp lực và căng thẳng.
Tôi biết hiệu suất làm việc trong vài tháng tới ảnh hưởng lớn đến tỷ lệ thành công của tôi. Tôi tham gia Outco vì muốn những sự hỗ trợ và chương trình được chuẩn bị kỹ lưỡng của họ sẽ giúp tôi hoàn thành chặng cuối của cuộc hành trình. Và tôi đã thành công.
Viết code trên giấy để chuẩn bị cho các buổi phỏng vấn truyền thống
Khi bước sang năm 2017, tôi bắt đầu học tại Outco. Thời điểm này tôi còn làm việc chăm chỉ hơn trước. Hàng tấn thuật toán, thực nghiệm cơ sở dữ liệu, giải thuật trên bảng, các câu hỏi về lập trình... Một lần nữa, tôi lại gửi hồ sơ xin việc và lần này còn nhiều hơn lần trước.
Tất nhiên, sau khi nhận được phản hồi từ các công ty bạn tiếp tục bị cuốn vào những cuộc phỏng vấn dài, đầy căng thẳng.
Luyện tập cho các buổi phỏng vấn hàng ngày đã đủ khó thì việc đứng trước bảng trong một cuộc phỏng vấn khi nhà tuyển dụng hỏi về cây nhị phân thậm chí còn khó hơn (và vâng, những người phỏng vấn đã hỏi tôi về cây nhị phân).
Một lần nữa, các con số sẽ cho bạn thấy một câu chuyện hùng hồn:
- Tổng số hồ sơ đã nộp: 192 (bao gồm 65 hồ sơ nộp trong năm 2016)
- Tổng số cuộc phỏng vấn qua điện thoại: 17 cuộc;
- Tổng số bài kiểm tra lập trình có thể hoàn thành tại nhà: 6
- Tổng số lần test kỹ năng: 5
- Tổng số lần phỏng vấn tại chỗ: 3
- Tổng số công ty đồng ý tuyển dụng: 1
- Tổng thời gian để nhận được offer: 6 tuần
- Tỷ lệ thành công: 0,52%
Công ty nhận tôi vào làm là TruSTAR Technology và tôi rất vui khi được làm việc cùng họ. TruSTAR xây dựng một nền tảng cho phép các công ty chia sẻ dữ liệu sở hữu trí tuệ qua mạng nhằm ngăn chặn và giảm thiểu các cuộc tấn công mạng.
Hiện tại, tôi làm việc ở mảng front-end của ứng dụng TrueSTAR và sử dụng các kỹ năng JavaScript đã được học từ freeCodeCamp. Tôi tích lũy được rất nhiều kinh nghiệm và thực sự ngạc nhiên trước sự chuẩn bị quá tốt của mình cho công việc này. Tôi đã bắt đầu có những đóng góp ý nghĩa vào codebase của TrueSTAR.
Dưới đây là một số lời khuyên của tôi dành cho bất cứ ai muốn đi theo con đường này:
- Bạn cần có những kỹ năng thực tế và phải học hỏi rất nhiều. Điều đó có nghĩa là bạn phải đầu tư nhiều thời gian cho việc học. Hãy đam mê những gì bạn muốn học để có thêm động lực.
- Xây dựng các dự án là cách tuyệt vời để học và không khó tìm một dự án mã nguồn mở hoặc các dự án có tác động cao để tham gia khi bạn có đủ kiến thức.
- JavaScript và React là những ngôn ngữ tuyệt vời để học và có nhu cầu cao (tùy từng thị trường)! Tuy nhiên, hãy cứ mạnh dạn tìm hiểu các ngôn ngữ mà bạn quan tâm.
- Điều quan trọng là hãy tạo hoặc tham gia một mạng lưới bạn bè, những người cũng đang học code hoặc đang là những kỹ sư phần mềm. Mạng lưới bạn bè trong thành phố, trên Facebook... sẽ giúp bạn dễ dàng tìm ra các dự án để tham gia hoặc mau chóng tìm được sự giúp đỡ khi cần.
- Nếu bạn có đủ khả năng, hãy cố gắng kiên nhẫn. Đây là thứ tôi phải vật lộn nhiều nhất.
Đó là tất cả những gì tôi đúc kết được sau chuyến hành trình băng qua nước Mỹ để bắt đầu sự nghiệp như một kỹ sư phần mềm. Chắc chắn rằng mỗi người trong chúng ta sẽ có một con đường riêng, tôi nghĩ thế. Điều đó thật thú vị!
Hãy tìm con đường của riêng bạn và nếu bạn tin tưởng vào bản thân thì đừng ngại bỏ ngoài tai những quan điểm của người khác. Bạn có thể bỏ qua cả quan điểm của tôi, nếu cảm thấy không phù hợp.
Cơ hội dành cho bạn luôn hiện hữu trong ngành công nghiệp công nghệ. Bạn sẽ giành được nó nếu có đủ quyết tâm.
Là một kỹ sư, công việc của bạn có thể là giải quyết các vấn đề và nếu bạn muốn tự học, vấn đề đầu tiên bạn cần quan tâm đó là bạn sẽ tự dạy cho bản thân mình như thế nào.
Tác giả: Sean Smith
Xem thêm: Tại sao tôi học code thay vì theo đuổi sự nghiệp trong lĩnh vực tài chính?
Chúc mọi người vui vẻ!