Conducting yourself professionally - Teamwork
Foreword
Teamwork is a quintessential element of all software development and conducting yourself within a team is therefore a vital skill to learn. During an average career, one ends up working with multiple different types of teams. I have been in multiple teams that allowed me to grow, and I’ve had to learn to deal with the pain that comes with change and growing and that’s what I’ve tried to journal here.
This post is not at all limited to teamwork in a software project, 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 any type of team situation.
This post focuses on the human element of team work. How do you conduct yourself in a professional manner with the aim of reducing pain and increasing personal growth.
What is the value proposition in teams?
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 it’s best can show you how you can improve both in technical skills and in general people skills and these skills are vital to have in everyday problems.
But a great team doesn’t happen by itself and a certain level of throwing yourself out there 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 it’s members no matter what happens and they strive to help each-other succeed.
A team strives 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.
If you’re a new person or you’ve worked for a long time in random things, joining a healthy team environment with the above things can be overwhelming.
An existing team often has multiple people and a ton of documentation, software code, tools and history behind it. With that history comes all kinds of things that I find beneficial to think about, to navigate yourself more smoothly when joining. It’s all about reducing pain, and more importantly, allowing yourself to grow.
Check your pride and ego at the door
Disclaimer: As someone, who has had a lot of pride in the wrong place, and an ego that is anchored into the wrong things, I feel comfortable sharing this.
Pride and a misplaced ego, in my experience, often leads to toxic work behaviors and hence, here are a few things to think about before stepping forth into enjoying yourself in a team.
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 stops 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, but color them in extreme bias against yourself.
You are extremely 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.”
Ego Note: Leave all pride at the door. Throw what you think are your weaknesses and strengths at your colleagues, and see if they stick. If you don’t expose yourself at all, you will not be able to grow.
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 avoid critique unless you have an improvement. Your new team members might appear to know less than you, but with high likelihood it’s the other way around.
It is more likely that you don't have the full picture than to assume that the product is broken.
Understand, that product of the work is just the end result. Focus on understanding the reasons, and not the end result.
If you find a problem, remember that who is responsible for that problem and that you found it is of no importance.
A question is a magical 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 is that 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 complex than that.
Remember, that requirements are forgotten over time. They evolve over time. The product that you have, 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.
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.
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.”
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 isn’t misplaced, that’s only going to open up more opportunities for you.
Realize, that the product that exists now is 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 that.
Understand, that you might be far too deeply invested in the problem space to be able to branch into most new and creative solutions because working for long in a project has a tendency to establish routine. Keep an open mind, and a new person can open a fresh new page and break your stale 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 are perfect to find problems such as this.
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's rightfully placed.
Try to make it a good environment for new people:
Allow for mistakes, but make sure you have a way to communicate them constructively.
Allow for trust to build up, be there for them when they need you.
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.
Make sure to not try to do everything you normally do in addition to what effort the new person’s joining requires. Communicate clearly to the stakeholders, that your team will probably slow down for some time, and take appropriate time for yourself to adjust.
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.