Effective solutions to overcome the toughest challenges of every Software Manager's life

Picture of a software development team working in the office.
Photo by Jason Goodman on Unsplash

In recent times a brand-new manager joined my team of software managers. He used to be a developer and, thanks to his exceptional talent and people skills, he was noticed by the management and brought into the team. I went through a similar experience, so I immediately saw a younger version of myself in him. I can imagine the constant rollercoaster of emotions and challenges that this person is going through. I was left alone in my journey so I quickly decided to offer him my help. I knew he would face the same tough challenges that I had to deal with when I was starting this job. Have you ever been in the same place?

After just a few weeks of working together, I noticed his attitude shift from positive and energetic to someone worn out by life. A brief chat with him soon revealed that he was struggling with constant feelings of wasting time and feeling useless at work. I thought to myself, that's the same feeling I had when I first started. I really need to help him deal with this, or he may try to find a solution to his problems in another company.

The problem of feeling like you're wasting time and spending days without achieving anything is common among new inexperienced and experienced software managers. Have you ever felt the same? In this article, I'll share some solutions that have helped me tackle this problem.

Programming vs. Working with People

In the IT world, this is a common scenario. A highly skilled programmer, who is respected by their team and accustomed to handling complex projects requiring coordination among multiple programmers, reaches a point where upper management decides to promote him. From my experience, these individuals find themselves in a very challenging situation, where they've spent their entire career focused on technical, task-oriented work and programming, and suddenly, their main job responsibility shifts to managing people.

Michael Lopp portrays it best in his book "Managing Humans: Biting and Humorous Tales of a Software Engineering Manager". In this book, the author presents:

  • stories and reflections, which show the difficult and demanding situation of stepping into a leadership role,
  • the necessity of adapting to new situations,
  • and the need to acquire new skills for better working with people.

The job of a software manager takes on a different dimension. It's no longer about coding and creating impressive features or tackling technical challenges. It becomes more about helping other people perform their tasks better and supporting them.

Joined hands representing team work.
Photo by That's Her Business on Unsplash

One of the key differences between the work of a programmer and a leader is that coding is easily measurable. When you work as a programmer you can easily assess the outcomes of your work. I remember how I approached this:

  • I would consider how many lines of code I wrote in a day,
  • How many articles have I read,
  • Or how many new programming concepts and patterns I learned.

Based on this, I could easily determine whether my day was a successful one or not. In other words, the number of lines of code I wrote directly correlated with how satisfied I felt about my day.

If I wrote more than 500 lines of code, I deemed it a successful day. Otherwise, I would sit down after work to continue on my personal pet project to reach the target number.

Managerial work is quite different from programming. You spend less time directly interacting with code and more time dealing with people. New managers often feel as though they spend their whole days in meetings, and often these meetings can seem unproductive. They may lead to feelings like uselessness.

New managers may think to themselves:

I remember that as a programmer, I was efficient and productive. I knew the best coding practices and used keyboard shortcuts to maximize productivity. Now, most of my day is taken up by meetings, the outcomes of which aren't easily visible or measurable.

This is a typical challenge faced by every young and inexperienced manager, so:

  • How can one handle this?
  • What can be done to reduce the feeling of uselessness in a manager's daily work?

I think there is no simple answer to this question, so everyone must find their solutions. In the text below, I'll explore a few concepts and solutions that I try to apply in my work.

Metrics

First and foremost Metrics. The ability to represent our abstract managerial work in numerical values is essential for our success.

Opened Laptop laying on the table presenting managerial metrics
Photo by Carlos Muza on Unsplash

One aspect of a software manager's job involves leading projects and ensuring that the team's objectives are met. Nomatter if you work with a small team or in a large organization you use goals an abstract representation of what as a company you want to achieve. Recent trends indicate that companies are focusing on objectives:

A simple metric that you as a software manager can apply and benefit from is the percentage of objectives achieved over a certain period. In my manager's team, we use the metric of how many team goals were met over the last six months, or more generally, how well we managed to meet the OKRs or KPIs set before us. This allows us to map an abstract set of goals to a value that is more understandable and easier to grasp for a technically-minded person like you or me.

