This weekend, a fellow tweep and developer shot me a short question that I think hits home for anyone who’s involved in development regardless of skill level:

Question for you, do you find it hard to ask for help when you get stuck on some code?

Perhaps I should’ve just easily said “Don’t be afraid to ask for help!” but my short, 140-character-or-less answer was:

no. early in my career i did, but not anymore.

But this is one of those things that’s so common for many of us and since Twitter greatly limits just how much we can say (which is a good thing, in some cases), I thought it worth talking a little bit more in-depth about it

Don’t Be Afraid To Ask For Help (Seriously!)

Maybe I’m way off base, but one of the biggest things I think keeps us from wanting to ask for help is the fear that others will think we’re dumb because we don’t know how to do whatever task where’s asking about.

Tech Support

Okay, it’s more than this. Sometimes.

Unfortunately, there are people who make us feel this way. You can see it in numerous places:

  • Sharing gists or repositories and publicly criticizing them
  • Tweets
  • Blog comments
  • Full on blog posts
  • …and more

All of which try to highlight how someone is doing something wrong and “Haha, how dumb are they?!”

Lame.

None of us started out knowing exactly what it is that we’re doing, and none of us know the right way to do everything. Kinda trite, isn’t it? Our behavior doesn’t make it look like that.

It’s Not About Right or Wrong

Instead, we gradually learn how to do better at whatever it is we’re doing. And even though there are some things that we have the definitive answer in terms of how to do it, there are other things that’s aren’t so black and white.

For example, if you’re working in any major language, there’s likely a library or API for sending email. Typically, these are documented features that provide instructions for how how to use it. In this case, there’s really a “best way” to go about doing it.

Yes, you can use another library; yes, you can write your own code for how to do it; yes, you can circumvent the native facilities. The point is that there is a standard way to go about doing it.

On the other hand, when to implement a specific design pattern (or even which design pattern to implement) for a given situation isn’t something that’s as black and white.

This isn’t to say that there are times where, say, the Decorator Pattern works and then you have to decide if you want to replace it with a Command Pattern – that’s absurd because they aren’t equivalent patterns.

But if you’re working on something and you have to choose between the Factory Method Pattern or the Abstract Factory Pattern, things may not be as clear as it greatly depends on the implementation of your code, your use case, and how it will be used more in the future.

Granted, these are but two of, say, hundreds of examples anyone could come up with. But it’s a shame the online developer community has us afraid to ask for help for fear of looking ignorant.

In Their Ivory Towers

One of the problems is some developers (note some, not all) cling so tightly to their knowledge and skill level, they elevate that above helping other people get better at the same thing opting to ignore the fact that they were once at that place.

Ivory Tower

The Ivory Tower

But those aren’t the people we need to pay any attention anyway because they aren’t the ones who are going to be the ones that help us, anyway.

Personally, I got over the “asking for help” problem a few years ago when I got exhausted of trying to tip-toe around all of these other people who seemed to have it all together; who seemed to have it all better than I did.

Not everyone knows everything and nearly nothing in computer science is built in a vacuum. Everything stands on top of the work that other people have done.

Machine-level code interface with the machine. Higher-level programming languages are atop the machine-level code. Operating system code is atop high-level programming languages. Desktop applications are atop operating system facilities. And so on (yeah, this is a bit of a generalization, but the point remains).

The Internet, on the other hand, is just duct tape and tubes.

A Wasteland; A Community

But seriously, everything that we do is built on top of work of those who have come before  us. Why would we not pay this back to the rest of the programmers by offering to help where we can?

Finally, if you’re online and you’re trying to build things for the web, for mobile, for desktop, for embedded systems, or for anything else that runs executable code, then you’re also likely talking about it somewhere.

Perhaps it’s Stack Overflow, perhaps it’s a forum, perhaps it’s Twitter, perhaps it’s your own blog, …, whatever it may be, you’re putting yourself out there. Some people are going to help, some will remain silent, and some are going to be critical.

This doesn’t even matter if you’re talking about code. If you’re writing about how to cook some type of meal, then you’re likely going to see the same type of behavior.

The Internet is just as much of a wasteland as it is a helpful community of other peers.

A Beautiful Wasteland

A Beautiful Wasteland (From The Last of Us)

The thing that helped me get over the fear of asking for help is relying on the fact that that other people know more than I do and I can leverage that to my own benefit. Then, when the time comes for someone to ask me for help, I can share what I know in order to help bring them along.

In short, opt to participate in the helpful community at large rather than the alternative. We can get more done faster if we go that route.