Overview
Nowadays, more and more application need to build serve for business purpose.
This also require many and many teams need to build for building those application.
Below was 3 most important aspects from my point of view when building a team for long-term project which will guide team to success:
The most important was on the top of the list:
- Mindset/ Attitude
- Process/ Policy
- Technical skill/ Soft skill (for working)
"Hey, We are working for a software company, But technical skill/ soft skill at the least important, was that right? Will you hire a developer with less technical skill event he has a good mind-set?"
Let go through the rest of the article then we will look at the answer at the end. Firstly we need to understand why those important.
What was mindset?
Mindset was reflected through how do you think/ how were you feel about something in specified context and this will lead to your action/ behavior.
There are 2 types of mindset:
- Fixed mindset.
- Growth mindset.
In a fixed-mindset, we believe our basic abilities, out intelligence, our talents, are just fixed traits. For this type of mindset, we usually ignore a chance to challenge ourselves. As the result, it was hard for us to develop our skill.
In the other hand, with growth-mindset, we understand that our talents and abilities can be developed through effort, good teaching and persistence. With this type of mindset, we were willing to learn new thing or facing challenges for improving ourselves. As the result, we can develop ourselves day-by-day, month-by-month, ...
So with the team of growth-mindset, we may not know about something, but we can do it with a good result as we were willing to challenge the problem and the average skills of team will increase.
Why was process important?
In an simple view, process was list of step by step for doing something.
Such as: process to solve urgent bug, process for asking leave.
the process will connect member in the team and guide them what to do in which context. Process also increases the co-operation between members more effectively.
It was easy to do the simple task with 1 member, But some tasks with high effort require more members work together.
The formation below showing that the total effort of 2 members work together:
E=(E1+E2)*alpha
- E1: Effort of member 1
- E2: Effort of member 2
- E: total effort of team
- alpha: this was an variant and reflect the ability for co-operation between member in team. if the team can co-operate well, the value will low and reverse.
We can see that to total effort of team was belonged to the co-operate between members in that team.
Let look at the same below for more understanding about the formula above:
Example 1: There is a tasks which require 5 days for 1 developer and the question is how long we need for 2 developers?
We may expect the answer was 2.5 days (5 days/ 2 members = 2.5 days). But in the real work the value was variant. Let look at some scenario below:
- If these 2 developers always have opposite idea about the task and do not know how to make the final decision. They will use much of time for argue and fix bug after that. So the total of time we need for these 2 developer was high. it may be 3 or 4 or 5 days for 2 developers. In this case, we see that the ability to cooperate between those 2 members was low.
- In the other hand, 2 developers know how to do, know how to make the final decision and start working, know how to share work base on the agreement.We can do it faster, it maybe 2,5 days was enough for them or they can do it faster, the quality may be higher
Example 2: The tester found a bug and told to developer, he checked and fixed and deployed new build to UAT, then tester found that the bug was not fixed in the right way as expect and need to be fixed again.
In this case, we could reduce the misinformation if tester posted that bug on Jira with clear acceptance criteria (AC), then developer fixed and checked based on AC, so we need less time to fix the bug. thus improve the productivity of the team.
We can see that, working in team, co-operation between team members can increase or decrease total effort of the team and process can help us improving collaborate in the team.
Why was technical skill/ soft skill at the bottom of prioritized list?
I agree with most people that we are working for the software company but do not know any thing about computer, we can not work in that company.
In this case, I compare between who can work well with technical and who has less (such as just graduated student in computer science).
With a small project, we want to build and release within month or few months, this was out-of-scope of the article. As this was short-term project. The scope of this article was long-term project which spanned 4 or 10 years.
With long-term project, the domain knowledge is important beside technical knowledge. That is why we need to increase the loyalty of members and improve their skills. So for long-term use, they will create more and more value to the team/ company.
For the technical skills (such as programing language, angular, ....) were not a big problem. Developer can learn them quickly and be able to use it in project.
We know what we need for out project, we can focus on these in the training. this was easy task.
And of course, for big project, we also need 1 person (may be SA/ supervisor) with strong both domain knowledge and technical skill. This person will train and support other members in the team and this members was not the target of this article (may be another article will talk about this person :) )
Conclusion
Building a team for long-term project:
- Mind-set was the most important of the team, we should care about this first, a team with a growth-mindset almost can do what their manager want as they can learn what they need and improve themselves time-by-time.
- Process was at the second. As we work in the team environment, process will increase the value of team by connect members in the team, let them know what to do in which context, avoiding unnecessary thing, ...
- Technical skill/ soft skill at the bottom of prioritized list, as we can learn what we need quickly.
Look back the question above:
"Hey, We are working for a software company, But technical skill/ soft skill at the least important, was that right? Will you higher a developer with less technical skill event if has a good mind-set?"
For me, the answer was "YES".
If you found any mistake or improvement. Please let me know. Thanks