Suy nghĩ về những yêu cầu mặc định

Suy nghĩ về những yêu cầu mặc định

3 phút đọc

Trong cuộc đời đi làm, mình gặp rất nhiều những yêu cầu mặc định (có lúc chính bản thân mình cũng coi nó là mặc định khi phát triển một dự án - ở một vài thời điểm trước đây). Đôi khi chỉ cần bỏ đi suy nghĩ đó, mình sẽ tiết kiệm được nhiều chi phí. Bởi lẽ, dần dần mình thấy rằng, sự dư thừa chính là kẻ thù của sự phát triển nói chung, và là kẻ thù của những người làm startup như mình.

Một vài ví dụ mà mình gặp:

  • Hệ thống phải thiết kế để scale cho 1M users. Concurrent users phải đáp ứng được vài chục / vài trăm ngàn. Thực tế: hệ thống chỉ dùng cho internal user, và mỗi ngày được hơn chục người sử dụng.
  • Phải thiết kế để đáp ứng được nhiều ngôn ngữ (Anh, Pháp, Việt, Hoa ...). Thực tế: sản phẩm làm cho thị trường Việt Nam, và chỉ sử dụng bởi người Việt. Sản phẩm thất bại trước khi có bất kì một ông Tây nào vào sử dụng.
  • Hệ thống phải được thiết kế để sử dụng các công nghệ hoành tráng: AI, blockchain, microservice ... (để dễ marketing, dễ chào hàng). Thực tế: không có một usecase cụ thể nào cần AI, blockchain ... Sản phẩm thất bại vì ý tưởng nhưng đốt hết tiền vào công nghệ mà không validate được thị trường sớm hơn.
    ...

Mỗi khi mình làm với team (đặc biệt là business team và product team), mình thường đặt ngược lại những câu hỏi tại sao để đi tìm bản chất của các yêu cầu mình nhận được. Mình nhận ra được một vài điều thú vị.

Người ta đặt ra nhiều yêu cầu phức tạp là vì "nhu cầu" của họ phức tạp. "Nhu cầu phức tạp" thường xuất phát từ:

  • Tham vọng quá lớn.
  • Hoặc đơn giản là không biết mình nên làm gì

Dù là lý do nào đi nữa, khách hàng có quyền được đưa ra yêu cầu để giải quyết nhu cầu của họ.

Nhu cầu vs yêu cầu: tôi đang khát - tôi có nhu cầu giải khát. Vì vậy, tôi đưa ra yêu cầu nhờ con Bống nhà tôi mua giúp tôi một chai nước. Vậy yêu cầu là "mua một chai nước", và nhu cầu là "giải khát". Thực tế nếu tiệm tạp hóa đóng cửa và không mua được chai nước, thì tôi uống nước lọc ở nhà vẫn ok.

Tựu trung lại người ta chỉ đưa ra yêu cầu vì họ muốn giải quyết nhu cầu của họ. Đừng bao giờ chỉ dừng lại ở yêu cầu ban đầu vì nó chưa bao giờ là đủ. Vì vậy, câu mà mình không bao giờ mong muốn nhận được từ product team là: "chúng ta phải làm điều này vì khách hàng muốn vậy".

Nhiệm vụ của những người làm nghề lập trình như mình là hiểu nhu cầu của khách hàng, và giúp khách hàng nhìn ra được một bức tranh - lộ trình chúng ta sẽ thực hiện nhu cầu của họ như thế nào. Từ đó, họ sẽ phản hồi và cho chúng ta thêm thông tin về thời gian, kinh phí. Dựa trên phản hồi này, ta sẽ biết bước tiếp theo nên làm gì để tạo ra một dòng chảy giá trị phù hợp.

Có một sự khác biệt rất lớn giữa một lập trình viên non tay và lập trình viên lành nghề: lập trình viên lành nghề sẽ luôn có những cách để hiểu thực sự nhu cầu của khách hàng, và giải quyết đúng nhu cầu đó với chi phí, thời gian hợp lý nhất.

Mọi thứ sẽ có thể được giải quyết đơn giản hơn nếu chúng ta biết được tại sao mình phải làm một điều gì đó. Dễ mà, đúng không?