Developers, your manager is likely clueless
ewattwhere.substack.com
ewattwhere.substack.com
- a tech lead who is intimately familiar with the code being written, who keeps the code design/architecture on the right path, and oversees all the work being done. This person can make great strategic decisions about how to schedule the work to find opportunities to group common work together, divide the work so that people are not working on top of each other, and make decisions taking in the long term health of the codebase and short term delivery pressures.
- a business/product expert. This person prevents the tech lead from being in endless meetings. They sit down and figure out the requirements for the product/project. The clearly communicate these requirements in documents condensing the endless meetings into a coherent clear vision for the product with the long term vision and short term priorities being made clear. The tech lead uses this condensed information to plan the software development.
You cannot have one person do both of these things. The tech lead cannot be in endless meetings and keep the needed level of intimacy with the codebase and properly direct the work being done. The business/product expert needs to be an expert communicator, to make that interface between the tech lead and business/product requirements effective. They need to be able to ask the right questions to get the information about what needs to be built, and then clearly paint that vision to the tech lead. The business/product expert does not create tickets of work to be done! They just communicate the vision. The tech lead breaks the work down strategically.
The CTO shouldn't be writing code, it's too low leverage. But they must be ABLE to write the code at least 80% as well as the best person actually writing.
The CEO should be speaking with all of the key stake holders, and then having strategic conversations with the CTO as equals
The CTO? The CTO of what type of company? You’re having a laugh if it’s anything other than a startup or medium sized tech company.
Isn't that basically what Apple does with their "DRI" concept? One individual directly responsible for the whole project, both for the technical implementation and the product/market fit. This avoids the lengthy back-and-forth negotiation between the tech owner and the product owner about what the user wants vs. what can be done, and also avoids the usual "Wait, I though you were the owner of that?" discussions that we've all seen happen when things get complex and ambiguous.
1: https://mentorphile.com/2019/03/05/fostering-apples-culture-...
Recently there was a post on the front page here about managers making jokes about firing their employees.
From what I remember, most of the comments were a variant of "that's great advice".
I'm older than the average demographic here, and I have to say I was taken aback by those comments, because I thought that type of thing would be common sense (the Golden Rule).
Also…to be just technically smart enough on our platforms not to be bullshitted.
I tend to encounter the latter in smaller companies that have revenue pipelines outside of tech and aren't entirely tech-oriented.
They seem a lot like the project manager to me. :-P
But talking about how the team builds systems, who’s doing the building, and things like that should never be within the domain of a PM.
And he was really good at prioritising stuff.
These are often the best companies to work for though, because the tech teams are outside of the normal management structures and can do whatever.
Our former VP was a securities trader turned IT manager, who knows how he probably knew people, and was terrible.
That is not my observation.
Having some ability to program can definitely be a plus, but it is also frequently a hindrance, if the manager is not aware of the dangers.
Best managers I had were just good at managing. They did not try to make technical decisions but instead tried to figure out a process to work with a collection of various experts that would let these experts to make best use of their expertise in context of the project.
In other words, they were focused on making right conditions for people, team, project to succeed rather than focusing on making technical decisions.
They tried to complement the team with their management expertise rather than trying to be lead developer.
Ability to program (as in developer who has just been promoted to management role) is frequently a hindrance. It is a crutch that the new manager uses which prevents him from learning his new trade well.
It lets him understand stuff without needing to communicate with the team, it lets him see through bullshit without having to build rapport and honest relationship and it lets him make passable decisions without consent from the rest of the team.
Which works fine for a while but in the end tends to result in mediocre manager and team.
Also a programmer manager frequently only ever learns to work with other programmers. This might be fine for strictly development team but leaves the manager out of the water when interacting with non-development teams, clients, etc.
My previous manager never even coded, while the manager before that was also still actively developing, and both had a much more personable yet effective style. Everybody has their pros and cons, but I just wanted to agree that being a programmer manager isn't necessarily good or bad.
This means you are in a fundamentally different team.
I have seen it is hard for developers to shed their development skin and become real managers. They might feel they need to prove their ability by being able to make all these decisions or even code themselves. There is probably couple of other things happening.
But that also means the team has less development responsibilities because manager will make all most important development decisions. And people who do not have important responsibilities tend to devolve.
Now, the world "tend" is everywhere here and it just represents the fact that every manager is different. I just mean this as a general observation from 20 years of working in development in companies like Canal+, HP, Intel, Samsung, Credit Agricole, Credit Suisse, Citi and others. There were better and worse managers and there were definitely some good managers who were developers before.
These orgs also tend to treat all tech as cost centers (perhaps, correctly in their context of business). The more non-technical the manager, the more likely tech is a cost center and necessary evil, usually resulting in toxic development cultures.
I’ve had a few managers that did that, one of whom was very close to the absolutely worst manager I’ve had in any job.
Understanding the work is a useful thing for a manager, and having done it is one way to get there. Understanding people is more important, and working as a developer is not much of a way to get there.
In some management roles I've had too many reports or too many reports who expected hands-on management and yeah, it becomes a full-time, full-time thing. In others--and, to no surprise, my preferred situation--it's much more of a "first among equals" situation where, yeah, a good chunk of my time is spent in meetings (clustered early in the week when I could) to firewall off my team, but it'd be rare to not be able to carve off a full day or two afternoons for deeper work, whether it's code or architecture or analysis. And in those roles it was usually necessary to write a good bit of code, because I'd been an IC before a manager and had done most of the work--and one of the artifacts of doing more work on it, then, was documentation and making it accessible for the next person.
Honestly, in most intellectual work, the first-level manager having an intermittent toe in the water of the actual work (not focussing there, of course!) I find to be a pretty good sign—if they don’t, my experience is that they either don’t understand it or are overcommitted (usually, too broad a span of control, but sometimes too much pushed down to the first level of management that should be at higher levels), or are inventing no-value work for staff in their slack.
My current manager has a technical background. I now spend the vast majority of my work week in meetings. Not because my job has changed, but because they have so many meetings that we never had under my previous manager. Scrum, backlog, retrospective, one on ones, touch bases, etc. I seriously maybe have 5 hours a week to actually program these days. If we want anything, he is likely to say no and that we can get along with what we already have. He often has opinions on how we should do things based on how he did things years ago instead of modern best practices. Give me a non-technical manager any day.
But also on the expectations being transported down from above.
The problem is, imagine a company with your second managers mindset and his/her boss takes a look into the calendar, sees there are no management meeting tasks (Jour Fix, standup, and so on) in there. His/her boss would think he/she is not doing anything, because the signifiers that declare a manager actually managing are missing.
I don't see these signifiers as actually managing - I see them as creating disturbance - but modern management culture seems to be seeing these signifiers as sign of real managerial work.
I also find a lot of managers need to please their own ego by feeling they do something. They often need to feel important - hence too many meetings as signs of them having control.
The way I define them is team lead is the or among the most senior and experienced team members. They still do some hands on work, the high value stuff, and they support, coach train the team on technical stuff, do high level design and ensure it all adds up to coherent working quality something.
Manager understands people, client, goals, process, company - how to support their team, how to protect the team, and how to get shit done - and crucially, how to get the right shit done based on company's and user's priorities.
I find its crucial to distinguish the roles and expectations. One of the best managers I ever had I did not respect at the time - I judged them as a team lead and their tech knowledge was limited...but when they left - team fell apart, and shit I didn't know existed started hitting us and we got torn seven different ways.
I mean not to generalize, but a lot of developers are neurodiverse introverts, the flavor that doesn't go well with typical management skills.
I mean managers and sales and the like also have their own flavors of neurodiversity - to generalize, it's things like psychopathy (or the ability to suspend their own moral compass) and high extroversion.
The biggest problem I have is that, while both managers are OK software devs (but not great), anything I advocate for that is above their skill level is perceived to be “too complicated”, or “takes too long to do, let’s just get it done quickly for now”.
So, instead of proper config files or method dispatching for client-specific behavior, we end up with if/else and switch statements with hard coded client primary keys.
Then, when a huge bug comes along on a Friday at 5pm as a result of how we built the thing, I get to be the one to dig us out of the hole while my managers are busy “working on the next big feature” which will almost certainly be done just as poorly.
So, conveniently, only myself and our customers ever get to experience the consequences of their decisions.
And what can I do? I can fight to get my way, sometimes, on new features, but when “their way” becomes a problem, I can’t use it as an example to support my ideas or say “I told you so” without hurting feelings or going against the people signing my paycheck.
The worst was also a former engineer, but he liked to play politics, lied about just about everything, and regularly blamed delays and failed projects on his team. No engineer was spared--every single one of us ended up with negative comments on our performance reviews for periods where we were assigned to high visibility projects. It got to the point where nobody on the team wanted to work on any such project. This guy was promoted to a director position eventually.
Some managers suck. Some don't. And it doesn't matter if they've ever been an engineer or not.
Also, engineers aren't special here: talk about egos and negative, hyper-competitive behavior....
“So listen, I keep hearing about all these bugs. And I really think we need to put a stop to it.”
Doesn't really mean he's clueless though. He's probably telling you that he is getting shit for bugs, and there's a company perception that the product is buggy. Ask questions and find out. And if that's the perception, help him with a pragmatic way to share the real story.
My experience is that if the team isn't translating what they are doing, why, etc...upwards, then the boss eventually makes up something to measure.
But if the IC is having to dig to understand what a manager means then the manager has failed at one of their core duties, being communication channels through the company. If someone isn’t a good communicator they’re definitely not going to be a good manager.
But being a "shit umbrella" is literally part their job. A good manager should be filtering inputs from external sources, tossing out the useless input, and translating useful inputs into actionable tasks or discussion points for the team.
Instead of "stop coding bugs", the manager should be having a discussion about defect escape, test quality (across the spectrum of test types), and doing some self-reflection on whether or not task descriptions are adequate (if they only ever capture the "happy path" and don't describe desired failure behavior, it shouldn't be surprising there is undefined behavior in the software).
I think this means he is clueless in the way that a developer asking "what is a for loop" would be considered clueless. Managing company perception of what your team is working on, and advocating for their work both in terms of features and fixing bugs is like Engineering Management 101. Doing all this "asking questions to find out" stuff is what the manager should be doing.
> My experience is that if the team isn't translating what they are doing, why, etc...upwards, then the boss eventually makes up something to measure.
Again, managers doing this are clueless in the same way that a developer "making up" syntax would be. They should be replaced by better, more clueful managers.
I have absolutely no idea why we as an industry tolerate arduous coding tests and take-home projects for "individual contributors", but have a propensity to give people managers a free pass on obvious stuff like this.
I mean, in one sentence the author writes:
> Well, that and Kevin needs to learn how to code, so he can then learn just how ignorant “Stop putting bugs in the code” really sounds to a development team.
And in another it's:
> Detailed tellers are so happy that they finally have the power to get everyone to write code “the correct” way. Tellers are especially bad if they have lots of energy and vigor as you can’t just wait for them to go away. This manager type is probably single-handedly responsible for causing software engineers to be reticent about working for a manager with technical chops.
So the manager is clueless if he or she can't code, but also clueless if he or she can and crosses the author's undefined boundary for too much direction and detail.
The message: the author (and her prototypical developer) know it all. Everyone else probably sucks, probably beyond repair.
Yes, bad managers do exist. Exceptional ones are not super common. But the same could be said of developers and I'd say that based on the following, the author exhibits a toxic attitude that every team should look to avoid.
> So, as a developer, what can you do?
> Not much, unless you have a good shot at getting the manager removed without hurting your career. You might be tempted to somehow educate your manager, and if the skill gaps are pretty small, and the trust level is high, the managing-up school of management can be effective. However, most development manager skills gaps are on the scale of the Grand Canyon.
As someone who started as an engineer, moved up to management and then started my own companies, I've seen first hand that very few things hurt an organization more than employees who think they know it all and that everyone else is a problem that can't be fixed. You can (usually) fix bad code. You can almost never fix a toxic attitude. This post contains way too many of the toxic attitude red flags.
Unfortunately you rarely get to evaluate your manager properly before starting a new job and there is no guarantee that they will be there for any length of time once you do start. Having a good manager feels like winning the lottery.
Easiest way to lose a locker room is having a manager/director who is technically inept.
>Easiest way to lose a locker room is having a manager/director who is technically inept.
For example, there are plenty of excellent soccer coaches that have never played soccer.
This type of thread shows up every couple of months here, and people use their anecdotal experience to define a whole role (which is different within itself and between organizations), which just feeds prejudice about a particular type of people, non-dev managers.
When in reality you have great managers from both technical and non-technical background.
I think a better way to look at a manager is to compare it to the HR department.
Managers aren't hired by the people they will be managing, they're hired by the company.
In the same way that HR always represents the company's interests more than the employees, a manager is the exact same thing.
It's not in the interest of most company executives to hire a manager with the backbone to say "no" to management, or be on the side of the team being managed.
I think it's very rare when a manager is hired to actually manage properly. Most companies seem to value the very qualities that most people hate about bad managers.
Yet they are good coaches. Managers !== Coaches but I think you understand what I'm saying. Yes there are managers who are so technically incompetent that they are not good managers but most technical managers last management skills rather than technical skills and in most cases the technicals are not as important as the management skills. Any CTO/VP/Director of a mid/large sized company is a good example of this. They are no longer hands on. Their effectiveness comes from their ability to manage others.
I've observed managers who had very little knowledge of the tech, but were excellent at critical thinking, sensing BS, and "managing up".
Slides: http://paul-m-jones.com/talks/how-to-train-your-manager.pdf
Video: https://vimeo.com/80271777
(I am the author/presenter.)
If we start with the basic assumption that people will rarely try to do intentional harm, we can conclude that most harm is done unintentionally. So while the choice of the term "clueless" might apply, it also doesn't help with creating a path towards mutual understanding.
My current perspective on how we think and work is that we all have a mental model of how the world works. It is modified and reinforced by our actions and the effects we perceive. We will then try to apply our model to novel situations. I find the term "clueless" to not be accurate. It is more that people act mostly based on clues. But it might very well be that the mental model is inaccurate or even inadequate.
I don't think the simple quality "has been a developer" is a sufficient indicator to predict a manager's success. I find the trait "is flexible adjusting the mental model" might be more fitting, but also harder to discern from a CV. So my critique to the author would be in a similar class of error. Applying an inadequate mental model to solve the problem.
I believe we could all benefit from more goodwill and empathy towards our team members (and I am including the manager in the team, as well as the whole organization). Asking "what is our mental model and where does it break down?" has been tremendously helpful for me in the past.
If you're interested: https://www.youtube.com/watch?v=AflK5qst1qc
It's largely an issue of company culture.
> Focuses on Jira metrics, praises people for completing “lots of Jira tasks”
This is not a problem of ignorance. It's a problem of micromanagement VS trust.
Managers create arbitrary requirements and productivity metrics in order to apply the carrot-and-stick method. It's about power and control.
> So, as a developer, what can you do? Not much, unless you have a good shot at getting the manager removed without hurting your career. You might be tempted to somehow educate your manager
Not at all. A team of developers can go very far in pushing back against micromanagement. But only if you stick together and send the same message, consistently:
1) trust us to do our job and organize our priorities, as you would expect from any other professional
2) trust us to peer-review our work and productivity
3) provide us with training, time and resources as requested
4) protect the team from unreasonable pressure from upper management and other teams
5) if you provided 1,2,3,4 and we fail systematically, move people to other teams or fire them
I've been with the same employer for ~20 years, so obviously a limited experience, but I'd guess 80% of our SDMs were developers themselves and the remaining 20% had complementary roles within dev teams. I've yet to find a manager who was "just an MBA" with little experience as a development team member.
Maybe I just lucked into one of the good companies?
If you have a good manager, then yes. You did.
In general, I think developers make even worse managers.
I will not discount that there are many 'managers' who, despite their college degrees, lack the ability to manage. That said, managers do not need to know how to do what their staff does in a nuanced details. If they do, the manager is prone to micromanage, or second guess their staff.
After decades, I still have to bite my tongue in meetings where there are two-way, technical decisions and allow my teams to come to their conclusions.
(edit: wow. Turns out not so counter after-all.)
That would strike me as the larger problem, since the manager role is likely going to be filled by the same type of person over and over again.
The most successful organisations have managers, they just know how to manage properly. To state the obvious, an organisation of any significant size needs management.
I consulted for quite a while and have worked at my share of companies and I have never seen implicit shadow hierarchies result in healthy dynamics in and across teams.
I can see those shadow hierarchies exploding when somebody who is de facto manager eventually (and inevitably) has their de facto authority challenged.
A transparent hierarchy is not only more workable, but it seems to me to be a lot fairer.
https://hbr.org/2011/12/first-lets-fire-all-the-managers
Or any of these
https://www.happy.co.uk/blogs/16-companies-that-don-t-have-m...
This type of guy tries to explain to you the task at hand used to be done in a matter of hours when he was still coding himself, and does not understand why it can’t be the same now.
Yead grandpa, I know, I’m stupid. So here you go, here is the keyboard, show me your skill so I can learn from the best!
(Actually the best manager I ever had was really technical and was showing and teaching me stuff in a peer programming fashion!)
Why can't it be the same now, indeed?
Everything should be faster and easier in modern programming languages, frameworks and tools, but very often it isn't. Why?
I'm not against learning new tech as part of the job, as it can be a motivating factor for the developers. At the same time we can't ignore that for a startup, it is probably better to use a known technology so that they don't end up fighting the framework as their needs grow beyond the basic tutorial/blog post
Here's a suggestion: If someone finds themselves sending multiple patches to the framework or implementing missing database libraries, they may have chosen the wrong framework/language. It can be very motivating, but the time could have been spent on improving the product.
new things are not always better, and inexperienced devs just use the hype-of-the-month framework to build stuff that miserably fails- see the articles from today about Event Sourcing and CQRS for example...
PS: Most management gets there coding experience from excel. So copy & pasta code is good.