Being a programmer requires frequent googling for specific syntax, methodolody or systems explainations. Often documentation is unclear and/or gives a vague context of use case as the person writing docs has been deeply immersed in the project. Programmers need to cultivate the resourcefulness to piece information together and boldly ask questions in forums like StackOverflow or Server Fault
Going down the rabbit is excellent for deep dive learning, but it’s important to do it strategically so that you remain an efficient programmer. Without incremental progress, projects can fall into purgatory– Yikes!
Being a good dev is hardly about being memorizing Stack Overflow.
Cultivating resourcefulness and optimism are far more valuable as drivers of ingenuity and adaptability — which all of programming turns on. The seed of resourcefulness — in a world of information abound — is in asking the right questions. Search Smart!
Can you clearly define your problem before leaving your IDE (integrated development environment ex. VS Code) to search google? How do you stay focused while researching a solutions to your problem?
It might seem obvious or entirely basic, but having your question or problem written down (ex. whiteboard) is crucial to debugging an issue with direction and intention. Early on, most of the technical landscape is unfamiliar and confusing, so you’ll need to jump around to different pages/forums to get a better sense of the original problem. And yet, the true barriers are not lack of knowledge, but rather the method and strategy to fetch information. No single person understands how all this works, so certainly as an entry dev you are not expected to either.
You may be tempted to watch a quick youtube tutorial. I urge you to resist, as this doesn’t sharpen your self-sufficiency or habituate reading documentation. Videos can be helpful, but only after you’ve done some legitimite key bashing on your own.
Take an example:
Imagine you’re trying to understand how to use SSH keys. You may first need to go learn a bit about DNS. This might then lead you to reading about DNSSEC. Then all of sudden (2 hours later), you’re deep into reading about DNS caching and validating resolvers. Like I said, it’s great to dive deep into a new stack or technology. But if you have a limited amount of time to work on your project and want to make incremental progress towards your milestone, I can’t recommend a whiteboard enough. It will also train you to “write out your problems”, which is essential in whiteboarding interviews 😉
I write the task I’m trying to achieve at the top center of the whiteboard and then divide the board into two simple columns:
Unfamiliar concepts – These seem most immediately helpful or relevant to solving the problem. When you’re reading those ‘Getting Started’ docs, write down anything you’re confused by which seems essential to the instructions. **Note**: the key is to keep reading and finish the instructional bit (before wandering away to the rabbit hole)
Interesting concepts – These are ultimately tangents, or potentially useful for project later on (but doesn’t seem to help with task at hand) – these are great for adding to a Trello board as supplement areas to focus on.
This way, you can dive deeply into these concepts later with time that is not alotted for your project. It will help delineate time spent on the project vs. time wandering StackOverflow (also not necessarily a bad thing).
With column 1, I have a sense of everything I need to focus on for the task at hand (and hopefully won’t need to open 50+ browser tabs >_<
With column 2, I can jot down any concept that catches my eye, so can feel assured I capture any other important information.
Lastly, I then decide roughly how long I will research solutions. This gives me both concentrated energy and the comfort of knowing I won’t be lost in the google rabbit hole forever.
Set timer, then go!