Lập trình là một bộ môn nghệ thuật, ở đâu đó mình nghe cho rằng là như vậy. Đôi khi chúng ta có thể đối mặt với những vấn đề nan giải trong quá trình cố gắng xây dựng một chương trình hay một ứng dụng. Nhưng thật trớ trêu thay đa số những lập trình viên có một phần nào đó gặp khó khăn với tư duy logic trong lập trình. Họ có thể biết cú pháp, công nghệ, cách xây dựng nhưng lại không thể tự mình giải quyết một vấn đề logic một cách đúng đắn.
Thật may mắn là tư duy logic này có thể được cải thiện và phát triển. Bạn chỉ cần cố gắng giữ cho mình một cái đầu mở để dễ dàng tiếp thu kiến thức mà thôi!
Dưới đây sẽ là 5 cách mà mình thấy có thể tăng khả năng tư duy logic trong lập trình của bạn.
1. Think to solve
Nếu bạn nghĩ rằng bạn không thể làm điều gì đó. Sau đó có một ai đó giúp bạn, mách nước một hai từ khóa giải quyết vấn đề và thế là bạn lại làm được điều đó. Đó là trường hợp có lẽ là xuất hiện nhiều nhất đối với lập trình viên.
Lập trình đúng nghĩa là tìm ra giải pháp đúng để xử lý cho một vấn đề nào đó. Đôi khi nó chỉ là một công cụ giải quyết. Vậy nên điểm mấu chốt ở đây là phải nghĩ giải pháp. Với sự giúp đỡ của các chương trình và công nghệ có sẵn chúng ta có thể biến những vấn đề lớn thành những vấn đề nhỏ hơn. Việc cần làm là xử lý những vấn đề nhỏ đó.
Cố gắng viết ra hay phác thảo chia nhỏ vấn đề lớn thành vấn đề nhỏ trên giấy hay sơ đồ tư duy để sau khi bạn xử lý được những vấn đề nhỏ rồi thì bạn có thể tổng hợp được chúng lại và giải quyết được vấn đề lớn đặt ra ban đầu
Những vấn đề phức tạp thì thử suy nghĩ nhiều cách nhiều hướng khác nhau trước khi bắt tay vào một giải pháp xử lý cụ thể. Điều này sẽ giúp bạn có tư duy logic mở hơn nhiều đó.
2. Practice
Thực hành là một trong những cách tốt nhất để phát triển, không chỉ trong lập trình mà là trong bất cứ lĩnh vực nào trong cuộc sống. Tư duy logic cũng không ngoại lệ. Thực hành cách giải quyết vấn đề, đôi khi chỉ đơn giản là chơi cờ, chơi game, hay sắp xếp các công việc một cách logic khoa học cũng là một cách luyện tập đơn giản nhất. Chăm chỉ hơn chút thì bạn có thể luyện tập thông qua việc giải các bài toán khác nhau từ những thuật toán, cấu trúc dữ liệu, giải thuật đều là những bộ môn phát triển tư duy này của bạn.
Có hàng triệu thuật toán khác nhau từ đơn giản đến phức tạp và giải quyết vấn đề khác nhau. Việc luyện tập giải các bài tập liên quan đến thuật toán giúp bạn rèn luyện rất nhiều về tư duy giải quyết vấn đề đó.
Bạn có thể đọc thêm một số bài viết cũ về thuật toán của mình dưới đây nhé!
“Thuật toán – liệu có ma thuật, phức tạp và bí ẩn như mọi người vẫn nghĩ?“
“Thuật toán Google – Đi một ngày đàng, càng đọc càng ngu!“
3. Pen and Paper Approach
Sau khi nhìn nhận bất cứ vấn đề nào đó, hay đơn giản là yêu cầu từ khách hàng, chúng ta thường bắt tay ngay vào coding trên IDE. Nhiều khi điều này làm hạn chết khả năng tư duy của bạn. Vậy nên nhiều người viết code trên giấy khi thi trên giảng đường hay trong phòng phỏng vấn thường khá là sợ. Hơn nữa các IDE hiện nay rất phát triển và thông mình khiến cho bạn dễ dàng hơn mọi lúc mọi nơi nhưng nếu bắt tay ngay vào code thì bạn sẽ bỏ qua nhiều khía cạch khác của vấn đề.
Luôn cố gắng viết mã giả hay những thuật toán xử lý trên giấy hay thông qua những sơ đồ nhằm phác thảo ý tưởng giải quyết vấn đề trước khi bắt tay vào thực hiện hóa ý tưởng đó bằng những dòng code trên IDE.
Slogan trên blog của mình “Programs must be written for people to read, and only incidentally for machines to execute.” cũng có một phần ý nghĩa máy tính chỉ để thực thi thôi, vấn đề chính của bạn là xử lý chương trình với những thuật toán và đảm bảo đồng đội bạn cũng hiểu được chúng.
Mình cũng đã có một bài viết nói riêng về cách ghi chú bạn đọc có thể đọc thêm
“Hãy ghi chú đi – Đừng biến cái đầu của mình thành tờ giấy nháp“
4. Find a Programmer’s Community
Đôi khi các vấn đề bạn gặp phải cũng là vấn đề một ai khác cũng gặp phải. Cách bạn xử lý vấn đề cũng có thể giúp ích cho người khác. Mỗi người có những kinh nghiệm trong thực tế khác nhau. Vậy nên đôi khi những vấn đề tưởng chừng như mới với bạn nhưng ngoài cộng đồng đã có nhiều người gặp phải và có những giải pháp tối ưu cho vấn đề đó rồi.
Không phải tự nhiên “stackoverflow” là một cộng đồng mà tất cả các lập trình viên quan tâm và luôn tìm đến nó đầu tiên khi gặp vấn đề. Đơn giản là các vấn đề bạn gặp phải khả năng lớn là nhiều người khác cũng đã gặp và đưa ra giải pháp và code giải trên đó luôn.
Nhưng đừng ăn xổi nhé, bạn đang ở vị thế phát triển tư duy logic giải quyết vấn đề mà. Hãy nghĩ rộng hơn, đọc và tìm hiểu những vấn đề xoay quanh trên các diễn đàn và đóng góp những ý tưởng của bạn trên những diễn đàn đó thử. Trao đổi những ý tưởng giải pháp cho nhau cũng giúp cho bạn mở rộng kiến thức và có nhiều góc nhìn khác cho cùng một vấn đề thì sao.
5. Read Books and solve Examples
Sách có lẽ là một điều gì đó kinh điển rồi, không chỉ ở mỗi lĩnh vực lập trình. Được tiếp cận với sách lập trình ngay từ khi còn ở giảng đường có lẽ là một lợi thế của học sinh sinh viên. Vì thường khi đi làm, và được tiếp xúc với công nghệ nóng hổi, tài liệu trên mạng ngập tràn khiến các lập trình viên ít để ý hơn đến sách như khi còn ngồi ghế nhà trường. Tất nhiên vẫn có những người thích sách đọc sách chuyên ngành mỗi ngày.
Nhưng mình quan sát thấy họ chỉ toàn tìm kiếm nhanh những thức họ cần trên mạng hay một phần nhỏ trong sách chứ ít ai thực sự đọc từ đầu đến cuối một cuốn sách để hệ thống kiến thức lắm. Có thể họ đúng, họ tiết kiệm thời gian, nhưng nếu muốn nắm được logic và ngữ cảnh xử lý vấn đề thì có lẽ nên đọc tuần tự từng chương trong sách. Người viết cũng đã có dụng ý sắp xếp logic cả rồi. Nếu bạn muốn phát triển tư duy này thì cố gắng đừng bỏ lỡ và đọc lướt nhé!
Hơn nữa có những vấn đề muôn thủa từ đời này qua đời khác luôn được viết trong sách. Nó có thể giúp bạn giải quyết vấn đề nhanh hơn với những nền tảng hiện có.
Mình cũng đã và đang xây dựng một thư viện sách online, bạn đọc có thể ghé qua
Vậy đó, trên đây là những cách phát triển khả năng tư duy logic trong lập trình mà mình đã đang và sẽ đi theo để giúp bản thân phát triển hơn. Nên mình cũng muốn chia sẻ nếu ai đó đang trong trình trạng giống mình để chúng ta cũng nhau học, cùng nhau phát triển trên con đường tưởng dễ mà không phải dễ này.
Chúc bạn thành công!
#ntechdevelopers