A junior asked me about what I have gained after about a decade of experience in the software development. I tried to sound cool and talked about methodologies, philosophies, tools, and what not. A perfect recipe for a boring and useless lecture, which I am sure was of no use to him. And then I really thought about it and it was only one thing – courage to experiment and make more mistakes. I realized that my whole setup is geared towards increasing my affordability to make mistakes. Whether it is the version control system or tools to make quick changes or documentation or my effort to learn new languages and tools – they all allow me to be productive not by avoiding mistakes, but by making them, crashing hard and learning from them.

January 25th, 2009 at 10:21 pm
We definitely learn more from mistakes than learning any other way. I think it’s important to understand that – and learn to not feel like a failure and to keep trying.
January 25th, 2009 at 10:53 pm
Well, I find the key thing is to balance making mistakes (But being more creative) to being less creative but having a more solid product. However, establishing a development environment so that mistakes can be caught quickly in development and pre-production is clearly useful.
However, I find the biggest mistake most people make (and shouldn’t) is have their development go to production way too early and run into a long list of disasterous problems.
January 25th, 2009 at 11:16 pm
[...] Making Mistakes | iface thoughts. This was a great realization by Mr. Nadgouda. Making mistakes (and learning from them) is the key to true innovation in any field. Unfortunately, mistakes are not so “affordable” in medical treatment. [...]
February 5th, 2009 at 3:18 am
Hello Abhijit.
I think you have hit upon a one of the most valuable and possibly one of the most overlooked principles of good programming techniques. It may not be a “formal Computer Science concept” but getting people to approach their work unafraid of “just trying it” is clearly going to increase their productivity, as well as their comprehension and code quality.
Being able to “undo” the changes by going back to the last working state completely frees the student to take a risk. And in the computer field we are ALL students some of teh time…
I would love to see you do more on this subject especially perhaps filling out the “how to” information that enables the undo capability for people in the tools that you use.
Example: 30 or so years ago, after helping a Gf with her programming homework on a VMS system I decided I liked VMS’s ability to keep each edited version of a source file around so (being a UNIX user) I wrote a wrapper script for vi that did just that. Next I modified the wrapper script to check the file out of source code control before editing. And so on. I still use it today, especially for editing system configuration files. Its nice to havethe entire hsitory around. It evolves constantly. Some years it only keeps diffs around, some years it compresses the changed files sometimes both.
February 5th, 2009 at 11:21 am
Jeff, thanks for giving me the final push to do a push about my setup in this context.
March 7th, 2009 at 11:54 am
[...] found the Cult of Done Manifesto via Assaf, and it rocks! What does it give me? Luxury of making mistakes, a chance to work on my thoughts and keep the river flowing. And I think it will also help me get [...]