| Well, where are you coming from? Getting the first few years of experience is going to be the hardest--hardest relative to the rest of your career; it's not that hard by any absolute measure. Apply broadly, and take whatever comes. If a company is looking for a junior or mid-level SE and wants "1-3 years" of experience (which is common), your degree is that experience. If you have a CS degree and are in a low- or medium-cost of living area, you should expect $60-80k to start. If have a CS degree and are in a high-cost area, you should expect $100k. If you don't have a degree or experience, it's going to be harder. But why should a shortcut be easy? Is there a secret backdoor career path for people who want to become physicians without going to medical school? No. Do the work, and earn the reward. There are plenty of online and nighttime options for earning a CS degree. If you apply somewhere and don't get a call back, don't sweat it, and don't take it personally. It just doesn't matter. Hiring is a noisy process, and the cost of a bad hire is tremendous. Most companies will try harder to reduce the number of false positives than to reduce the number of false negatives. Again, apply broadly and treat it like a numbers game. There are limits, though. If you've applied for 10 jobs and not gotten a single interview, pay a professional to rewrite your resume for you. If you're getting interviews and bombing the technical questions, then study. If you're bombing the cultural/behavioral questions, read some self-help books and join Toastmasters. If you think you're acing the interviews and not getting any jobs, then you're probably bombing something but are too clueless to realize it. Hire an interview coach. If you're at the point where you have a degree or 5ish years of experience (or ideally both), you are ready to be a $100k code janitor. Learn a common stack well enough to do smart things with it. For instance, if you learn .NET, you should be able to manipulate collections in interesting ways with a single expressive LINQ statement. Pick one from each category (but don't combine Java with SQL Server - I don't think you'll see it as much in the wild): 1. Java or .NET 2. Angular or React 3. SQL Server, Oracle, MySQL, or PostgreSQL I'm going to offend a ton of niche fanboys now: Don't pick Vue, Go, Erlang, Haskell, or Rust. I'm sure each of them is amazing in its own way, but getting a job is your goal, so you don't pick a technology used by only 1% of employers. Now I'll offend the embedded and systems programmers: Don't pick C or C++. They're just not widely used in business applications. I know both (at only an intermediate level), but I've never seen either used in a business application. You should know both on some level, but you're not going to get a Fortune 1000 code janitor job with either of them. Congrats, you are now qualified for the majority of SE job postings at non-tech companies. |
19.5 years of programming, but mostly web programming for the last ~12. I want to move away from that, I am sick of it already. There's always something more to learn and even though I don't mind at all -- it keeps my mind sharp which is something I want to keep all the way to my death! -- the churn of knowledge in there is exhausting.
> If you have a CS degree...
I am not from USA and have no degree. I am 41 y/o and I'm a self-taught programmer ever since 12 y/o. Not sure how well that flies on interviews; I feel the US companies put a lot of value on degrees?
> If you apply somewhere and don't get a call back, don't sweat it, and don't take it personally. It just doesn't matter. Hiring is a noisy process...
Completely agreed. I've been in a rough mental and physical health patch for ~3 years now and I've changed more employers/customers than I wanted. Tech hiring is completely broken indeed. You're quite right.
> I'm going to offend a ton of niche fanboys now: Don't pick Vue, Go, Erlang, Haskell, or Rust.
I am not a fanboy at all. I've used 8 languages over my career -- Elixir (stepping on Erlang) and Rust included and I've picked them based on their true, proven and testimonialized merits.
I don't take offense with your statement at all. I presume you meant "aim for something huge and somewhat commoditized that has a ton of legacy code to maintain"? If so, I'll agree with you immediately; there was a period during which I've been barraged by offers from German and Swiss companies almost every day, for months -- all for Java and C# huge legacy beasts.
But sadly that's not where my heart is. :(
Furthermore, I am willing to bet my neck most of those are NOT a code janitor job at all. They'll require a ton of time and attention every day. If I'll do that I'll just find an Elixir or Rust job but at least be happy with the tech stack (if not the area -- the webdev -- which I hate with a passion nowadays).
> Now I'll offend the embedded and systems programmers: Don't pick C or C++. They're just not widely used in business applications.
I haven't been an active C/C++ programmer for like 12-13 years now but IMO you're not on the mark here: there are a lot of business apps but they usually belong in huge old mastodons that are too stubborn to move on (I personally know the VPs of engineering in two such companies!).
But overall you are right -- they are niche but not the good kind of niche; you need a metric ton of battle scars to even qualify there.
> Congrats, you are now qualified for the majority of SE job postings at non-tech companies.
I'd agree but I've neglected networking -- both physical and virtual -- for most of my career and now at 41 y/o I started to feel the negative effects of that. :|