Seven(ish) Habits of Highly Effective Software Engineering Leaders

Michael Banham
Modern Leaders
7 min readMar 20, 2024

--

I started my first job as a software engineer back when PCs had Intel 80386 processors. In those days, the powerful yet unforgiving ‘C’ language was all the rage. When you needed help, there was no consulting Stack Overflow or ChatGPT, you were on your own.

After seven years of coding, I was promoted to my first management role, leading a small team of my engineering colleagues. From there, as my leadership skills matured, my teams got bigger and my titles loftier. Languages got better, computers more powerful, and the dreaded Waterfall process yielded to the far superior Agile process.

And yet, the principles of good software engineering leadership never changed. Like programming, there is no substitute for hard-won experience.

I’ve learned a lot along the way from the (few) great leaders I’ve worked for as well as the many less-than-perfect leaders, and also from my own experiences. When I look back, I’m sure that my younger self was often one of those “less-than-perfect leaders”. And sometimes, my current self. Hopefully, this brief article will help you avoid some of the mistakes I, and many others, have made.

The title of this article is an obvious tip of the hat to Stephen Covey’s “Seven Habits of Highly Effective People”, a book I’ve read many times — it is still the bible for this sort of thing. In that spirit, let’s have a look at my blessedly concise take on the “Seven Habits of Highly Effective Software Engineering Leaders”.

#9. Show Your Humanity

This seems like an easy one. Because you, like me, are a nice person. Remember though, the moment you are granted authority over someone else, especially over their livelihood, the rules of the game change. Suddenly your words carry more weight, even though you’ve not suddenly gotten smarter. Your criticisms sting like never before. And your bad idea might become reality because you are feared, not because your idea is better. I learned from a great leader that it is best to mostly listen, and encourage everyone on your team to speak before you do. Sometimes though, especially in meetings with lots of non-technical people, your brightest engineers might become uncharacteristically shy. In those cases, speak up and open the door for the best-and-brightest to take the spotlight.

#8. Keep Up With the Times

If you started out writing Cobol on a mainframe, chances are you still have a job because, as the old saying goes, “old code never dies”. On the other hand, if you lead that team then you’ll probably struggle to find a new job doing something new. The changes in software development in the last twenty years are dramatic. In early 2006 there was no such thing as “the Cloud”, or Typescript, or Kotlin, or Dart — or even an iPhone. Today they are ubiquitous. In just the last few years we now have no-code and low-code development, new languages, ever-improving IDEs, and even ChatGPT along with AI that’s actually useful. If you want to lead the team, you have to keep up.

I once had a boss tell me “if you are writing code you are not doing your job”. I’ve pondered this advice many times, and I know a lot of execs that agree. But I think I disagree — a little bit. When you lead, you often decide what you will do on any given day. It’s mostly meetings, figuring out strategy and timelines, communicating status, overseeing design and development, delivering updates, handling HR issues, giving presentations and so on, but not always. You have some discretionary time too. It’s good to write some code now and again to help out, and to help remind you that coding is not an easy endeavor. You’ll be more patient. And, it builds street-cred with your team. Or, do something interesting with a hobby project and share your enthusiasm for your project with your team.

#7. Be Useful (and Fetch Pizza for the Hackathons)

Every organization is different and each has its own unique needs. Your “real” job description depends on what the organization needs from you. When you join a new organization, you won’t know exactly what that is until you get there and learn how things really work. Your versatility is your strength. Figure out where you can be most useful and focus your efforts there.

#6. Process Matters, but Not As Much as You Might Think

You can choose Kanban or you can choose Scrum. So long as it’s not pure-Waterfall, you’ll be fine. The main purpose of the process is to align your team towards a common goal, and especially to align the Product and Engineering teams. That happens mostly through good leadership and good communication and the process, whatever it is, will help to facilitate that. It will also create a record of your progress, aid in forecasting the future, and track your team’s performance against your collective decisions. But your process is maybe 20% of the solution at best. The other 80% is the quality and motivation of your engineers, the cohesiveness of your team, and your collective willingness to follow whatever process you’ve chosen. Make sure you use a great tool, like Jira, to help automate your process. If you learn to use Jira properly, it will do most of the work for you. No spreadsheets with lists of tasks, features and so on, please.

#5. Welcome Criticism

This is a tough one — maybe the toughest — because there’s no denying that criticism is painful. Having been in leadership positions for more years than I’d like to admit, I’ve had my share. Criticism is difficult because it challenges our ego — our very notion of self-worth. One way to ease the sting of criticism is to ask for it before it’s given. Solicited criticism is, oddly, a lot easier to stomach than unsolicited criticism. No matter how it’s given, try to receive it as well-intentioned, even if it doesn’t feel that way. You can only improve, or fix, a problem if you know about it. One mark of a great leader is the ability to take and use criticism to better themselves. Try saying “Thank you” whenever someone criticizes you, crazy as that seems.

#4. Over Communiate

It’s easy to get lost in the day-to-day details of your job and the corresponding struggle to get things done. You know what needs to be done, and you’re doing it. But other folks in your organization probably don’t really know what you and your team are up to. Reach out and tell them before they ask.

#3. Hiring is Your First Priority

Hiring well — or not well — is by far the most consequential thing you will do. If you have a great team full of accomplished, skilled, and motivated engineers, your job will be easy. If not, your job will be hard. And, like all skills, you’ll become a better recruiter with practice. So by all means, use a test of some sort to weed out the weak, and make sure you or someone on your team walks through the test with each candidate to ensure there is no cheating. Ask a lot of questions about why problems were solved the way they were.

I’ve made a few hiring mistakes in my career and it never ends well. Someone gets hurt and suffers, and it’s my fault because I made a bad decision. It’s that simple. In each of these cases, I hired someone while under pressure to build a team quickly, and if I’m honest, deep in my soul I had some reservations I ignored. Here, patience is most definitely a virtue. Listen to your gut and don’t hire someone unless you are confident they are a great fit.

#2. Love What You Do

There is an old saying that every parent eventually learns: “The days are long and the years are short.” Same with your career. Before you know it, the years go by. Life is way too short to be miserable in your job. If you are, try to change things. If that doesn’t work, it’s time to move on to something new.

#1. All Failures Are Failures of Leadership

I’d be remiss to leave this one out because I say it often — some of my team members take great pleasure in reminding me of that whenever something goes south. To paraphrase Michael Jackson, if you want to make the team a better place, take a look in the mirror first. Finally, if there is one cardinal sin of leadership, it is to blame your team when something goes wrong. Don’t chastise your team in public — take the beating and privately work to fix the problem.

So that’s my take on Leadership in “seven-ish” habits. At the risk of sounding trite, like all of life, leadership is a journey and not a destination.

If you’ve enjoyed this story, please press and hold the clap button to show your love.

Check out GizmoCMS, my free personal Content Management System, powered by AI. Handle your Todos, Notes, Diagrams and more, right in your browser, 100% free.

--

--

Michael Banham
Modern Leaders

Technology Leader, Mentor, Seeker/Student, Jazz Guitarist