"I won't ask for help again", I told myself. "If I just push a little harder I'll be able to figure it out".
Pride is simultaneously a wonderful and dreadful thing. It gives boundaries that we won't allow ourselves to cross and keeps our self-esteem high when the world inevitably introduces us to our vulnerabilities. On the other side of the coin, it blinds us and oftentimes we'd rather continuously stumble than be introduced to the light again. I contend that pride is the enemy of programmer productivity.
In retrospect, I should've asked for assistance the moment I realized I didn't immediately understand. Unfortunately, this is a problem that I constantly struggle with. Being a relatively new developer, every new challenge is a threat to your pride. You've made it this far, but you're two steps away from being "discovered". Regardless of experience level, asking for assistance is one of the easiest and most crucial things you can do to take one step farther into the realm of the impossible. Still, running to your team every time you have a compilation error comes off as laziness at best and incompetence at worst. How do you balance your need to be respected with getting hard, complicated work done?
Roughly speaking, I think the question of whether or not you should ask for help boils down to two questions:
- Why are you struggling?
- How much time have you spent on the problem?
Pegging down the reason you're struggling is vital for overcoming your problem. Trying to dig through a legacy codebase to figure out the context behind a new story could leave you slogging for hours with little to show for it. Alternatively, if you're coming across a compiler error that you can't figure out, Google and StackOverflow may be your best answer.
The second heuristic is time spent. A problem that eats away too much of your time is probably a problem that you could use a hand with. Even if you're making headway, it may be worthwhile to rubber duck or pair with a coworker and get a second pair of eyes on the problem.
What is it about asking for help that is so demoralizing? We want everyone to think we're brilliant and know everything; especially people brighter than ourselves. It's reassuring to our self-worth if someone else thinks we're smart and can effortlessly grasp concepts. We falsely believe that asking questions diminishes these thoughts and us with them.
This is flawed thinking because everyone needs to ask for help. Realistically, programming is too large a field for all of its secrets to reside in one mind. Sites like StackOverflow were built by veteran programmers because they knew that knowledge needed to be shared for the whole programming community to grow. How else do we obtain this knowledge than by actively seeking it; either through knowledge-sharing sites or through more knowledgeable peers. I've met some very smart people, but I haven't met one that didn't at one point realize they needed to turn to someone else for help.
At the end of the day, I'm a consultant. My job is to provide value to the client. If I can provide more value by asking a question and getting a solution implemented quickly then I have a professional obligation to do so. The client doesn't care for my professional pride and expects that I'll do what is necessary to get the job done.
I can't count the number of times I've faced down a seemingly insurmountable problem alone because I wanted the glory of solving it all to myself. Do you know what happened? A lot of times I figured it out, but conceived a less-than-optimal solution. Other times, I never figured it out and just decided to implement an alternative. I realize now that I stood to gain so much more by asking someone else.
As craftspeople, we acknowledge and embrace our weaknesses; they humble us and keep the pride at bay. Eventually, you may find yourself wondering why you didn't ask for help sooner. "I've spent too much time on this. Hey team, how do I...?"