Một số sinh viên phần mềm tốt nghiệp, có việc làm, coi việc học hành của họ là xong rồi và dừng học tập.

Một số công ti thuê người phát triển phần mềm, để họ làm việc cho tới khi kĩ năng của họ trở nên lạc hậu rồi thay thế họ bằng người phát triển mới có kĩ năng tốt hơn. Có thiếu hụt người phát triển phần mềm trong mọi nước. Cũng có số lớn những người phát triển phần mềm thất nghiệp trong mọi nước nữa. Công nghệ thay đổi rất nhanh, công nghệ mới nổi lên mọi năm và người phát triển không cập nhật kĩ năng của họ sẽ bị mất ưu thế. Công ti thuê người rồi sa thải công nhân cũng sẽ bị mất ưu thế bởi vì người phát triển giỏi không ở lại lâu. Ngay khi họ có kinh nghiệm họ sẽ ra đi để kiếm chỗ tốt hơn. Cách tốt nhất là giữ những người phát triển và có đào tạo nhiều hơn để giữ nhân viên được cập nhật với công nghệ.

Tuy nhiên, những người quản lí thường sợ rằng với đào tạo, người phát triển sẽ học bất kì cái gì họ có thể học rồi ra đi, đem theo tri thức đi cùng họ. Ngược với cách nhìn này, tôi thấy rằng đào tạo cung cấp ích lợi dài hạn cho người phát triển, làm tăng sự trung thành của họ với công ti và bằng việc có đào tạo, công ti cũng hấp dẫn những người phát triển bên ngoài tìm chỗ tốt hơn để làm việc. Đào tạo cung cấp cho người phát triển tri thức và kĩ năng mới, giúp học đạt tới lương cao hơn, đề bạt tốt hơn và cảm giác thoả mãn nghề nghiệp. Những ích lợi này tạo ra cảm giác hoàn thành lớn hơn và đưa tới việc giữ nhân viên lâu hơn. Một trong những hiểu lầm về đào tạo là ở chỗ nó là làm lợi cho con người, chứ không lợi cho công ti qua việc đào tạo. Tuy nhiên, tôi thấy rằng chính công ti được lợi nhiều hơn từ việc đầu tư vào đào tạo. Theo nghiên cứu của tôi tại Carnegie Mellon, đào tạo bổ sung có thể làm tăng năng suất quãng năm lần và chất lượng quãng ba lần. Xem xét tới những dữ liệu này, chi phí cho đào tạo ít hơn nhiều so với ích lợi nó đem lại cho công ti. Tương phản lại, người phát triển không có đào tạo cập nhật thường phạm phải nhiều sai lầm hơn, có tỉ lệ lỗi cao hơn, và năng suất thấp hơn. Khi họ nhận ra họ đang rớt lại sau công nghệ hiện thời, họ sẽ tìm việc làm ở đâu đó khác. Trong thế giới cạnh tranh này, tri thức và kĩ năng là nhân tố then chốt cho thành công. Bằng việc nâng cao kĩ năng của người phát triển, công ti cũng làm tăng sức mạnh của nó, và tiềm năng của nó để tăng trưởng và tăng thu nhập của nó.

Người phát triển phần mềm phải hiểu rằng học tập là hoạt động cả đời. Nếu họ có thể lấy ưu thế của việc đào tạo thêm của công ti, tiếp tục học những điều mới và cải tiến kĩ năng của họ, họ sẽ có cơ hội tốt hơn để thăng tiến nghề nghiệp của họ. Những người có kĩ năng cao có cơ hội tốt hơn để được đề bạt, đạt tới lương cao hơn, và ít lo lắng về tương lai của họ.  Người phát triển phần mềm cũng phải hiểu rằng tri thức kĩ thuật của họ có thể làm cho họ có giá trị với công ti trong một thời gian nhưng chung cuộc họ phải phát triển “kĩ năng chéo chức năng” mới hay tổ hợp cả kĩ năng kĩ thuật và doanh nghiệp. Họ cần phát triển kĩ năng mềm để gặp gỡ với khách hàng, hiểu chiến lược kinh doanh và tài chính của công ti để giữ cho họ có giá trị. Câu hỏi là: “Kĩ năng chéo chức năng” là gì?