Individual metrics

Individual goals can also be set in managerial work and you can approach measuring them in the same way by checking what percentage of selected goals were achieved. Remember that I earlier wrote that when I was a programmer I had to write at least 500 lines of code every day? Try to introduce a similar gamification system to your individual goals.

This simple metric allows you to easily and numerically measure and present goals, which might initially seem abstract.

Task Management Tool

A typical day for a manager often involves back-to-back planned meetings interrupted by quick calls between them to do the action plan discussed in those meetings. Days like these pass quickly, leading to burnout while also leaving one feeling unfulfilled. One solution I've found that helps on such days is the use of a Task management tool. It helps to manage my backlog. Some of the tools I like are:

I simply keep track of everything I need to do each day in a task management tool. This frees my mind from constantly remembering what I need to do after each meeting and allows me to manage task priorities better. I often found myself forgetting a task I promised to do or I focus on less important issues. I must say that using this tool has solved these problems. You can read more about it in the "6 Reasons Why Project Management Tools Are Important for Your Business".

You might be surprised to learn that using a task management tool does more than just streamline your day and improve backlog management. It also provides a summary of everything you've accomplished at the end of the day. Seeing a list of all your daily achievements can greatly boost your morale and sense of self-worth.

Opened notebook laying on the table presenting a list of task to do.
Photo by That's Her Business on Unsplash

We often do a lot of small tasks during each day, and they often go unnoticed through the flurry of meetings and daily duties. They can fall off our radar, yet they frequently represent the key achievements of the day. In summary, using a Task Tracker boosts your productivity, helps you manage tasks more effectively, and helps track your daily successes. I highly recommend adopting one of the mentioned tools.

I must say, since I started using one, it has significantly changed how I work and look at my accomplishments after a long day in front of my Mac.

Gathering your achievements in one place

It may seem obvious, but simply recording your achievements in one place and noting what you have accomplished is crucial for satisfying your need to be productive and efficient. An older colleague of mine, currently working at Amazon as a Principal Software Developer, once advised me to sit down with Evernote at the end of each day and spend 15 minutes writing down all the key achievements I managed to accomplish that day. This advice turned out to be a game-changer. Keeping a log of my achievements allows me to easily review my entire day at a glance and determine how successful it was.

Over time, I developed this technique further, not only making daily entries but also creating weekly summaries. Nowadays every Friday, I compile a list of my biggest successes:

  1. I start by talking to my Mac and telling it some keywords that represent the most important achievements. I use the dictation function, which records my speech and turns it into words,
  2. Then I ask my AI assistant to correct my notes and turn keywords into sentences that make sense.

Thanks to that, instead of 15 minutes it only takes me 3.

Manager sitting in front of the computer recording daily achievements
Photo by Soundtrap on Unsplash

Notes

An important component of attending meetings is taking notes, which brings numerous benefits. Besides the obvious - documenting events and decisions - notes can also serve as a sort of artifact, representing the managerial work done. Just as programmers write lines of code and commit changes, managers create notes.

Leader sitting next to the table taking notes during the meeting.
Photo by Unseen Studio on Unsplash

I personally have this rule that from every meeting I attend on a given day, I must have notes from it otherwise, it's as if I didn't go to this meeting.

It's much more gratifying to look back on such a day through the lens of the number of notes, decisions, and action plans that were generated with our involvement. Viewing our work in the form of notes makes it easier for us to visualize and understand the amount of work we did that day. This directly relates to reducing feelings of uselessness. Today, I use AI tools to help me take more precise notes, I suggest:

Meetings Calendar

Let's be clear, a manager's job is inherently linked to communicating with people and that's unavoidable. However, what can be done to avoid the feeling of wasted time that comes from sitting in meetings constantly?

A solution I've found helpful is to add every meeting I attend to my calendar, regardless of whether it's a brief phone call with an individual, a quick Slack call, or a longer group meeting. I always put them into my Google calendar. This gives me a complete view of how I spent my day, which helps me better understand what I was engaged with and how much time I dedicated to meetings.

