CS50 Python có đáng không?

Bài viết đầy cảm hứng này của Austin Tackaberry kể cho chúng ta về hành trình trở thành Kỹ sư phần mềm tự học của anh ấy chỉ trong vài tháng. Mọi người đều có một hành trình khác nhau và chúng tôi hy vọng điều này sẽ truyền cảm hứng cho bạn để bắt đầu hành trình của riêng mình


'Trong bài đăng này, tôi sẽ chia sẻ cách tôi đi từ con số không (ish) đến lời mời làm việc kỹ sư phần mềm sáu con số trong chín tháng trong khi làm việc toàn thời gian và tự học

CS50 Python có đáng không?

Ảnh của Artem Sapegin trên Bapt

Bất cứ khi nào tôi bắt đầu đọc một câu chuyện thành công, tôi sẽ ngay lập tức tìm hiểu lý lịch của tác giả, hy vọng nó sẽ phù hợp với câu chuyện của tôi. Tôi chưa bao giờ tìm thấy ai đó có cùng nền tảng với tôi và rất có thể của tôi sẽ không khớp chính xác với bạn

Tuy nhiên, tôi hy vọng rằng câu chuyện của mình sẽ truyền cảm hứng cho những người khác và đóng vai trò như một điểm dữ liệu có giá trị có thể được thêm vào bộ dữ liệu câu chuyện thành công của bạn


tiết lộ đầy đủ

Tôi đã tham gia khóa học Visual Basic for Applications (VBA) ở trường trung học (chín năm trước). Trong khóa học kỹ thuật dành cho sinh viên năm nhất (bảy năm trước), tôi đã học một số ngôn ngữ C, Python, Matlab và Labview. Tôi đã tốt nghiệp một trường đại học loại giỏi với bằng kỹ sư hóa học và điểm trung bình khá (ba năm trước). Tôi đã không thực hiện bất kỳ chương trình nào ngoài trường học, ở trường trung học hoặc đại học, cho đến khi tôi quyết định muốn học vào năm ngoái

Sau khi tốt nghiệp đại học, tôi có một công việc là Kỹ sư Quy trình tại một nhà máy lọc dầu. Tôi đã làm việc ở đó cho đến khi tôi chuyển nghề sang Kỹ sư phần mềm


Tại sao tôi muốn thay đổi nghề nghiệp

Tôi thích giải quyết các vấn đề kỹ thuật, nhưng tôi biết mình muốn tham gia vào thế giới kinh doanh/khởi nghiệp vào một thời điểm nào đó. Tôi luôn giữ suy nghĩ về bằng MBA trong đầu, nhưng mỗi lần tôi nhìn vào bảng giá của các trường hàng đầu, sự quan tâm của tôi lại giảm dần

Vào ngày 27 tháng 5 năm 2017, tôi lại thấy mình đang tìm kiếm trên Google về MBA và bằng cách nào đó, tôi tình cờ tìm thấy kỹ thuật phần mềm. Nó có vẻ như là một sự phù hợp hoàn hảo

Các kỹ sư phần mềm đang có nhu cầu ngày càng tăng, mức lương rất cao và đó là ngành hoàn hảo để bước vào thế giới khởi nghiệp mà không cần nhiều vốn ban đầu. Tất cả những gì bạn cần là một chiếc máy tính và cơ hội của bạn là vô hạn (loại)

Không có ngành kỹ thuật nào khác, bạn chỉ cần có một ý tưởng, bắt đầu xây dựng nó, hiển thị nó cho người dùng và lặp đi lặp lại với ít vốn và rào cản gia nhập thấp. Trong kỹ thuật hóa học, về cơ bản bạn cần một nhà máy đang hoạt động hoặc rất nhiều tiền để thiết kế một nhà máy nếu bạn có ý tưởng cho một sản phẩm mới

Tôi đã nghe nói về việc mọi người bỏ việc và tham gia một bootcamp, nhưng càng đọc về nó trực tuyến, tôi càng nhận ra rằng bạn hoàn toàn có thể tự học tất cả nếu bạn cam kết và tập trung.

Bạn có thể lập luận rằng bạn đang bỏ lỡ mạng lưới và lời khuyên nghề nghiệp được cung cấp bởi bootcamp. Điều này có thể đúng, nhưng tôi may mắn là tôi đang sống ở Bay Area, nơi cho phép tôi tham dự một số buổi gặp mặt, vì vậy tôi đã kết nối theo cách đó

Bên cạnh đó, trường hợp xấu nhất là tôi nhận ra rằng mình không thể tự mình làm được, và sau đó tôi sẽ nghỉ việc để tham gia một bootcamp


Mục đích

CS50 Python có đáng không?

Ảnh của Robert Baker trên Bapt

Bạn cần phải có một mục tiêu. Đặc biệt nếu bạn đang cố gắng học trong khi làm việc toàn thời gian. Thật dễ dàng để việc học của bạn cứ kéo dài nếu bạn không có bất kỳ áp lực bên ngoài nào thúc đẩy bạn. Vì vậy, bạn cần phải tạo ra áp lực bên trong. Mục tiêu của bạn nên đơn giản và định lượng. Bạn nên thực hiện đủ nghiên cứu để đưa ra một mục tiêu hợp lý. Của tôi là như sau