Gần đây, xem như kết quả quả của cuộc khủng hoảng tài chính, nhiều công ti đã đưa quản lí rủi ro vào như kĩ năng quản lí then chốt phải có. Phần lớn các trường không dạy quản lí rủi ro hay chỉ nhắc tới nó một cách mông lung nhưng người phát triển phần mềm muốn tìm vị trí quản lí phải học kĩ năng này. Về căn bản, mọi người quản lí tương lai đều phải hiểu rủi ro và cách giảm nhẹ nó vì điều đó đang trở thành một yêu cầu cho mọi việc làm. Nếu quản lí cấp cao biết rằng bạn có năng lực quản lí rủi ro, họ sẽ coi bạn có nhiều khả năng là ứng cử viên quản lí hơn người khác.

Trong mọi doanh nghiệp, quản lí mối quan hệ là kĩ năng quan trọng khác cần phải có. Vấn đề là nhiều người kĩ thuật không thích làm việc với khách hàng và thường né tránh bất kì liên hệ nào. Nhiều người ưa thích ngồi trước máy tính của họ để làm việc về các vấn đề kĩ thuật. Đó là lí do tại sao có kĩ năng quan hệ tốt sẽ mở ra nhiều cơ hội hơn cho người phát triển muốn thăng tiến nghề nghiệp của họ. Đó là lí do tại sao đào tạo thêm sẽ giúp họ học nhiều hơn về những kĩ năng doanh nghiệp này. Người phát triển phần mềm có thể làm việc tốt với khách hàng sẽ có khả năng xây dựng tín nhiệm cao với người quản lí cấp cao. Tất nhiên, đó là bước cần thiết để đạt tới đề bạt tốt hơn, lương tốt hơn.

Phần lớn người phát triển phần mềm học cách giải quyết các vấn đề kĩ thuật nhưng ít người biết cách áp dụng kĩ năng này vào trong doanh nghiệp. Phân tích doanh nghiệp là kĩ năng nóng trong nhiều công ti ngày nay. Bằng việc dịch dữ liệu đó thành cái gì đó sẽ cho phép người quản lí ra quyết định là kĩ năng rất giá trị cần học. Mọi công ti đều cần người phát triển phần mềm có thể trích rút dữ liệu dự án, dữ liệu qui trình, phân tích chúng và tạo ra thông tin có ích cho cấp quản lí ra quyết định. Đào tạo thêm về cách đo và độ đo, phân tích dữ liệu và phân tích doanh nghiệp không chỉ làm cho bạn ở trên đỉnh nghề nghiệp kĩ thuật mà nó có thể giúp bạn giao tiếp với người quản lí cấp cao, làm cho bạn thành quan trọng hơn cho công ti, và là cách hiệu quả nhất để giúp bạn thăng tiến nghề nghiệp của bạn.

Quản lí dự án là điểm bắt đầu tốt để đi vào quản lí. Nhưng nó cũng là dễ thay thế được vì nhiều người phát triển cũng học kĩ năng này khi họ thu được nhiều kinh nghiệm. Bước tiếp là dùng kĩ năng quản lí dự án của bạn để lãnh đạo vai trò nhiều tính chiến lược hơn trong công ti. Là người quản lí dự án là tốt nhưng từ đó bạn phải được tham gia vào quản lí doanh nghiệp. Tất nhiên điều này yêu cầu nhiều đào tạo hơn, học tập nhiều hơn, đặc biệt trong việc đem tới khách hàng mới và thu nhập nhiều hơn cho công ti. Bằng việc có những kĩ năng này, bạn có thể được đề bạt lên mức giám đốc thay vì cứ ở mức dự án. Là người quản lí cấp cao cung cấp cho bạn cơ hội trở thành người đóng góp then chốt cho công ti với lương tốt hơn, ích lợi tốt hơn.

