Every minute of software development makes you feel like you're never good enough (the compiler keeps reminding you). Also, on the company side, you're always made to feel like a replaceable cog in a big machine, not to mention that salaries are generally limited and under constant threat of outsourcing... To rub salt into the wound, most companies don't even care about code quality; they will happily pay 10 mediocre engineers to do the job of 1 good engineer (for 10x the total price) and end up with worse results. Hiring has been broken for decades. They don't care about coding efficiency or maintainability when they have a monopoly... Engineer salaries are often peanuts relative to their significant revenues... They could hire 10 times more devs for the same work and it would make little difference for them... Yet they will not pay high salaries to engineers based on talent; it's all about internal politics.