You might be able to write excellent code, but experience brings many other skills:<p>- How to design code that's easy to use, test, understand, and maintain over the long term.<p>- How to effectively debug the hardest problems: bugs that occur intermittently, concurrency issues, performance issues, hardware issues, etc.<p>- How to wade into a huge code base and understand what it's doing, especially when the people who wrote it are no longer around to answer questions.<p>- How to decide which third-party software is likely to be well-supported a couple of years from now, or whether it's more cost-effective to write certain functionality yourself or use an existing solution.<p>- How to work effectively with others: difficult co-workers, customer support, product management, your manager, upper management.<p>A lot of this stuff is learned by making lots of mistakes over time. If you're just starting out, you haven't made enough mistakes yet to have learned the hard lessons.