Also, if you have any observations or advise for developers who are NOT based in the US, i'd love to hear that.
Also, if you have any observations or advise for developers who are NOT based in the US, i'd love to hear that.
You don’t say much about your background or where you are, so it’s hard to answer your question. I think there’s really two parts to your question: “1. How do I become a great software engineer?” and “2. How do I emigrate to a country with higher salaries for engineers?”
To me, these are pretty basic questions. To be a great software engineer, teach yourself to solve difficult problems and then go do it. Always push the limit of your ability. Learn multiple languages. If you’re a system software person, go tinker with databases. If you’re a compiler guy, go tinker with neural networks. If you’re a C programmer, go learn Scheme or Haskell. Read books on lots of topics: microprocessor design, good software engineering practices, design patterns, etc. In your job, be indispensable. Be the guy who can solve any bug or solve any problem, even if it spans multiple areas of knowledge. Be indispensable.
Don’t be the guy who holes himself up as a guru in a little obscure walled-off technical area and hides his knowledge as a form of power or job security. There is no job security. Even if you’re good, your company could go through a rough spot and lay you off. The only job security is to be known in a network of other people as a great engineer, and then if you don’t have work it’s no problem to find another job.
If you go interviewing for any serious jobs, you’re going to get coding questions. Whether they are a great way of assessing a candidate is a topic of debate on HN, but that doesn’t matter. You’re going to get them. People have put together anthologies of these questions: be sure you can solve them. If you practice and are good at it, you will be able to solve similar problems that you haven’t seen before.
If you’re in an “emerging economy” with low salaries for engineers, then figure out how to get to a different country. The demand for software engineers worldwide is huge right now, and so if you can figure out a way to legally work in a richer country and you have any talent at all, you can find a job. Visa programs put a high value on university degrees in technical fields, so if you don’t have one it’s likely you’ll need to get one.
The United States has the best paying jobs for software engineers right now, but it is very hard to emigrate to right now because the H1-B visa category is oversubscribed. The best way to get in now is to go work for a big company that has a presence in both the USA and abroad (like, say, Google) and then after a year you can transfer to the USA on an L1 if your employer allows it.
I’m no expert on moving to Europe, but I know that various countries have “blue card” programs for skilled technical people to move to Europe on. Anecdotally, I believe the best-paying jobs are in northern Europe, especially in Germany. But the pay will be less than in the USA. I transferred one engineer from Silicon Valley to Germany (his request) and I had to give him a 25% salary cut and he got a lot less equity compensation going forward.
The good news is that there is a huge demand for skilled programmers everywhere. I’m so glad that my childhood passion was computers and not medieval French poetry, in which case I’d be serving lattes at a coffee shop and be living in fear that a robot is going to take my minimum-wage job.
I think nothing in Europe beats London. Of course, the rents are insane, but if you don't have a family and are willing to live in a shitty place (maybe with flatmates) with a commute, it doesn't affect you as much.
The biggest problem with that is that a lot of companies don't like to contract out management, so you're options may be somewhat limited (and if you choose full-time employment instead, you go straight into the maw of 40% taxation).
False. You have to be very senior, but you do not need to 'typically' be a manager. There was a spreadsheet a few months ago on HN showing that with RSUs, most of the top tech companies pay above this for their higher level (non manager) engineers.
>It's less than $300k, but contracting taxes in UK are about 20%
Wow, contracting taxes are higher in the US, maybe it is a comparable if you can make 150k+ doing consulting work in the UK!
The justification in Europe is that governments want to encourage entrepreneurship (and contracting counts as entrepreneurship), hence lower taxes. I wonder what's the logic behind the US situation.
Hmm. You're not wrong, but I do wish location wasn't so critical for this kind of thing.
I've deliberately traded income potential for QoL, ability to buy a house, predictable hours, and job stability. But the prospect of using consultancy to move towards a part-time year with ability to work on my own projects is tempting me on the horizon.
I feel like becoming a great engineer is almost orthogonal to getting paid the big bucks. It feels like job hopping, salary negotiation, and most importantly, the opportunity to do great work, all require some deliberate and strategic planning - and that these are the things that actually impact salary levels much, much more than one's raw engineering skills. I could of course be wrong, but would love to hear your thoughts on this.
I studied EE in school, and focussed on statistical signal processing for my Masters. My bachelor was from an okay school in India, and my master was from the top-ranked Asian Uni (National University of Singapore). Most of my professional experience consists of the 6 years that i spent as a research engineer in a research lab, working on various robotics / signal processing / ML type projects. I now work as a Data Scientist for a finance firm in Singapore. I have had no formal CS education, and am a completely self taught programmer. I do enjoy the academic side of CS, and have taught myself many topics in algorithms & data structures, design patterns, computer architecture, etc.