A high-functioning dev team is an unstoppable machine. Learn how you can elevate your team to the next level
Once a quarter, my company holds an internal conference for continuing education. It covers a wide range of topics from quality assurance to mobile development to security. I am responsible for cloud sessions.
Every few months, I reach out to some people in the company who are into cloud development and ask them if they’d like to present a session to other developers coming to the cloud. This quarter was no exception.
We have three sessions coming up that go a little beyond the basics: NoSQL data modeling and single table design, building an image processing service with S3, and how to design a serverless event-driven application. Pretty exciting stuff if you ask me.
I was doing administrative work to add these sessions to the conference when it hit me. These three sessions can be based on each other to create high-quality applications. A cohesive set of related sessions will keep the engagement going and help each presented idea to demonstrate how the pieces fit into the puzzle.
So I talked with the presenters, and we came up with the idea of building a photo-sharing application. The app allows users to upload photos that are automatically tagged by an ML image recognition service. Then it notifies people who have subscribed to certain tags. Check, check, and check!
We recruited another engineer, a Rockstar frontend developer, and got to work. We built the app in just a few days as we still had our day jobs. The progress we made in such a short amount of time was astonishing and made me wonder why our day to day was not so fast and fun when I was a development manager.
In our conference project, each of us took what we knew inside and out. We played with our skills. Following the home procedures of a typical development team is not always a luxury we get.
Instead of writing a bunch of stories and pulling all that from the top of the list, we split up the work, set up a dedicated Slack channel, and wrote some code. When there was a question or block, we posted it in Slack and got our answer in seconds.
When we focus on following a process, we lose that agility—even if the process is designed to increase agility. alan holub Reminds us of what agile development is at its core:
That was exactly our goal. To a minimum, keep each other unblocked and make it easy to move on.
This is the power of a high functioning team,
Awareness. willingness to help. Feeling team spirit. Driving towards a common goal.
Our small group of engineers don’t usually work together. We are all friends and communicate regularly, but on a day-to-day basis, we are on different teams. Still, we came together and did a month’s work in a few days.
Don’t get me wrong, processes are important. They help to streamline the work; They give you an idea and provide a general consistency if you are ahead or behind your timeline. But they need to be maintained.
It’s like driving a car.
You drive your car every day. It works great and gets you where you need to go. But every six months you need to change the oil. And every two years, you need to get a tune-up. Without it, your car will start to perform worse and worse until it stops working.
The procedures are as follows. If you don’t work to keep them optimized, they will eventually get in the way of development and eventually stop being effective.
Build your own people. They’ll recognize when things start going south.
My little team is a unicorn. It’s made up of me and three of the best engineers I’ve ever worked with. Talk about making yourself the dumbest person in the room!
In fact, not all of us can build a team of the best engineers we know. So how can we move from where we are now to becoming a high-functioning powerhouse?
Build a sense of ownership and pride in what your team does. Help them feel that the work they do with their friends and that they can effect real change.
It’s not smoke and mirrors. As a team leader, you can do that! Empower your team members to make suggestions and take ownership of something. Build expertise in a problem area and teach others the nuances they learn.
Remember, it’s about the people, not the process.
A high functioning team will self-manage. People know what they are best at and from whom they need help. They communicate with each other. The more synergies your team members have with each other, the higher you work.
Let your team fuel your relationships, then build processes that work.
Never underestimate the power of a high functioning team. They can pull together, bounce ideas off each other, and get an insane amount of work done quickly.
It is all based on relationship building. A bunch of strangers won’t be able to bob and weave together without practice. They will also not go to each other and ask for as much help as they need.
Processes are put in place to help promote work. If left unchecked, they quickly switch to the inhibitory regime for the process. Use processes as a tool to help your team communicate.
Don’t know how to start? Try getting your team involved in the hackathon. The short, competitive nature of a hackathon will quickly bring self-coordination among your team members so you can see who naturally leans toward specific components when building something new.
Take the lessons you learned, run through retrospectively, and start nurturing the strengths of your team members. Encourage constant communication, and your team’s productivity and happiness will skyrocket.
Good luck, and happy coding!