It Doesn't Work on My Machine

If everything worked on the first try, exactly as the documentation laid out, software development would be boring and most developers would move on to something else. The challenge we face when a project timeline is squeezing down and something isn't working, the hours of frustration we spend trying to figure it out or find someone out there with the same problem, and the euphoric relief we feel when it finally works or even just a different error. That's the cycle that fuels us.

There are many ways of getting stuck and starting this cycle. When things are going your way, it can be simple: your use case failed, there's an error and it clearly describes the problem that happened. When things are not going your way, it can be much more complicated:

  • Vague error from a third-party library
  • DevOps error from cloud resources
  • Unexpected behavior with no error that you're going to have trace
  • Unexpected behavior in another deployment environment that you're going to have to reproduce before you can trace.

Those all happen in a project with an established design, but it's also possible to get stuck in the design phase. You know you need to combine service A with resource B but you're not sure where to start. That usually falls in the area of getting stuck on the DevOps.

Where to Find Help

I naturally start at the search engines with a well-crafted set of search terms. Seriously, this is more of skill than many realize. If you have an error message that's not too generic and doesn't reference any nomenclature specific to your project, then sure, you can just copy and paste and search and probably find what you need, but most of time you have to string together just the right mix of keywords to construe your language, framework and what you're trying to do. It's always exciting when you start typing your first keywords and then the exact problem you're having pops up in the autocomplete.

A screening strategy is also necessary when you get your results, and that just comes with experience. For me, most roads lead to StackOverflow, but I also look for any of the following before deciding which to click on:

  • A forum dedicated to the framework I'm using. Microsoft forums, Github message boards and Reddit subreddits are usually promising.
  • An actual link to the documentation. Usually happens for language-specific. Python has very thorough documentation and I land there a lot.
  • A full article. When I see an article from a known quality source such as Hashnode, Dev.to, or Medium, I get pretty excited for some well-written quality insight that I can spend some time with to maybe change my understanding of the problem. Sometimes articles are published AWS or Microsoft, and can be a little more concise than wandering through all the documentation.

Have a Fallback Ready

If nothing comes up no matter how deep I dig, or even worse - if I encounter a dead-end, as in a known issue that hasn't been addressed. I usually start thinking about workarounds. There is always another way around that might be less elegant or require more work, but if easy & elegant isn't working, there's no choice with time running out.

One thing I have never done is posted my own question. Usually, if I can't find anything anywhere matching my problem, I tend to feel that my problem is too obscure and I must be doing wrong or unusual as the root of the problem. I never feel like I have enough time to wait and see if someone responds.

Share Your Notes

Here's the biggest challenge - when I get something resolved, I'm usually very excited and relieved and ready to move on to the next task. I have to try to stop myself to write some notes on what was wrong and what I found to fix it. If I don't do this, it's guaranteed that I will encounter this problem again and not remember how I solved it.

In cases where you found something that pointed you in the right direction, but wasn't a direct solution to your problem, take the time to write your own article and share it with the rest of us.

Don't Lose Confidence

Getting stuck is impossible to avoid, pad it into your time estimates the best you can. For new developers with little experience, it can be crushing and cause you to doubt your qualifications, but don't. Any developer that never ever gets stuck may seem like they're very efficient and highly productive, but I see a bored developer who has narrowed their range too much and has nothing left to learn.

Always stay current with your skills and the platforms and frameworks you use. Some managers may not appreciate the costs of always upgrading and migrating to whatever is the latest and most popular, but there is intrinsic value in having an online community to tap into.