So far this series has covered the following recipe items for developing great solutions:
These are a great foundation, we could still end up with a toxic environment. How do we cultivate a positive environment that everyone is energized to work in?
Having an open environment can bring positive energy to the team. An environment where people are free to express themselves no matter their background or level of experience without fear of repercussions is one in which people can thrive. Focus on everyone involved in a respectful way:
Part 1 of this series talked about focusing on everyone on the team and anyone that can contribute ideas to the project. Where that was more informational gathering, this is more about how we interact with everyone.
Depending on the organization, people could be siloed into departments and roles. While this isn’t a bad way to run an organization and can actually make it easier, I have found it can have a negative effect on how those groups communicate with each other. Trust is lost, walls are built, blames are placed, lines are drawn.
The answer isn’t necessarily a flat structure, as that can create chaos. The most important takeaway is no matter what the structure is, having an open communication path between everyone is hard work, and the work must be put in to have a positive environment.
Great ideas can come from anywhere and our own ideas aren’t always the greatest. We have to welcome both these concepts in order to create an environment where everyone is engaged and excited to contribute without worrying they may upset others. While open communication is very important we should still be respectful of our fellow team members ideas and feelings so trust isn’t lost.
Being an empathetic team member will make it easier to have that open communication. Understanding other team members' motivations is empowering. While there might not be agreement, with understanding their feelings, there can be a solid foundation of communication established.
I have been guilty of trying to do everything. There are many things that can cause this way of working. Sometimes we can move faster on our own. Sometimes there is a lack of trust or worry about a loss of control. What it actually does is create a bottleneck. While it is true we can sometimes move faster, we can't always move farther. In order to have the whole team succeed, everyone needs to be involved.
Being in a leadership role of any kind, even if it is being a senior contributor, others on the team may look up to that position. If that person does everything, it can negatively impact the rest of the team. The team may appreciate someone that can cover everything, but all it doesn't allow the rest of the team to step up. They can become stagnant and complacent.
Watching someone realize that they can do something on their own is not only rewarding for them but also for the person that stepped out of their way. Less burnout will occur. More communication will happen. In the end a more positive environment will be built.
Along with sharing the load with the rest of the team, there should be a focus on supporting the future of the team and really the extended professional group (e.g. software engineering as a whole).
Part 2 of this series talked about continuous improvement. Not only should there be continuous improvement in the code and processes, focus should be given to the people. Especially those that are new to the field. The more newcomers learn and the more positive the experience they have the more likely they are to stay not only with the company but also in the field.
But staying isn’t always the best option. Sometimes leaving is the best option for the individual involved. So why would we want to support our professional community, why train someone when we know at some point they may leave?
If we don’t cultivate the next generation of professionals then there will be no one to hand off knowledge and work to. Right now there seems to be an emphasis on hiring senior people. But there are only so many senior level people. Having new people join the team means fresh ideas and novel ways to do things are introduced. So celebrate and be happy when people find a new path they want to take in their career.
In order to truly support the future means more than hiring "junior" developers. There should be a plan on how to support people throughout their careers. If the organization is large enough, have a pipeline going from people looking for their first jobs to early career engineers to technology leaders. Create relationships with schools and bootcamps to get those early career people. Set up a mentorship program to help people level up quickly. The more you do the more your pipeline will include amazing people.
The size of the engineering organization will greatly affect what can and can't be done. If you are in a company with only a dev or two, then find other ways to support the future. Be a mentor for someone just starting out. Pair with them. Helping them prep their resume or discuss what will make for a good portfolio.
All these things will not only support the future, but will be truly rewarding for yourself.
Being humble and respectful is a great way to make sure the team has a positive experience. This in turn will help them build great solutions via an open communication platform. It will have the added benefit of keeping people longer and growing a truly trusting relationship.
In part five of the series we will learn when ,why, and how we should bend some of the previous ingredients.