Recently I had to implement a Login feature for our Application.
It took me almost 2 weeks ( well, not 100% of my day is spent on coding, there are also code reviews, meetings, sprint planning, mentoring) but in the end the feature was probably 300 hundred lines of code ( with tests) for the backend and maybe a little bit more on the frontend (considering all the boilerplate you have to write to implement a feature with React-Redux-Saga)
I spent more time googling and reading documentation than actually writing code.
When something like this happens, I somehow start feeling guilty.
Guilty of having overestimated a task which was actually very simple, if only I had known how to do it.
Imposter syndrome is always around the corner, over your shoulder: ready to whisper that you are faking it, that whatever you are confidently describing to your colleagues about your progress during standup, is something you had no clue the day before, by the way, a working day that you mostly spent avidly googling and throwing video tutorials at yourself, a day of salary that you stole from your company when you were supposed to be productive and instead you were googling.
Well. Replace googling with researching, watching tutorials with learning, coding a task with implementing a solution and all the above will sound different. You are NOT an imposter.
You are not paid to write code
You are paid to solve problems
And Googling is indeed a skill. A tool that helps you solving problems.
So? Is it OK to google when you don´t know something, find a plausible solution and copy-paste it into your IDE?
Googling alone is not the right skill, you have to be good at googling, be able to understand what to google, how to google, how to understand the right things, do the right connections and recognize the right solutions, learn them and apply them.
But being good at googling is indeed a basic skill you have to learn to become a good programmer.
Learn how to search for the answers to your questions.
By googling things effectively, you'll save a lot of development time.
A few years ago I was amazed by the speed some of my colleagues (some of them I have no doubt were 10x Developers btw) were able to find answers to our questions.
I typed some words on google, read carefully the first 3 pages of results, opening 100 chrome tabs and read clueless all those walls of text without finding much meaningful.
They typed something similar, spotted immediately a couple of relevant results and in a few minutes, had the solution in their hands...
Even when looking at stack overflow together, they were able to immediately recognize if the answer was the right solution for us, while I was still reading the posted question.
Sometimes especially when you really have a shallow knowledge of the topic/problem, it is particularly difficult to even know what to search:
- First, write exactly what you are looking for.
- Then change some words, simplify the sentence.
- Always try to rephrase the subject of your search.
- Be creative.
Over time you will start recognizing patterns, knowing which words are most used, learning to see through all those results.
Increase your reading speed with Skim and Scan
Skimming and scanning are reading techniques that use rapid eye movement and keywords to move quickly through text for slightly different purposes.
Skimming is reading rapidly in order to get a general overview of the material.
Scanning is reading rapidly in order to find specific facts
Reading, well, is reading the entire thing and make sense out of it.
You don´t have to read every single word of 25 results per page. Just scan the results checking the main title, the website name, some keywords, and decide if it´s worth to click on it;
then skim the page and try to understand if it´s relevant and could help you.
Similarly, most of the time you don´t have to read the entire documentation of a new framework, library or AWS solution. Skim it to have a general overview, get your hands dirty and go back when you need more insights.
Again, this does not mean becoming faster at finding the solution in order to just solve your immediate problem.
Be it a code snippet or a more complex serverless system
always understand and learn the solution, and possibly take some extra bit of time to dig a bit deeper.
Copy-pasting a solution from Stack Overflow and close your tickets fast might make your Project Manager happy, but might cause some other issues that you could not anticipate, and anyway it will not pay off for your career in the long run, because you are not growing, learning and building a solid skill set.
If you do so, you are not faking it, you are not simply googling code: you are actively using your skills and meta-competences to build a solution, you are indeed applying your expertise to solve a problem!
Disclaimer
I´d like to specify that it was not a simple login form for our application...
The requirement was: let the user authenticate with their own company account (Gmail or LDAP), handle the authorization process via AWS Cognito while granting access only to specific employees which belong to some internal Google Groups.
It was such a cool and interesting task that I decided to make a Presentation for other departments who might reuse the same solution or gain knowledge with Cognito Identity Providers and Authentication
triggers ( I will definitely write a post about that).
Cover Photo by Hans-Peter Gauster on Unsplash