Solve the problem before Code it!

@dantech
4 min readMay 7, 2022

Bất kỳ bạn làm 1 điều gì đều cần có 1 mục tiêu xác định, và để đạt được mục tiêu đó bạn cần 1 kế hoạch càng rõ ràng càng tốt. Lập trình phần mềm về cơ bản là việc giải quyết các vấn đề bằng việc tạo ra phần mềm & các tính năng. Có những vấn đề nhỏ như tính tổng các số nguyên, tính giá điện nước thuê trọ, tính tiền lãi khi gửi tiết kiệm… Cũng có những vấn đề lớn hơn ví dụ như nén 1 bức ảnh mà vẫn giữ được chất lượng màu, tìm kiếm 1 tin nhắn, tính điểm mua / bán Crypto, Stock để tìm kiếm lợi nhuận… Với những vấn đề lớn kiểu thế này chúng ta không thể xử lý trong 1 dòng code, 1 function được nên việc phân tích, chia nhỏ & giải quyết từng vấn đề con trong vấn đề lớn là hết sức cần thiết. Đây cũng là kỹ năng số 1 dành cho lập trình viên mà bất kỳ công ty IT nào cũng hỏi khi PV.

Hãy cùng phân tích những lợi ích của việc Code có kế hoạch nhé.

  • Định hướng rõ ràng

Để kiểm soát tốt vấn đề / task trong công việc bạn cần có 1 road map cụ thể cho chúng. Khi đối mặt với vấn đề bạn cần có ít nhất 1–2 kế hoạch cụ thể để linh hoạt trong các trường hợp tệ nhất. Việc này giống kiểu bạn lên Google Map và tìm đường đi từ nhà đến quán cafe gặp bạn bè vậy. Google sẽ chỉ ra tối thiểu 1 đường đi nhanh nhất đến đích và vài đường xa hơn để bạn lựa chọn. Bạn biết được mình đang ở đâu trên con đường dẫn đến solution và chủ động định hướng bước tiếp theo là gì nếu chẳng may gặp vật cản. Khi bạn biết mình cần làm gì, tốc độ xử lý của bộ não sẽ tự khắc tăng tốc đến bất ngờ. Bạn có thể tránh khỏi việc rơi vào các vòng lặp vô tận không lối thoát, ví dụ như vòng lặp The XY Problem

  • Linh hoạt trong việc sắp xếp task

Lập trình cơ bản là tìm giải pháp đơn giản hóa những phức tạp của cuộc sống, tuy nhiên nội tại của nghề lập trình lại là chuỗi dài những thứ phức tạp, khó hiểu, đau đầu, thất vọng… Lập trình viên lâu năm mostly sẽ phải chạy cùng lúc nhiều deadline hoặc gánh cùng lúc 2 3 tính năng / dự án trong 1 job. Để thỏa mãn yêu cầu công việc ta không thể get it done 1 dự án / tính năng rồi mới hỗ trợ 1 dự án / tính năng khác. Chính vì điều này việc Code có kế hoạch là yêu cầu số 1 trong công việc của họ.

Thử ví dụ bạn đang ở Project A, đang làm tính năng A1. Cùng lúc đó Project B, tính năng B1 đang có lỗi và cần bạn vào để kiểm tra, hot fix. Ở Project C (1 home project) bạn đang phát triển 1 tính năng theo định hướng của mình. Lúc này bạn sẽ phải làm thế nào để cân bằng 3 công việc này?

Để dễ dàng chuyển đổi qua lại giữa nhiều tính năng, dự án Dev cần có kế hoạch chi tiết cụ thể cho từng việc mình làm. Việc chia nhỏ task → steps sẽ giúp Dev dễ trong việc chuyển đổi qua lại giữa nhiều dự án, tính năng mà vẫn bắt kịp tiến độ không phải warm-up não lại liên tục.

  • Sự tự tin

Tự tin trong công việc là điều bất kỳ ngành nghề nào cũng cần thiết. Với nghề Dev sự tự tin sẽ build up dần dần trong quá trình bạn làm đồ án, đi phỏng vấn, fix bugs, delivery tính năng & discuss / debate với đồng nghiệp về các vấn đề liên quan đến tech. Bạn càng tự tin thì tốc độ xử lý việc càng nhanh & hiệu quả. Điều đặc biệt của tính tự tin là bạn không thể khoa trương về cái mà mình không hiểu rõ, hoặc tự huyễn hoặc bộ não rằng mình đang tự tin trong khi hiểu biết nội tại chỉ qua loa hời hợt (tự tin tếu). Đôi khi sự tự tin của 1 Dev non tay có thể bị vùi dập bởi 1 mentor không có tố chất lãnh đạo, không biết cách support đàn em (vấn đề nhạy cảm haha, không bàn thêm)

Quay lại vấn đề sự liên quan giữa Code có kế hoạch và sự tự tin. Nếu việc lên kế hoạch giống như vẽ 1 tấm bản đồ để đi từ problem → solution thì sự tự tin giống như ngọn đèn trên tay giúp bạn đi đến đích bớt gặp trở ngại hơn. Điều đặc biệt ở đây là tấm bản đồ càng rõ ràng thì ngọn đèn trên tay bạn càng soi sáng. Bạn tự tin dấn thân vào các Milestone trên chặng đường từ problem đến solution, bạn sẵn sàng nhìn ra trở ngại để tìm cách vượt qua chúng bằng cách tối ưu nhất.

  • Lợi thế cạnh tranh, phát triển

Chắc chắn rồi, đi làm ai cũng muốn leo lên vị trí cao hơn trong công việc. Số ghế vị trí cao luôn ít hơn, chính vì vậy nó luôn đòi hỏi sự nỗ lực cố gắng của người công nhân. Để chuẩn bị / cạnh tranh cho 1 promotion bạn cần nhiều yếu tố, tuy nhiên tham số đầu tiên cho điều đó sẽ luôn luôn là “Your works are effective”. Và bước đầu tiên để có điều đó không gì khác ngoài việc Code có kế hoạch.

“First, solve the problem, Then, write the code.” — John Johnson

Happy Coding!

--

--