When starting one of our bootcamp courses, students notice something odd within the first week or two.
This typically starts when students get solid programming fundamentals under their belts and are tackling more advanced challenges. Those challenges involve programming concepts we haven’t covered in any of the previous course materials, and the student has hit an impasse.
At that point, the student reaches out to an instructor for help over Slack.
The question goes out. The student waits.
The instructor starts typing. Illumination is only a few seconds away!
The answer comes back.
“What research have you done? Have you done a Google search around this problem?”
Sometimes, the student takes up the challenge, leverages the research tools, finds a good programming tool that fits the challenge, and makes a breakthrough. Onward!
Other times, there’s overwhelm. With that overwhelm comes frustration, and that frustration gets aimed back at instructors. (Don’t worry, we don’t get offended by it.)
“Why am I paying you all this money if you’re just telling me to go on Google and look it up myself?”
This is a valid question! It can look like we’re taking the lazy way out as teachers by telling you to search on Google. You don’t have to pay money to search on Google. So why do we often use this form of redirection?
Let’s dive into that question with this article.
We’ll talk about the importance of good research, the challenges that software developers face when researching, how Google searches and generative AI fit into the process, and ultimately land on why we ingrain this approach into students from the very beginning. We’ll even share some tips for using Google more effectively in your research!
Ready? Let’s get started.
Why is research important for software developers?
When students are first learning how to code, there’s an implicit expectation that there’s some kind of ending point to the learning. You’ll always continue to improve your skills, of course, but the MAIN learning will end at some point, right?
What students eventually start to understand is that no, the learning literally never stops. Not only that, but often knowledge you’ve previously gained (like syntax for certain parts of a programming language) will change and you have to unlearn what you’ve learned, then learn it again in a different way.
Another common hurdle that students have to overcome is unlearning the habit of memorizing. Because of how most traditional education handles learning, they’ve become used to the goal of learning being to memorize concepts in preparation for regurgitating them back for a test. So the initial impulse when learning from us is to take a lot of notes and study them with the intention of recalling concepts later.
This quickly becomes ineffective, because there’s so much information coming at them so fast. And, the focus being on project-based learning, any time spent just trying to memorize and review concepts is time NOT spent building, which is where the action is.
While a tough hurdle for some to overcome, letting go of these habits is freeing. The start of letting them go? Learning the proper way to use the Internet as a “second brain” and resource when navigating coding challenges.
Research is a big part of software development
Let’s take a practical example. A common beginner coding challenge and technical interview question is solving the “FizzBuzz” problem.
In that problem, you are tasked with printing out numbers 1 through 100 using code.
However, if the number is divisible by 3, you replace it with the word “Fizz”.
If the number is divisible by 5, you replace it with the word “Buzz”.
If the number is divisible by 3 and 5, you replace it with the word “FizzBuzz”.
At the end of the day, it’s a pretty simple problem and an exercise in understanding loops, control flow, and effective use of operators.
However, if a student is stuck on solving it, they may turn to the Internet.
Sure enough, a plethora of solutions come up.
The student copies and pastes the solution, runs it, it works, they move on.
But here’s the problem – did they understand the solution?
Did they understand how all of the different parts of the solution worked together to get the final outputs?
Could they use those parts to approach other problems creatively?
In this case, the student did research, but it did not support their growth as a software developer. It was a crutch to shortcut the problem solving process to arrive at a solution more easily.
We classify effective research as any information gathering activities that help you get better at problem solving, which is the ability to come to novel, creative solutions by assembling the different elements of a programming language together to develop a solution.
Because programming is a complicated and deep discipline, we can’t possibly memorize all there is to know about the tools we are using to solve problems.
So, research serves a few different purposes:
- Recall detailed information about programming concepts you are familiar with, but can’t recall specifically in the moment
- Learn new things about programming that will help you solve the problem at hand
- Understand how a technology you are working with has changed since you last used it
- Learn how other programmers have approached similar challenges to check for any issues in your approach
Embracing the Google search is a relief to your brain
Understanding the purpose of research lets you do something critical – let go of needing to memorize everything, and letting go of the expectation that you will always have the information you need to solve every problem you come across.
We call it hacking for a reason! There’s an almost “bush-wacking” approach to problem solving that involves hacking away at a problem with the ideas you have and the knowledge you already possess until you hit a wall and have to research to expand your skills and knowledge.
We often tell students to embrace laziness – to let go of trying to power their way through everything and focus on finding the most efficient approaches to problem solving. Embracing this kind of research is one way to become more efficient. We don’t memorize our way to success – we instead get very good at cultivating available information so that it is useful when we need it.
That’s a huge relief to a lot of people once they embrace this paradigm.
So again, don’t memorize – learn to cultivate.
Now, what are the challenges to successfully using tools like Google to research?
Glad you asked.
What are some of the challenges of research for software developers?
The Internet is a very big place. One of its biggest strengths is also something that makes it hard to navigate when it comes to research – the fact that anyone can add their own content to it.
That leads to three main challenges:
- The amount of information available can be overwhelming
- It can be difficult to find relevant and accurate information
- It can be time-consuming to find the information you need
Just clicking on a random Stackoverflow answer and blindly using the answer you get there can lead to even more lost time during the pursuit of a solution to your problem.
That means that research in this context is truly a skill. That skill takes time, discernment, and patience to develop.
This is the main reason why we teach the fundamentals of research early on in our courses. We want you to be able to find the right articles, tutorials, documentation, libraries, and frameworks to solve problems effectively. We also want to make sure that what you find doesn’t send you moving backwards or become a crutch that limits your greatest asset as a developer – problem solving capability.
How does Artificial Intelligence factor into this equation?
In addition to traditional search, AI is also playing a growing role in software development research. AI-powered tools can help developers find relevant information more quickly and easily, and can also provide insights that can help them solve problems more effectively.
For example, AI-powered tools can be used to:
- Identify and prioritize the most important information in a search results page
- Suggest relevant keywords and phrases to help developers refine their searches
- Generate code snippets and complete projects based on a developer’s requirements
- Provide recommendations for debugging and troubleshooting
As AI continues to develop, it is likely to play an increasingly important role in software development research. By providing developers with access to more relevant and accurate information, AI can help them to be more productive and efficient, and to create better software.
There’s always a dark side, though! Remember that AI is trained on information available on the Internet, just like what you’re parsing as you research. Sometimes it has outdated information, and it often doesn’t fully understand the context of the problem you are trying to solve.
Just like with researching on Google, using AI for research also needs to be done with discernment.
Learn more about the role AI will play in software development moving forward here.
3 Tips to Use Google Search More Effectively
When you’re using Google, here are 3 tips to research more effectively:
- Use keywords and phrases that are relevant to your search
- Use quotation marks to search for exact phrases
To make sure your search is as accurate as possible, surround exact phrases with quotation marks. This is especially useful if you’re looking for a specific version of a technology in documentation.
- Use Google Search operators to improve your results
There are some very “programming”-like operators that you can include in a Google search to further refine the results you get back. Listing all of them is outside the scope of this article, but we recommend checking out this blog post for more information. These are powerful!
Why did the instructor just tell you to search on Google? Simple. To prepare you for effectiveness as a software developer by honing your skill at doing effective research in response to problems you are facing.
Go talk to a professional developer. The more senior that developer, the better. Ask them how often they use Google to look up information that you would expect them to have memorized. Chances are, they’ve already used it today.