Thursday 5 September 2013

KĨ NĂNG LẤY YÊU CẦU CỦA NGƯỜI DÙNG/KHÁCH HÀNG (copy)

KĨ NĂNG LẤY YÊU CẦU CỦA NGƯỜI DÙNG/KHÁCH HÀNG (tham khảo)
 nhân có vài bạn đặt vấn đề kĩ năng mềm của môt IT manager, CIO,... mình muốn bàn về việc lấy user requirements, mà theo mình nó vận dụng được nhiều kĩ năng mềm của một người hành nghề CNTT.

<< entry này sẽ dài, bạn nào ngán đọc dài xin bỏ qua cho. >>

dù là một kĩ sư phần mềm, một người thiết kế PM, một người cung ứng giải pháp PM, một IT manager, hay chí đến một CIO/CTO thì yêu cầu của người dùng (hay khách hàng) đều là đầu mối để chúng ta làm việc, để đáp ứng lại bằng một (hệ) giải pháp. người dùng có thể rât khác nhau đối với các chức năng tạm kể ra bên trên, nhưng làm sao để nắm bắt được các yêu cầu của những đối tương ấy vẫn là trách nhiệm quan trọng của người hành nghề CNTT.

trong nhiều hoàn cảnh, một số người làm CNTT ở VN hiện nay (có thể ở nhiều chức vụ khác nhau) nhận các đặc tả yêu cầu người dùng (user requirements spec.) hay thâm chí đặc tả các thiết kế giải pháp từ người khác. khâu thu thập và lập văn bản các yêu cầu người dùng vì thế được/bị bỏ qua. đó là một thuận lợi ngắn hạn nhưng lại là một thiệt thòi trong dài hạn đối với người hành nghề CNTT. vì lẽ, việc thu thập yêu cầu người dùng là một công đoạn khó khăn và đòi hỏi nhiều bản lĩnh trong toàn bộ chu trình phát triển giải pháp CNTT (và có thể nói, tương tự cho nhiều ngành nghề khác, nhưng ở đây xin thu hẹp trong khung CNTT).

**

một trong những phản ứng “tê tái” nhất mà người nộp kết quả giải pháp phải đón nhận là câu phán: “đây không phải là giải pháp tôi đang mong đợi, tôi đâu có cần cái này? bạn đã làm sai ý tôi rồi!”. úi. và trong kinh nghiệm của ngành nghề này, câu phán đó không phải là điều hiếm khi được nghe.

và hầu như đa phần các trường hợp dẫn đến kêt quả ấy là do khâu lấy yêu cầu người dùng đã không được làm tốt. trong kinh nghiệm bản thân hành nghê và kinh nghiệm làm huấn luyện đào tạo mình có nhận xét: người làm kĩ thuật càng có nhiều "kinh nghiệm kĩ thuật" lại càng dễ có nguy cơ gặp khó khăn khi lấy yêu cầu người dùng, nếu bản thân người ấy không nắm vững các phương pháp để lấy yêu cầu, mà trong đó việc tự "trấn áp" cách nghe, cách hiểu, cách nói, cách tiếp thu vấn đề "rất i tờ" của mình. vấn đề và các trở ngại thì nhiều, do đó, sau nhiều năm chiêm nghiệm, người ta đã đưa ra cả một chuyên ngành về “yêu cầu người dùng”. các bạn quan tâm có thể thử nhờ bạn Google truy tầm qua chủ đề “user requirements”, hoặc chính xác hơn, “requirements engineering” để có thể có được những thông tin, tài liệu liên quan đến chủ đề phức tạp này. nó cũng cho chúng ta thấy mức độ quan trọng và số vốn trí tuệ và kinh nghiệm hiện được thu thập và hệ thống hóa chung quanh chủ đề này ra sao.