Nhận một công việc kỹ sư phần mềm trong vòng một năm với mức lương tương đương hoặc cao hơn mức tôi đang kiếm được ngay bây giờ


Kế hoạch

CS50 Python có đáng không?

Ảnh của Glenn Carstens-Peters trên Bapt

Một khi bạn có một mục tiêu, bạn cần một kế hoạch để giúp bạn đạt được điều đó. Đây là nơi bạn tiêu thụ càng nhiều câu chuyện thành công càng tốt. Không ai trong số họ sẽ phù hợp với tình huống chính xác của bạn, nhưng bạn có thể nhận được một số lời khuyên từ mỗi người. Tôi đã phát triển (và lặp đi lặp lại) kế hoạch của mình bằng cách sử dụng các tài nguyên như subreddit học lập trình, diễn đàn freeCodeCamp và phương tiện

Vào ngày 27 tháng 5 năm 2017, tôi quyết định sẽ lao vào viết mã và tôi lao đầu vào. Ngày hôm đó, tôi quyết định bắt đầu làm việc không quá 40 giờ mỗi tuần để có thời gian viết mã sau giờ làm việc và vào cuối tuần. Thật may mắn cho bạn, tôi đã làm khá tốt việc ghi lại quá trình của mình

Kế hoạch của tôi, qua nhiều lần lặp đi lặp lại, cuối cùng trông giống như thế này

  1. Tham gia khóa học Giới thiệu về CS để có hiểu biết cơ bản vững chắc về các khái niệm CS cốt lõi

  2. Theo dõi freeCodeCamp cho đến khi tôi có thể tự xây dựng các ứng dụng web ngăn xếp đầy đủ cấp danh mục đầu tư

  3. Tái cấu trúc để dọn dẹp mã, thêm thử nghiệm, tập trung vào các khái niệm nâng cao

  4. Đóng góp cho mã nguồn mở

  5. Chuẩn bị cho các cuộc phỏng vấn việc làm

Để bắt đầu, kế hoạch của tôi rất đơn giản. Vào thời điểm đó, tôi nghĩ rằng mình sẽ làm theo Hướng dẫn kỹ thuật của Google, vì vậy tôi đã bắt đầu với khóa học giới thiệu được đề xuất của họ, Udacity CS101

Tháng 0 - Udacity CS101, Harvard CS50

Đỉnh cao của việc đưa ra quyết định lớn này đã cho tôi rất nhiều năng lượng. Tôi sẽ bắt đầu viết mã ngay khi đi làm về và sẽ không dừng lại cho đến khi đi ngủ. Và sau đó một lần nữa tất cả các ngày cuối tuần. Phần trăm hoàn thành được theo dõi của Udacity CS101, đó là một động lực lớn đối với tôi. Tôi đã ghi lại tỷ lệ phần trăm hoàn thành của mình mỗi ngày sau khi viết mã. Tôi đã hoàn thành 75% đầu tiên trong 10 ngày. 25% cuối cùng nặng về đệ quy và nó khó hơn một chút đối với tôi. Nói chung, tôi mất 20 ngày để hoàn thành Udacity CS101

Khi tôi đang dùng Udacity CS101, tôi đã bắt đầu đọc subreddit học lập trình khá nhiều. Tôi đọc được rằng điều quan trọng đối với các nhà phát triển tự học muốn thay đổi nghề nghiệp là hoạt động trực tuyến. Tôi quyết định tạo các tài khoản Twitter, Reddit, Stack Overflow, Medium và Quora mới bằng tên đầy đủ của mình để tôi có thể xây dựng sự hiện diện trực tuyến

Ngoài ra, tôi quyết định ngừng đọc các phương tiện gây mất tập trung như Instagram, Facebook và các subreddits không liên quan đến lập trình. Tôi sẽ chỉ kiểm tra điện thoại của mình để xem các tin tức và bài đăng liên quan đến lập trình. Điều này rất quan trọng trong việc đảm bảo rằng tôi đang tìm hiểu về các lộ trình học tập và tài nguyên học tập tốt nhất. Chính vì điều này mà tôi biết đến Harvard CS50 trên edX

Ban đầu tôi hài lòng với việc chỉ thực hiện một khóa học giới thiệu, nhưng dường như mọi người đều giới thiệu Harvard CS50, vì vậy tôi quyết định đi sâu vào khóa học tiếp theo đó. Sinh viên CS tại các trường khác đã tham gia khóa học này và cho biết họ đã học được nhiều hơn trong CS50 so với một hoặc hai năm học CS tại trường đại học của họ. Sự đồng thuận chung là khóa học khó nhưng đáng. Đến cuối Tháng 0, tôi đã hoàn thành 5 bài giảng đầu tiên và bài tập về nhà


Tháng 1 - Harvard CS50, Linux, Buổi gặp mặt đầu tiên, freeCodeCamp

Tôi đã hoàn thành CS50 vào khoảng nửa tháng. Tôi sẽ không bình luận quá nhiều về trải nghiệm của mình với CS50, vì tôi đã viết một bài chuyên sâu về trải nghiệm của mình tại đây

