Well, I spent seven years working in IT for financial services. Way too long. I spent a number of years working as a Network Engineer for a consulting firm. Ground out a year doing QA work at Apple. I built mobile games (in 5-10 weeks each) for a buddy of mine and watched his apps go from 100k to 5MM+ installs. Hell, in high school I sanded furniture and bussed tables and there were even lessons there.
I learned things from each experience. Some lesson were way more valuable than they initially seemed. Like how to over communicate and that consulting is about service first and the technology second. That I don't like to work with people that don't care about their job. From the same people I realized it's a marathon and not a sprint. How to build consensus and work with people whose approach you fundamentally disagree with. Why marketing and market fit is really important and that if you build it they won't necessarily come. The importance of seeking out mentors and maintaining relationships. How to time a move to maximized the number of RSUs that vest (or to get more when you are hired - they won't give you a higher salary? Ask for something else they can give you.) or that you can line up a new job and then make them wait until a retention bonus is paid out.
In summary, there is more to this game than just your algorithms and computer code. At the same time, don't let people take advantage, ask for what you want, figure out how to get it or go elsewhere but be smart about it and don't leave money or something else valuable on the table.