12/08/2018, 13:17

Tâm lý học - Ngành lập trình máy tính - Đưa yếu tố con người vào trong ngành kĩ thuật phần mềm

Phần mềm là một sản phẩm do con người tạo ra, là sự kết hợp giữa khả năng giải quyết vấn đề, khả năng nhận thức đa khía cạnh và tương tác xã hội. Thế nhưng, bản thân con người tạo ra nó lại phức tạp và khó lường đoán trước hơn những phần mềm này rất nhiều và ...

Phần mềm là một sản phẩm do con người tạo ra, là sự kết hợp giữa khả năng giải quyết vấn đề, khả năng nhận thức đa khía cạnh và tương tác xã hội. Thế nhưng, bản thân con người tạo ra nó lại phức tạp và khó lường đoán trước hơn những phần mềm này rất nhiều và chính vì những sự phức tạp trong tính cách đó mà con người có thêm nhiều động lực trong công việc phát triển phần mềm, những lợi ích mà chúng ta không thể bỏ qua. Cũng bởi tính đa diện mà phát triển phần mềm là một trong số nhưng công việc khó nhằn nhất trong số các công việc mà con người thực hiện ngày nay

Điều này không có nghĩa là so với những yếu tố con người thì các kĩ năng về kĩ thuật là kém quan trọng, không có tính quyết định tới sự thành công của dự án, sản phẩm mà điều đáng nói ở đây là yếu tố con người là một yếu tố quyết định tính “sống còn” của đa số các dự án phát triển phần mềm . Tình trạng một dàn “ngôi sao” kĩ sư phần mềm không thể làm việc với nhau trong một dự án do xung đột về tính cách diễn ra khá phổ biến. Trong khi đó, rất nhiều kĩ sư phần mềm bình thường có thể làm việc cực kì ăn khớp với nhau, đem lại kết quả vượt trội, nằm ngoài sự mong đợi bởi vì họ vui với công việc mình làm và vui vì được làm việc với những người cùng nhóm. Điều này chỉ ra rằng ngành kĩ thuật phần mềm có hai yếu tố cốt lõi đó là năng lực chuyện môn và các yếu tố con người. Tuy nhiên, kỹ năng về chuyên môn và các kỹ năng mềm khác có thể lại không thu hút được nhiều sự quan tâm, đầu tư bằng các yếu tố con người này, đặc biệt là đối với những người làm công tác giảng dạy. Hãy cùng tìm hiểu xem tại sao lại như vậy và chúng ta có thể làm gì!

Pair_programming_1.jpg

Đem các yếu tố con người vào nghiên cứu cùng với các yếu tố kỹ thuật không phải điều hoàn toàn mới. Vào những năm 1970s, hai nhà tiên phong (Gerald Weinberg and Ben Shneiderman) đã khiến bao lập trình viên phải sửng sốt vì đó là lần đầu tiên những chủ đề này được đưa ra ánh sáng, ví dụ như là lập trình – hiệu suất con người. Trong nghiên cứu này , họ phân tích cách khía cạnh, yếu tố làm nên một lập trình viên xuất sắc. Đặc biệt, họ khám phá ngành lập trình dưới góc độ một hoạt động xã hội và thuộc về cá nhân, họ cũng chỉ ra thế nào là lập trình bỏ qua “cái tôi” cá nhân và nghiên cứu các yếu tố về tính cách có ảnh hưởng gì đến việc lập trình. Trong một vài công trình hay luận án, người ta đã có đưa vào các nghiên cứu về lượng và chất xoay quanh các chủ đề tương tự nhưng hầu như mới chỉ đá đưa qua bề mặt của vấn đề, về tầm ảnh hưởng của các yếu tố con người trong suốt quá trình phát triển phần mềm. Những yếu tố này thường hay bị những người làm giảng dạy và thực hiện bỏ qua, lơ là hay coi nhẹ bởi vì những yếu tố con người này thường liên quan kĩ năng mềm chứ không phải cái gì đó quá cao siêu, trên trời hay kĩ thuật siêu đẳng gì.

