This is the first of many BaBSE posts to come. Enjoy!
One of the hardest things that I have had to do since I have entered the real world of software development is admitting that I have know idea what I am doing at times. This is most evident when it comes to specific technologies, business processes, and even sometimes algorithm logic.
It hurts. But have no fear.
Knowing when you don’t know something can produce some awesome things in your development world. I can think of two that you will experience immediately when you identify and admit you don’t know something:
- A greatly reduced sense of stress
- The opportunity to learn from someone who actually does know something
Let’s take a closer look at these two experiences.
Trying to be something your not is stressful. Trying to learn a development skill quickly to protect your “credibility” while others around you know it and use it all the time is not only a wast of time, it is nerve racking.
Some fledgling software developers (this one included) have a hard time admitting that they can’t figure something out. Because of this they (they as in I) will spend a crap-ton of time Googling their way to an answer when someone around the corner knows exactly what you are trying to accomplish and can help you in a moment’s notice.
It’s one thing to struggle with something by yourself and work your way through it. Like struggling with a piece of code or algorithm until you understand what you are doing. This is a learning experience. But, not getting help from another developer (or even supporting team member) with something that they are awesome at doing is not smart. You don’t learn any valuable skill from struggling at Googling, but you sure as hell can learn some things from being taught by another software developer that knows knows what they are doing.
So, stop trying to be a know-it-all and learn from someone with experience.
Learning something new
The best way to reduce your stress in not knowing something is learning what you don’t know from a developer with experience in what you are trying to do.
For instance, I knew how to develop in C# and sort of blindly felt my way through developing some ASP.NET Windows Forms applications. After learning a little about Ruby on Rails I decided to try out ASP.NET MVC 2/3 and make it the standard way that I developed small web apps for work going forward.
What I didn’t know is that deploying an MVC application to an IIS server was a completely different process than deploying an ASP.NET application. It was so different that I almost gave up in deploying my first application and thought that I should just switch everything I worked on back to ASP.NET. I went through this though process even when there was a team of highly skilled developers across the way that were working with MVC.
So, instead of struggling and giving up I decided to learn something new and ask for help. I learned more in that 30 minutes of setting up my new application on a server than I did in the previous 3 hours of Googling and struggling.
There is a certain type of culture that goes with software development and engineering. One that almost demands that you understand and know something by yourself. It doesn’t have to be this way.
In my short experience I have found that developers that are at the top of their game have absolutely no problem helping out and teaching a newbie new things. So, instead of being a know-it-all, take it down a notch and know when you don’t know something.