* Make yourself as replaceable as possible.
* Plan B, enter management and be good at managing people.
On the list of top-100 things SWEs need focus on to have the most prosperous career this one is 1 through 95
If you work for a company in stasis or worse, shrinking, then being replaceable means little.
- I picked a company that was less than 100 people and in business for at least 2 decades, and profitable these were my core parameters
- I worked like a dog first few years, specifically focusing on picking up everything no one else wanted. And in every shop there will be plenty of this
- I f'ed with the code that says DO NOT TOUCH THIS, NO ONE KNOWS, EVERYTHING WILL BREAK
- I intertwined myself with every part of the product (multi-million lines of code product)
Then:
- At 5th year anniversary I asked for 60% bump and yearly 15% raise moving forward, the owner did not think for more than a minute and agreed
- At 10th year I quit, started my own LLC and offered my services to the company at the same rate they were charging their customers for senior engineer rates (which was roughly 2x what my salary was - no problems)
I made more money that I can spend in 4 lifetimes just following these simple principles. I became virtually irreplaceable and henceforth could demand just about anything I wanted (within reason of course but that 'reason' is very high...)
I always find myself thinking why are so many people trying to get jobs at FAANG/Big Tech where there is a much simpler (and attainable) path that being one of the thousands and practically just a number.
About your career path - kudos to you, but my experience has been that willing to do the work nobody wanted/could resulted in receiving more of said work, but when it came to taking credit, people always came out of the woordwork, on the other hand I have had many negative interactions, like the guy who knew I was an expert at some sort of thing asked me to take on a bit of extra for his sake, and when I told him I already was doing the workload of 2 people. He then told me if that meant that I couldn't do it today, it would be fine as long as I did it tomorrow.
When you see that phrase just think: cognitive conservatism. Then you can stop reading what follows.
It does not matter how far they are or are not subjectively related. One is the subject and the other is not.
* Employers do not heavily invest in training. They over invest in hiring/firing. If you want to shine at candidate selection time you need to look like that perfect guy who they can fire with minimal risk and replace you with a 22 year old.
* Employees that over prioritize in retaining their current employment, such becoming that irreplaceable center of attention that keeps all the lights on, are high risk. Nobody likes high risk.
* Software developers tend to prioritize all the wrong things. They tend to prioritize things that make their own lives easier at cost of everything else. You can label that immaturity, autism, sociopathic, or whatever. The result is the same. Employers have real product decisions to make and if you aren't on that same line they will consider you as a potential redundancy for elimination, because you consume more resources as an employee than you deliver as a developer.
Not to complain, its just an observation. There are people you can point at a problem, and they come back with a great solution a couple days later. I've had a story of a coworker who during her internship was mistaken for someone else working on a totally different speciality and they tasked her with doing something, and after the initial bafflement and fuming, she did it and it was so well done, that the boss came to congratulate her, but was puzzled about why she was on the different side of the org chart.
So the best thing you can do for your career by far is simply to find some way, any way, to be able to work in the US.
The lies we continue to keep telling the next generation.