Nguyên nhân là gì?

Mặc dù những yếu tố con người là một chủ đề thu hút mối quan tâm của mọi người, nhưng nó việc áp dụng nó giống như là đánh cược đối với nhiều người trong ngành kĩ thuật. Có thể họ lo ngại mình sẽ đưa ra những nhận định hay kết luận sai lầm, hoặc không có thời gian dành cho việc nghiên cứu, điều tra những phạm trù này, hoặc cũng có có thể họ sẽ đánh giá thấp tầm quan trọng của lĩnh vực này, cho rằng việc nghiên cứu về nó là không quan trọng và vô nghĩa.

Một số khác thì nghĩ rằng chẳng có gì phải bàn luận về các kĩ năng mềm trong một lĩnh vực mà dường như tất cả mọi thứ đều cần phải logic và dựa trên nền tảng toán học. Những nhận thức sai lệch này dễ làm nhụt chí những người làm công tác đào tạo và nghiên cứu, những người có dự định nghiên cứu lĩnh vực phức tạp và đòi hỏi kiến thức liên ngành này. Từ cái nhìn của những nhà quản lí, việc hiểu biết về yếu tố con người là rất quan trọng trong môi trường công việc kĩ thuật phát triển phần mềm. Ví dụ, người làm quản lí phải tìm hiểu về những khái niệm/chủ đề như vậy vì họ là người thường xuyên phải trao đổi, thương lượng, giải quyết các xung đột về tính cách giữa các thành viên trong nhóm, hiểu được tầm quan trọng của việc thuê các kĩ sự phần mềm, phân chia ai làm đúng phần việc của người đó và đánh giá cao những người có thể làm việc nhóm hiệu quả. Thế nhưng, phần lớn các kĩ sư phần mềm đều coi những yếu tố con người này thứ ngoài lề, và không có gì đáng quan tâm cả. Điều này nói lên một sự thực đó là con người đôi khi không thể hề nhận ra rằng chúng ta đang chung sống với những sinh vật có tư duy và cảm xúc chứ không đơn thuần chỉ là những dãy số nhị phân. Nếu chúng ta sẵn sàng tiếp nhận những nghiên cứu về những lĩnh vực này dù con rất nhiều điều chưa sáng tỏ, ngày càng nhiều nhà nghiên cứu có thể sẽ cảm thấy được khuyến khích để thực hiện các nghiên cứu, nhằm xác minh qua thử nghiệm thực tế, chứng minh liệu rằng những khẳng định chưa thuyết phục này thực sự là đúng hay sai, hay chỉ là những lời đồn thổi, nửa thực nửa hư, những nghiên cứu ấy cuối cùng cũng sẽ có thể đưa chúng ra tới đáp án.

Chúng ta có thể làm gì?

Kĩ thuật phần mềm là một hoạt động của con người chứ không đơn thuần chỉ là một hoạt động trong ngành kĩ thuật công nghệ thông tin nhưng chính bởi chúng ta quá chú tâm đến những khía cạnh của sản phẩm phần mềm nên hầu hết các kĩ sư công nghệ phần mềm đều chưa từng nhìn nhận công việc của mình theo hướng này. Để có thể tiến hóa, đi lên, phát triển, chúng ta phải xem xét lại, đánh giá lại những nguyên tắc mà mình vẫn tuân theo qua những lăng kính mới và từ nhiều phương diện khác nhau. Các chuyên gia về phần mềm cũng nên đào sâu nghiên cứu những vấn đề không thuộc về kĩ thuật để nhận ra rằng những con người tham gia vào quá trình phát triển phần mềm cũng quan trọng không thua kém gì bản thân những quy trình và công nghệ họ đang dùng và tạo ra cả. Những thành viên của một nhóm cũng nên nhận thức được rằng phát triển phần mềm là một hoạt động đòi hỏi sự phối hợp giữa kĩ thuật và tương tác xã hội. Ngành công nghệ phần mềm cần phải khuyến khích những thử nghiệm, trải nghiệm thực tế của bản thân các thành viên trong đội để có thể hiểu được các vấn đề liên quan đến yếu tố con người trong những nhóm làm việc tập trung vào hiệu suất, thu thập dữ liệu và tạo ra cái nhìn sâu sắc, toàn diện giúp cải thiện quá trình phát triển về tổng thể. Những nghiên cứu này có thể mang lại những cải tiến trực tiếp trên sản phẩm, tăng năng suất hoặc giảm chi phí và từ đó ảnh hưởng một cách gián tiếp là gia tăng doanh thu của doanh nghiệp. Bất cứ một kĩ sư phần mềm cao cấp nào làm lãnh đạo của một nhóm đều có mong muốn những thành viên trong nhóm của mình có những kĩ năng này.