ở đây, mình chỉ mong khơi gợi vấn đề, và kêu gọi được sự quan tâm của các bạn đồng nghiệp mới vào nghề, hoặc chưa có cơ hội đối mặt và quan tâm đủ với các thử thách của công việc thu thập yêu cầu người dùng. mình cũng chưa nói đến việc hiểu, phân tích và sau đó là đáp ứng lại với các yêu cầu ấy. hiện nay, ngành software engineering đã đủ trưởng thành đề hệ thống hóa các qui trình, và ngay cả các loại tài liệu, artifacts cần được tạo ra trong suốt các qui trình ấy. ngay cả với các phương pháp agile, một cách này hay cách khác người ta cũng sẽ phải đề cập đến “user requirements” và phương pháp thích hợp để ứng phó với v/đ này. << minh không nhằm đi vào chi tiết của các phương pháp ấy ở đây. các tài liệu, sách vở giáo khoa liên quan sẽ đầy đủ, khúc chiết và có hệ thông hơn những gì mình có thể ghi nhanh ở đây.>>

**

một điều mình cũng thường được nghe (và phần nào trải nghiêm): “lắm khi người khách hàng cũng không biết họ cần/muốn gì.” ở các xã hội mà việc sử dụng CNTT càng giới hạn thì câu này càng được nghe nhều hơn. chắc phải có phần nào sự thật trong ấy.

tuy nhiên, cho phép mình nhận xét vấn đề này ở một góc khác. thường, câu nhận xét trên "đúng" là do chúng ta muốn nghe người khách hàng cho ta biết về cái “giải pháp” mà họ nghĩ là họ cần; và như thế thì họ sẽ bí. đàng khác, người dùng thường phải có một thứ nhu cầu. một thứ vấn đề, nên họ mới cần nói chuyện với chúng ta. cho nên, nếu ta cố tìm cách để nghe cái nhu cầu, những trở ngại, khó khăn ấy (qua tầm nhìn và ngôn ngữ nghiệp vụ của họ) thì cơ hội được nghe họ nói sẽ nhiều hơn. còn “giải pháp” là thứ rồi đây, qua làm việc (có khi gian khổ, nhọc nhằn) với họ, và dựa trên tri thức chuyên môn của người làm CNTT chúng ta hi vọng hình dung ra, thiết kế ra và thực hiện được giúp họ. bỡi thế, hỏi họ “cần gì” trong ý nghĩa “giải pháp” có thể họ sẽ không nói (rõ ràng) được, nhờ họ mô tả tình huống khiến họ ới đên CNTT thì có cơ khá hơn.

<< về phương pháp và công cụ, sách vở sẽ cho chúng ta nhiều cách hiệu quả để đáp ứng với cái nạn "người dùng ko biết họ muốn gì". >>

cũng cần nói thêm, sẽ có những người khách hàng (hoặc người thay mặt cho khách hàng -- thí dụ: bà con marketing, sales, hay product planning :)) sẵn sàng, hồ hỡi đưa ra yêu cầu của họ ở dạng giải pháp. đây thường là một điều đau đầu khác. vì một người dùng / khách hàng có thể sẽ đưa ra một thứ giải pháp sai, hoặc phiến diện, hoặc không thích hợp với những nhu cầu thật sự mà họ đang gặp phải (chưa nói các yếu tố công nghệ, hệ thống, v,v,). nếu người nhận yêu cầu không khéo léo và tinh tế kéo người khách hàng quay về được chính các "yêu cầu thật" của họ thì mối nguy đôi bên sẽ dắt tay nhay đi xuống một lộ trình không mấy sáng sủa. giải pháp ở đầu ra có nguy cơ giải quyết một loại yêu cầu... khác.

các giáo trình, tài liệu về requirements engineering sẽ chi li hơn, đầy đủ hơn về các tình huống và các phương áng (cũng như công cụ, phương tiện) để ứng xử các tình huống ấy, mình xin không bàn thêm. chỉ xin tạm kết: kĩ năng thu thập yêu cầu của người dùng là một kĩ năng rất quan trọng, nó vận dụng nhiều loại kĩ năng mềm của người làm CNTT. tìm hiểu, học tập và rèn luyện các kĩ năng ấy để hoàn thành tốt công đoạn lấy yếu cầu này là một trong những bước cần quan tâm của một người hành nghề CNTT muốn đi xa.

mình sẵn sàng trao đổi thêm với các bạn quan tâm hay có kinh nghiệm khác hơn.