Bài viết được dịch từ: medium.freecodecamp.org

"Prototypes, objects, algorithms, ... là những bước nhỏ giữa nhiều bước mà bạn không biết cách để triển khai.

 

Grr...suy nghĩ như một lập trình viên."

 

Hoàn thành câu này:

 

Lần coding gần đây nhất của tôi là...

 

  1. Mượt như lụa. Tôi ngồi thoải mái, bật trình soạn thảo và chìm trong thế giới đáng yêu của 0 và 1. 3 giờ trôi qua chỉ như 30 phút!

  2. Thật chán. Tôi buộc phải ngồi xuống và code. Không có gì làm việc tốt, lỗi xảy ra liên tục và không có gì khả thi với tôi. 30 phút mà cảm giác như 3 giờ vậy!

 

Tôi đoán câu trả lời là #2.

 

Không phải vì nó là một câu trả lời phổ biến mà nó cũng xảy ra với tôi (ngay cả sau 8 năm lập trình).

 

Câu trả lời #1 khá lạ. Ai sẽ trả lời như vậy?

 

Cảnh lần coding gần đây nhất của tôi

 

Được rồi. Chúng ta sẽ nói về quá tải trong lập trình. Tôi biết tất cả chúng ta đều phải đối mặt với nó -- nó xảy ra rất thường xuyên và chúng ta ghét nó.

 

Nhưng hãy thử tìm hiểu sâu hơn.

 

Qua một vài năm, tôi đã nói chuyện với nhiều junior developer. Bao gồm một số người:

 

  1. Mới gia nhập vào lĩnh vực công nghệ và cảm thấy thất bại.

  2. Bị mắc kẹt trong "giai đoạn hướng dẫn" và thấy không tự tin khi phải code mà không có người hướng dẫn.

  3. Thực sự có khả năng nhưng thất bại tại các cuộc phỏng vấn hoặc không bao giờ nhận được một cuộc gọi.

Đâu là điểm là mấu chốt?

Bản chất công việc của tôi là giúp các lập trình viên mới tìm một công việc, tôi đã dành thời gian để nghiên cứu các vấn đề của họ và thực sự cố gắng để đồng cảm với những nhu cầu của họ.

 

Tôi đã nói chuyện với các đồng nghiệp tại công ty. Đã nghiên cứu các nhóm Facebook, các diễn đàn, các trang web hỏi đáp, các chủ đề khổng lồ trên Reddit và thậm chí đã khảo sát một vài cộng đồng nhỏ.

 

Đây là một phần tôi đã tìm thấy:

 

"Tôi cảm thấy như mình chỉ copy những thứ trong các video và chỉ có vậy."

 

"Tôi phải googling gì cho các ví dụ mà người khác đã viết. Tôi cảm thấy như một đứa trẻ 3 tuổi đang cố giải quyết các câu đó tích phân. Nó thật bực mình."

 

"Tôi không thể suy nghĩ như một lập trình viên"

 

Và một câu tôi thích nhất là:

 

"Đây là cái tôi đã học được từ việc học để code: Bạn cảm thấy bối rối và hoàn toàn lãng phí 99% thời gian. Nhưng khi bạn làm cho một thứ gì đó hoạt động, nó là PHÉP THUẬT"

 

Bạn có nhận ra điều gì không?

 

Vấn đề của những người này không đến từ sự thiếu nỗ lực. Cũng không phải từ một chiến thuật học tập tồi hay thiếu kỷ luật.

Đơn giản là họ không có đủ kinh nghiệm.

Vâng, nhiều người đang đứng trên bờ vực của việc từ bỏ lập trình.

Hai hiểu lầm phổ biến

Tôi tìm thấy mấu chốt của hầu hết các vấn đề mà các lập trình mới phải đối mặt là những hiểu lầm về nghề nghiệp trong lĩnh vực phát triển phần mềm.

 

Tôi muốn phân tích chúng ngay bây giờ và hy vọng giúp tránh những quá tải và áp lực mà chúng gây ra cho người học.

 

Hiểu lầm #1: Nếu không yêu lập trình, nó không phải là dành cho bạn.

Đây là điều mà tôi nghe những lập trình viên newbie nói nhiều.

 

Và tôi hoàn toàn phản đối.

 