TLDR. Đó là một khóa học tuyệt vời, tôi đánh giá cao nó. David Malan là một giảng viên xuất sắc và có rất nhiều tài nguyên để giúp bạn vượt qua nó. Bạn bắt đầu bằng C, chuyển sang Python và sau đó kết thúc với việc phát triển web. Nó rất dày đặc và có rất nhiều tài liệu, nhưng tôi nghĩ nó rất xứng đáng

Sau CS50, tôi quyết định thiết lập XPS 15 của mình để khởi động kép Windows và Ubuntu. Đó là một ngày cuối tuần khó chịu. Tôi đã làm hỏng các phân vùng của mình và gần như làm hỏng máy tính xách tay của tôi. Tôi đã suýt bỏ máy tính xách tay của mình và mua một cái mới

Tôi từ từ bỏ Windows và cuối cùng chỉ sử dụng Ubuntu. Tôi muốn ép bản thân làm quen với dòng lệnh mà tôi nghĩ có tác dụng ở một mức độ nào đó, nhưng tôi vẫn còn một chặng đường dài phía trước

Tôi đã bắt đầu 100 ngày viết mã để đảm bảo rằng tôi luôn tập trung và viết mã mỗi ngày. Điều quan trọng là phải ghi lại tiến trình của bạn. Nếu bạn đang tiến bộ mỗi ngày, nó sẽ không nhiều nhưng khi bạn nhìn lại một tháng hoặc vài tháng, bạn sẽ nhận ra rằng bạn đã thực sự đạt được một số tiến bộ, điều đó thúc đẩy bạn tiếp tục.

Tôi biết rằng kết nối mạng sẽ tạo ra hoặc phá vỡ tôi, vì vậy tôi đã lấy hết can đảm để tham gia buổi gặp mặt viết mã đầu tiên của mình. Tôi chưa bao giờ tham gia bất kỳ buổi gặp mặt nào chứ đừng nói đến một buổi gặp mặt về lập trình. Tôi đã lo lắng đến mức sau khi lái xe đến đó, đỗ xe và đi bộ đến cửa, tôi gần như quay lại và về nhà

Thật hữu ích khi đây là buổi gặp mặt đầu tiên của nhóm. Tôi nhanh chóng nhận ra rằng không có lý do gì để lo lắng. Không ai biết nhau, không ai phán xét, và mọi người đều háo hức học hỏi. Đây là sự khởi đầu của một cuộc gặp gỡ. Cuối cùng tôi đã tham dự hơn 50 buổi gặp mặt trong 9 tháng

Tôi rất vui vì tôi đã bắt đầu đi gặp mặt sớm. Hầu hết mọi người chỉ bắt đầu tham gia các buổi gặp mặt khi họ đang tìm việc làm, nhưng tại thời điểm đó thì gần như đã quá muộn. Có rất nhiều lý do để bắt đầu sớm. Đến tên một vài

  1. Phát triển các mối quan hệ mất nhiều thời gian. Bắt đầu sớm nghĩa là bạn có những mối quan hệ có thể bảo đảm cho bạn khi tìm việc sau này

  2. Nói về lập trình với người lạ là một cách tuyệt vời để chuẩn bị cho các cuộc phỏng vấn

  3. Bạn có thể tìm hiểu các khuôn khổ, công cụ và tài nguyên học tập mới từ những người đi trước bạn. Điều này có thể ảnh hưởng đến kế hoạch học tập trong tương lai của bạn

Có một số điều không chắc chắn vào thời điểm này trong hành trình viết mã của tôi. Đây là khoảng thời gian tôi cần quyết định mình muốn trở thành kiểu nhà phát triển phần mềm nào

Cuối cùng, tôi đã chọn phát triển web vì có vẻ như có nhu cầu cao và cũng có nhiều tài nguyên trực tuyến. Khi tôi đã tìm ra điều đó, tôi cần phải tìm ra những việc cần làm tiếp theo. Một số người khuyên rằng ở giai đoạn này, tôi nên nghĩ về các ứng dụng web mà tôi muốn xây dựng và sau đó bắt đầu. Một số người đề xuất Dự án Odin hoặc freeCodeCamp

Anh chàng điều hành buổi họp mặt hàng tuần mà tôi tham dự biết Ruby và muốn thực hiện các dự án với Ruby. Đây là một lý do lớn tại sao tôi đưa ra quyết định tham gia vào Dự án Odin

Và rồi hai ngày sau tôi từ bỏ ý tưởng đó

Đó là một trong những nhược điểm của việc đi theo con đường tự học. Một phút bạn nghĩ rằng bạn biết con đường bạn nên đi, nhưng rồi ngày hôm sau bạn tự hỏi liệu đó có phải là bước đi đúng đắn

Tôi đọc được rằng Ruby không còn được ưa chuộng và tôi đã chứng minh điều này bằng cách tìm kiếm các công việc về Ruby và JavaScript, vì vậy cuối cùng tôi đã bắt đầu freeCodeCamp. Một điều khiến tôi băn khoăn về freeCodeCamp là họ đã đưa ra các ý tưởng về dự án, vì vậy mọi người cắm trại đều thực hiện các dự án giống nhau. Điều này ban đầu làm tôi lo lắng vì tôi muốn nổi bật với các nhà tuyển dụng. Tuy nhiên, cuối cùng tôi lại yêu thích freeCodeCamp và bây giờ tôi thực sự khuyên bạn nên sử dụng nó. Để biết thêm chi tiết về trải nghiệm và đề xuất của tôi về freeCodeCamp, hãy xem bài viết của tôi tại đây


