Tư duy lập trình
Thứ quyết định mình đi được bao xa — không phải ngôn ngữ mình chọn.
Câu hỏi mình đã hỏi sai
Câu đầu tiên mình hỏi khi mới bắt đầu là: "nên học ngôn ngữ nào trước?"
Mình đã đọc so sánh ngôn ngữ suốt mấy tuần. Nhìn lại thì mấy tuần đó gần như vô ích.
Câu hỏi đúng hơn là: làm sao chia một việc lớn thành những bước nhỏ đến mức máy hiểu được?
Ngôn ngữ chỉ là cách viết ra các bước đó. Đổi ngôn ngữ thì đổi cách viết, phần khó vẫn nguyên.
Ba thứ mình thấy quan trọng nhất
1. Chia nhỏ vấn đề. Biến một yêu cầu mơ hồ thành các bước cụ thể. Đây là kỹ năng mình luyện lâu nhất và cũng dùng nhiều nhất.
2. Đọc code người khác. Mình từng nghĩ lập trình chủ yếu là viết. Thực tế mình đọc nhiều hơn viết rất nhiều — đọc code của đồng nghiệp, của thư viện, và của chính mình ba tháng trước.
3. Tìm lỗi có phương pháp. Hồi đầu mình sửa lỗi bằng cách đoán rồi đổi bừa. Sau mình học được cách thu hẹp dần phạm vi: xác định chỗ nào chắc chắn đúng, chỗ nào chắc chắn sai, rồi ép vùng nghi ngờ nhỏ lại.
Bài tập mình hay khuyên
Lấy một việc bạn làm hằng ngày — pha một ly cà phê chẳng hạn — rồi viết ra các bước chi tiết đến mức một người chưa từng làm cũng theo được.
Bạn sẽ nhận ra mình bỏ sót rất nhiều bước hiển nhiên. Máy tính cũng phản ứng đúng như người lạ đó.
Tiến độ lưu trong máy bạn, không gửi đi đâu.
Đọc tiếp
Tiếng Anh
Tôi tự học tiếng Anh
Toàn bộ hành trình học tiếng anh của mình.
⏱ Khoảng 5 phút đọc
Tiếng Anh
30 ngày đầu tiên
Đúng những gì mình đã làm trong tháng đầu, chia theo từng tuần.
⏱ Khoảng 3 phút đọc
Tiếng Anh
Đo trình độ và tiến độ
Cách mình biết mình đang ở đâu mà không cần đi thi, và vì sao mình ngừng tin cảm giác.
⏱ Khoảng 6 phút đọc
Lập trình
Giới thiệu
Vì sao mình mở thêm mục này, và nó sẽ có gì.
⏱ Khoảng 1 phút đọc