I have been working at a large bank for a few years. Although some coding is needed, the bulk majority of time is spent on server config changes, releasing code to production, asking other people for approvals, auth roles, and of course tons of meetings with the end user to find out what they need.
I guess when I was a junior engineer, I would spend more time looking at code, though I used to work for small companies. So it is hard for me to judge if the extra time spent coding, was because of me being a junior or because it was a small company.
The kicker, is when we interview devs, most of the interview is just about coding. Very little of it is about the stuff I listed…
Pretty common everywhere. https://staffeng.com/guides/staff-archetypes/
The better programmer you are, the more likely you get promoted in hopes of making the whole team good like you, the less time you spend doing what you were promoted for.
Most of my day as a Senior is wading through red tape and piecing together out of date internal documentation so the rest of my team doesn’t have to deal with it. Maybe some coding, if I’m lucky these days.
I’m a principal engineer now, and I write the best code of my life today, and I also spend the least amount of time doing it.
I’m in network automation, so I spend a lot of time working with operators and specing change requests. I template what they do today to prevent errors, I then simplify those templates, expand them to be done in better ways, and write tools to automate the busy work.
Once the operators are happy running the tools instead of operating, they get hosted as a service, that schedulers and other tasks can call to remove the operator entirely where possible.
With our reduced operation time, we then scale up until we hit the operational limit again, and repeat.
As a lead I could stop coding. But I choose to keep time to code every week. I believe this is very important to keep in touch with the reality my reports are facing.
So this is possible to still code but this is not natural. Sometimes I simply cannot have the time to touch any code for a few weeks if I do not take care about it.
Seniority typically means the scope of your role increases - you interact with other teams more, you spend time on high-level design, etc.
From what you describe, it sounds like you’re doing that.
If you miss coding, you can assign yourself a few small bugs/features. That keeps you familiar with the codebase. It’s probably a good idea to choose stuff off the critical path, since the meetings are what you’re actually paid to do at this point.
The position to try to achieve these days is of principal or staff engineer. In this role I get to code all day (mostly exploring new and upcoming technologies that might benefit the company) AND lend my advice for architectural solutions to various groups. In my opinion it’s the best of both worlds, with out having to be pushed into a management or lead position (which always “leads” to more project management than software engineering).
So, you don’t actually do real work and have to live with the technologies that are chosen on your recommendation? Sound like a sweet deal. The senior engineers that have to actually make software that is sold and clean up the mess will hate your guts though.
I started out where everyone else did and worked my way up so I’ve “been in the trenches”. After doing this for 20 years and shipping multiple consumer and internal products I’ve seen it all and know what can make or break a project and what works and doesn’t when introducing or using a new technology to a dev group. Also, I definitely don’t throw it over the fence, it’s a team effort and we all agree on what sounds like the best approach. Along with code reviews, part of the coding I discussed is sitting down and creating a skeleton of tests and an initial architecture that others can build off of and give me feedback on. If someone is having trouble implementing something I sit down with them and work through it. It’s also about trust, people also trust me and know that in general I know what I’m talking about. The thing is most people would read my resume (or even this quick summary) and say I’d make a great development manager. But the problem with being pigeon holed into being a manager just because your a great dev is that it doesn’t reflect what developers are good at, making software. More and more companies are realizing this when they shove their best dev engineers into the position of a manger and it crushes their souls, and makes them leave. So they are creating these principal or staff positions which at most companies are laterally equivalent to a director of software engineering without the people/staff managment. There’s a great podcast episode on this by Stephen Dubner who wrote the book Freakonomics https://freakonomics.com/podcast/why-are-there-so-many-bad-bosses/
The crucial point to me, which I could not read out of your first post, nor will I implicitly assume it as a given, is that there still is a feedback loop from product development to the staff/principal level.
I’ve been burned by a code base that was created by a principal engineer, who tossed it over for maintenance and moved on to greener pastures (still in the company though). It is more to blame on the organization, than on the engineer, but still such an experience leaves a slightly bitter taste.
I am constantly fighting for more time coding. If you were to look at my calendar, there’s only ~5 hours per week of open time. My customers are our developers, however, so for the most part I am at least in meetings about code and SDLC rather than random feature refinements and such.
“Managing engineer,” here. 4-5 developers of various skill levels report to me at any given time.
My time as a whole is roughly spent like this:
- 30% paired programming (assisting developers, helping them troubleshoot, static code analysis looking for a bug they can’t find, diagramming a project for them to actually implement)
- 30% administrative (management meetings, performance feedback meetings with my direct reports, weekly one-on-one meetings with my direct reports, approving PTO, etc)
- 10% personal assignments (some sort of debugging/trouble shooting that requires my experience, or maybe putting presentations together to show off new technologies or some projects that we’re working on)
- 10% pull request review, providing feedback
- 20% meeting with business stakeholders, gathering requirements, providing estimates, creating agile stories, breaking agile stories into tasks, etc
This is pretty much what my day looks like (2 years since being promoted to tech lead).
To be fair it’s not a good comparison to compare an IC role against a management role for time breakdown.
Eh, I’m not really comparing, just offering what my time looks like since I’m still a “developer” of sorts. I’m still heavily involved with code, and I do end up making commits that ultimately deploy to production.
(I’m sure someone out there in an IC role would love to compare, especially if they’re considering taking a more managerial role.)
Yes, tons. But it depends on the team and the software. If I’m on a small and inexperienced team for example I’m going to be doing a lot of the work, if I’m on a small but competent team then I may be doing a lot more design & abstraction then the actual work.
Right now as a tech lead I would say ~40% of my time is actual programming.
It’s the same for me. I’m a dev lead and most of my time is spent in meetings, reviewing code and coaching. I’ve learned to adapt. I still get to write code on occasion and I love that.
A lot of my time is spent in meetings now ever since d I was moved to senior dev. So not very often :(
My employer (< 20 total employees, 3 total devs) was recently acquired by a much larger company. Our lead dev was made a manager and no longer has time to code and I was made a team lead and now half my time is spent in meetings, code review, or deployments. I am finding that with limited time for coding I am writing more concise, thoughtful code.
The hardest part of the change was adjusting my expectations for the product. We can no longer deliver what we want at the pace we want as that is now dictated by someone.
totally about company. I used to work on small company (<40 dev), I was spending more than 70% coding.
I switched to bank, way more developer (>500), if I spend 30% coding I am very happy.
I think in the last 8 weeks, I’ve written like 10 of code
deleted by creator
I totally feel you. I’ve been in a position where the only way I could get any coding done was by working overtime.
I think like others I’ve found that it’s more a function of how long I’ve been on the same team, not how senior I am.
When I switch companies or switch teams within the same company, it’s a great opportunity to get a “reset”. I’m no longer in charge of anything, I’m no longer the go-to person for important knowledge. I get to spend a lot more time coding and problem-solving. After a few years it gets harder and harder.
I think the trick is to find the right balance. After you’ve been on a team for a few years is often the best time to have the biggest impact and get a promotion or bonus. But it also means your day becomes the most consumed with meetings and you spend less time building, so eventually you might want to shift to a new team to get a fresh start.








