Đáp: Cuộc hành trình bao giờ cũng bắt đầu với bước đầu tiên. Ngay khi em đưa nỗ lực vào em sẽ làm tốt. Đừng so sánh bản thân em với người khác, nó bao giờ cũng gây ra phiền toái; thay vì thế nhìn vào bên trong bản thân em và hỏi “Mình phải đưa nỗ lực nào vào để vượt qua thách thức này?” Học lập trình giống như học ngôn ngữ mới, em phải học cú pháp, các qui tắc, cấu trúc và phong cách và em phải thực hành. Em sẽ phạm nhiều sai lầm và học từ chúng. Em càng viết mã nhiều, em càng phạm nhiều sai lầm, em sẽ càng lập trình giỏi hơn.
Trong lập trình, tự em phải học mọi thứ. Em sẽ không học gì mấy nếu em phụ thuộc vào ai đó vì em phải phạm sai lầm để cho em có thể học được từ chúng. Em càng phạm nhiều sai lầm lúc bắt đầu, em sẽ càng ít phạm phải sai lầm về sau. Khi tôi dạy môn lập trình, tôi bảo sinh viên rằng tôi không cho điểm năm bài tập lập trình đầu tiên để cho phép sinh viên có thời gian học để cho họ không phải lo nghĩ về điểm. Tôi bảo họ: “Phạm sai lầm là được; nhận kết quả sai là được chừng nào các em còn đang học từ sai lầm của các em.”
Có những sinh viên vội vàng viết mã chỉ để chứng minh cho bạn bè rằng họ có thể lập trình. Tuy nhiên em cần học các khái niệm lí thuyết trước vì nó sẽ giúp cho em hiểu sai lầm của em. Phần lớn các bài tập đều được thiết kế để kiểm tra hiểu biết của em về các khái niệm lập trình, nếu em không hiểu những khái niệm này, em sẽ không phát triển các kĩ năng lập trình tốt.
Cũng giống như học nói tiếng Anh, một số người có thể nói đúng và một số người có thể nói đầy lỗi ngữ pháp. Em cần đọc sách giáo khoa để hiểu khái niệm trước khi bắt đầu viết mã. Em học một khái niệm rồi viết mã về nó, kiểm thử nó, cho tới khi em hiểu nó trước khi chuyển sang khái niệm tiếp. Từng khái niệm đều được xây dựng trên các khái niệm khác cho nên em cần phát triển nền tảng vững trước, nếu không em có thể không đi xa hơn được. Em phải tổ chức chương trình bằng lập kế hoạch phần mã nào (Module) em cần viết trước, và thế rồi thực hiện và kiểm thử chúng từng cái mỗi lúc. Bằng việc đi theo một qui trình phát triển được xác định rõ, em sẽ phát triển một kỉ luật lập trình mạnh.
Nếu em xây dựng mã của em từng module mỗi lúc rồi kiểm thử chúng, em có thể tìm ra nhiều lỗi sớm hơn là hoàn thành chương trình rồi mới tiến hành kiểm thử toàn diện. Viết chú thích cho mã của em ngay khi em viết nó cũng sẽ là dễ hơn, để cho khi em quay lại nó về sau, em dễ dàng nhớ em đã làm gì.
Ngày nay phần lớn các lớp công nghệ đều dùng phương pháp “học tích cực” nơi tài liệu là sẵn có trực tuyến trước khi tới lớp. Nhiều sinh viên tải xuống những tài liệu này và bỏ lớp vì họ nghĩ họ có thể tự học được. Đừng phạm sai lầm đó! Lớp máy tính là quan trọng bởi vì đó là chỗ em học từ sai lầm của người khác. Phần lớn các giáo sư sẽ mô tả các sai lầm chung, giải thích chúng, và sửa chúng trong lớp. Lớp học cũng là chỗ để hỏi các câu hỏi và nhận câu trả lời đúng từ giáo sư. Giáo sư thường cho các ví dụ trên lớp và việc học từ những ví dụ này là tốt hơn từ sách vở. Phần lớn các giáo sư, kể cả bản thân tôi, thường dùng các ví dụ này trong bài kiểm tra. Bằng việc dự lớp đều đặn, em sẽ học tốt trong những ví dụ này.
Để là người lập trình giỏi, em cần viết mã thường xuyên. Nếu em không viết, em có thể quên điều em đã học. Cho nên lời khuyên của tôi là “viết mã, viết mã, và viết nhiều mã.”