Tháng 2 — YDKJS, giao diện người dùng freeCodeCamp, React

Tôi bắt đầu đọc Bạn Không Biết JavaScript, vì mọi người đã giới thiệu nó để bổ sung cho freeCodeCamp. Tôi đã phải đọc lại một số phần vì nó khá dày, nhưng đó là một nguồn tài nguyên hoàn hảo để tìm hiểu phạm vi từ vựng, cách đóng, lời hứa và tất cả các phần của JavaScript mà bạn đã nghe và muốn tìm hiểu nhưng chưa bao giờ học vì chúng có vẻ khó

Tôi đã hoàn thành phần giao diện người dùng của freeCodeCamp. Định dạng danh sách kiểm tra và thời gian hoàn thành ước tính đã giúp thúc đẩy tôi hoàn thành nhanh chóng. Tôi cũng muốn chuyển sang phần tiếp theo và học React. Tuy nhiên, điều này cũng có nghĩa là các dự án của tôi có kiểu dáng tối thiểu. Tôi đã làm bất cứ điều gì cần thiết để đáp ứng các câu chuyện của người dùng và không làm gì khác

Nhìn lại, có lẽ tôi nên tập trung vào việc làm cho các dự án trở nên hấp dẫn hơn. Có lẽ, điều này sẽ giúp tôi học CSS sâu hơn

Bước tiếp theo là học React, và tôi đã rất hào hứng

Tôi đã nghe rất nhiều về nó, và tôi đã sẵn sàng để hòa nhập với những đứa trẻ tuyệt vời. Tuy nhiên, tôi đã có một chút do dự về các vấn đề cấp phép vào thời điểm đó. Tôi thực sự vui vì đó không còn là vấn đề nữa. Học React rất khó đối với tôi. Lúc đó tôi không biết về bất kỳ hướng dẫn hay nào (nhưng có vẻ như bây giờ có rất nhiều hướng dẫn)

Tôi đã thử đọc tài liệu và làm theo hướng dẫn Tic-Tac-Toe của Facebook, nhưng tôi không hiểu lắm về nó. Tôi được cho biết nếu điều đó không hiệu quả với tôi, thì điều đó có nghĩa là tôi không hiểu đủ về JavaScript. Vì vậy, sau đó tôi quay lại đọc You Don't Know JavaScript, nhưng một lần nữa, nó quá dày đặc đối với tôi


Tháng thứ 3 - FreeCodeCamp React, CodeClub, Bắt đầu FreeCodeCamp Back End

Cuối cùng, tôi quyết định sẽ làm việc theo cách của mình thông qua các dự án FreeCodeCamp React để xem nó diễn ra như thế nào. Đoạn mã đó thật tệ, nhưng nó đã giúp tôi hiểu rõ hơn về React một chút

Buổi họp mặt mà tôi tham dự hàng tuần đã quyết định rằng họ sẽ xây dựng các dự án với JavaScript đầy đủ thay vì Ruby và họ quyết định rằng dự án đầu tiên sẽ là xây dựng một trang web cho nhóm gặp gỡ, CodeClub. Xã hội

Tôi đã phát triển thẻ bằng API React và Meetup cho phép người dùng đăng ký ba buổi gặp mặt tiếp theo từ trang web của chúng tôi. Có một chút khó khăn đối với tôi khi tạm dừng freeCodeCamp để làm điều này, nhưng đó là một cơ hội mà tôi không thể bỏ qua. Tôi rất vui khi được làm việc trong một dự án với một nhóm nhỏ. Nó cũng giúp tôi học Git và Github

Trước khi tháng kết thúc, tôi bắt đầu làm phần back-end của freeCodeCamp


Tháng 4 - Kết thúc freeCodeCamp Back End, Yeggle

Tôi đã làm việc qua tất cả các dự án API trong freeCodeCamp, nhưng tôi bắt đầu đi chệch hướng khỏi freeCodeCamp tại dự án Lớp trừu tượng tìm kiếm hình ảnh

Tôi rất muốn tạo các ứng dụng web full stack, vì vậy ngay khi tôi nhìn thấy tiêu đề của dự án này, tôi đã có ý tưởng cho dự án của riêng mình. Tôi sẽ tạo một ứng dụng nút lưu trữ các URL imgur ngẫu nhiên trong cơ sở dữ liệu, sau đó tạo một giao diện người dùng sẽ xuất ra số lượng hình ảnh ngẫu nhiên đó do người dùng chỉ định. Điều mọi người nói đều đúng. bạn làm việc chăm chỉ hơn và đạt được nhiều thành công hơn khi bạn đang thực hiện một dự án do chính bạn lên ý tưởng

Khi tôi bắt đầu làm việc, tôi rất tự hào về bản thân mình. Nó xấu xí và cồng kềnh, nhưng nó hoạt động

