When to ask for help

Many times, working on a project can be like walking from one hill to the next.  In between, all is rolling along smoothly, and then you hit a problem that slows down your progress.  You work through the problem, or walk up the hill, then once it is solved, you quickly get back on track until the next problem or hill.

I have worked alongside of programmers that ask for help at the very first sign of trouble, and developers that refuse to ask for help and continue to spin their wheels, wasting valuable project hours along the way.

Asking for help too early becomes a bad habit that is difficult to break.
Figuring things out for yourself causes you to learn several valuable lessons.
First, it teaches you how to troubleshoot the specifics of the actual problem by isolating out factors that may be affecting the process.  For example, if you are writing a database trigger, and it is failing, using print statements to isolate any variables or values can point out potential missed scenarios, or mistakes.  Using the debugger in tools like Visual Studio can be invaluable for getting you back on the fast track.
Secondly, it teaches you how to research issues effectively, using documentation or the internet.  Often, I begin my research with a Google search, and have a pattern that I use when starting my search by identifying the product, then specifics.  Inevitably, the results are filled with results that are irrelevant to my situation, or websites that are nothing more than link-bait to foist their relentless advertising on you.  Learning to build an effective search query and identify useful results can be a huge time saver.
Thirdly, it is highly unlikely that you will be able to simply copy/paste somebody else’s solution into your own code.  By adapting and modifying what you find online, you are learning the under the hood mechanics of how it works, which will reinforce the solution in your skill set so that hopefully you will remember it next time.

Asking for help too late is a waste of your employers time and money.
It is in your employers best interest for you to learn new skills, however they have a schedule and deadlines to meet that generally do not include a great deal of time to burn.  Learning new skills, techniques and gaining knowledge should not come at the expense of your project.  I am a big advocate of spending a small portion of time each and every week to learning, given the rapid pace at which IT is evolving, but if you are on a project, be careful not to burn down the hours without making progress.

Obviously, the correct time to ask for help is between the two extremes, and each person, project and task will have it’s own unique requirements.  Sometimes, you may be on a project in which there IS no other person from whom to ask for help, and you may find yourself in the unfortunate position of having to keep plugging away at the problem.  Make sure to let your project manager aware of the delay.  Nothing annoys project managers more than not being made aware of delays to project timelines.  My personal rule of thumb is that if the number of hours to safely finish a task is burning away without any progress, then I seek help.  If I’m making some progress toward solving a problem, then I’m climbing the hill, and so long as I’m not endangering the project timeline I continue.  If I have not made any progress, then it’s time to reach out for help.

When you do finally figure something tricky out, be sure to make a small comment in your code so that other developers that inherit your work for maintenance or enhancements understand why you took an unorthodox approach, or went a route that might not be obvious.  This will also help identify areas which might later be improved upon by subsequent product features if you are working around a software or platform limitation.  Also, consider giving back to the online community by writing a blog article, or post on a website such as Stack Exchange and share what you have learned.  A healthy online repository of knowledge benefits all programmers!

© 2014 Dean Abraham