Thursday, 13 December 2012

Learning framework

(hay làm thế nào để biết những công cụ lập trình hữu ích cho bạn,
cũng có thể là: làm thế nào để biết những gì bạn không biết là mình không biết )

đêm qua trước khi ngủ nghĩ ra bài này nhưng mà ngại mò dậy nên sáng đánh răng xong là múc luôn :D

NOTE: bài này sẽ sử dụng ví dụ là C, bởi C là nơi câu hỏi này bắt đầu, hòan tòan có thể áp dụng quá trình này với vấn đề / ngôn ngữ khác


Câu chuyện bắt đầu từ khi tớ vô tình vớ được lệnh make - vâng, một con lệnh rất phổ biến trên linux với những ai từng compile software từ source. Và rồi tớ hỏi, làm thế nào để biết những cái còn lại, sao bao năm tháng code C mà mình vẫn không biết make. Vậy là tớ vác lên SO hỏi. Trong thời gian chờ họ trả lời thì tớ đã google xong, mà lúc quay lại thì toàn gạch với đá :v - một thời ngây ngô :v


Vậy làm thế nào để bạn biết những cái tool như make tồn tại và cứu rỗi cuộc đời bạn, một cách tiếp cận cơ bản nhất đó là nó bắt nguồn từ nhu cầu. Quá trình diễn ra một cách tự nhiên như sau:

bạn viết C, lệnh compile khá dài, dùng nhiều flag, lúc compile bạn sẽ phải gõ lại hoặc copy cái lệnh đấy paste vào terminal chạy. Lặp lại nhiều lần sẽ sinh nhàm chám, nếu bạn tự hỏi "làm thế nào để tự động cái việc compile này" , vậy là xong. Bạn chỉ cần có câu hỏi, google sẽ trả lời (hỏi bằng tiếng Anh cho dễ tìm: how to automatic compile C program linux). Và bạn sẽ dễ dàng thấy ngay kết quả thứ 2, 3 nhắc đến make!

Có thể bạn sẽ không bao giờ biết đến make nếu bạn dùng 1 "full blown IDE", trên Linux như codeblock hay   netbean/eclipse. Trên Windows thì càng không.Nếu bạn hỏi "tại sao tôi cần biết make nếu IDE của tôi đã hỗ trợ sẵn" ? Câu trả lời là bạn không biết cũng chẳng sao, nhưng make không chỉ dùng để compile C mà nó có thể giúp bạn "tự động" làm rất nhiều việc khác.

Như vậy, hiểu biết sẽ xuất phát từ nhu cầu.
Đến đây, có thể bạn sẽ hỏi: sao không ai nói trước cho tôi là có nó, tôi đỡ phải đi tìm, làm thế nào để biết những điều mình không biết là mình không biết? yeah, awesome question :v

Tớ biết 2 cách tiếp cận (approach) để bạn trả lời được câu hỏi trên:
1. Đọc sách (mặc dù tớ đã đọc 2 quyển sách viết về C: C programming language , C Ilustrated (ngày xưa chăm đọc ~) nhưng không quyển nào nhắc đến make bởi 2 quyển này chỉ viết về ngôn ngữ. Không giống như hầu hết sách hiện nay, nếu viết về Python thì đủ hết cả từ cài đặt đến debug :v

2. Đọc tin từ các trang web / blog công nghệ. Cái này tùy vào sở thích, nhu cầu của mỗi người mà chọn những nguồn khác nhau: như thegeekstuff, ycombinator, reddit, cntt.tv,... Bạn có thể kết hợp việc sử dụng google reader để subscribe đến các trang ấy, khi có bài mới reader sẽ tự cập nhật.

Vừa phóng scooter đi ăn bún ngan về :v thú vị v~