Khi tôi đang làm việc thông qua freeCodeCamp, tôi đã tìm hiểu về những dự án nào sẽ nằm trong khả năng của mình. Vào thời điểm đó, tôi thường xuyên chạy bộ, vì vậy tôi sẽ nảy ra ý tưởng về các lần chạy của mình và viết chúng ra giấy khi về nhà. Bằng cách đó, tôi sẽ có một danh sách các ý tưởng dự án khi tôi đã sẵn sàng

Cuối cùng tôi cũng cảm thấy sẵn sàng bắt đầu tạo các ứng dụng web đầy đủ hữu ích và bóng bẩy của riêng mình để chia sẻ với người dùng và đưa vào danh mục đầu tư của mình. Tôi đã rất sẵn sàng để bắt đầu

Khi tìm kiếm một nhà hàng mới, tôi luôn thấy mình mở Yelp để kiểm tra đánh giá, sau đó mở Maps để kiểm tra đánh giá của họ. Điều gì sẽ xảy ra nếu tôi tạo một ứng dụng so sánh cả hai cạnh nhau?

Vì vậy, tôi đã tạo Yeggle. Tôi đã sử dụng Node/Express/React cùng với API Google Maps và Yelp. Có một vài trở ngại mà tôi không nghĩ mình có thể vượt qua, nhưng cuối cùng tôi đã hoàn thành và tôi rất tự hào về ứng dụng của mình. Sau đó, tôi đã đăng nó lên Reddit và không ai quan tâm. Đó là một chút lập dị, nhưng tôi đã không để nó làm tôi thất vọng


Tháng 5 - StockIT

Tôi đã không hoàn thành được nhiều việc trong tháng này vì tôi đã bắt đầu bằng một kỳ nghỉ hai tuần tới Nhật Bản và Thái Lan

Nhưng tôi đã bắt đầu và hoàn thành dự án tiếp theo của mình. Tôi liên tục đọc về việc khó khăn như thế nào để có được một công việc với tư cách là một nhà phát triển tự học, vì vậy tôi nghĩ rằng mình cần phải làm một điều gì đó độc đáo. Tôi nhớ một trò chơi mà đồ thị chứng khoán Dow Jones bắt đầu có xu hướng, và bạn có một cơ hội để mua và một cơ hội để bán, và mục tiêu là đánh bại thị trường. Mục đích của trò chơi là cho bạn thấy việc đánh bại thị trường khó khăn như thế nào

Ý tưởng của tôi là tạo ra một trò chơi tương tự như vậy, nhưng thay vì thị trường, bạn sẽ chơi với một thuật toán máy học. Vì vậy, tôi đã tạo StockIT

Tôi đã quay một video hướng dẫn về Pandas và Scikit Learn bao gồm nhiều kỹ thuật máy học. Ban đầu tôi muốn thực hiện một số kỹ thuật học sâu thú vị, nhưng tôi nhận ra rằng điều đó cần bộ dữ liệu khổng lồ và nhiều thời gian hơn tôi muốn

Thay vào đó, tôi sử dụng một mô hình hồi quy tuyến tính đơn giản. Tôi nghĩ rằng đó sẽ là phần khó khăn, nhưng nó không phải là. Bắt D3 chơi với React là phần khó. Cả hai thư viện đều muốn kiểm soát DOM. Có một số thư viện khác đã giúp tham gia cả hai, nhưng tôi cảm thấy chúng quá cồng kềnh. Cuối cùng, tôi đã sử dụng D3 để tạo SVG và React để xử lý DOM, hoạt động khá tốt đối với tôi

Lần này khi tôi chia sẻ nó với Reddit, mọi người đều yêu thích nó

Hóa ra, giống như các VC, các redditor đều hướng đến việc học máy. Tất cả tình yêu từ Reddit là một sự thúc đẩy lớn về sự tự tin. Mọi người đang chơi trò chơi của tôi và tận hưởng nó


Tháng 6 - jobSort(), Job Hunt Prep

Sau StockIT, tôi bắt tay ngay vào dự án cá nhân tiếp theo của mình. Tôi muốn tạo một bảng việc làm tổng hợp các trang web tuyển dụng tập trung vào công nghệ nhỏ hơn như Stack Overflow, Github và Hacker News. Để thêm vòng quay độc đáo của riêng tôi vào nó, tôi quyết định sắp xếp nó dựa trên công nghệ mà người dùng muốn trong công việc và mức độ họ muốn từng công nghệ đó

Ví dụ: giả sử tôi đang tìm một công việc đang tìm một người biết JavaScript, React và/hoặc Python và tôi thực sự muốn làm việc với JavaScript và React nhưng tôi không quan tâm lắm đến Python. Sau đó, tôi có thể cho JavaScript điểm 3, React điểm 3 và có thể Python điểm 1. Các danh sách sau đó sẽ sắp xếp cho phù hợp

Tôi đã gặp phải nhiều trở ngại với dự án này và phải thay đổi hướng đi một vài lần, nhưng tôi đã kết thúc với một sản phẩm mà tôi hài lòng. Tech stack cuối cùng của tôi là React/Node/Express/MySQL. Tôi đã đăng dự án lên subreddit cscareerquestions và nhận được 650 lượt xem trước khi dự án bị gỡ xuống vì họ không cho phép các dự án cá nhân

