Phương pháp tư duy và giải quyết vấn đề như một lập trình viên
![](https://cdn.noron.vn/2018/10/15/fa213655dff65690aed44adb8d497366_1024.jpg)
Nguồn: TechWorm
Tại sao lập trình không chỉ dành cho các lập trình viên?
Hầu hết chúng ta mỗi khi nghe nhắc đến lập trình, đều sẽ nghĩ rằng đó là một công việc khá nhàm chán vốn chỉ dành cho những người yêu thích máy vi tính hoặc thích làm việc với những con số và logic. Nhưng bạn có biết rằng, học cách lập trình còn có thể mang lại lợi ích cho nhiều khía cạnh khác trong cuộc sống của chúng ta?
Nhiều nghiên cứu đã cho thấy việc học và sử dụng các ngôn ngữ lập trình một cách thường xuyên có khả năng thay đổi cách thức vận hành của não bộ. Được biết, khả năng về logic, phân tích, ngôn ngữ, tư duy trừu tượng và giải quyết vấn đề của các lập trình viên lâu năm nhìn chung cao hơn những người chưa từng học lập trình.
Vậy, các lập trình viên có phương pháp tư duy và giải quyết vấn đề như thế nào, chúng ta hãy cùng nhau tìm hiểu nhé!
![](https://cdn.noron.vn/2018/10/15/3c9a78f19aaff496d98f1ac9dd576123_1024.png)
Nguồn: medium.freecodecamp.org
Các lập trình viên tư duy như thế nào?
Điểm khác biệt quan trọng nhất giữa một lập trình viên và một người chưa từng học lập trình có lẽ nằm ở cách thức họ tiếp cận và giải quyết các vấn đề.
Khi đối diện với một vấn đề bất kỳ, một người chưa từng học lập trình thường sẽ:
1/ Thử áp dụng một phương án giải quyết vấn đề đó.
2/ Nếu phương án trên không thành thì áp dụng một phương án khác.
3/ Tiếp tục lặp lại bước số 2 cho đến khi tìm ra được phương án hiệu quả.
Về cơ bản, do cách giải quyết vấn đề như trên phụ thuộc phần lớn vào chuyện may rủi, nên nó vừa không hiệu quả trong mọi trường hợp, vừa gây mất thời gian.
![](https://cdn.noron.vn/2018/10/15/7283fcc4ef77bbbb4f85657755879078_1024.jpg)
Nguồn: binadiri.wordpress.com
I/ Tự xây dựng một mô hình (framework) giải quyết vấn đề:
Trong khi đó, một lập trình viên lâu năm sẽ có hẳn cho mình một mô hình/hệ thống (framework) gồm một số bước cụ thể để giải quyết các vấn đề gặp phải. Đó là:
1/ Hiểu được vấn đề:
Để giải quyết các vấn đề một cách hiệu quả, bạn cần nắm rõ được nguyên nhân chính xác đã tạo ra chúng. Bạn có thể tự bắt bản thân diễn tả lại các vấn đề để xem bạn có hiểu rõ chúng không.
Như cái cách mà Richard Feyman đã nói, "Nếu bạn không thể diễn tả một điều gì đó bằng những từ ngữ thật đơn giản, điều đó có nghĩa là bạn chưa hiểu rõ nó".
2/ Lập kế hoạch từng bước giải quyết vấn đề:
Sau khi hiểu rõ vấn đề, bạn nên lên một kế hoạch gồm các bước cụ thể để giải quyết, không nên vội vã bắt tay vào hành động.
Bạn có thể tự hỏi mình: với những dữ kiện và thông tin X, đâu là những bước cụ thể để có thể cho ra kết quả Y.
![](https://cdn.noron.vn/2018/10/15/e69346faf6952aacba8f9448f1a2dbad_1024.jpg)
Nguồn: Nick Janetakis
3/ Chia nhỏ vấn đề:
Đây là bước quan trọng nhất. Khi đứng trước một vấn đề, bạn không nên tập trung vào việc giải quyết nó, mà nên chia nó thành những vấn đề nhỏ (sub-problems) và đơn giản hơn. Hãy cứ tiếp tục chia nhỏ các vấn đề cho đến khi bạn cảm thấy chúng đủ đơn giản và dễ giải quyết.
Sau đó, với mỗi vấn đề nhỏ, hãy đưa ra một phương án giải quyết (sub-solutions). Khi liên kết các phương án nhỏ này với nhau, bạn có thể tìm ra được phương án lớn cho vấn đề lớn của bạn.
4/ Liên tục khắc phục các lỗi:
Có thể bạn sẽ hỏi: "Vậy nếu tôi không giải quyết được cả những vấn đề nhỏ thì sao!?". Chà, lúc này bạn cần phải kiên nhẫn.
Trước hết, bạn cần phải xem lại toàn bộ hệ thống các bước giải quyết vấn đề của mình xem có trục trặc hoặc bất hợp lý ở chỗ nào, và cố gắng khắc phục. Dân lập trình thường gọi công đoạn này là debug.
Bạn cũng có thể cố gắng nhìn nhận vấn đề theo một góc nhìn khác, một khía cạnh khác. Bằng cách này bạn có thể tìm ra một phương án sáng tạo và hiệu quả hơn.
Sau cùng, nếu quá thiếu ý tưởng, bạn có thể tìm kiếm và tham khảo phương án của các lập trình viên trên Google. Bạn nên tích cực tham khảo ngay cả khi bạn đã giải quyết được vấn đề của mình.
![](https://cdn.noron.vn/2018/10/15/2450b08b310359d3e269aed8a9674930_1024.jpg)
Nguồn: Yours Magazine
II/ Rèn luyện kỹ năng giải quyết vấn đề:
Ngoài việc tự xây dựng cho mình một mô hình giải quyết vấn đề, bạn cũng nên tích cực và chủ động trong việc tìm kiếm các vấn đề và rèn luyện kỹ năng xử lý chúng.
Bạn có thể tự mình rèn luyện kỹ năng giải quyết vấn đề thông qua các hoạt động như chơi cờ, tập giải toán, chơi sudoku, Monopoly (cờ tỉ phú), game, cryptokitties (game mua bán gà ảo), hoặc thông qua việc học và sử dụng các ngôn ngữ lập trình như Java, Go, Python, v.v...
Lời kết
Trong bối cảnh một nền kinh tế thế giới với nhiều khó khăn và thách thức như hiện nay, các nhà tuyển dụng luôn đánh giá cao những ứng viên có kỹ năng tư duy và giải quyết vấn đề tốt. Vì vậy, việc ý thức được tầm quan trọng của những kỹ năng này và tích cực rèn luyện chúng là rất cần thiết.
Bài viết trên đã đưa ra những phương pháp để áp dụng và rèn luyện kỹ năng tư duy và giải quyết vấn đề như một lập trình viên cho bạn đọc tham khảo. Những cơ hội và thách thức vẫn đang chờ đợi bạn phía trước!
![](https://cdn.noron.vn/2018/10/15/3b3457f58a7f2b36d28e7cf1c2ec9b3f.jpg)
Nguồn: StareCat.com
Nguồn:
Elliot, E. (2016) Are Programmers Brain Different?. Link:
Lee, J. (2018) How Programming Affects Your Brain: 3 Big Truths According To Science. Link:
Reis, R. (2018) How to think and solve problems like a programmer?. Link:
programmer
,học lập trình
,ngôn ngữ lập trình
,problem solving
,giải quyết vấn đề
,kỹ năng mềm
Công nhận, ngày trước có tự học sơ qua về lập trình. So sánh giữa trước và sau khác biệt hẳn về cách giải quyết một vấn đề. Trước thì gặp 1 vấn đề là lục lại kiến thức để giải quyết, sau này thì làm gì cũng cố gắng mở rộng tư duy ra, nhìn ở nhiều góc độ nhưng vẫn định hướng cái đích đến rõ ràng. Rồi lại áp ngược vào kiến thức đã biết. Nhờ vậy mà ra cũng tìm ra những con đường ngắn hơn. Xong rồi thì có thêm thói quen lượt hết lại, chỉnh sửa bổ sung kỹ rồi mới apply.
Nguyễn Quang Vinh
Công nhận, ngày trước có tự học sơ qua về lập trình. So sánh giữa trước và sau khác biệt hẳn về cách giải quyết một vấn đề. Trước thì gặp 1 vấn đề là lục lại kiến thức để giải quyết, sau này thì làm gì cũng cố gắng mở rộng tư duy ra, nhìn ở nhiều góc độ nhưng vẫn định hướng cái đích đến rõ ràng. Rồi lại áp ngược vào kiến thức đã biết. Nhờ vậy mà ra cũng tìm ra những con đường ngắn hơn. Xong rồi thì có thêm thói quen lượt hết lại, chỉnh sửa bổ sung kỹ rồi mới apply.
Hường Hoàng
Mình rất là chia sẻ và đồng ý với quan điểm và bài viết này luôn.
Mình dân kinh tế nhưng có cơ hội làm việc với các lập trình viên gần 10 năm rồi, nhờ vậy mà mình phát hiện ra là tư duy logic, phân tích và khả năng xử lý vấn đề của mình bị ảnh hưởng bởi cách tư duy của lập trình viên rất nhiều.