Mặc dù hiện nay chương trình đào tạo kĩ sư phần mềm vô cùng đa dạng , nhưng có một điều mà ai cũng phải đồng ý rằng những chương trình học này cần phải dựa trên những chỉ dẫn của khung chương trình đào tạo kĩ thuật phầm mềm bậc đại học, một sáng kiến chung của Viện kỹ thuật điện và điện tử IEEE Computing Society và Hiệp hội máy tính (ACM). Chỉ cần đọc lướt qua khung chương trình này và tìm kiếm cụm từ “những yếu tố con người” sẽ thấy rằng cụm từ này xuất hiện sáu lần trong phần thân bài nghiên cứu. Trong đó, một câu trong bài đã củng cố thêm về tầm quan trọng của chủ đề này:“Các sinh viên cần phải luôn luôn hiểu rằng kĩ thuật phần mềm không phải chỉ là công nghệ.”

Nhưng thực tế đã chỉ ra rằng, khá khẩm nhất thì những yếu tố con người này được co rút nhồi nhét vào vài khóa học ví dụ như là truyền thông kĩ thuật, quản lí dự án phần mềm hay tiến trình phần mềm. Điều này sẽ không thay đổi cho đến khi chúng ta nhận ra rằng nhân tố con người là then chốt trong ngành kĩ thuật phần mềm và rằng việc nghiên cứu và giảng dạy bộ môn và chủ đề này là hoàn toàn thích đáng. Tuy nhiên trong hầu hết các chương trình học, các khóa học về khoa học máy tính hay kĩ thuật phần mềm đều không đả động gì đến chủ đề này. Một khóa học hoàn chỉnh về các khía cạnh liên quan đến con người trong ngành kĩ thuật phầm mềm chỉ có mặt tại một vài trường đại học nhưng một giải pháp đơn giản hơn nhiều đó là đưa nội dung này vào một vài giờ thuyết giảng trong chương trình học bậc đại học hiện nay, cho dù đó là chương trình học về lập trình hay kiểm thử, thiết kế hay quản lý dự án. Việc đưa chủ đề này vào một khóa học cao cấp về kiểm chứng và thẩm định phần mềm, dưới dạng diễn thuyết - thảo luận mang lại những phản hồi tuyệt vời ngoài sự mong đợi.

1200px-Coding_Shots_Annual_Plan_high_res-5.jpg

Theo giả thuyết của Carl Jung về các loại tính cách khi cùng hợp tác làm việc trong một dự án, các sinh viên sẽ được mở mang kiến thức và đảm bảo rằng sinh viên sẽ được trải nghiệm và được bắt tay vào làm thực sự trước khi họ bước chân vào nghề này. Nhưng đáng tiếc thay, những sinh viên phải thực sự làm việc trong ngành họ mới có thể hiểu được lí do, nguyên nhân sâu xa của yếu tố con người này. Một khóa học bậc cao học cũng cung cấp cơ hội để giảng dạy về những khái niệm này dưới dạng các buổi seminar, nơi các sinh viên được yêu cầu phải đọc về những chủ đề cụ thể từ trước rồi sau đó cùng nhau thảo luận. Sinh viên cao học thường trưởng thành và chín chắn hơn và những người có kinh nghiệm thực tế trong công việc sẽ dễ dàng liên hệ kinh nghiệm trong công việc hàng ngày này của mình với những chủ đề như vậy hơn.