Nếu bạn muốn biết thêm về những khó khăn và những lần tái cấu trúc của tôi, hãy xem bài đăng của tôi tại đây

Vì các vấn đề của tôi, jobSort() đã chiếm một phần kha khá trong tháng. Cuối cùng, tôi đi uống cà phê với một người bạn mà tôi đã gặp trong lần gặp mặt đầu tiên, và anh ấy khuyên tôi nên bắt đầu nộp đơn xin việc ngay bây giờ. Tôi đọc khắp nơi rằng mọi người nói rằng họ đã đợi quá lâu để nộp đơn. Ngoài ra, bất cứ khi nào tôi thấy một bài đăng hỏi khi nào nên đăng ký, bình luận hàng đầu luôn là “bây giờ. ”

Trong đầu, tôi sẽ thực hiện theo kế hoạch có cấu trúc của mình để xây dựng danh mục đầu tư của mình với các dự án cá nhân, sau đó làm việc với các đóng góp nguồn mở, sau đó chuẩn bị cho các cuộc phỏng vấn và cuối cùng là bắt đầu nộp đơn xin việc. Người bạn này đã thuyết phục tôi từ bỏ kế hoạch đó và bắt đầu nộp đơn. Vì vậy, tháng này tôi đã làm một danh mục đầu tư và một sơ yếu lý lịch. Tháng sau tôi sẽ bắt đầu nộp đơn


Tháng 7 - Kiểm tra, Tìm việc

Tháng này tôi tập trung hoàn thành các dự án của mình và nộp đơn xin việc. Tôi cũng muốn học thử nghiệm và Redux

Tôi đã thêm flexbox vào CodeClub. Xã hội để đáp ứng. Tôi đã cải thiện UX di động trên jobSort(). Tôi đã thêm thử nghiệm vào jobSort() với mocha/chai/enzyme khó thiết lập, dễ bắt đầu và sau đó khó đạt được mức độ phù hợp 100%

Đến cuối tháng, tôi đã nộp đơn cho 63 công việc. Tôi xem đây là một sự tự đánh giá. Portfolio/sơ yếu lý lịch của tôi có đủ tốt không? . Ai đang tuyển dụng, và thực tế

Trên Hacker News, tôi đã sử dụng jobSort() để xác định danh sách nào sẽ đăng ký. Trên Thực tế, tôi đã thử các công ty không phải phần mềm để xem liệu tôi có thể nhận được một cuộc gọi hoặc một cuộc phỏng vấn ở bất cứ đâu không

Lúc đầu, tôi đăng ký nhanh và không cá nhân hóa sơ yếu lý lịch/thư xin việc của mình. Sau đó, tôi quyết định cá nhân hóa thư xin việc và sơ yếu lý lịch của mình, sau đó thử gửi email cho ai đó từ công ty. Phương pháp này rõ ràng là tốt hơn so với phương pháp súng ngắn

Tôi đã nhận được năm cuộc gọi trong tháng đó — hai cuộc gọi từ các công ty tuyển dụng và ba cuộc gọi từ các công ty phần mềm bao gồm

  • vai trò DevOps/thử nghiệm theo hợp đồng tại một công ty dotcom

  • một công ty phân tích thực phẩm chuỗi B, và

  • một công ty khởi nghiệp khá lớn và thành công gần đây đã được mua bởi một tập đoàn lớn

Tôi đã vượt qua màn hình nhân sự ở hai trong số này, nhưng không ai trong số họ trả lời phỏng vấn tại chỗ. Tôi khá hài lòng với ba cuộc gọi và tôi đã học được rất nhiều điều từ họ

Mọi người đã đề cập trực tuyến rằng các nhà phát triển cơ sở không cần phải biết nhiều như vậy ngay từ đầu, họ chỉ cần đam mê và hào hứng học hỏi. Vì vậy, tôi nghĩ, dễ dàng. Tôi đam mê và hào hứng học hỏi. Tuy nhiên, điều tôi học được từ những cuộc gọi này là không ai tìm kiếm một nhà phát triển cơ sở. Họ mong đợi bạn biết bạn đang làm gì ngay từ ngày đầu tiên

Những cuộc gọi này đã dạy tôi rằng tôi cần phải

  • đủ tốt để gia tăng giá trị ngay từ ngày đầu tiên

  • đủ tự tin để thuyết phục họ rằng tôi có thể gia tăng giá trị ngay từ ngày đầu tiên


Tháng 8 - Ca đêm, Redux, Mã nguồn mở, Phỏng vấn tại chỗ

Tháng này tôi bắt đầu làm việc ca đêm trong 40 ngày với công việc toàn thời gian của mình - 6 ngày một tuần, 12 giờ một ngày, 5 giờ chiều đến 5 giờ sáng. ừ

Tôi biết mình sẽ không thể hoàn thành nhiều việc trong tháng này, nhưng tôi có một mục tiêu và tôi muốn đạt được mục tiêu đó, vì vậy tôi không thể nghỉ một tháng

