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.
Senior backend developer here . I have been refusing positions as tech or team lead for exactly this reason. All my colleagues that ended up in those positions basically stopped having any time to code. Some of them left to go back to coding in another company as they were burning out from all the meetings and admin stuff.
Same boat. Nuh uh, you’re not promoting me. I don’t want to have to deal with offshore support, meeting 6 out of 8 hours, making sure Jira board is up to PM’s standards and only reading code when any of the devs have an issue they cannot solve by themselves or something breaks. I tried management career path and hated it with all my heart, quit when they wanted to promote me higher. Let me do what I enjoy, I’ll deliver.
Bonus points - developers make more than managers up to 2 or 3 levels up where I live, so it doesn’t even calculate.
I’m sure in a few years from now nobody will code anymore and you will just tell the AI what you want to see implemented.
Same as nobody writes actual machine code anymore and everyone only uses higher languages.
You still have to understand the code as a senior, you don’t want to merge code, where you don’t know what it’s doing (AI extinction anyone, haha?). And I actually doubt that nobody will code anymore in a few years, as some stuff requires quite some creativity that is just nowhere close with LLMs (even with GPT4). I’ll admit though that probably 90+% will be able to be written by AI (and is in some way today already, if it’s relatively repetitive code). So yeah the new main dev-role will likely be “prompt-engineer”. But it’ll be interesting, the fast progress with AI never stops to surprise. And GPT4 is definitely able to think slightly abstract (and with correction writes quite good code). Deepmind also just recently released alpha-dev, which improved the state of the art in sorting…
“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.)
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.
I feel you. I’m a Senior Backend Engineer, and the more experienced I get, the less I code. And the meetings… so many meetings!
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.