Have I grabbed your attention? Do you work for management at a company that creates software, then this article is for you! If you are a development manager or software engineer, forward this article to your management team! In this article, I will weave a cautionary tale that demonstrates something I have been seeing in teams since the late 2000s. That something is why companies are creating ineffective development managers.
Because of this, your applications and services are suffering. Your users are frustrated and are finding alternatives. Your development team is struggling. Your good engineers are quitting, which leads to less profits! Let’s change that for the future! I should point out that I was a development manager at Proflowers.com when they were in between CTOs and have been leading people and teams ever since I was 18 years old. Even at a biotech company here in San Diego, I oversaw software development worldwide.
What Do Development Managers Do?
Before I continue, what does a development manager even do, or what are they supposed to be doing? This is what ChatGPT says on the subject.
- Project Planning: The development manager works closely with stakeholders, such as product managers or clients, to understand project requirements and define the scope of work. They collaborate with the team to establish project timelines, set goals, and allocate resources effectively.
- Team Management: The development manager is responsible for assembling and managing a team of software developers. This includes hiring and training new team members, conducting performance evaluations, providing feedback and mentorship, and fostering a collaborative and productive work environment.
- Technical Guidance: Development managers should have a strong technical background and provide technical guidance and expertise to the development team. They help solve complex technical problems, review code, and ensure that the team follows best practices, coding standards, and development methodologies.
- Process Improvement: Development managers continuously evaluate and improve the software development process. They identify bottlenecks, inefficiencies, or areas for improvement and implement strategies to enhance productivity, quality, and efficiency. This may involve introducing new tools, methodologies, or process changes.
- Communication and Coordination: A crucial aspect of a development manager's role is effective communication. They act as a bridge between the development team and other stakeholders, such as project managers, product owners, or clients. They facilitate clear communication, provide regular project updates, manage expectations, and address any concerns or issues that arise.
- Risk Management: Development managers assess and manage risks associated with software development projects. They identify potential risks or obstacles that could impact project success and develop contingency plans to mitigate those risks. They also monitor project progress, track key metrics, and take corrective actions when necessary.
- Budget and Resource Management: Development managers are responsible for managing the budget allocated to software development projects. They track expenses, control costs, and ensure that resources are allocated efficiently. They may collaborate with other departments, such as finance or procurement, to secure necessary resources or negotiate contracts with external vendors.
I wholeheartedly agree with the duties of a development manager described above and would add to this list that a good manager always has your back and goes to bat for you when issues arise. They also need to possess a healthy dose of empathy. You don’t want to work for a manager like the one depicted in the movie Office Space. If you haven’t seen this movie from the 90s, it’s a must-watch for anyone working in tech!
Bill Lumbergh: “ Ah, ah, I almost forgot... I'm also going to need you to go ahead and come in on Sunday, too. We, uh, lost some people this week, and we sorta need to play catch-up. Mmmmmkay? Thaaaaaanks. ”
Let’s continue. Let me start off with a story. This story is about when I was a Principal Software Engineer at a company in San Diego, California, from 2008 to 2012. The Principal Software Engineer title was the highest title they had for software engineers. Because of my title, I was asked to review my development manager every six months. First off, my manager was one of the best development managers I have worked for during my career. He was so good I stayed at the company longer than I had planned. A great manager is something I always look for in a team, along with a great team. This is of higher importance to me than even salary! In each of my reviews, I wrote something to the company like this.
I said, “ James is a great manager, but since you place so much work on him that includes being in meetings almost every minute of every day, he does not have the time to manage the team properly. ” Not only was James expected to be in meetings all day long, but he was also expected to work in the middle of the night to “babysit” builds or get up very early for meetings with offshore teams. He even worked on the weekends. I would say that James worked at least 12 hours every day. I even said to him multiple times, I don’t know how your family puts up with this.
After a few of these reviews, you would think the company would make a change, but all they did was stop asking me to do reviews of James, and nothing changed while I was there, and I’m sure it’s still that way. Oh wait, they did try to make a change. They came up with “No Meeting Wednesdays,” which lasted all of two weeks. This is one of those companies that held far too many meetings. I’ve written about this before, but I came up with a term one day when James and I were walking out of another useless 2-hour meeting. I told James that I call meetings here “Marry-go-round Meetings” since we go around and around for two hours, and nothing gets accomplished. Sadly, in my experience, I’ve worked at far too many companies like this, and every one of those companies had ineffective development managers.
At one point, they talked to me about being a development manager. I told them, “No way”. Why would I take a position where I must work more, get less done, and get paid less? Makes no sense to me. Talk about no work-life balance!
Too Many Meetings!
As the story I shared highlights, managers are expected to be in too many meetings. They have every hour of every day in their calendar time blocked. How do you expect a manager to manage when they have no time to work with the people on their team?
Team Members Need Questions Answered
Throughout the day, team members have questions for their manager that need answering in a timely manner. Sitting in meetings all day prevents this from happening. Sure, they could answer emails while in a meeting, but that takes attention away from the meeting. Also, some questions might be lengthy or require a lengthy response. In this case, it’s more time-effective to do these in person or jump onto an online meeting if working remotely.
Team Members Need Direction
Throughout the day, team members also need direction. Great development managers are a bridge between the team and upper management. They should know the expectations from management. They should know the budget and more. Therefore they need to be available to answer questions about features, development, testing, deployment, and much more. They need to provide this information quickly so team members can continue what they are working on.
Many times, these questions can cause a stop in work, so managers must be available to answer these types of questions promptly. Waiting hours, days, or even weeks to get an answer is a sign that they have too much on their plate, and the company should step in to alleviate some of their workload. Sure, engineers can work on another task, but this will cause a context switch, and it will lose time in the project. If your team regularly fails to complete the tasks for a sprint, this could be one of the major reasons.
Team Members Need Help
Team members also need help throughout the day. They might need help to schedule vacation or sick time. They might need help with their expense reports. They might need help in dealing with another teammate or someone else in the company. They might need help getting software installed and much more.
Company Practices Can Make Getting Work Done Difficult
I’ve worked at far too many companies that make it extremely difficult to get the software installed that we need to do our work. Many companies, even a well-known company in America, make this process so difficult it can take up to a month to get new software installed. Even installing updates can take days. How can team members get work done with practices like this?
While I’m on the subject, this is also one of those companies that don’t allow engineers to have admin access to their own machines! Have you tried to develop in an environment like this? I can tell you it’s a nightmare! Also, for some reason, the company maps the user folder to a network drive. Since Visual Studio uses this folder, it would crash throughout the day. Once I discovered this after I started working there, I refused to use their laptops and used my own computer for the two and a half years I worked there. This also prompted me to submit a request to the Visual Studio team to allow installation when someone does not have admin rights. This includes extensions! They have said they implemented this, but I have not tried it.
How Do They Even Manage a Team?
So how do managers manage? Well, they do a very poor job at it. They must work 12 hours a day. They must work on the weekend. Sadly, since most managers earn a salary, they don’t even get paid for all the extra time they put in and they typically make less than the top engineers in their team. How do you expect your managers to stay at the company when they are treated like this? I can guarantee you that you will lose good managers and engineers because of this.
They also should not be expected to be on calls in the middle of the night with offshore teams. These teams work for you and should work in your time zone, at least for the core meeting hours!
Expected to Do Too Much Work That Isn’t Even Their Job!
I’ve highlighted what managers should be doing. Next, I will share a story of a manager I had recently. Before I share that, I will share something I heard a manager at Microsoft say at a conference I attended in the late 90’s. One thing I have noticed with managers, even when I was in the US Navy, is that once they become managers, they quickly get out of date, in our case, with their technical knowledge. The manager who headed the Microsoft Office team said that all managers are required to do some coding. I always thought that this was an excellent idea to keep them in touch. I would add that the code they write needs to go through a heavy code review!
Why Are They Managing Too Many People or Teams?
The manager I had earlier this year had to manage two large teams. My team alone had about 17 people in it. This is the largest team I remember working in. This team was mostly on the Microsoft technology stack. He does not have a background in Microsoft .NET. I only know he did code with Java and/or Javascript. Also, he seemed to be the only person who knew how to set up and fix issues with the build and testing setup that ran from a Linux container (not sure why). Because of this, I’ve had multiple pull requests stuck in limbo, not for days or weeks but months! I’m thankful I’m not there any longer since I do not want to merge code into a branch that has not been updated in months! What a nightmare that will be. This severely hampers the forward momentum of the project.
Every developer on the project had issues with Linux, minikube, scaffold, and Bazel, and he was the only person on the team who could fix it. That should have been done by someone else in the company. Maybe DevOps? Also, if this manager was sick or on vacation, and since he didn’t have someone else to step in, everything seemed to stop until he got back. This backlog created a lot of stress and anxiety for him to catch up. It seemed he never was able to catch up on work while I was on the team. This also creates a lot of stress and frustration among the team members. Because of this, I would never entertain the idea of working at this company on a full-time basis.
Why Do They Need to Participate in Builds?
As in the story I shared earlier, development managers should not be expected to be working at midnight to “babysit” builds! That should be the job of DevOps or the configuration management team, if there is one. They also should not be expected to be on calls in the middle of the night with offshore teams.
Why Are They Project Managers?
Development managers should not be doing daily project management! That is the job of project managers! I think almost every manager I’ve had in the last 10 years has had to do this, along with being a scrum master and running the daily standups! Why are they doing this when you have project managers??? Sadly, engineers are expected to do this, too, and I have no idea why. This wastes very valuable resources and will delay the project! Yes, they should always be part of the project planning, but they should not be doing the work of project managers.
Why Are They Lead Developers?
As mentioned earlier, development managers should possess a strong technical background, but they should not do the job of a lead developer like the manager I had earlier this year did. His team did not have a lead developer, so he was doing that work even when he wasn’t strong with .NET, which seemed to be an issue within this team.
As I already mentioned, in my experience, as soon as someone becomes a manager, they get further and further behind in current technologies and practices. This is where a lead developer should step in and provide guidance. Lead developers should always be on top of the latest technologies and provide guidance to the manager and other team members. When I worked at a company, I was expected to spend 20% of my time mentoring other team members and providing guidance. Since I was the .NET expert in the company, my manager James lent me to other teams to help them. Heck, he even lent me to other teams to perform their technical interviews! Actually, interviewing almost every .NET software engineer who joined the company when I was there prompted me to write my book “ Rock Your Career: Surviving the Technical Interview,” which I updated this year.
Lead developers should always be the go-to person to answer technical questions and get help, not the development manager. As in the job I had earlier this year, the development manager fulfilled this duty, and the project and team suffered because of it since he already had too many responsibilities.
In addition, lead developers should be able to step in when the development manager is sick or on vacation to keep the project going until they get back. In the company I worked in earlier this year, we could have gotten so much more work done and met deadlines if they had a lead developer.
Please Give Development Managers More Support!
Just about every manager I have worked for didn’t have proper support from the company management. They are not given enough resources when it comes to engineers and other important positions. As in the story above, that manager managed two teams. Towards the end of my time at the company, they did move one team to a different manager, but that did not seem to free up any more of his time.
Ensure development managers in your company have the proper resources, such as project and project managers, lead or principal engineers, quality assurance support, DevOps support, human resources, and accounting support.
When I worked at one company, their accounting department made it very difficult to get expense reports processed. Many times, I had to get the head of our department involved. He would step in and call down to accounting and say, “Just pay David!”.
Just like with everyone in the company, development managers should have a good work-life balance. If they don’t, this is a sign that your company is not providing the proper support. Make sure to have candid discussions with them along with the senior team members to also provide honest insight without repercussions.
One Last Thing, Micromanagers Destroy Teams
Have you worked for a micromanager? ChatGPT defines micromanagers as the following:
A micromanager is a term used to describe a person who excessively and obsessively controls or closely supervises the work of their subordinates or team members. They tend to be overly involved in even the smallest details of a project or task, often to the detriment of productivity, morale, and the overall success of a team or organization.
I can tell you from experience that managers like this end up destroying teams. I believe that many of these types of managers often lack experience in managing or managing a team for something they have no experience in. Case in point, when I was working at at one company, the manager for the team when I started was a good one. He hired me because he saw me speak at our local user group and wanted me to not only work on projects, but he wanted me to mentor the team, especially teach them how to start moving to the cloud.
About a year or so after I started to work at there, this manager decided he didn’t want to manage anymore and went back to being a database administrator. After working at there, I don’t blame him. When he left, the most senior member of the team started to manage in the interim. He did this for about six months, and he did a great job at it. He would be perfect for the new development manager position which he did apply for.
Sadly, they instead chose someone to manage the team from the finance department who had absolutely no experience at all in developing software! The entire team disapproved of this person, especially since he was written up by HR for harassment during a meeting with one of the team members. I witnessed this firsthand.
Because of his utter lack of experience managing a team of software engineers, he instantly became a micromanager. He quickly implemented too many meetings that we had to sit through that did very little. He held weekly one-on-one meetings with every team member. I spent at least 6 hours each week in these types of meetings that did very little to keep the projects moving. To make matters worse, he was supposed to run the daily standup meetings that he usually didn’t even attend.
At one point, he sent me a spreadsheet to enter my time. I was already entering my time in three different systems. When he sent yet another way to submit my time, I flat-out refused. I was already spending too much time weekly entering time for the tasks I worked on.
On top of this, no one in the other departments at the company wanted to work with him. Because of this, the team was given fewer and fewer projects which led to me losing my contract, and not long after that, the team was dissolved and were moved to other teams. It was also harder for us to work on the projects we did have.
The warning of this story is twofold. If your manager sounds like a micromanager, I suggest moving teams or companies immediately! Not only will a person like this cause a lot of stress, anxiety, and frustration, but it will hamper your professional growth. If you are a company that has managers like this, find new ones or train your micromanagers how to be effective managers! If not, your projects will suffer, and you will lose the good people in your teams.
Summary
I know I might sound like I wished things were like the “old days”, and you aren’t wrong. Maybe this is the way development managers will be in the near future… placing too much responsibility and work on them. If you are wondering why your products and services are suffering, why you are losing customers, why you are losing revenue, and why your stock price is going down, I’ve explained many reasons why backed by real experiences. If the development managers in your company cannot effectively perform all seven responsibilities listed at the beginning of this article, then that is what this article is all about.
Maybe it’s time to look inward and change your company practices. Start by supporting your development managers more and giving them the resources they need. If not, things will not change for the better.
Please make a comment below. I’d love to hear from you.