Tôi đã cấu trúc lại jobSort() để sử dụng Redux, điều đáng ngạc nhiên là nó không khó như tôi nghĩ. Tôi đã nghe rất nhiều podcast về nó và đọc các bài đăng trên blog về nó, và nó chưa bao giờ có ý nghĩa với tôi cho đến khi tôi bắt đầu sử dụng nó

Tôi thực sự thích luồng dữ liệu với Redux. Thật thú vị khi thấy mọi người phàn nàn về Redux. Tôi không nghĩ mình đủ tư cách để mạnh mẽ đưa ra ý kiến ​​của mình, nhưng tôi thích mô hình rút gọn

Đây được cho là tháng của mã nguồn mở đối với tôi. Tôi sẽ thực hiện đóng góp nguồn mở đầu tiên của mình và đó sẽ là đóng góp tuyệt vời cho một thư viện tuyệt vời. Tôi sẽ đóng góp cho React

Mọi người đều nói rằng đó là một cơ sở mã khó đọc chứ đừng nói đến việc đóng góp vào. Nhưng tôi cần phải nổi bật, tôi cần phải là duy nhất. Tôi biết rằng đóng góp của tôi sẽ không đáng kể, nhưng dù sao tôi vẫn muốn làm điều đó

Tôi sẽ bắt đầu bằng cách đọc hết các tài liệu và sau đó lướt qua cơ sở mã. Theo dõi mọi vấn đề, mọi PR. Đọc qua toàn bộ tài liệu React là một bài tập tuyệt vời và tôi rất vui vì đã làm được. Nhưng tôi nhanh chóng nhận ra rằng vấn đề với việc đóng góp cho React là không có nhiều “vấn đề tốt đầu tiên” và chúng nhanh chóng bị thu hút.

Tại một trong những buổi họp mặt mà tôi tham dự, Anthony Ng đã đề xuất tôi dùng thử Downshift, một thư viện tự động hoàn thành của Kent C. Dodds. Đây là một gamechanger. Nó ở ngay trong nhà xe của tôi. Độ khó phù hợp, số lượng vấn đề cần trợ giúp phù hợp, không có quá nhiều cộng tác viên, người bảo trì siêu hữu ích, mã được kiểm tra tốt. Trên hết, đó là một giải pháp hoàn hảo cho một số vấn đề tôi gặp phải với ứng dụng jobSort() của mình

Khoảng nửa tháng, tôi nhận được email từ một trong những công ty mà tôi đã ứng tuyển vào tháng trước. Họ thiết lập màn hình điện thoại ban đầu, sau đó là màn hình điện thoại kỹ thuật. Những công nghệ họ đang tìm kiếm chính xác là những gì tôi đã học - React, Redux và D3. Tôi chủ yếu chỉ nói về các dự án của mình và lý do tại sao tôi đưa ra một số quyết định nhất định. Sau đó, họ yêu cầu tôi đến phỏng vấn trực tiếp. Cuộc phỏng vấn tại chỗ đầu tiên của tôi

Tôi đã không chuẩn bị gì cho các cuộc phỏng vấn, vì vậy tôi đã tham gia với kỳ vọng rằng tôi sẽ không nhận được công việc, nhưng tôi sẽ có được kinh nghiệm phỏng vấn quý giá. Tôi cũng đã ngủ ba tiếng vì tôi vẫn đang làm ca đêm, điều đó không giúp được gì. May mắn thay, phần kỹ thuật không phải là bảng trắng, chỉ là một phiên lập trình theo cặp kéo dài một giờ. Đó là một thử thách khá đơn giản, nhưng tôi đã rất lo lắng

Lúc đầu, tôi lo lắng về việc chắc chắn rằng mình biết mọi thứ mà không cần tra cứu. Khi tôi nhận ra rằng mình sẽ không thể hoàn thành thử thách, tôi nhận ra rằng tôi cần ngừng lo lắng người phỏng vấn nghĩ gì về mình và chỉ cần google/stack tràn để tìm câu trả lời. Tôi đã không hoàn thành và tôi nghĩ rằng mình đã thất bại thảm hại

Vì tôi nghĩ rằng mình đã trượt phần lập trình theo cặp nên tôi cảm thấy thoải mái trong phần còn lại của cuộc phỏng vấn. Cuối cùng, tôi rời cuộc phỏng vấn với tư thế ngẩng cao đầu. Trường hợp xấu nhất là tôi có được một số kinh nghiệm phỏng vấn quý giá, và trường hợp tốt nhất là tôi nhận được lời mời làm việc đầu tiên


Tháng 9 - Lời mời làm việc

Cuối cùng, tôi đã nhận được lời mời làm việc đầu tiên sau 9 tháng 7 ngày kể từ ngày đầu tiên đó khi tôi quyết định đầu tiên mình sẽ lao đầu vào lĩnh vực lập trình với ý định thay đổi nghề nghiệp. Tôi cảm thấy tự tin vì tôi đã nhận được lời đề nghị sau cuộc phỏng vấn tại chỗ đầu tiên của mình, nhưng đồng thời, nếu tôi không nhận lời, điều gì sẽ xảy ra nếu đây là lời đề nghị duy nhất mà tôi nhận được trong vài tháng? . Tôi muốn được trả tiền cho mã


