I am cruising along in my morning. I have a cup of tea in my hand and a good outlook on my tasks at hand. The code is flowing off of my fingertips. I am feeling pretty smart. Then the cloud moves in and the code darkens. I am at a roadblock. I try to google, I try debugging, I try calling in my fellow developers to see if they can see what the problem is… no luck. I bang my head unproductively for another hour and then go home. A fresh start in the morning and a fresh cup of day move me in a new direction, somehow I stumble upon the answer and quite frankly, it was so simple I can’t believe I missed it. I feel not so smart. This is one of the many smart-not-so-smart waves that rule the life of a developer.
The example above is what I would call a mini-smart-not-so-smart wave. There are much bigger ones too and much more important too. These are the sort of moments that you encounter that you feel stupid in a really good way. You learn a totally new approach or way of doing things and much better because of it. One of these moments was when I went up to a MySQL Drunken Query Master Presentation by Jay Pipes. He is a brilliant speaker. Before I went up there, I thought I was pretty smart. I knew how to swing inner and outer joins on my queries and how to optimize using the explain plan…. After listening to him, I felt really not so smart. I had been using Theta style instead of Ansi style in my queries and I really had no idea of how to use the storage engines properly and really understand how the optimizer worked or even more important… to really do queries well, you need to stop thinking in logic loops (the comfortable world of the developer) and start thinking in sets. Yes, I felt really dim, but my world view had grown and I had found a whole range of stuff that I didn’t know. I had uncovered a whole dark section “how do you know what you don’t know”.
I had similar experiences when I attended some OWASP security talks and realized that I really didn’t know much about software security and it is actually quite important to learn and consider in design and development to make better more robust software. More recently, I have been spending my not-so-smart cycle time learning more about Test-Driven Design and Agile development by learning Ruby and attending some awesome local community user groups.
So, if you are feeling smart and have been for awhile. It is really time to look around for something to challenge you views. Look at a completely different field in technology then you are used to, try QA, project management, security, cloud computing, data governance. Go out in the community and talk to people in user groups. Push yourself of in the not-so-smart wave section and you will emerge smarter and happier for it.