Thursday, February 6, 2014

The 3 MOST Important Teammate Qualities

The following list describes 3 qualities that are most important for a teammate to have when going into a long term development project.

Compromising:

In any kind of relationship, both personally and professional, the ability to compromise or come to some kind of agreement is of the utmost importance. Without compromise, people begin fighting about whose idea is better and since no one is willing to back down, nothing gets done. It is absolutely necessary that a teammate be willing and able to compromise. In any situation, especially software development where there are potentially uncountably many ways to solve a given problem, one of the first steps is deciding on a means by which the problem will be solved. From the kind of language, to the specific implementation of a function or object, if team members cannot come to some kind of a compromise on the implementation, nothing will get done.

Reliable:

Reliability is another trait that everyone must have in order to accomplish a given task. If team members are unreliable, code doesn't get written, people start fighting and blaming each other and nothing gets done. A reliable team member is, at least to me, more important than a skilled one. If a skilled team member writes some code, then doesn't show up for the rest of the development cycle, if any problems in the code appear or if it is too complicated for other developers to understand, then the project will see a slow down as the other programmers attempt to understand or fixed the problem code. At least with a less skilled but more reliable team member, if something goes wrong, they are there to fix it or at least assist in fixing the problem.

Congenial:

Having a team that is made up of nice people that can get along goes a long way in being able to get a project done. If the team can get along well, then they will be able to spend longer periods of time together coding, or designing new features or models for a system. A team that doesn't get along will have a harder time because they will be at each others throats at every turn. Being able to get along with people is a valuable skill in any context, especially team oriented ones.

The following is a description of the three other team member qualities that would be nice to have in a team, but aren't as important as the ones described above.

Skilled:

Having a team member or two that are very skilled in at least one aspect of a project can go a long way in terms of ease of implementing a project. Instead of having to constantly Google, information or read through countless forums with little results, having someone skilled in a particular area can help prevent simple mistakes from being made that end up costing lots of time to find the answer to.

Eager:

If team members are not eager to begin working on a project, then it is likely that they will not try very hard to come up with a solution to the problem. Eager team members are excited about the project and want it to succeed. They will devote more time into the project because they enjoy it and because of this will make a better end product. And if they don't, at least it was a good experience instead of being stuck with @$$holes. I would also assert that having an eager programmer is, at least in some ways, better than having a skilled one who is not as excited about the project. The programmer that is excited is also more likely excited to learn new things and will be a bigger asset to the team because they are willing to put in the extra time to learn new things instead of assuming they are some all known hacker.

Drinks:

How else are we suppose to celebrate a hard fought battle of programming endless hours, banging our heads into a desk and throwing our notes and papers everywhere if we can't sit down together at the end of it all, through back some drinks and enjoy a job *well* done?

No comments:

Post a Comment