There are three reasons.
First, you will never be able to write the software correctly. You have to write the software in the most convenient way. Because the software expenditure is very high, the company will require to save as much cost as possible. You cannot try new technologies, but you can only use the most mature and conservative existing technologies.
Second, you cannot perfect a project. Once the program runs properly, your work will end. You can continue to work on the next project of the company. Your role is to solve the problem, rather than writing the software as well as possible. If you are in a professional technical company, such as Google or Facebook, the situation is completely different. The better your software is written, the more successful the company will be, therefore, the company will support your continuous development on a project.
Finally, programmers in the IT department of traditional companies only belong to internal maintenance personnel, rather than directly engaged in core business personnel. Therefore, you can never enter the management layer. However, in technical companies, programmers will become CEOs.
In-house
Programmer is not a good job. Unfortunately, 80% of programmers belong to this category. Year after year, many people's lives are wasted.