While software developers may appear to regularly work solo, thankfully, we rarely face projects alone. Oftentimes, the most valuable resource we have isn’t some new cutting-edge tool or formula; it’s each other. When a task becomes unclear or exceeds our technical abilities, developers have a diverse team to turn to for additional help…usually.
While this sounds great in theory, there are times when even the best teams hit a wall. Perhaps it’s a unique challenge nobody has encountered before, or maybe a clear solution isn’t yet apparent.
And that’s okay.
Software engineers shouldn’t be graded by their ability to write leet code or pull boilerplate code out of a hat. The mark of a quality engineer is their ability to reach into their toolkit to implement effective solutions correctly and efficiently. Finding help outside of immediate circles is a critical yet often overlooked skill that all developers will inevitably have to utilize at some point throughout their careers.
While formal training and on-the-job experience might live in our heads ‘rent-free,’ we must never forget the arsenal of external resources we have at our disposal in the software development community. Some of these include:
- Manuals & Documentation
- Source Code
- Developer Blogs
- User Groups
- Developer Conferences
- Forums & Chat Rooms
- Search
- Video
- Mailing Lists
- Bug Trackers
- Large Language Models & AI Tools
- Phone Calls & Meetings with Experts
As software engineers, we need to be confident in leveraging these resources when it’s necessary. In my experience, nobody on your team will think less of you for posting a question on StackOverflow or having language documentation pulled up in a browser tab. In fact, you might actually be seen as a resourceful and self-sufficient software engineer.
To illustrate this point, I’ve asked several of my team members to share some of the software developer resources they use regularly or have found success using in specific cases.
Phone a Friend (or Stranger)
Justin Matthews, a senior software developer here at Frogslayer, and his team recently became blocked while trying to work with a third-party library and the tooling a different development team had built up around it.
After struggling to get the tooling to work properly on a consistent basis and not finding any solutions in the documentation or discussion boards, Justin reached out to the other development team to see if they had ever encountered anything like the issues his team was experiencing.
Lo and behold, the team who works with the third-party library on a daily basis and built the tooling around it had already faced the same problems and immediately advised how to overcome them.
Documentation → Search → SME Advice
Andrew Locklair, another senior software developer here at Frogslayer, shared with me his go-to development resources. He takes a methodical approach to searching for answers.
“First, check the project documentation.
It might seem like an obvious approach, but many of us skip first-party documentation and opt for Google searches or StackOverflow posts to serve us answers on a silver platter. Sometimes, the answer is right under our nose.”
If documentation doesn’t provide answers, he then checks GitHub and popular discussion boards to see if anyone else is facing or has faced the same problem with a project or has had the same question.
The software developer community is vast and vocal. Chances are, whatever you are having trouble with has already been asked and answered several times over.
If the problem is larger, such as learning how to do something on a language or framework level, Andrew likes to find a subject matter expert who constantly works with that specific piece of tech and follow their lead. There are plenty of “evangelists” and personalities online who love to talk about languages, frameworks, patterns, best practices, etc. Find someone who can explain something reasonably well and stays up-to-date with current trends.
Have You Considered Plugins and Extensions?
Emory Fields, one of our Associate Software Developers, echoed Andrew’s advice but also mentioned one of her favorite resources is a good IDE and plugins/extensions.
“While an IDE is something that almost every developer uses, I think that it is worthwhile to learn about some of the various plugins and features that your preferred IDE offers. For example, an IDE can offer basic language guidance for syntax and built-in functions through a language or framework plugin.”
She also shared one of her favorite plugins that can be used for any project: GitLens in VSCode. It shows the last editor, commit, and related PR of the active line, directly in the file being edited.
She explained that she found this tool especially useful because it provides more context and additional resources (i.e., the PR & previous editor) for solving a problem.
My Favorite Resources
I am also a senior software developer at Frogslayer. One of my favorite places to get help is Discord. The server I most frequently depend on is the C# community server. With nearly 50,000 total members and over 10,000 members online at any given time, asking a question and getting a solid answer only takes a couple minutes. In turn, answering questions and having casual conversations about topics which I am already familiar with only adds to my understanding as other members chime in with their thoughts and experiences.
I highly recommend every software developer join and participate in a community like this. Don’t get stuck being a fly on the wall.
The other source I gravitate towards is GitHub. Specifically, opening an issue on the project repository. If after scanning through the project documentation and existing issues does not get you the answer you need, just open a new issue and ask the maintainer(s) a question.
“I am having trouble with…”
“Can the project do…”
“How do I…?”
Opening a new issue only takes a few minutes, and the chances of getting a response from either a maintainer or someone else in the community are much higher than most people think. One of the teams I was working with recently actually had some great success with this approach. Unfortunately, in this case, the project maintainer told us his project was not capable of functioning in the way we were hoping it would, but getting a response from him in just a matter of hours saved us a lot of time and grief.
Final Thoughts
In all cases where you or the team might be struggling with a problem, think of the situation like this:
You can continue to struggle for an indefinite amount of time before giving up, moving on, or somehow stumbling across an answer; or you can take a step back to ask the development community for some help.
I highly encourage you either start, or continue leveraging the many software development resources available to us within the development community. You’ll not only become more efficient, but continually hone your skill in the process.