Google Calendar has this function that can calculate how much time I spend on a given day/week/month in meetings. Having all of your scheduled and not scheduled meetings in this tool can show you the whole picture. Let me tell you most of the time I'm shocked seeing the amount of time I spend in meetings.

At the end of the week, I put everything in my Google Sheet. It helps me with a better understanding of whether the week was intensive, or not. This type of analysis and long-game thinking really helps to better reflect on your tasks and keeps you from burning out.

Leader presents meetings in google calendar webapp
Photo by Gaining Visuals on Unsplash

A significant revelation for me was realizing how many short Slack calls I make throughout the day. Calls that I don't remember at the end of the day but that are crucial in my work. Keeping a record of all meetings in my calendar means that the days I spend on calls don't feel lost. Seeing a calendar filled with tiles representing each meeting translates in my mind to the programmer's commits or written lines of code.

My inner programmer who always strives for maximum efficiency can finally rest easy.

Continuous Improvements

In the IT industry, continuous improvement is a crucial and inseparable aspect of the job. In recent years, the IT sector has been one of the fastest evolving, which often sparks debates about who should invest more in their development:

  • Is it the doctor who needs to keep up with the latest trends and the introduction of new therapies and medications,
  • Or a lawyer, who constantly needs to stay up to date with legal news, statutory changes and ever-changing regulations,
  • Or the programmer who needs to switch their framework or favorite programming language every two years, not because they want to, but because the industry demands it?
People studying in the library
Photo by Patrick Robert Doyle on Unsplash

This concept applies equally to the role of a software manager. Just as programming languages change, new trends, solutions, coaching practices, project management methodologies, and metrics to verify project progress or team performance emerge. Simon Sinek, for example, releases new books every few years...

I highly recommend Simon's books, as they are the basis of the private library of any self-respecting IT leader.

I really recommend:

  • his early work "Start With Why" (2009) - Sinek presents crucial leadership skills like focusing on inspiring teams and long-term thinking,
  • or his more recent one "The Infinite Game" (2019) - The author concentrates more deeply on an infinite mindset and leading with a cause .

For this reason, we can never rest on our laurels and must continually develop ourselves. Measuring development by:

  • the number of books read,
  • articles consumed,
  • blog posts written,

is a good metric and verifier that helps us feel that we are growing and that our time is being used efficiently. This greatly helps in mitigating the feeling of a wasted day.

I often say that the level of leaders and managers in the IT industry is very low, so any investment in the leadership skills can quickly allow one to stand out above the average.

Accepting the problem

And there you have it, I've shared with you my six solutions, that I use daily to help me achieve a sense of an efficiently spent day.

Unfortunately, I can't offer a simple fix for this common problem. What I can do is, that I recommend you to try to find your own solutions. The first step in this case is accepting the complexity of the problem. I believe that understanding there isn't one simple solution and accepting this situation is the best step towards dealing with this problem.

Summary

In conclusion, transitioning from a developer to a software manager is an exciting journey of growth and challenges. The shift from a hands-on coding programmer to a leading team manager may seem scary, but with the right tools and strategies, in my opinion, it becomes manageable and rewarding. By doing these suggestions:

  • embracing metrics to measure success,
  • using task management tools to stay organized,
  • gathering personal achievements,
  • keeping notes,
  • updating calendar,
  • and always finding ways to improve,

managers can see their daily achievements.

Additionally, continuous learning and adapting to new methods keep managers at the top of their class. Ultimately, this proactive approach not only enhances managerial skills but also significantly contributes to team success and overall job satisfaction. Positively embracing these changes is the key to achieving success in this dynamic role.

Remember that even experienced managers often struggle with this issue. In my opinion, it's a skill that requires constant work. So don't get discouraged when you struggle at the beginning, it is always the hardest to make the first step.

Luke, Software engineer, passionate about best practices, frameworks React, Vue, patterns and architectures for modern web
				development, open-source creator, TypeScript enthusiast, Generic UI Technical Blog

Luke

Software engineer, passionate about best practices, frameworks React & Vue, patterns and architectures for modern web development, open-source creator, TypeScript enthusiast.