Trong thế giới lập trình phần mềm, lập trình viên có một nhiệm vụ cao cả là giải quyết các vấn đề cho người dùng. Người dùng sẽ nêu lên những vấn đề và nhu cầu của họ, từ đó lập trình quyên tìm cách xử lý nó. Đơn giản chỉ có như vậy!
Nếu bạn chưa từng thấy những loại phần mềm vừa phức tạp vừa vô dụng thì hãy thử tìm những phần mềm mà lập trình viên cố nhồi nhét tất cả các giải pháp (solution) vào phần mềm cho người dùng. Công bằng mà nói, người dùng là người hiểu rõ vấn đề là gì và thỉnh thoảng họ cũng có giải pháp cho những vấn đề đó. Tuy nhiên người đưa ra vấn đề cuối cùng vẫn luôn là lập trình viên và người làm sản phẩm chứ không phải là người dùng.
Vấn đề này có thể sẽ trở nên tồi tệ nếu bạn viết phần mềm cho một nhóm nhỏ, đặc biệt là trong nội bộ công ty. Những người này thường có quyền hạn hơn bạn, họ chính là những người làm ở vị trí executives hoặc cấp cao hơn. Họ có quyền hạn để “order” bạn làm bất cứ việt gì. Tuy nhiên, nếu họ muốn một giải pháp tốt nhất thì họ nên làm theo những gì mà tôi đã nói ở đây. Hãy thử nghĩ nếu chúng ta đủ tin tưởng để giao cho ai làm sản phẩm, thì cũng nên phần nào tin vào những quyết định của họ. Nếu không tin tưởng, thì ngay từ đầu đã không nên làm việc với nhau. Một nhóm người không tin tưởng nhau thường sẽ kéo theo những nhóm kém hiệu quả, à mà có khi không nên gọi họ là “nhóm” thì hay hơn.
Nếu người dùng muốn chi phối quyết định của lập trình viên, tốt nhất họ nên “đánh bài ngửa” và giao hết data cho bên lập trình. Vì lập trình viên cần những số liệu cụ thể đó để đưa ra những quyết định đúng đắn hơn, đương nhiên những thông tin đó cũng chính là cầu nối cần thiết với người dùng cuối. Nếu bạn là người dùng và bạn nghĩ rằng phần mềm đang đi chệch hướng thì hãy đưa ra những thông tin cần thiết để giúp họ có thể giải quyết vấn đề cho bạn một cách nhanh nhất. Nếu đưa ra được những con số, thậm chí là những câu chuyện inside giúp lập trình viên có thể có nhiều manh mối hơn trong việc điều hướng phát triển sản phẩm. Hãy giải thích rõ ràng cho họ rằng, vì sao phần mềm đó hiện đang không phù hợp. Xác định cụ thể hiện bao nhiêu người đang bị vấn đề này. Ở đây tôi muốn nhấn mạnh rằng, data rất quan trọng trong quy trình phát triển phần mềm và cách đưa ra giải pháp của người làm sản phẩm.
Mặt khác, lập trình viên lại là người có những vẫn đề riêng. Như đã đề cập ở trên, một trong những lỗi thường mắc phải của lập trình viên là cố tạo ra một phần mềm có quá nhiều tính năng nhằm giải quyết toàn bộ nhu cầu của tất cả thể loại người dùng. Người làm sản phẩm đôi khi cũng là người dùng, họ cũng sẽ thấy được những vấn đề mà những người khác mắc phải. Điều đó không sao cả, họ có thể dựa trên data và góc nhìn của người dùng để đưa ra những giải pháp trải nghiệm tốt nhất. Hơn thế nữa, lập trình viên cũng thường mắc “bệnh” đánh giá quá cao ý kiến của mình so với đại đa số người dùng (lý do là vì họ thường nghe feedback từ nhiều nguồn khác nhau và làm việc với phần mềm ngày này qua tháng nọ) Hãy nhớ rằng những ý kiến đó cũng chỉ đến từ một nhóm người dùng.
Nếu bạn tìm cách để giải quyết vấn đề theo hướng lập trình viên hơn là theo định hướng người dùng, thì bạn đang bỏ ra quá nhiều công sức lãng phí và chẳng thật sự giúp được ai cả. Hãy thử xem khi mà cả team cùng làm việc trên 1 ý tưởng của một người, nhưng sau đó mọi người sẽ cảm thấy “bế tắc” sau khi release sản phẩm thất bại vì những người dùng ngoài kia không ai dùng được. Và hơn nữa, tôi thường thấy khi cố gắng giải quyết các vấn đề của lập trình viên thì phần mềm sẽ đi theo hướng phức tạp hơn rất nhiều. Vì vậy hãy cố gắng tìm ra những gì mà người dùng cần và giải quyết vấn đề ngay từ đó sẽ tốt hơn.
-
[HN] PHP Developer - Salary up to $900 — GMO-Z.com Runsystem
-
[HCM] Mobile Unity 3D/2D Game Programmer ($800 - $1200) — DiffCat
-
[HCM] ASP.Net Developer | Salary 20.5 - 27.3 million VND (NET) — SINGALARITY
- Jobs by
Tôi tin rằng, không có lập trình viên nào có thể đưa ra một giải pháp cũng như cách giải quyết vấn đề hoàn hảo, và ngược lại người dùng cũng vậy. Tuy nhiên 2 bên cần có sự thoả hiệp và thông cảm hiểu biết lẫn nhau. Công bằng mà nói, chỉ có người dùng mới hiểu được vấn đề trong việc trải nghiệm sản phẩm của họ là gì, Và chỉ có phía lập trình viên mới có thể đưa ra những quyết định đúng đắn sau khi đã hiểu được nhu cầu người dùng muốn gì. Có được sự kết hợp tuyệt vời từ hai phía thì phần mềm sẽ được phát triển một cách hoàn mỹ nhất.
Techtalk via Codesimplicity