- it’s very likely you haven’t mastered all layers of the stack - you maybe have mastered the parts you’ve come across though. Would you include Linux kernel development, program proofs, HPC , math-oriented software, compilers, firmwares, fpgas, database internals ( I mean, writing a full database engine ), big iron infrastructure , actual research etc in the list of things you’ve mastered? That’s what I did for many years ( not necessarily these topics ) - keep exploring , the field is massive. In my experience, the more you look around the more you realize that you haven’t seen it all, and even less mastered it.
- now, in my case, after doing just that ( trying new technical things) I realized I was getting increasingly interested in the overall technical strategy and interplay with people more so than the purely technical side of things. I had vowed I would never get into the higher spheres … but I am now essentially a principal engineer ( or whatever you call that but basically I lead some technical stuff ) for a very large org. This is not management , and I really like it. I keep learning about people and business, about how changing something big is hard and human , and balancing technical problems with human ones . It’s fascinating, and above all grounded in technical knowledge so I don’t feel like I’ve thrown away a significant chunk of my career.
In particular, if you feel that you’re not being listened to but would like to, maybe you’d be interested in that kind of job. If you’re saying you’re not always succeeding at persuading people , it probably also means there’s growth for you here, and satisfaction down the line.
- actually get into management , which like most topics is actually interesting once you get into it. It’s just different. I thought I didn’t like it - I actually do and that was a colossal surprise to me.
Whether it’s technical leadership or management, these skills can be learned, and they make the bits that you don’t like much more palatable, and the bits that are ok very enjoyable. I was lucky enough to meet very good people who taught me properly. I think this is very important. I can cook at home, but if I get proper training my food will be better and I will enjoy the process a lot more ( try chopping vegetables with no training - you’re slow as hell and it ruins everything)
- do something unrelated ( cooking etc ). To be honest, at some point I did my job but the more fulfilling exploration part of my life was at home and revolved around food. I did consider changing career completely but decided it was too risky.
To a large extent, there is limited value to your extensive knowledge if you remain at the bottom because it will always have limited impact. You seem to want the power and influence ( for good reasons !), but don’t seem to want to learn the skills that are required . ( at least management, you seem interested in technical leadership). I guess you have to choose. It’s very hard, but liberating.
You mentioned family - I also made sure I was in a good place at home when I switched. I found it hard but support from my wife helped tremendously.
Best of luck !
> it’s very likely you haven’t mastered all layers of the stack - you maybe have mastered the parts you’ve come across though.
I was meaning that in the context of web dev. There are certainly other areas I don't know much yet.
> Would you include Linux kernel development, program proofs, HPC , math-oriented software, compilers, firmwares, fpgas, database internals ( I mean, writing a full database engine ), big iron infrastructure , actual research etc in the list of things you’ve mastered?
Definitely not (except partially a database engine), but I'd definitely like to move down the stack. I like systems programming, low level stuff and optimization problems, so that's maybe the main area that I should explore (and also one of the reasons I like game dev). Translating that into an actual job might be harder thought.
My first few roles were in startups, where I got to be very hands on, learn a bunch, and mostly focus on the craft of software development and systems. I similarly felt I had a lack of higher-level understanding of business, management, product, etc.
I then went to Amazon for 7 years and this is where I felt I developed a stronger sense of the "business" side of things: politics, understanding what your customers really need, influence, delivering massive things across multiples teams and years of effort.
> I do my best to explain that and recommend alternatives, but more often than not it still happens anyway.
This is difficult to overcome, particularly on a short timescale. I felt this early in my time at Amazon at times, where I felt "right" but couldn't get others to see things my way.
The path there for me was first developing relationships with my peers generally, then establishing trust for my judgement. This came in the form of chasing ambulances, jumping into technical and non-technical problems unrelated to my direct team (eg: incidents), mentoring others. These activities are generally trust-building, and non-controversial/political. This also build some social capital, such that when I would speak up in a meeting or point out some flaw/gap (with data), people would listen more.
I've found it incredibly hard to influence without first establishing solid credibility, and vice-versa, if someone is new to an org, I will certainly listen, but I also don't yet know them/their background/or why I should outright accept their opinion as the truth.
Conversely, I have also seen people more senior than myself struggle with this concept. They show up in an org and repeatedly tout their resume, and expect acceptance "Yeah at X we did things this way", "I built x, y, and z". This has not worked well for them in my opinion.
The most influential engineers I've worked with had strong trust based on their actions and history of delivering, helping others, providing opinions backed in data, and being level headed. If they spoke about a problem it was something to listen to, not just a weekly complaint about something else.
Lastly, make sure whatever it is you work on truly matters to the business, and understand how it ties back to the business and your customers. It can be fun (or necessary at times) to be off in the weeds on something that is technically interesting, but really unimportant to the bottom line and ultimately to advancing your career.
I've had fairly positive successes in the past when being a contractor. I feel like it's easier for me to have legitimacy and influence over the project that I'm doing this way.
> Lastly, make sure whatever it is you work on truly matters to the business, and understand how it ties back to the business and your customers. It can be fun (or necessary at times) to be off in the weeds on something that is technically interesting, but really unimportant to the bottom line and ultimately to advancing your career.
That's something I have also learnt from experience, and I am more often than not the one pushing for boring tech against the last fancy trends. But I have difficulties with the fact that focusing on the business means most of the time being the fastest possible, to the point that businesses would rather save 2 hours of implementation time now, even if it costs weeks of technical debt down the road.
Like you, at times, I reached a plateau of motivation, and more than once I questioned the meaning of the job I was doing, unsatisfied and listless.
I think if you are at all introspective, reflective, that it's inevitable you go through patches like this.
You've now got plenty of advice from many with experience, I won't add to that pile. Instead, just briefly, a word on my current situation and outlook.
Working for someone else is only rarely going to be broadly fulfilling. Working for yourself can be worse.
So I developed my hobby interests, most involving programming, because I still love it. I still get excited exploring possible solutions to hard problems. It's fulfilling in a way that working for megaCorp can never be. It's the difference between straining to meet a work deadline and straining to win a game. Similar, but different.
In other words, contentment, for me, comes from within.
I also resisted "being a manager, for a long time. It's like it was a dirty word and I thought it would be turning my back on what I was good at and enjoyed. But the truth is, you are no longer enjoying what you previously did and have not grown for 5 to 10 years.
Being a leader is not being a line manager. Managing some people may be part of being a leader, but it's not the main focus. I manage about 3 people and mostly I just delegate stuff to them. It's not that hard and isn't what I spend most time on.
What I really enjoy is that I get to set direction, come up with the strategy and use my years of experience to build things the right way.
So I would advise trying to get into a leadership role and give it a try. It has to be something where you can really set direction. You do not want to be a middle manager just doing people management, and there are plenty of roles like that. Worst case - you get a break from what's driving you mad right now and some fresh perspective. Best case is you actually find some new passion.
Also I care too deeply about the quality of the software being developed and am very much perfectionist, which usually translates into lots of frustration for both me and the team.
There I learnt to be a sysadmin and went to MSP support.
As a sysadmin I relied on networks more and more and became a netadmin and that evolved to network engineer then architect.
I worked in startups and kept evolving until I looked down on those "professionals" that stayed dependent specialist. The back and forth to just identify an issue was all lazy waste to me.
Now I'm studying electrical engineering because there's lots of opportunity to scale tech but not enough supply of trade professionals that support the fundamentals.
I also wanted a role that didn't require several specialist to concur simple decisions of my daily job.
Tech is full of specialist that lack a general understanding of the principles they interact with. I needed to avoid being dependent on their approval for any matter
When you are senior you know that reality is messy. Things break, networks fail, people push bugs and we are supposed to know how to get on with the chaos and keep pushing forward since solving the business problem is more important than anything else. I'd argue that you take a similar view to people management, its also a part of engineering just not the one you like. But its important if it helps solve the business problem. The other view would be managing folks is part of your career, so do your job.
Also I question that you've never seen anything new in the past 5-10 years (not being rude here, I understand that someone with 20years experience has seen plenty already but definitely not everything). For example, how much do you know about deep learning ? Are you on track with the latest trends in our inudstry ? Can you make a list of best practices to follow when building AI systems ? Maybe try looking into new areas for growth. It will be uncomfortable but worth it I think.
Please dont go into gaming. Dont do it to yourself and your family.
> Also I question that you've never seen anything new in the past 5-10 years (not being rude here, I understand that someone with 20years experience has seen plenty already but definitely not everything).
That comment was meant to be in the context of web dev, I'm not pretending to know everything about all areas.
> For example, how much do you know about deep learning ? Are you on track with the latest trends in our inudstry ? Can you make a list of best practices to follow when building AI systems ? Maybe try looking into new areas for growth. It will be uncomfortable but worth it I think.
I have studied deep learning and neural networks, and found-out that it's not something I'm interested to work with. I am more interested into moving down the stack. Maybe systems programming, but also video games, because it involves low level concerns, optimization problems and a huge creative/artistic part. But yeah, I know that working in video games might involve lots of other sacrifices I'm not willing to make.
My answer right now is to try and build more things myself. Small apps, CLIs, retro games. Not libraries or much OSS stuff so much as actual "products" that give me creative control and concrete outputs. It's hard to make the time though.
Outside of my career I'm also trying to cultivate other works, like my YouTube channel and my writing. Creating a video that 250k people enjoy is at least as meaningful to me as crushing my OKRs
We are all mortal beings: there will inevitably be more things to do than time to do it, and it's easier to ruminate on options than commit to something that feels "suboptimal".
To give an example of that. I spent a lot of time wondering if I should have gone into academia / literary criticism rather than tech, because of a vague sense that because I was very good at something, that's where I should put my efforts. Is that sound reasoning though? I probably achieved more "value" for society working as a programmer, than writing about Chaucer.
So to summarise it may be a choice of making peace with the lower scope / autonomy of hands on work, and finding that satisfaction outside work. If that suggestion makes your soul revolt, though, it may be you have to compromise and take the managerial path