Không, bạn không phải yêu lập trình thì mới có thể trở thành một lập trình viên. Trong thực tế, hơn 50% các lập trình viên chuyên nghiệp thỉnh thoảng vẫn ghét nó (quan sát của cá nhân tôi).

 

Nó thật tuyệt khi bạn giải quyết một vấn đề. Nó cảm thấy tốt khi code của bạn gọn gàng, rõ ràng, được test tốt và giải quyết những vấn đề của mọi người.

 

Nhưng không phải 100% thời gian. Hầu hết những ngày làm việc của các lập trình viên không diễn ra trôi chảy bởi họ nghĩ:

 

"Oh, làm thế nào tôi áp dụng dependency injection design pattern để tách các class của mình và làm cho codebase của tôi dễ dàng bảo trì trong tương lai"

 

Không.

 

Ngay cả với những người nói chuyện như thể họ yêu mỗi giây khi dành đáng kể thời gian cho công việc nhàm chán, đơn điệu hoặc bực bội. Bạn có thể nghe nguyền rủa trong một văn phòng lập trình ít nhất cũng như trong một phòng dịch vụ xe hơi.

 

Hoàn toàn ổn nếu thỉnh thoảng bạn ghét lập trình.

 

Vâng "có thể nó không dành cho tôi?" là một câu hỏi phổ biến khi bạn quá tải và bực bội. Nó hoàn toàn bình thường. Và lập trình là dành cho bạn. Nếu bạn đang đọc điều này, có nghĩa là bạn quan tâm. Nếu bạn quan tâm, bạn sẽ làm nó.

 

Hiểu lầm thứ 2: Có quá nhiều thứ tôi không biết. Tôi sẽ không bao giờ học được hết tất cả!

Bây giờ, hãy đảm bảo bạn hiểu ở mức cơ bản bản chất bất kỳ cái gì bạn đang làm.

 

Hãy quay trở lại với một ví dụ

 

Nếu bạn có kinh nghiệm với CSS, bạn sẽ biết nó áp dụng các style tới các phần tử HTML. Bạn có thể tạo một button với border, color, shadow hay animation. Bạn không thể nói cái gì xảy ra khi bạn click button (bạn cần JavaScript cho điều này).

 

Vì thế nếu bạn cần animation một hình ảnh khi button được click:

  1. Đầu tiên bạn phải có một hình ảnh và một button (HTML)

  2. Sau đó bạn có thể thiết lập animation cho một class cụ thể (CSS)

  3. Và bạn có thể thêm class đó tới hình ảnh khi button được click (JavaScript)

 

Giả sử bạn đã đọc hướng dẫn này một lần. Một tuần sau, bạn phải thêm shadow tới một hình ảnh khi một form được submit. Bạn biết cái để tìm kiếm. Bạn có một sự hiểu biết tổng quan về HTML, CSS và JavaScript và chức năng của mỗi phần.

 

Phần còn lại là Googling với đúng từ khóa. Trong trường hợp này "css add shadow" và "javascript callback form submit".

 

Hãy xem cái chúng ta đã làm ở đây?

 

Học lập trình "đúng" cách

Như bạn thấy và có thể từ kinh nghiệm của bản thân, học lập trình sẽ mất nhiều thời gian -- thỉnh thoảng là vài năm. Mặc dù có nhiều khóa học nói rằng "học lập trình trong 2 tuần!".

 

Khi đã bắt đầu, điều quan trọng là xây dựng những thói quen đúng đắn để học hiệu quả. Hầu hết những ngày đầu bạn dành cho các tutorial, guideline, documentation hay thường là cả 3 cùng một lúc. Đây là cái chúng ta làm.

Có một thói quen để tối đa hóa các giờ học và nó được gọi là "Học chậm".

Nó là một cách tiếp cận hơi khác các tutorial:

 

  1. Làm cho việc lập trình trở lên vui hơn (chán nản là một vấn đề phổ biến)

  2. Làm cho ít phụ thuộc vào các tutorial

  3. Sử dụng gamification (game hóa)

 

Bạn có thể thử bài tập 4 phút này sau khi đọc xong bài viết này.

Tiếp theo là gì?

Không từ bỏ và học hiệu quả là tuyệt vời -- nhưng thường là không đủ để có được một công việc lập trình.

 

Tiếp theo, tôi sẽ tập trung vào những nhà tuyển dụng đang tìm kiếm một junior developer và làm thế nào để khác biệt với đám đông.