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
Top comments (20)
"You are not paid to write code, You are paid to solve problems"
Word to the wise.
Basically - 99% of the problems you have someone have already encountered before and uploaded a working solution to the internet. Find that solution and 90% of your problem is solved. the next 10% is only adapting the already working solution to fit your specific needs.
Of course, you can choose to go the hard way, but then you violate one of my personal top 3 favorite principles: DRTW - Don't Reinvent The Wheel.
exactly. many times during standups I can't help but raising my eyebrows in suspiciousness when I hear other devs say a specific task is super complicated and they need to come up with some weird customized implementation to achieve it.
at least 90% of the times with a more accurate google search, or just by digging deeper in the documentation of the library - framework we are using the solution is there.
Every task was once super complicated and specific.
The key words here are "was once"... IMHO, the most important part of the job is to break down super complicated and specific tasks to small, simple tasks.
that's another very important skill:
always keep in mind the global picture, but be able to split the problem into small simple tasks
I've been a firm believer that googling solutions is a skill. In fact, it is one of things I check when hiring a developer.
Your post reminds me of the following quora question with this title, Why should I hire a software engineer if I can just copy and paste code from Stack Overflow?
Awesome post!
The link from quora is very interesting, thanx.
I knew the story mentioned in the top answer but instead of the old man and the ship engine it was simply a technician and a fridge. same concept:
2$ for a small kick
98$ for knowing where to kick
:-)
This is very true.
Picture this.
You have to travel from Mumbai to Kolkata on a bike to deliver a letter. This is your objective/problem.
You have two choices.
You can simply follow the signs on the road and travel. or...
You can ask other people who have done this before and make adequate preparations.
In which case can the receiver expect your letter with greater certainty and less time?
The question is rhetorical - the answer is point 2. You MUST not need to reinvent the wheel to reach your objectives. Reusing good code (and what to search for in the first place) is a skill, not a short cut.
Thanks,
Sarthak
If you work in a rich company, with a lot of money to waste... It's OK to spent a lot of time studying books, watching especific company's IT class, etc...
But, in real world (Brazil) working as FULL STACK developer (Front + Back + Data Base) where you had passing in many projects with many many diferent styles and technologies, newest and oldest(sometime both together), giving supports to new and old systems, is impossible not use Google or to read the official docs to solve some problems.
The point is... the DEV knows what it's doing?
I already saw thousand and thousand of bad code and design... but... it's not just a copy paste problem... the DEV have to know the principles of best coding (SOLID)
Tests and peer-review is essential to ensure that the problem was solved in best way without bugs.
Using online search tools is one of DEV's many essential skills, but also your training and deepening in design principles should also be up to date.
it has to do with attitude.
it does not depend on how rich is the company. you cannot know everything. but you can learn a lot while reading documentation, other peoples code, watching tutorials. if you just look for the solution, and don't have SOLID principles nor the will to understand deeper ( both at work and in your free time), you are not doing a good job.
I agree entirly with you regarding peer review and self training!
thanx for taking the time writing your comment
A big thing I've noticed often is developers seeking answers for the wrong problems.
Its one thing to fix the problem, its another to understand it. Its very easy to jump to conclusions and cut corners by using assumptions for what is actually is wrong.
We've all been there, where we are lost when something isn't working, and we spend tons of time trying to fix it, only to find it was something simple and dumb.
You can have strong "google-fu", but your looking in the wrong area, and or your original assumptions are wrong, you will just waste your time.
Understand the problem, really understand it, verify you understand it, and then and only then attempt to fix it.
ABSOLUTELY. in fact with knowing how to google i dont mean all the tricks to speed up the search or restrict it to specific timeranges or websites ( skill that is also very useful).
I really meant Search and Find the right stuff.
Before searching, investigate the issue, understand the problem, find ways to phrase and rephrase your question.
After searching, skim and scan and connect the pieces of the puzzle to understand the solution.
Very grateful for this!!! I am a beginner into a Bootcamp. I will give my best.
wish you all the best along this journey!
i believe expert googler is part of expert developer skills
Porque no los dos?
I am working as a solo developer in this company. Sometimes when got stuck a problem usually will take about 1 weeks to solve.
I'm looking forward to technical interviews where using Google is permitted. Especially for positions in Google.
:-)