I was recently asked to review some work done by an Intern at work over the summer. The intern had written an MVC app that was meant for managing some training data. The Intern (well call him Sam) had pretty well been left to his own devices while working on the project. A developer occasionally gave suggestions but that was it for the most part. In a result that will, I’m assuming, not come as a surprise the intern made quite a few mistakes. This post is an introduction to a series of posts where I will be going through some of the more common mistakes or errors the intern made in both the design and development phases of the project.
The Importance of Failure
The important part of this project is failure. In some ways, Sam did fail. An experienced professional developer would not have made the mistakes Sam made.
This is Good
The best way, sometimes the only way, to learn the most important lessons in development and in life are learned through failure. It is clear just in a quick glance through Sam’s work, that he did his best, and that he learned as he went. His last bit of work is much better than his first. Sam needed to fail and needed to make mistakes so that he could learn not to.
Failure Teaches us a lot of lessons a lot faster than if we read them in a book or in a classroom. That is for several reasons.
- Failure occurs doing real work
- Failure drives innovation.
- Failure Drives innovation because when you make mistakes when things go wrong, you learn new things about how the technologies you work with. When things fail and you have to fix them, you have to learn a little bit more about what is broken, and your ability to use it more unique ways will increase. You might do something "wrong" or differently that your group or team normally does it, and during a code review, it gets discovered that it actually works better than the way you have been doing things and the team switches to your new method.
- Failure teaches perseverance
- Failure teaches us to push through. Spending ten hours on loading a script too soon feels awful and you feel like an idiot. Then you get maybe half the next day into your project and find that your CSS is all wrong and the page is no longer laying out the way you like and you'll need to redo about 3 hours of work. You wonder is it worth it, can I even do this, am I cut out for this kind of work. You decide to keep going and find it took you half the time you thought it would to fix it all, and suddenly your confidence returns and the next time you make the mistake, you panic just a little bit less. Each time you overcome failure, you learn a little bit more than you can overcome it.
- Failure is inevitable
- There are no perfect people. Mistakes and failure are inevitable, they happen to everyone at all skill levels. What failure looks like will change but it is always there and always will be. If you treat failure as this horrible thing that isn't forgivable (or if you work for someone who does) then you'll fail even more. When skydivers are trying to land in a specific spot, they don't get there by worrying about how far off they are, or how unlikely it looks that they'll get there. They keep their eyes on the target and keep moving towards it. They don't just give up and fly into a tree if a gust of wind pushes them away a few feet making it harder. Neither should you.
Failure is Good, It’s necessary, It’s Healthy
I’ll be spending the next several weeks going through some of the mistakes Sam made. Some will be technical and some will not. For those of you who are less experienced, I’d encourage you to keep failing and keep trying. For those of you who are more experienced and feel like they have less failure, I’d encourage you to fail more, try to innovate more and keep growing. Having fewer mistakes does come with experience, but at a point, it also comes with not taking enough risks. More on that later.