Unlocking productivity is one of the biggest concerns for any person with a management role. However, people rarely agree on the best approaches to improve performance. Over the years, I have observed different managers using opposite practices to churn out the best performance of the team they are managing. Unfortunately, some of them work and others don’t. To be more accurate, what does not increase performance, might actually reduce performance.
In this article, I would like to review what I have seen and learned over the years and share my personal view on the best approaches to unlock productivity.
What factors define teams performance?
Let’s start with analyzing what composes a team. Obviously, a team is composed by team members, each of them with its own expertise, strengths and weaknesses. However, the total productivity of the team is not necessarily the total sum of individual’s productivity. Other factors like team work, processes and environment also have a major impact to the total performance, which can be both positive or negative.
To sum up, the 3 major factors discussed in this article will be technical skills, working process and culture.
In a factory, we can count the total productivity as the sum of individual productivity of each worker, but this simplicity does not apply to the IT field. The differences lie in the nature of the work. Programming until today is still an innovative work, which cannot be automated. In IT industry, nothing is more valuable than innovation and vision. That explains why Japan may be well known for producing high quality cars, but US is much more famous for producing well known IT companies.
In contrast to the factory environment, in a software team, developers do not necessarily do or are good at the same things. Even if they graduated from the same school and took the same job, personal preferences and self-studying quickly make developer’s skills different. For the sake of increasing total productivity, this may be a good thing. There is no use for all of members to be competent on the same kind of tasks. As it is too difficult to be good at everything, life will be much easier if members of the team can compensate for each others weakness.
It is not easy to improve the team’s technical skills, as it takes many years for a developer to build up his/her skill set. The fastest way to pump up the team’s skills set is to recruit new talent that offers what the team lacks of. That’s why the popular practice in the industry is to let the team recruit a new member themselves. Because of this, the team, which is slowly built over the years, normally offers a more balance skills set.
While recruitment is a quick and short term solution, the long term solution is to keep the team up to date with the latest trends of technology. In this field, if you do not go forward, you go backward. There is no skill set that can be useful forever. One of my colleagues even emphasizes that upgrading developer’s skills is beneficial to the company in the long run. Even if we do not count inflation, it is quite common that the company will offer pay raises after each annual review to retain staff. If the staff do not acquire new skills, effectively, the company is paying higher price every year for a depreciating asset. It may be a good suggestion for the company to use a monetary prize like KPI to motivate self-study and upgrading.
There are lots of training courses in the industry but it is not necessarily the best method for upgrading skills. Personally, I feel most of the courses offer more branding value than real life usage. If a developer is keen on learning, there should be quite sufficient knowledge on internet to pick up anything. Therefore, unless for a commercial API or product, spending money on monetary prizes should be more worthy than on training courses.
Another well-known challenge for self-studying is the human natural laziness. There is nothing surprising about it. However, the best way to fight laziness is to find fun in learning new things. This only can be achieved if developers take programming as their hobby more than as their profession. Even not, it is quite reasonable that one should re-invest effort on his bread and butter tool. One of my friends even argues that if singers/musicians take their own responsibility in training, programmers should do the same.
Sometimes, we may feel lost due to the huge amount of technologies exposed to us every year. I myself feel that too. My approach for self studying is adding a delay in absorbing concepts and ideas. I try to understand but do not invest too much until the new concepts and ideas are reasonable accepted by the market.
Working process can contribute greatly to a team’s performance, positively or negatively. Great developers write great code, but they will not be able to do so if they waste too much effort on something not essential. Obviously, when the process is wrong, developers may feel uncomfortable about their daily life. Unhappy developers may not perform their best.
There is no clear guideline to judge if the working process is well defined but people in the environment will feel it right away if something is wrong. However, it is not as easy to get it right, as people who have the right to make decisions are not necessarily the guys who suffer from a bad process. We need an environment with effective feedback channels to improve the working process.
A common pitfall for the working process is the lack of a result oriented nature. The process is less effective if it is too reporting oriented, attitude oriented or based on some unreal assumptions. To define the process, it may be good if the executive can decide whether he wants to build an innovative company or an operation oriented company. Some examples of the former kind are Google, Facebook, Twitter, while the latter may be GM, Ford, Toyota. It is not that an operation-oriented company cannot innovate, but the process was not built with innovation as a first priority. Therefore, the metric for measuring performance may be slightly different, which causes different results on the long term. Not all companies in IT fields are innovative. One counter example is the outsourcing companies or software houses in Asia. To encourage innovation, the working process needs to focus on people, minimize hassle, maximize collaboration and sharing.
Through my years in the industry with Water Fall, not so Agile and Agile companies, I feel that Agile works quite well for IT fields. It was built based on the right assumptions that software development is innovation work and less predictable compared to other kinds of engineering.
When Steve Jobs passed away in 2011, I bought his authorized biography by Walter Isaacson. The book clearly explains why Sony failed to keep its competitive edge because of inner competition among its departments. Microsoft suffers similar problems due to the controversy stack ranking system that enforces inner competition. I think that the IT field is getting more complicated and we need more collaboration than in the past to implement new ideas.
It is tough to maintain collaboration when your company grows to become a multi-culture MNC. However, it still can be done if management gets the right mindset and continuously communicates its visions to the team. As above, the management needs to be clear if they want to build an innovative company as this requires a distinct culture, which is more open, and highly motivated.
In Silicon Valley, office life consumes a great part of the day as most of developers are geeks and they love nothing more than coding. However, it is not necessary a good practice as all of us have a family to take care of. It is up to individual to define his/her own work life balance but the requirement is employee fully charged and feels exited whenever he comes to office. He must feel that his work is appreciated and he has the support when he needs it.
To makes it short, here are the kind of things that management can apply to increase productivity of the team:
- Let the team involve in the recruitment. Recruit people who take programming as hobby.
- Monetary prizes or other kind of encouragements for self-study, self-upgrading.
- Save money by not having company sponsored courses (unless for commercial products).
- Make sure that the working process result is oriented.
- Apply Agile practices
- Encourage collaboration, eliminate inner competition.
- Encourage sharing
- Encourage feedback
- Maintain employee work-life balance and motivation.
- Make sure employee can find support when he needs it.
|Reference:||How to increase productivity from our JCG partner Nguyen Anh Tuan at the Developers Corner blog.|
This guide will introduce you to the world of Software Architecture!
This 162 page guide will cover topics within the field of software architecture including: software architecture as a solution balancing the concerns of different stakeholders, quality assurance, methods to describe and evaluate architectures, the influence of architecture on reuse, and the life cycle of a system and its architecture. This guide concludes with a comparison between the professions of software architect and software engineer.