The human element of teamwork

kaleidico-754522-unsplash.jpg

Teamwork is an important aspect of all software development and conducting yourself within a team is therefore a vital skill to master. Optimally, teams require you to change, grow and improve yourself. Growth and change can be painful and to try to reduce the pain, I have gathered some tips and tricks that hopefully work to lessen that pain.

This post is not at all limited to teamwork in software projects, but it is worth knowing that my experiences stem mostly from them. I believe, however, that the things that I outline in this post are applicable more widely and in many types of team situations.

This post focuses on the human element of team work. How can one conduct themselves in a professional manner with the aim of reducing pain and increasing personal growth.

What is the value of a team?

Joining a healthy project team is, I think, the best thing that can happen to you in your software development career - and even in your life.

A great team is like a mirror, that at its best can show you how you can improve both your technical skills and general people skills. These skills are vital to have in everyday situations even outside the workplace.

But a great team doesn’t happen by itself and a certain level of throwing yourself out there/letting go is required.

What are the elements of a great team?

  • A team has a common goal.

  • A team exercises constant communication about “how” to do something, just to verify that they are doing the right thing. (Software Devs: code review).

  • A team carries responsibility as a whole. They fail and succeed as a whole.

  • A team takes care of its members no matter what happens and they strive to help each-other succeed.

  • A team should strive to be better every day.

  • A team feels safe and is fun to work in - you feel like you are able to express yourself within it.

  • A team doesn’t limit you.

Being in a team

edited.jpg

Check your pride, ego and mindset at the door

Disclaimer: As someone, who has had and still has a lot of pride in the wrong place, and an ego that is anchored into the wrong things, I feel comfortable in passing on this advice.

Pride and a misplaced ego, in my experience, often lead to toxic work behaviors.

If you have misplaced pride or ego,

  • You might feel pain when someone criticizes your work. This can lead to you avoiding showing your work to others and it might stop you from improving and the general understanding from spreading. Most importantly though: You are only in your own way here.

  • You might feel like you are being criticized when the result of your work is being criticized. (Code review)

  • You might be unable to hear words neutrally and instead color them in extreme bias against yourself.

  • You are susceptible to burnout, as you spend a lot of energy trying to keep your personality afloat.

  • You “half-ass” your work, because you feel like it’ll not be good enough no matter what you do.

  • You might dismiss valid concerns and spread toxicity.

  • You might feel embarrassed when you make a mistake.

  • You might feel relief, when other people make mistakes too.

Here’s a better mindset in general:

  • You are not your work.

  • As a single person, you are severely limited. If you’ll allow it, you can bring people’s collective minds together into the work you do, and achieve greater things.

  • Bringing out the best in others brings out the best in you.

  • It’s not about being better than someone else - it’s about being better than yourself yesterday.

Real world teamwork tips: it’s all about the human element

"Growth is painful. Change is painful. But, nothing is as painful as staying stuck where you do not belong."
— N. R. Narayana Murthy
  • The way and frequency at which you communicate your displeasure towards anything in a new project that you've just joined is of high importance. To be successful at it, you have to be able to adapt, to a degree, to the reality that defines the ways of working inside that project. This does not mean that you should allow dysfunctional things to continue, but being tactful and allowing some time to pass with your communication is absolutely key in being able to become someone who your colleagues are willing to hear. To be a great software developer, you also need to be able to develop relationships.

  • Focus on improvements, not critique and certainly think twice before you criticize without an improvement. Your new team members might appear to know less than you, but with high likelihood it’s the other way around.

  • Never belittle or make fun of other people’s work, no matter how silly it is - understand that even experts work with stuff that's new to them all the time. Silly things are usually just a side-effect of an incomplete understanding and that, if anything, is very common.

  • It is very possible to offend the people you work with by calling them out on their their way of working - especially in the start. If these people are like you, they might take pride in their work and it might be hard for them to separate themselves from it. Refer those people to this post, and remember that being tactful and strategical about your communication may make it less painful for you both.

You might not have the full picture

  • It is more likely that you don't have the full picture than to assume that the product is broken.

  • A product consists of a huge body of work. A lot of this work is purely immaterial and what you end up seeing at the end is just the tip of the ice berg. Focus on understanding the reasons that led here, and not the end result.

  • If you find a problem, remember, that “who caused the problem” and “I discovered the problem” are of no importance.

  • A question is the best tool for a new project. It is mostly unable to offend anyone, and immediately allows you to find the things that are unattended. Help carry the weight of the things that are unattended, and you will soon become an irreplaceable asset to your team.

  • If you’re just joining a team, understand, that the reason you can find problems might be because you have a fresh pair of eyes. The rest might not have that luxury and even yours will be temporary. It’s extremely ill-conceived to think, that people made bad decisions out of malice or incompetence. Often, the answer is more nuanced than that.

Software expires like milk, not like wine

  • Remember, that requirements are forgotten over time. They evolve over time. The product that you have in front of you now, is just a snapshot that is fixed in time, and it is by definition going to expire right in front of your eyes. If you assume the product/code/software has been neglected intentionally and that is the reason why it looks so awful, it is more likely that it just expired.

edited.jpg

Real world teamwork tips: Someone joins your team - a threat or an opportunity?

"Make your ego porous. Will is of little importance, complaining is nothing, fame is nothing. Openness, patience, receptivity, solitude is everything."
— Rainer Maria Rilke

Routine can make you blind

  • Ego Note: Allow for the fact, that the new person joining might be smarter and better at everything that relates to your work. Realize that if your team is healthy and your ego is in a healthy place - this is only going to open up more opportunities for you.

  • Try to internalize, that the product that exists now might be a result of thousands of hours of meetings, talking, interpreting, short cutting and making ends meet. If a new person criticizes a solution, it is certainly not directed at you, even if it might sound like it.

  • Understand, that you might be far too deeply invested in the problem space to be able to branch into most new and creative solutions. Working for a long time in a project has a tendency to establish routine. Keep yourself receptive, and a new person can open a fresh new page and break your routine for you.

  • You might be way too good at using or circumventing the bad things to even know that it’s bad. New people can open your eyes to these things.

Take care of yourself

  • When something a new person says upsets you, it's a great place to assess what you care about professionally and if your ego is misplaced.

  • Realize, that if you feel constantly challenged at work more than usually, it takes a toll, and you need to compensate in return by spending time on yourself. A new person is a great opportunity for growth if you'll allow it, but remember that all growth hurts and all pain requires healing.

  • New people joining can be really hard depending on the person. Give feedback on this, but keep it constructive and make sure it comes from a healthy place.

make a good environment for new people

  • Allow for mistakes, but make sure you have a way to communicate about them constructively.

  • Allow for trust to build up - be there for them when they need you.

  • Make sure that you communicate inclusively. A new person joining means that in a way, your previous team dynamic has to shift - and if you welcome this shift, you’ll all be better for it.

  • Make sure to allocate your personal resources in a way, that gives you the time that is needed to on-board the new person. Communicate clearly to the stakeholders, that your team will probably slow down for some time. Remember to take appropriate time for yourself to adjust.

Time heals most wounds

  • When people interact daily, sometimes it is bound to get heated. Make sure you have a mechanism in place, where situations like these can be addressed constructively.

  • Focus on the fact that the new person will make your job easier in the long run, however rocky it gets.

  • Remember, that it takes time to adjust - allow for time to pass and take it one step at time without jumping to conclusions.