Trong một khóa học về “Những chủ đề nâng cao trong ngành kĩ thuật máy tính”, các sinh viên cao học được yêu cầu viết một bài nghiên cứu ngắn về chủ đề này, trong đó phải thực hiện một vài thí nghiệm đợn giản trên con người và có báo cáo kết quả. Nhiều học viên theo học chương trình thạc sỹ và tiến sỹ có thể được khuyến khích nghiên cứu thêm về chủ đề có rất nhiều khía cạnh phải động tới này. Những vấn đề kĩ thuật-con người quan trọng trong ngành kĩ thuật phần mềm có thể được đào sâu nghiên cứu và sinh viên có thể được hướng dẫn thiết kế và vạch ra phần khung, thực hiện và phân tích những công trình nghiên cứu từ đó có kinh nghiệm thực tiễn, được hướng dẫn làm việc một cách bài bản. Tuy nhiên, bất kì một công trình khoa học nghiêm túc nào đều đòi hỏi người thực hiện có nên tảng vững chắc về làm thí nghiệm khoa học hành vi, phương pháp nghiên cứu, hiểu biết về phân tích số liệu, và sự chấp thuận của một vài tổ chức, ủy ban cho phép thực hiện các thí nghiệm nếu trong trường hợp cần lưu lại thông tin cá nhân nhạy cảm của đối tượng tham gia. Một cách tiếp cận tổng thể đó là tập trung một số người cùng chí hướng với nhau và bắt đầu khai thác các vấn đề này trong khuôn khổ các hội nghị có nhiều tiếng tăm về công nghệ phần mềm và các tạp chí, khuyến khích các nhà nghiên cứu và các chuyên gia phần mềm đóng góp những nghiên cứu về chủ đề lấy con người làm trung tâm. Đồng thời, các tài liệu về quá trình tư duy, tương tác nhóm, thẩm định và động lực, căng thẳng kĩ thuật, tính cách, và các vấn đề kỹ thuật xã hội có thể được đưa thêm vào các khóa học đại học và sau đại học, và các chủ đề về khoa học hành vi có thể được giới thiệu từ từ, dưới sự bảo trợ của HCI và các khóa học quản lí phần mềm.

Luận chứng cho sự cần thiết cho các chủ đề như vậy không nên quá phức tạp vì những chủ đề này sẽ nhận được phản hồi tích cực từ những người trong ngành. Như nhiều nhà quản lý phần mềm có thể chứng thực, thất bại lớn trong các dự án phần mềm cuối cùng chính là con người. Mặc dù vậy, các khía cạnh con người trong ngành công nghệ phần mềm không nhận được sự chú ý của mà chúng xứng đáng. Các nghiên cứu về yếu tố con người trong công nghệ phần mềm không phải là "mũi tên thần" có thể bắt trúng và giải quyết tất cả các vấn đề, nhưng nó sẽ cung cấp nhiều hiểu biết khác nhau và các cách tiếp cận mới để trả lời nhiều câu hỏi mở trong công nghệ phần mềm. Vì chung quy lại thì sự đa dạng về con người và ý tưởng là vô cùng hữu ích trong lĩnh vực này. Và cùng vì thế bạn cũng có thế thử thực hiện xem!

Sưu tầm và dịch: Thao Doan Nguồn: "Bringing the Human Factor to Software Engineering By Luiz Fernando Capretz" "1":http://www.ppig.org/library/journal-article/bringing-human-factor-software-engineering

0