After many years of living and breathing code, I gradually worked my way to leadership positions at various startups and enterprise software companies. I've led teams from just two people to hundreds around the globe.
Being a software engineer didn’t automatically make me a successful manager of engineering teams. I had to deal with obstacles and challenge my own expectations to learn how to not only get the best from my employees but also ensure their satisfaction at work.
[ Do you wish you were a more nimble leader? Read also: How to boost your agility in 24 hours. ]
Here are four lessons that surprised me along the way:
1. Stuff happens
When I was just starting out as a software engineer, I would set goals each day that I expected to accomplish. Over the years I learned better. Later, as I became a manager, I would tell my staff that what I plan at the start of the day rarely works out exactly as I want. The unexpected happens in life and work.
Code doesn’t work correctly. The network goes down. Your biggest customer has an urgent request. This took me years to learn as an engineering professional, and now I prepare my team and give them the flexibility to roll with the unexpected.
2. Team members don’t always think about costs
It’s great that technology teams want to geek out and leverage their tools of the trade to create amazing outcomes. However, there certainly have been times where some team members think there is an unlimited budget of money and time to deliver an end goal.
One thing I often do in these situations is to ask an employee to pretend they own the business and are actually spending their own money to pay for the expenses. It helps to think this way as a reminder that this is a business, and everyone should wear a business hat to remember the context in which we work.
3. Long-term loyalty no longer exists
I have always sought to understand the people I work with and maintain good relationships with them. Over time, I realized I didn’t always know the real state of my employees as well as I thought.
For example, one day a key manager who worked for me told me that he was quitting and gave me a three-day notice, stating that his new job needed him right away. In every previous discussion we had, he was engaged and stated how excited he was in his role.
What I learned was that recruiters are out there pursuing employees very aggressively and can grab their attention extremely quickly, especially when there is low unemployment. I learned to do as much as possible to provide for the needs of my staff, but they will leave at some point, and they need to do what is best for them.
4. Even managers make assumptions
As you gain experience, you start to see patterns in things, like the evolution of different technologies, the various eye-opening ways people interact and behave, management changes, acquisitions, and more. You can recall and leverage these patterns to better understand and address situations that arise.
However, what comes as second nature to you may be a new experience and learning opportunity for the people below you. This may seem obvious, but what I learned is that it takes discipline to not assume a younger employee knows what you do and instead find opportunities to explain and even mentor them through a path of change you have traveled before.
Be your team’s advocate
With these and many other lessons learned, my advice is to engage with your staff more than you think you need to and provide opportunities to pursue areas they are interested in. Remove roadblocks for them, and be their advocate.
When failure or unexpected change happens, help them understand that stuff does indeed happen, then focus on staying positive while learning and adapting as you navigate forward. In the end, you want both managers and staff to be continuous learners, take change in stride, and enjoy the collaboration and impact teams can deliver for a business or organization.
[ Are you leading culture change? Get the free eBook, Organize for Innovation, by Red Hat CEO Jim Whitehurst. ]