Every programmer has found himself looking for answers in Stack Overflow whenever he has no idea how to solve a problem. It is basically the haven of sharing solutions to frequent coding or to be discovered coding problems. However, what if you don't find the answer you are looking for and your posted question doesn't see to be getting track. In this case, there are some ways you can solve your contrived problem without needing Stack Overflow.
In this post, I'll teach you how I find solutions to my problems outside of Stack Overflow and how I no longer depend on it.
First Alternative: Using Github
GitHub is the best alternative to Stack Overflow. I've noticed common problems that are related to libraries or new features will mostly be found inside a GitHub discussion. Otherwise, those that are related to syntax errors will be in Stack Overflow. One way to find GitHub discussions is by using Google's site query filter:
site:github.com <YOUR QUERY>
This will return only results coming from GitHub, perfect for finding these discussions.
If you don't find any relevant results using the filter, there are other ways of finding these discussions.
One way is to use GitHub's search bar to find a preexisting library or repository that may contain solutions to problems similar to what you are facing. For example, if I am having problems setting up Circle CI with Cypress then I would search for
Cypress Circle CI. Then look at the first results and analyze if they have what I'm looking for.
If a Library is Causing Problems
If you know a library is the culprit of your problem then you could search for an issue inside its codebase. For example, recently I had a problem with Cypress stubs. I wasn't finding any relevant answers to my problem in google so I decided to search on their repository. When doing this kind of search be sure to check both open and closed issues.
When I search for my issue, I immediately found many related issues and ended up finding a solution in the second result.
If no issue is found, there is another way: create an issue. Creating an issue is very straightforward and there are many developers ready to help you with your problem. However, they can take some time before they are resolved.
The last alternative and sometimes most time consuming is to dive into the source code. You can use the repository's search bar to find relevant parts in the code that could lead you to a solution or opening a Pull Request with a fix.
Second Alternative: Finding an npm Package
I vaguely mentioned this before by using the GitHub search bar to find a preexisting library or repository. Regardless, npm has millions of package which are published and ready to be installed with code that will solve your problem. Furthermore, npm has its own search bar which lets you filter by:
- Popularity. indicates how many times the package has been downloaded. This is a strong indicator of packages that others have found to be useful.
- Quality. Quality includes considerations such as the presence of a README file, stability, tests, up-to-date dependencies, custom website, and code complexity.
- Maintenance. Maintenance ranks packages according to the attention they are given by developers. More frequently maintained packages are more likely to work well with the current or upcoming versions of the npm CLI, for example.
- Optimal. Optimal combines the other three criteria (popularity, quality, maintenance) into one score in a meaningful way.
This information comes from this documentation page in npm's website.
My recommendation is to use these filters to your advantage. Filter mostly by Optimal so you can find which package is more likely to work for your codebase. Also, take into consideration its bundle size and capabilities such as tree shaking.
Third Alternative: Using an Online Tutorial
This is very useful if your problem is not solved by a library or it required multiple steps or libraries to solve. You can find these tutorials by searching 'how to ...' on Google, Medium, Dev.to, Youtube, and many others. Do take note that these tutorials may use outdated methods, so be sure to check the date and find the most recent.
Fourth Alternative: Ask an Experienced Friend
Asking for help from a friend that has more experience is an efficient way to solve a problem. The main benefit is that their answer can be tailored to your problem and they can give advice along with the solution. Also, they could teach you how they solve problems when you can't find them online which is a big plus in the long run. If you don't know anyone that fits this criteria, feel free to use social media such as Reddit, Twitter, and Discord to meet other developers.
Fifth Alternative: Do it Yourself
If you have tried all other alternatives and still do not find your solution then it is time for you to create your solution. This will be the most time consuming of all. After you have found the solution to your problem then I recommend you share it with the world since someone may stumble on a similar problem like yours.
To find a solution by yourself I recommend you to follow the next steps:
- Understand your problem. Try to cover each edge case where your problem occurs and maybe write down what you have found so you don't forget.
- Research. Sometimes this may not be needed, but if it is necessary be sure to check existing techniques that may help you. You could find leads in books, or through colleagues. For example, if you are having problems with stack overflow then search for books, videos, or courses on algorithms that can give you potential methods of solving the issue.
- Come up with possible solutions. Brainstorm for possible solutions and write them down. If you can't come up with any then repeat the first two steps. Also, don't try to sweat solutions in one sitting, clearing your mind can allow your subconsciousness to find them for you.
- Implement a solution. With all the solutions you have written try to select the one which seems most effective.
- Revise. Check if your current solution is what you need by checking if you solved what you had written in step 1. Also, if it can be improved further by writing comments, testing, and cleaner syntax.
Software development is about solving problems so you can contribute to the world or yourself amazingly. I hope that this post has given you alternatives so you can find solutions to problems you will encounter throughout your career without using Stack Overflow. Don't get me wrong, Stack Overflow is amazing, and if you find your problem in their or you posted your question and got answered, then, by all means, use it. Best of luck in your development journey 🎉