I've been programming since I was 9, and I love and continue to love programming as a hobby, but the industry itself is a whole lot different than programming as a hobby. I haven't left but I've been considering it. My reasons for wanting to leave are:

1. The interview process

This is my biggest gripe. Imo it's a hazing ritual that pretty much doesn't tell you anything about the candidate -- I think companies have it because they had to go through it, so why shouldn't you have to?

I really wish I knew that this was a thing before I got into this profession because I most likely wouldn't have gone into the field if this were the case.
If I knew that I'd be asked arbitrary questions on literally everything I learned over the course of my CS degree + 3-4 years of professional experience on virtually every programming topic, language and tool imaginable, I'm not sure I would've entered the industry.

It used to be all whiteboard questions of leetcode, for which I would consume many hours a week just practicing even though it has nothing to do with coding unless you're writing C/C++ code, and even then, you'd probably use already existing libraries for algorithms. Some say it's a proxy for an IQ test, but I'd argue that's BS: it can be easily gamed, and I know a lot of smart people that butcher those because they're introverted and/or don't do well with on-the-spot performance tests with someone watching over their shoulder.

This now got replaced with often arbitrary coding projects that have nothing to do with the job and often take up considerable amounts of time to write. 3 hours? sure if you want to deliver the bare minimum, but then someone else who wants the job more will do way more, so you do (a lot) more if you want the job. A lot of them are now at the screening stage, before you ever even talk to anyone. I've often been ghosted on coding projects: I'd say I've dumped maybe 100+ hours and been ghosted on those projects. It really wears me out. Some places started to add time limits to the projects, which helps, but I'd rather have a 1 hour whiteboard interview on a project than several hours with a considerable amount of time spent setting up the tech stack instead of working on the problem because you're building it from scratch. You could game this somewhat by setting up a ton of template projects over a wide variety of tech stacks to save time, but it's all just a time sink (tooling fatigue).

2. It's always > 40 hours/week

Related to #1. The pay is high, but if you consider the fact that you need to:

- Have a decent open source portfolio to stand out from the crowd

- Constantly learn new tech and show that you know it (learning on the job is apparently out of the question), usually as part of the open source portfolio or a blog. The new tools usually aren't interesting -- they're usually a rehashed version of the older tooling with maybe one very small kind of useful improvement on the old tooling, and possibly 1+ drawbacks, but requires you to have to relearn a whole new api/way of doing things.

- The interview process is incredibly time consuming now that everyone is doing screening tests with several hour-several day coding projects, often which never gets followed up or read

- Meet arbitrary deadlines and create a bunch of technical debt because 'move fast and break things', and then be expected to come in after hours to put out fires that you have no control of preventing or didn't even start, because feature creep trumps sound technical decisions

Then, considering all of this, the pay is actually quite low when you realize you need to put in 60-70 hours/week to stay ahead. Unless you work for a spyware company (unless you get into netflix), see:

3. Detrimental to society: automate or spy

Most of the apps out there either don't actually improve society in any way or are actually actively detrimental to society. You're often either writing spyware (probably backed by some govt), or you're writing software to automate away some white-collar job that society desperately needs as the middle class, the backbone of a healthy society and economy, is continually shrinking and politicians are doing jack about it (to be fair I'm not even really sure what they can do about it...). Modern day spies are basically all in the tech sector, so there's plenty of spy shit. I'm from an eastern european country working for western companies, and I'm sure trust plays into whether or not I'm even considered for positions. Same deal as #1: I really, really wish I knew this as well before going into this field because I probably would've stayed well away

4. You're not a software engineer

There's very little actual engineering involved in the day-to-day work. It's really like 70-90% debugging (repairman) and 10-30% development (white-collar construction). Maybe like 1% is actually engineering in most jobs. I thought I'd get to be an engineer, and it's the aspect I liked the most out of my classes. I like developing stuff but not if it's detrimental to society (#3) and only with a reasonable amount of tech debt. Sound engineering practices would reduce repairman down to like 10%, but tech goes in hype bubbles and is often crap, and the best pieces of engineering are utterly unpopular for some bizarre reason

5. It's all getting automated away

There was a time when having strong linux and networking chops gave you a lot of street cred. Now those people are obsolete as more and more people are switching to cloud companies to save on costs (#3). Open source has killed the engineering aspect as jobs are now all about slapping libraries together and debugging (construction repairman). It used to be a white collar job but it's increasingly turning into a blue collar one (bootcamps?), so I think it's not surprising that the industry is treating it's employees increasingly like replaceable code monkeys (we probably are, and soon to be obsolete) and making us jump through all sorts of arbitrary hoops to get a job.

I've been thinking of getting into teaching + research and becoming a professor, but I'm not sure because:

1. I might just run into other issues in academia that I didn't know about before entering the industry, just like with the tech industry

2. There's also the aspect of bad luck/making your luck -- there are companies where none of this stuff applies, and so I could try to find/target those kinds of companies. My earlier experiences at companies were different. And the culture could probably change on a lot of this stuff, like how interviews are done, though some of it is probably inevitable and unavoidable (like automation + spy shit)