I have a friend at our company who is a gifted programmer. He was moved into a management position. He discovered that he hated working in a leadership position. He tried to get them to move him back to an individual contributor position. They refused. He said, move me back or I quit. It took them more than a year to transition him back to an individual contributor role. That was a few years ago and he has been happily plugging along ever since. He says that even after he transitioned back, they kept coming to him to get his opinion on issues, the only way he got them to stop was to completely refuse to respond.
It's acceptable to want to stay in a specific role, but I am not certain I feel it's acceptable to eschew an increasing responsibility or mentoring role as you gain experience. That way lies the "genius programmer that works alone and writes code no one else wunderstands".
It’s the same as not solving chat request bypassing prioritization.
The company is full of incentives to ask that guy for guidance/things, if he doesn’t say no most or all of the time, he simply won’t have time for his IC role, and would remain a lead just not in name.
It’s hard that it comes to that extreme measure, but if his requests aren’t being heard, it’s either that or leaving. The company has to let him be an IC or explicitly tell him that he can’t stay there as IC, are at least negotiate some timme allocation for those requests and log them
It will never ever occur to anybody in the company that a freelance software dev could possibly be put into a management role, so they won't ask. As opposed to an employed software dev.
Bonus if you're in the EU/UK: in most countries in the EU this will even lead to tax breaks and higher before-tax hourly rates. To the point that you'll make (way) more than your "higher"-up(s).
If by "freelancer" you mean "contractor", then this statement is false. I had worked at multiple places in the UK where this happened, I suppose mostly because paying these people a salary would have required an disproportionate amount of money (as opposed to a standard daily rate) - UK taxes are very high in the top bracket.
If by "freelancer" you mean a real freelancer (the guy who has multiple short gigs at the same time, and needs to be constantly on the lookout for new opportunities) then that is already half of a management position, even if you don't have anyone reporting for you.
It is true though that as a contractor one can reasonably easily avoid management duties, and enjoy not having to worry about company politics. The downside is that it is easy to end up in a place where you have to accept that comparably junior people dictate architecture and some tech decisions which you discarded 10 years ago as ineffective, stupid, fad, or all of the above (TDD being a typical example). The upside is that your time at each place is limited anyway, and there is always something to learn...
Shots fired! I love tests, but I mostly agree with you. The whole idea of 'write your tests first' is great if everything is precisely defined. I find it odd I haven't seen more pragmatism around unit testing in the blogosphere. It's TDD or death out there.
https://hitchdev.com/hitchstory/approach/snapshot-test-drive...
E.g. "define API call -> don't define API response -> write the code that spits out the correct response -> auto-rewrite the test according to the response and commit".
Having been a contractor in the UK for 5 years, I don't think this is true. Between VAT, Company and Dividend tax, the taxman (HMRC) always gets his share.
But what if you whole day is doing just that? and you just want to spend some time writing some code? Companies are always in need of people to write the code, so there will always be other jobs, obviously it won't pay as much, but self fulfillment is important.
I'm with you, the trade is about theory building, removing ambiguity from requirements, and the update of these, code is just a tool. Still it fells nice building something, it feels nice to see something you build working in prod / to customers. Once base needs are met, it's fine for people to not want more responsibility than necessary.
I think it depends on how much time they expected him to take out of his days. My girlfriend resigned from a job after becoming a go-to person for everything and everyone. It caused her to not have time for her own work, effectively being way underpaid, and being stressed all the time.
My advice for any such person is to find a way to redirect questions to other capable people (when you're overloaded), or to reframe answers to be more educational. I'm not perfect at it but I'm trying.
Some helpful tips:
- If you're going to give someone instruction, ask them to share their screen while you walk them through the steps. They are far more likely to remember it this way.
- Avoid short answers. Be annoyingly informative when appropriate. Yes, I'm happy to tell you about XYZ but not without giving you way more than you bargained for!
Consider these scenarios. In each scenario, which option would you pick?
A: Look at my notes and figure it out for myself OR get an answer from Annie in 5 seconds
B: Look at my notes and figure it out for myself OR be accosted by Annie for a 30-minute video call where I'm asked to screen share my way through the steps
I think B is more likely to produce self-reliant teammates.
I think there's mentoring and leadership. These are different. I sure can mentor and help people to better think/program but don't ask me to push a team to meet a deadline they don't want to meet because they warned the marketing department 2 months before that they wouldn't do it. Been there, done that. Once in that position, you're pushing people, you become the bad guy and you have to explain that it's "for the good of the company, because they have to see the big picture, etc", IOW "screw you, I'm the boss". For that you need to be crazy enough to think that what you want is more important than what other humans-like-you are. OK, leadership is not always that and most often, you have to gather enough trust from your team so that from time to time, you can be a pusher. But if you don't have trust and you are always pushed to push, well, welcome to hell, and say goodbye to your health.
It's very different than "let's work together to find the best possible way to solve a problem, taking all the necessary time to produce something reliable".
Also, "acceptable"? By whom? Why should I care what they think? I want to be engineering software. If they don't like that, they can either deal with it or let me go. Good thing there's plenty of developer jobs as well as corporate bozos to take the coveted management positions.
Any senior IC actually worth the title "senior" should be empowered to say "no" to requests for their time. Of course the overarching assignment that comes down from above is negotiated. But everything else? Optional.
Sure, it can seem different in kind because it's framed in the context of the warm and fuzzies that come from helping someone else grow in their own career. But that's just leveraging interpersonal relationships rather than outright saying "work on this task with/for me" or "run an impromptu training session."
>not certain I feel it's acceptable to eschew an increasing responsibility or mentoring role
The existence of this responsibility is an opinion I don't happen to share. My time in software development hasn't show it to be an apprenticeship or mentorship-focused industry.
>That way lies the "genius programmer that works alone and writes code no one else wunderstands".
You're equating avoiding mentoring to becoming a stereotypical recluse. That seems... dishonest at best. Doubly so in the context of the parent post where the tasks refused didn't preclude spending 100% of their time collaborating within the scope they were trying to focus on.
Who can tell?
Ah, the foundational myth of middle management.
"My father, an Inquisitor himself, told me of the time when the Grand Inquisitor promoted him. Ordinary priests are a dime a dozen, the great man said, but it takes special skill to be an Inquisitor. And that's why you never let them go back to the pulpit when you do find a good one."
IMO there's an awful lot, they just ask for mid 200,000s.
It's a hard job to do well; it requires you care about technical details but also deal almost exclusively with people. It's a rare person who naturally fits into the "extrovert engineer" role and corporations are shitty about training those who don't fit yet to practice the right behaviors.
Plus, if engineering is "design with constraints" then you are given the extra restraint of headcount and finances.
$400,000k for dev + fun at parties, sign me up
> The base pay range for this role is between $196,000 and $299,000, and your base pay will depend on your skills, qualifications, experience, and location. ... employees are eligible for discretionary restricted stock unit awards, and can purchase stock at a discount if voluntarily participating in the Employee Stock Purchase Plan.
[1]: https://careers.apple.com/en-us/details/200442275/aiml-engin...
"But my manager sucks!" Yes, probably. Part of the reason managers have a bad reputation is that there are so few good ones, and so many bad or mediocre ones, that most people deal with bad ones their entire career. And, since a good manager looks a lot like leadership material if you squint, the great ones often get Peter Principled into being mediocre bosses.
But when you do find a good manager, you realize they have a very specific skill set that is incredibly rare and difficult to master. They multiply the effectiveness of everyone on their team, including those good technical leads, but also the juniors and seniors.
Fast forward a few years, after taking on more mentorship roles, then staff responsibilities, then slipping into project oversight roles… She was so right. Coding was a great stepping stone.
Several years ago my father got promoted to some leadership role. In our conversation about it, he told me he had asked to get back closer tech, but his boss declined and said tech specialists are a dime a dozen. Technical leadership is very expensive to find though, and once you find one you don’t let them go back to the production line.
I still occasionally answer an SO question or make a few commits on personal pet projects, but lately I’m just as likely to go fishing instead or make edits to OpenStreetMap.
Programming really is a special kind of career. I can’t imagine making it the only one I ever tried though.