Khi bạn đi lên, bạn phải nhận ra rằng kĩ năng của bạn cũng thay đổi. Ở những vị trí này, kĩ năng ‘thực hiện’ bị thay thế bằng kĩ năng ‘lãnh đạo’. Bạn có thể là người phát triển giỏi, người quản lí dự án giỏi nhưng khi bạn lên mức quản lí cấp cap, điều đó đi ra ngoài “kĩ năng quản lí” sang thành “kĩ năng lãnh đạo”. Tại mức này, bạn phải học cách nhìn rộng hơn, bạn phải hiểu cách đặt chiều hướng, viễn kiễn, và có khả năng động viên người khác. Bước đầu tiên để xây dựng kĩ năng lãnh đạo là học thêm về điều đang xảy ra trong công nghiệp, điều là xu hướng trong thị trường, ai là đối thủ cạnh tranh chính của bạn. Bằng việc có cách nhìn rộng hơn, bạn có thể đặt chiến lược, viễn kiến và thiết lập vị thế công ti bạn trên thị trường.  Tuy nhiên, có “trần” mà bạn cần xem xét. Trong mọi công ti, có nhiều người có thể chỉ ở một mức nào đó, không thể đi ra ngoài được, bởi vì họ KHÔNG có kĩ năng năng hay năng lực để làm gì hơn. Đó là “trần” của họ và họ không bao giờ được thăng cấp ra ngoài năng lực của họ, bằng không công ti sẽ bị thiệt. Nếu bạn nhìn vào mọi trường hợp doanh nghiệp, phần lớn các công ti thất bại hay phá sản bởi vì họ để người sai vào vị trí cao hơn. Những người này không thể ra quyết định táo bạo, không thể đặt chiều hướng, không thể đặt viễn kiến. Cho dù ở trên đỉnh, phần lớn mọi người sợ phạm sai lầm cho nên họ dừng ra quyết định khi họ ở vị trí cao hơn nhiều so với năng lực của họ.

Trong công ti thành công, người lãnh đạo có thể KHÔNG phải là người kĩ thuật nhất nhưng bao giờ cũng là người có viễn kiến, người có thể đặt ra chiều hướng và ra quyết định cho công ti. Những kĩ năng lãnh đạo này được học qua đào tạo đúng và kinh nghiệm. Bằng việc xem xét, bạn sẽ thấy rằng phần lớn họ đều có kĩ năng trao đổi rất tốt. Điều then chốt cho kĩ năng này là lắng nghe và giải thích hiệu quả. Những kĩ năng này thường bắt đầu với vị trí yêu cầu làm việc với khách hàng và hiểu yêu cầu của họ. Nhiều người lãnh đạo đã từng là kĩ sư yêu cầu, người phân tích doanh nghiệp, hay người quản lí dự án. Nếu bạn nhìn vào lí lịch của các CEO thành công nhất, gần 90% số họ bắt đầu từ những vị trí này và đi lên tới chủ tịch hay CEO của công ti.

Có nhiều cách phát triển nghề nghiệp của bạn, nhưng bạn có thể thành công nhất trong công ti phần mềm bằng việc liên tục học và tìm cách gia tăng giá trị làm cho bạn thành quan trọng nữa cho công ti. Nhưng bạn cần cam kết học tập liên tục, bằng việc bổ sung kĩ năng mới về cả kĩ thuật và doanh nghiệp hay “kĩ năng chéo chức năng” bạn sẽ đi xa, xa hơn nhiều so với những người khác. Chừng nào bạn còn học, bạn sẽ không bao giờ lo nghĩ về tìm việc làm vì việc sẽ phải tìm tới bạn.

—-English version—-

Training and Learning

Some software students graduate, get jobs, consider their study is done and stop learning. Some companies hire software developers, let them work until their skills become obsolete then replace them with new developers who have better skills. There is a shortage of software developers in every country. There is also a large number of unemployed software developers in every country too. Technology changes very fast, new technology emerges every year and developers that do not update their skills will be at an disadvantage. Company that hiring then firing workers will also be at an disadvantage because good developers do not stay long. As soon as they have experiences they will leave for better places. The best way to keep developers and grow the company is having more trainings to keep employees update with technology.

However, managers often fear that with trainings, developers will learn whatever they can and leave, taking their knowledge with them. Contrary to this view, I found that training offers long-term benefits to developers, increasing their loyalty to company and by having trainings, companies also attract outside developers looking for better place to work. Trainings offer developers new knowledge and skills, help them achieve higher wages, better promotion, and sense of career satisfaction. These benefits produce a greater sense accomplishment and lead to longer employee retention. One of the misconceptions about training is that it is the person, not the company benefits from the training. However, I found that it is the company that benefit more from investment in training. According to my research at Carnegie Mellon, additional training can increase productivity about five times and quality three times. Taking these data into consideration, the cost of training is far less than the benefits it brings to the company. In contrast, developers who do not have update trainings make more mistakes, have higher defects rate, and lower productivity. As they realize they are falling behind current technology, they will be looking for jobs elsewhere. In this competitive world, knowledge and skills are key factors for success. By enhancing the skills of developers, company also increases its strength, its capability, and its potential to grow and increase its revenues.

