| You might be able to write excellent code, but experience brings many other skills: - How to design code that's easy to use, test, understand, and maintain over the long term. - How to effectively debug the hardest problems: bugs that occur intermittently, concurrency issues, performance issues, hardware issues, etc. - 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. - 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. - How to work effectively with others: difficult co-workers, customer support, product management, your manager, upper management. 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. |