Lời khuyên

Cho đến thời điểm này, tôi chủ yếu chia sẻ câu chuyện của mình với một số lời khuyên được thêm vào. Rất có thể nếu bạn đang đọc điều này, thì bạn đang nghĩ đến việc thay đổi nghề nghiệp hoặc đang trong quá trình học viết mã với ý định thay đổi nghề nghiệp. Tôi hy vọng rằng lời khuyên dưới đây sẽ giúp bạn phát triển một kế hoạch hoặc gắn bó với kế hoạch hiện tại của bạn và đạt được mục tiêu của mình

  1. Tìm ra những gì thúc đẩy bạn và sử dụng nó để lợi thế của bạn. Đối với tôi, đó là danh sách kiểm tra, ghi lại tiến trình của tôi và tương tác với các cộng đồng lập trình khác nhau. Nếu bạn không có động lực để đạt được mục tiêu của mình, thì không có gì khác quan trọng bởi vì bạn sẽ không hoàn thành

  2. Đặt mục tiêu và đáp ứng chúng. Tôi cho rằng bạn nên có mục tiêu hàng tháng và thậm chí có thể là mục tiêu hàng ngày. Mục tiêu hàng tháng để đảm bảo rằng bạn đang đi đúng hướng để đạt được mục tiêu chính của mình và mục tiêu hàng ngày để đảm bảo rằng bạn thực sự đạt được tiến bộ hàng ngày. Một chiến lược hiệu quả với tôi là thực hiện các mục tiêu hàng ngày vào đêm hôm trước. Bằng cách đó, bạn không thể làm những công việc không hiệu quả cả ngày và cảm thấy như mình đã tiến bộ trong khi thực sự thì không. Nó buộc bạn phải so sánh thành tích hàng ngày với mục tiêu hàng ngày của bạn

  3. Đến các buổi gặp mặt trước khi bạn nghĩ mình đã sẵn sàng. Đi gặp gỡ có thể cảm thấy đáng sợ, nhưng như tôi đã đề cập ở trên. Nhưng nhìn chung mọi người đều tốt và sẵn sàng giúp đỡ. Bạn có thể tìm thấy những người không muốn nói chuyện với bạn, nhưng họ là thiểu số và sẽ không ai phán xét. Ngoài ra, mọi người đều thích đưa ra lời khuyên (như tôi đang làm bây giờ)

  4. Đóng góp cho mã nguồn mở trước khi bạn nghĩ mình đã sẵn sàng. Khi bạn mới bắt đầu lập trình, Github có vẻ như là nơi đáng sợ mà bạn không bao giờ muốn đến. Nó thực sự rất chào đón những người mới bắt đầu và là một nơi tuyệt vời để xem mã tốt và nhận mã của riêng bạn được đánh giá. Nếu bạn vẫn chưa bị thuyết phục, hãy xem bài đăng của tôi, Tại sao bạn nên đóng góp cho nguồn mở ngay bây giờ

  5. Bắt đầu áp dụng cách trước khi bạn nghĩ rằng bạn đã sẵn sàng. Điều này thật khó khăn với tôi vì tôi nghĩ mình khác biệt. Tôi nghĩ rằng tôi không cần phải kiểm tra thị trường để biết nên làm gì. Tôi nghĩ tôi sẽ biết khi nào tôi sẵn sàng nộp đơn. Tôi đang nói với bạn ngay bây giờ. Bạn sẽ không biết khi nào nên nộp đơn. Vì vậy, bạn cũng có thể bắt đầu ngay bây giờ. Bạn không nên phát điên và nộp đơn vào 300 công ty trước khi tìm hiểu các vòng lặp. Nhưng bạn nên biết rằng cách tốt nhất để biết bạn cần học gì là áp dụng và thử nghiệm thị trường

    Khóa học Python CS50 có tốt không?

    Nếu bạn đã hoàn thành CS50 và muốn học phát triển web, thì Khóa học lập trình web với Python và Javascript của CS50 là một khóa học tuyệt vời sẽ .

    CS50 Python có khó không?

    Đây là khóa học cấp đại học dành cho người mới bắt đầu về các nguyên tắc cơ bản của Khoa học máy tính & lập trình dành cho những người có ít hoặc không có kinh nghiệm. Hai phần ba học sinh CS50 chưa bao giờ học CS trước đây. Điều này không có gì sai khi nói rằng CS50 rất dễ dàng, khác xa với nó. Nó rất khó khăn nhưng theo một cách rất bổ ích

    CS50 có đáng để trả tiền không?

    Khóa học rất xuất sắc. Nó có một người hướng dẫn tuyệt vời; . Đáng chú ý nhất, khóa học hoàn toàn miễn phí và bao gồm chứng chỉ hoàn thành miễn phí .

    Tôi nên bắt đầu với Python hay CS50?

    CS50 sẽ cung cấp cho bạn phần giới thiệu thú vị về lập trình, dưới dạng một khái niệm, phù hợp và được khuyên dùng cho những người mới bắt đầu viết mã . Khi bạn hoàn thành CS50, bạn có thể sử dụng Learn Python the Hard Way để học Python và hiểu cách thức hoạt động của Pythonic.