Đọc.
Không, thực sự, đọc.
Đọc tất cả mọi thứ về thuật toán và thiết kế bạn có thể tìm thấy. Có những cuốn sách phi thường ngoài kia. Các cuốn sách thuật toán Sedgewick là tốt. Hướng dẫn thiết kế thuật toán của Skiena là tốt. Cùng nhau những cuốn sách này theo tôi trên mỗi kệ sách ở mọi công việc tôi làm, cùng với Tháng huyền thoại.
Rồi hỏi.
Nói chuyện với những người bạn tôn trọng. Hỏi họ những điểm quyết định nào họ có và tại sao họ lại đưa ra quyết định. Những người giỏi sẽ luôn có thể nói với bạn "Tôi đã chọn làm X vì nó tốt hơn A, B theo những cách này. Tôi có thể đã đi với C, nhưng tôi cảm thấy đây là một lựa chọn tốt hơn vì điều này".
Tiếp theo, làm.
Xây dựng công cụ. Xây dựng những thứ mà bạn sẽ không bao giờ sử dụng. Xây dựng những thứ mà bạn sẽ không bao giờ cần. Đi viết một chương trình giải câu đố Sudoku. Bây giờ đi làm lại. Và một lần nữa. Xây dựng nó 5 cách hoàn toàn khác nhau. Xây dựng một chương trình tạo ra các câu đố Sudoku và đưa nó vào bộ giải. Tìm người giải là nhanh nhất. Và sau đó...
Tìm hiểu tại sao.
"Cái gì" gần như không bao giờ quan trọng. Ý tôi là, vâng, điều quan trọng là phải hoàn thành dự án trong tay, nhưng cuối cùng nếu bạn biết "cái gì" mà không biết "tại sao", thì bạn có thể không bao giờ thực hiện nó ngay từ đầu. Bạn có một điểm đạn trong hồ sơ của bạn. Đi lấy một cái bánh quy và chúc mừng chính mình. "Tại sao" quan trọng hơn nhiều so với "cái gì".
Và đối với hồ sơ Sudoku là một ví dụ. Tôi đã dành rất nhiều thời gian rảnh để trải qua bài tập đó với vô số câu đố logic trên Kongregate và học được rất nhiều trên đường đi.
http://www.amazon.com/Bundle-Alacticms-Parts-1-5-Fundamentals/dp/020172684X/
http://www.amazon.com/Alerskym-Design-Manual-Steven-Skiena/dp/1848000693/
http://www.amazon.com/Mythical-Man-Month-Software-Engineering-Annlahoma/dp/0201835959/