Software developers must understand that learning is a lifelong activity. If they can take advantage of additional company trainings, continue to learn new things and improve their skills, they will have better chance of advancing their careers. Highly skilled people have better chance of getting promoted, achieve higher wages, and less worry about their future.  Software developer must also understand that their technical knowledge can make them valuable to the company for a while but eventually they must develop new “cross-functional skills” or a combination of both technical and business skills. They need to develop soft-skills to meet with customers, understand company business strategy and finance to keep themselves valuable. The question is: What are those “Cross functional skills”?

Recently, as the result of the financial crisis, many companies have put risk management as the key management skill to have. Most schools do not teach risk management or only mention about it vaguely but software developers who want to seek management positions must learn this skill. Basically, all future managers must understand risks and how to mitigate them as it is becoming a requirement for all jobs. If senior manager know that you have risk management abilities, they will consider you more likely as management candidates than others.

In every business, relationship management is another important skill to have. The issue is many technical people do not like to work with customers and often avoid any contact. Many prefer to stay in front of their computer to work on technical problems. That is why having good relationship skills will open more opportunity for developers who want to advance their careers. That is why additional trainings will help them to learn more about these business skills. A software developer who can work well with customers will be able to build tremendous credibility with senior managers. Of course, it is a necessary step to achieving better promotions, better wages.

Most software developers learn how to solve technical problems but few know how to apply this skill into business. Business analytics is a hot skill in many companies today. By translate that data into something that will allow managers to make decision is a very valuable skill to learn. Every companies need software developers who can extract project data, process data, analyze them and create information that are useful for management to make decision. Additional training in measurements and metrics, data analysis and business analytics not only establishes you on the top of technical career but it can help you to interface with senior managers, making you more important to the company, and is the most effective way to help you advancing your career.

Managing a project is a good starting point to go into management. But it is also an easily replaceable since many developers also learn this skill as they gain more experiences. The next step is to use your project management skill to lead to a more strategic role in a company. Being a project manager is good but from there you must get involved into business management. Of course this requires more trainings, more learning, especially in bringing in new customers and more revenues to the company. By having these skills, you can get promoted to the director level rather than just stay in project level. Being a senior level management provides you opportunity to become a key contributing to the company with better wages, better benefits.

As you move up, you must recognize that your skills also change. In these positions, the ‘doing’ skills are replaced by the ‘leading’ skills. You can be a good developer, a good project manager but as you get to a senior management level, it goes beyond “management skills” but to “leadership skills”. At this level, you must learn to look at the broader view, you must understand how to set the direction, the vision, and be able to motivate others. The first step to build leadership skills is to learn more about what happen in the industry, what are the trends in the market, who are your competitors. By having a larger view, you can set strategy, vision and establish your company position in the market place.  However, there is a “ceiling” that you need to consider. In every company, there are many who can only stay at certain level, cannot go beyond, because they do NOT have the skills or the capability to do anything more. That is their “ceilings” and they should never get promoted beyond their capacities, else the company will suffer. If you look at all the business cases, most companies that failed or bankrupt because they had the wrong people into the higher position. These people cannot make bold decision, cannot set direction, cannot set the vision. Even at the top, most are afraid because of making mistake so they stop making decision as they are at the positions that are much higher than their abilities.

In successful companies, the leader may NOT be the most technical person but always be the person with vision, who can set direction and make decision for the company. These leadership skills are learned via proper trainings and experiences. By closer examination, you will find that most of them have very strong communication skills. The keys to this skill are listening and effectively explaining. These skills  often start with position requires working with customers and understanding their requirements. Many of the leaders were requirements engineers, business analysts, or project managers. If you look at the profiles of most successful CEO, almost 90% of them started in these positions and move up to president or CEO of company.

There are many ways to develop your career, but you can best succeed in a software company by continuing to learn and find ways to add value that makes you too important to the company. But you need to commit to continuous learning, by adding new skills of both technical and business or “Cross functional skills” you will go far, much further than others. As long as you are learning, you will never have to worry about finding job because the job will have to find you.