15 Jan, 2021
Kĩ năng con người
Hầu hết dự án phần mềm thành công đều có hai yếu tố quan trọng: Người quản lí dự án phần mềm giỏi và tổ có kĩ năng cao trong miền họ đang làm việc.
Về cơ bản, đây tất cả đều là về con người và kĩ năng của họ. Qua 40 năm làm việc trong công nghiệp phần mềm, tôi chưa bao giờ gặp một dự án phần mềm thất bại vì vấn đề kĩ thuật nhưng tôi đã thấy nhiều thất bại do “vấn đề con người” và đây là một khu vực những người hàn lâm không biết rõ. Hầu hết các trường chỉ hội tụ vào vấn đề kĩ thuật mà chưa bao giờ chuẩn bị cho sinh viên giải quyết với “vấn đề con người”.
Ý tưởng rằng người kĩ thuật chỉ làm việc với máy tính là hoàn toàn sai. Nhiều sinh viên nghĩ chừng nào họ còn có thể viết được mã, họ có thể vẫn làm việc tốt, điều đó là sai. Ngay khi sinh viên vào công nghiệp, họ sẽ thấy rằng họ sẽ dành đến nửa thời gian gian để nói với người khác: thu lấy yêu cầu từ người dùng, thảo luận về thiết kế, kiểm điểm cách tích hợp, tranh cãi về ai sẽ thực hiện chức năng nào, phân tích mô đun nào sẽ làm điều gì, và ai sẽ quản lí giao diện v.v. Họ sẽ biết rằng mọi người đều có tình cảm và cách họ tương tác với mọi người sẽ xác định cách họ có thể làm cho dự án thành công hay không. Mọi người đều muốn được đối xử một cách kính trọng, một cách nhã nhặn và nếu họ hiểu rằng nếu họ muốn dược đối xử tốt thì họ phải đối xử với người khác cũng hệt như vậy. Chung cuộc, họ sẽ biết rằng khi mọi người làm việc vất vả mà không có nghỉ ngơi, họ sẽ tạo ra khiếm khuyết. Khi mọi người quá bị căng thẳng, họ sẽ không nghĩ được rõ ràng và sẽ phạm nhiều sai lầm hơn. Khi mọi người cảm thấy không thoải mái họ sẽ dễ dàng tức giận và nếu họ ra đi trước khi dự án kết thúc, dự án sẽ không đáp ứng được lịch biểu.
Người có kĩ năng cao có thể vượt qua các vấn đề kĩ thuật và làm cho dự án thành công nhưng họ KHÔNG thể vượt qua được việc quản lí kém. Quản lí kém phá huỷ mọi thứ. Nếu người quản lí ước lượng thiếu về lịch biểu, mọi người sẽ KHÔNG có đủ thời gian để làm việc tốt và chất lượng sẽ bị ảnh hưởng. Nếu người quản lí KHÔNG biết cách quản lí mọi người, tổ dự án sẽ có xung đột với nhau và dự án sẽ thất bại. Nếu người quản lí không đối xử với mọi người một cách công bằng, tổ sẽ KHÔNG làm việc với nhau tốt và tranh cãi trong các thành viên tổ sẽ xảy ra…. v.v. Câu hỏi của tôi là bao nhiêu người quản lí dự án được đào tạo về quản lí con người? Bao nhiêu việc đào tạo dự án đã hội tụ vào “vấn đề con người”? Bao nhiêu chương trình đại học có môn học về “kĩ năng con người” hay “kĩ năng mềm”? Nếu trường không dạy bạn thì bạn phải tìm cách khác để học thêm về kĩ năng này.
Người quản lí dự án giỏi thừa nhận tài năng của tổ mình và hiểu rằng thành công của dự án phụ thuộc vào nỗ lực của người của họ. Họ biết về rủi ro dự án và cách giảm nhẹ chúng. Mọi dự án phần mềm đều có rủi ro nhưng người quản lí kém KHÔNG biết về chúng hay không biết cách ngăn cản chúng. Bởi vì rủi ro có thể xuất hiện ở bất kì đâu và bất kì lúc nào, người quản lí kém thường sợ rồi trách mọi người của mình chứ không hiểu trạng thái của dự án của họ. Khi mọi người bị đối xử không công bằng, họ bực bội, căng thẳng và năng suất sẽ giảm.
Các công ti thành công hiểu vấn đề con người cho nên họ rất cẩn thận trong việc thuê người và chỉ chọn những người có thể thành công trong môi trường làm việc của họ. Trong phỏng vấn việc làm, họ sẽ hội tụ nhiều vào câu hỏi làm việc tổ và kĩ năng con người hơn là câu hỏi kĩ thuật. Họ hiểu rằng phần lớn sinh viên tốt nghiệp đều có nền tảng giáo dục kĩ thuật tốt cho nên họ không hỏi về câu hỏi kĩ thuật. Họ biết rằng, nếu cần có thể đào tạo lại mọi người về kĩ thuật. Nhưng họ sẽ cẩn thận với cá tính, thái độ, hành vi bởi vì những đặc trưng này là khó thay đổi. Các công ti thành công nhất có đầu tư vào đào tạo, không chỉ kĩ thuật mà còn cả cách làm việc tổ và “kĩ năng con người”. Mọi người trong các công ti này đều hiểu rằng việc làm của họ không chỉ là chuyển giao sản phẩm mà còn là liên tục xây dựng năng lực và làm việc cùng nhau để đạt tới mục đích chung: Làm cho công ti thành công hơn.
Mọi công ti đều cần người hiểu việc của mình và biết cách áp dụng kĩ năng của họ để xây dựng sản phẩm phần mềm. Mọi công ti đều cần người quản lí có hiểu biết, những người hiểu cách quản lí cả dự án và con người, người biết đủ về doanh nghiệp để ra quyết định đúng.
—-English version—-
People skills
Most successful software projects have two important factors: A good software project manager and a highly skilled team in the domain in which they are working. Basically, they are all about people and their skills. Throughout my 40 years in software industry, I never encountered a software project that failed because of technical issues but I have seen many failures due to the “people issues” and this is one area that the academic people did not know well. Most schools only focus on technical issues but never prepare students to deal with the “People issues”.
The idea that technical people only work with computers is completely wrong. Many students think as long as they can code, they can do good jobs, that is wrong too. As soon as students enter the industry, they will find that they will spend half of the time talking with other people: obtain requirements from users, discuss the designs, review how to integrate, debate on who would implement which function, analyze which module would do what thing, and who would manage the interfaces etc. They will learn that people have feelings and how they interact with them will determine how they can make the project successful or not. Everybody want to be treated with respect, with courtesy and if they understand that how they want to be treated then they should treat others exactly the same. Eventually, they will learn that when people work so hard without rest, they will create defects. When people are too stressful, they will not think clearly and will make more mistakes. When people feel uncomfortable they will easily get angry and if they quit before project ends, the project will not meet the schedule.
Highly skilled people can overcome technical issues and make projects success but they can NOT overcome bad management. Bad management destroys everything. If managers underestimate the schedule, people will NOT have enough time to do good works and quality will suffer. If managers do NOT know how to manage people, the project team will have conflicts with each other and project will fail. If managers do not treat people fairly, the team will NOT work together well and arguments among team members will happen….etc. My question is how many project managers are trained in people management? How many project training have focused on “People issues”? How many university’s programs have courses in “People skills” or “soft skills”? If the school do not teach you then you must find another way to learn more about this skills.
Good project managers recognize the talent of their team and understand that the success of the project is depending on their people’s efforts. They know about project risks and how to mitigate them. Every software project has risks but bad managers do NOT know them or know how to prevent them. Because risks can occur anywhere and anytime, bad managers often panic then blame their people rather than understand the state of their projects. When people get treated unfairly, they get angry, stressed and productivity will decrease.
Successful companies understand the people issue so they are very careful in their hiring and only select people who can succeed in their work environment. During job interviews, they will focus more on teamwork questions and people skills than technical questions. They understand that most graduated students have a good technical education foundation so they do not ask about technical question. They know that, if needed people can be retrained in technical. But they would be careful with the personality, the attitude, the behavior because these characteristics are difficult to change. Most successful companies do invest in trainings, not just technical but also teamwork and “people skills”. People in these companies understand that their job is not just to deliver products but also to continually build capacity and work together to achieve a common goal: Make the company more successful.
Every company need people who understand their jobs and know how to apply their skills to build the software product. Every company need knowledgeable managers, people who understand how to manage both projects and people, and who know enough about the business to make good decisions.