
The best programmers are the quickest to Google - vu0tran
http://blog.framebase.io/post/43973262180/the-best-programmers-are-the-quickest-to-google
======
jfarmer
Yes and no. I'm a co-founder of <http://devbootcamp.com> so I see this every
day in the context of people learning to be programmers.

"The best programmers I know understand how to architect and build large
projects piece by piece. They can focus on the macro because don’t get hung up
in the pieces. They know how to use Google to find solutions fast. DRY."

I agree with the first and second bit and strictly speaking the third. That
is, when students first watch me code they're surprised both that I'm looking
up this-or-that ActiveRecord method and at the speed with which I do it. They
assume expert programmers have a book of magic spells they've memorized, so to
see what I haven't in some ways makes it more magical.

What am I doing, then, if not memorizing every last little thing? What makes
me a "better" programmer?

The key to becoming a non-beginner are the first two bits, not the third. It's
developing that filter experts have which separates relevant information from
irrelevant information. Lots of beginners use Google in a backwards sort of
way, having been trained to "look for the solution." Google is like the great
universal answer key for them.

It can't be about memorization, then. Being an expert is more like having this
amazing compression algorithm at your disposal and we can evaluate very
quickly whether some piece of information is compatible with that compression
algorithm.

It's made worse by the fact that they see experts do it, sometimes. Or worse,
that experts tell them, "I use Google all the time, you should, too." But
Google is worse than nothing if the beginner finds code, copies it blindly
into their project, and shuffles characters around until it does what they
want. They are robbing themselves of the opportunity to abstract out common
patterns, recognize similar problems in different guises, and generally
setting an impossible bar of having to memorize too much.

Lots and lots of students have been trained to see software development as
THAT.

~~~
lifeisstillgood
Let me give a non-programming example.

It took me the best part of the weekend to drill twelve holes for curtains -
because it is not _enough_ to Google for the answers.

Now, if you knock on a wall and it sounds hollow - you just google for hollow
wall fixings. Great. I'll go buy some of those.

Drill into the wall. And hit brick behind the plaster. Err... Ok they have
invented a new type - dry lined Walls. The gap is so small my umbrella fixings
cannot open up behind the board.

So I will get longer screws to go in the wall. But now my masonry drill slips
on hard stones and gouges chunks from the plaster. Try harder - is that smoke
coming from the drill? Eventually I find a consultant ( in the DIY store)

Aha - it's not masonry drill bits you need - you need aggregate drills. And a
new drill.

Eventually I bought new drill bits, a new drill, six inch screws and I can do
chin ups on the damn things.

The lesson

1\. Until you understand the fundamentals of the problem, you will make poor
choices time and again. Google correctly told me where to buy masonry drills
and plasterboard fixings. It did not know to ask if I had the right walk for
that.

2\. New technology changes "embedded knowledge" - I learnt to drill brick
walls from my father, But new ways of using the old can change everything.

3\. Hire a professional while you go and do revenue generating work.

~~~
groby_b
I cannot upvote you enough - especially on the first point. All the googling
in the world is worthless without knowing _what to Google for_.

The "trick" of expert[^1] programmers is to know the difference, and to slowly
expand the base they can build on.

[^1] An expert is merely a person who has learnt from more mistakes. There's
nothing magical about it, as much as the cult of the rock star programmer
would have us believe otherwise.

~~~
bigiain
And this is the unstated meta problem implied (but usually ignored) in that
Einstein quote.

Sure, you don't need to remember anything you can look up in a book (or
Google), but you do need to know how to get to the right book again.

Beginners aren't characterised by not knowing how to type queries into
Google's search box, it's that they don't know _what_ to type. Being an expert
isn't about being able to solve problems without outside knowledge, but it is
very much about having enough awareness of a large body of outside knowledge
that you've got the right terminology in your head to know what words to start
typing into that search box. A beginner trying to format a number as currency
is going to spend a lot more time looking than the programmer who knows they
just need to type "perldoc -f sprintf" at the command line.

~~~
sreyaNotfilc
"Sure, you don't need to remember anything you can look up in a book (or
Google), but you do need to know how to get to the right book again."

Well, I would actually say you need to know "why" you're looking for said
book/solution first. Then after you've found the right book/solution then its
a matter of how to get there.

In my case, its all about having a good plan of attack. If you know where
you're going, then its easy to Google for that solution to get to the next
step in your plan.

------
nollidge
This is something that bugs me about whiteboard-style interviews - they test
almost _none_ of the typical day-to-day aspects of programming. Without
Google, without docs, without a REPL, without the code-run-debug cycle, how is
it that you think you're assessing how effective I am _in real life_?

EDIT: not to mention that you're also not testing me for one of the most
important abilities of a coder in a software shop: how well I learn new
things.

~~~
MBlume
A good whiteboard interviewer will be those things for you. And language
details are less important -- "well, let's both agree a for loop has this
syntax for now"

~~~
nollidge
I'm not talking about loop syntax or stdlib argument order. I'll google around
for algorithms or concepts or data structures too. I'll bring up the docs and
study them to figure out what data structures I've got so as to do the least
amount of work. Do you want to test the things I've already learned, or how
quickly and neatly I can actually _get things done_?

And it's far too easy to start going down a long and winding dead end path
when you can't incrementally _run_ an algorithm. I've had a couple whiteboard
interviews where I get the sense that I've gotten something wrong early on
that's causing me trouble, and while stopping and pondering on it doesn't
immediately reveal a problem (and oh shit, I've only got 10 minutes left in
the interview, gah, well, guess I'll just keep trucking), running it once to
see the output could easily do so.

It's nothing like real-life coding, is my point.

Also:

> A good whiteboard interviewer will be those things for you.

Would that they were all _good_ ones...

~~~
alexanderh
I applied for a job posting at Khan Academy and ran into exactly this kind of
interview.

It shows absolutely nothing about me other than I am not a good test taker,
and without incrementally debugging my programs I am a fairly worthless
programmer.

I dont see how putting someone on the spot like that really extracts any
knowledge about the type of person they are.

All of my peers describe me as 'the best programmer they know' yet every
programming interview I've ever gone to in this style doesn't work out for me.
Frustrating.

------
ry0ohki
I've always believed this, of course then I worked at a company that wrote
it's own programming language for it's product, and there was nothing to
Google for (I still don't understand why they did this but stay with me).

In that environment, you learn quickly what skills separate a good programmer
from a bad one. The traits I found the most useful:

-Learning speed (ability to quickly grasp a completely foreign concept)

-Creativity (without a template of how others do it, you are the trail blazer)

-Patience, because the really bad programmers wouldn't even try, they would curse it as stupid and leave or get someone else to do the work.

~~~
abraininavat
Surely the programming languages, libraries, and platforms you were using had
documentation. It's not the point whether you are using www.google.com,
mycompanyintranet.com/wiki, or yelling across the room to ask a question.

By the way, the three attributes you just stated are what makes anyone good at
almost anything.

~~~
wting
No.

I've been contributing to the Rust compiler in my spare time, and needless to
say documentation is quite lacking. In fact, the Rust source code itself and
git diffs are probably the best documentation available since everything is
still changing.

In this context, you don't have the luxury of using Google for examples of
common actions.

I'm also an undergraduate security researcher. In this position, you are at
the forefront and Google doesn't help. Reading papers helps a little, but
there's always the chance that someone else beats you to the punch and
publishes first (happened to me 4 months ago).

~~~
Arelius
Even in large, well documented projects. People often overlook how good source
code can work as documentation.

------
codex
"The best doctors are the quickest to Google." "The best scientists are the
quickest to Google." "The best engineers are the quickest to Google."

Are the above statements true? Quite possibly. I would argue that the best in
their fields are those writing the answers that are indexed by Google to be
found by others. However, usually the best in their fields are also good at
using Google. Unfortunately, the worst in their fields also use Google
extensively, so it's not a strong signal.

EDIT: My definition of "best" is admittedly very subjective. The author could
define "best" as "most effective", for exmaple. My only point is that you
shouldn't use Googling to determine who is "best" because the "worst" also can
be quick to use Google. It's a useless signal. More situationally appropriate
metrics should be used instead.

~~~
gte910h
My doctor said "I don't know, I have to go look that up".

He's probably going to stay my doctor for a very long time for that one
sentence.

~~~
abraininavat
Yeah you're way off here. If my doctor said "I don't look things up" I'd run
out the door. A doctor who looks things up is a doctor who cares to get things
right.

~~~
bluedino
Depends on the situation - a doctor can take his time during say, a cancer
diagnosis, but not in the ER.

Do you want a doctor who's trying to patch up your innards after a serious
accident to look up where your pancreas is located?

Inexperience leads to a lot of wasted time searching for things along the way.
The more you know in your head, the better.

~~~
gte910h
>Do you want a doctor who's trying to patch up your innards after a serious
accident to look up where your pancreas is located

Do I want a surgeon who'd stop look something up and rescrub if that was the
best thing to do? YES.

That inexperienced guy _is going to get experience at one time, perhaps on
me_. If he needs to stop, and the stopping is less dangerous than him NOT
stopping, I want the stop to occur.

Do I want a fucking moron who can't do basic parts of his job, of COURSE not.

------
SchizoDuckie
True story, but it's not just being the first to do a google search. From
personal experience I've also seen that _how_ you use google and what variants
of your search terms you can come up with that make the biggest difference in
getting to the right answer/method.

The problem is: when you get to a certain level of skill, or are working on
very obscure problems, or are working with hightech (even yet-to-be-released)
stuff, not even google will help you anymore. That's where how good of a
programmer you really are comes into play.

~~~
jmvoodoo
Additionally, you need the skill and knowledge to be able to tell a good
solution from a bad one in the many results you'll get back from a given
search.

------
JohnBooty
I couldn't help but read this and think about technical interviews that
involve the candidate being asked to write code on a whiteboard - no Google,
no code linting/hinting/completion etc.

I'm very much in favor of candidates being asked to write some code under more
realistic conditions, including finding solutions to parts of the exercise
online. Of course, they should then be able to explain to the interviewer(s)
why they chose a particular solution and walk the interviewer through the code
they borrowed/adapted.

~~~
zv
While this may be good for code under 100 lines, anything more requires using
Google. Either it be simple trivial things like email regexp (for those who
don't have the luxury of having premade libraries for them) or harder things
like algorithms.

~~~
madisp
I have yet to see a good email regexp while using Google. Most of them have
huge troubles - either not having proper Unicode support
([http://en.wikipedia.org/wiki/Email_address#Internationalizat...](http://en.wikipedia.org/wiki/Email_address#Internationalization))
or not allowing the +label thing that Google is doing for instance. If you
want to validate an email, make sure that there is an '@' character in there
followed by some chars and a '.' with some other chars at the beginning and
the end :)

If you really really want to validate an email then force the user to verify
it.

------
dlo
It depends on what you're working on. If you're working at the cutting edge,
you will find that Google often doesn't have the answers you need... simply
because they aren't out there.

~~~
JanezStupar
Not everything we do is cutting edge. You may be working on the cutting edge
and there may be no answers for you. However very likely there are some notes
that this or that is so cutting edge that there are no (known, good) answers.

Most often, however, you are just querying the database wrong. You either
don't know the specific jargon or you are searching for an overloaded term.

Its kinda like when I get pitched by non technical people who are keen on
starting up and they come with this "revolutionary, never seen before webapp"
idea. Usually within two Google queries I will have some established players
already working on the specific market, or at least digital corpses of some
previous players. When I get no results, even after an hour or two of
searching - that usually means that there is no market, where the would be
founders are seeing it.

"Cutting edge" is often a synonym for "not having a clue" :D.

------
nnoitra
To be honest I completely agree with the quote. The most important thing
should be the ability to reason about Computer Science and programming. On the
other hand, I've written and implemented tons of Algorithms and DTs for the
sole purpose of learning. I have a lot of accumulated toy code. "So unless
you’ve already memorized that sorting algorithm by heart, why in the world
would you want to spend 2 hours trying to figure it out yourself? " For the
sake of learning. I may not memorize the entire code of merge sort but I will
sure as hell know how the merge procedure is implemented. Additionally you
develop a feel and intuition for it. However, when it comes to showing off
your coding skills I would recommend building useful apps, I doubt any
employer is going to be impressed about toy code that implements DFS.

~~~
jlarocco
I think the article has an implied context of "for work."

Implementing data structures and algorithms is a great way to learn about them
and to get better at programming. But in the context of work, where I need to
get stuff done, I'm not going to implement a low level algorithm if I don't
need to - I'm looking for a pre-built solution in the standard library, or
heading to a search engine to find a third party library.

That's not to say some training time at work isn't a good idea, but it'd be
silly for a person's business to fail because they got caught up implementing
all of their low level data structures for coding practice.

~~~
nnoitra
Yes, because the ones in the standard library are very cleverly optimized and
they are usually a hybrid of related algorithms.(For example qsort in C isn't
exactly quicksort) But if you have a novel problem of algorithmic nature,
having already built an intuition should help.

------
Apocryphon
What was life like before Google? Sure there was documentation, and code
comments, and senior devs you could ask. But surely that was less than Google?
Or perhaps the scale of problems were less vast compared to now, so the amount
of info you would get by Googling now was unnecessary back then.

~~~
pixl97
Funny, in the future there will be adults that have never lived in a world
without Google. Instead of the word 'Google', just say fast, well indexed
internet searching.

It depends where you were. In a university or large business you could go to
where the other computer people were and ask, or go to the library, and if you
were lucky maybe a BBS where a few experts were. If you had the right contacts
you could pick up the phone and call someone (god long distance was expensive
back then). Things didn't occur at the rate they do now. You might have to
push a problem out for a week or two to get an answer, or maybe a manual
shipped via mail. That, or you pissed around and tinkered with something till
it worked by yourself.

~~~
snogglethorpe
University libraries were like magic gardens back in the day, and they
generally weren't overly picky who used them (sometimes it helped to have a
university ID, but usually it could be any university, and expired was
fine)...

In the early '90s I was unemployed, and so spent a few months basically just
going to engineering library of the local university (University of
Washington) every day and reading journal articles all day long. A very
pleasant memory... :]

------
SmileyKeith
This seems like a controversial topic. Some people seem to think that if you
don't know something code specific without Googling than you're something like
a Duct tape programmer (although I may be stretching the term away from what
Joel talks about <http://www.joelonsoftware.com/items/2009/09/23.html>). Being
a college student it's interesting to see articles like this, that I agree
with, and then hearing from my professors "anyone can google you can never be
a good _computer scientist_ if that's all you do!"

~~~
Pent
You can't be a good computer scientist if all you do is search for solutions
using Google, but you can be a pretty good product shipper.

------
why-el
You might want to make that Google lower case, because as it currently stands,
it seems to suggest that the fastest programmers go to Google.

~~~
gala8y
Was looking for a comment in that spirit to avoid creating a redundant version
and there it is.

------
vignesh_vs_in
Your googling skill plays a big part in problem solving, and most of the time
you are required to know what exactly is your problem.

I personally google stuff a lot when building a side project, I dont google
for solution for a given problem, this is where your programming skills come
in . You need to know what exactly you are looking for to get the correct
answer from google. It cant be a blanket statement ("parse data from json").
Most of the time the answer is split across multiple sites and which you put
together n solve your problem.

------
kamaal
Re framing this a little- "The best programmers are the quickest to discover
things".

When I was a kid, and when I first heard about open book exams I was amazed.
Well if they allow you to carry your textbook to the exam hall you should ace
through the exam through flying colors, right?

Not quite, later when I studied the question paper I realized it was so
framed, that the test was not to copy the facts from the textbook and answer
as such. But the questions were basically problems and you will be forced to
look up the text book as a reference with your own problem solving ability
being the core test being tested here. In such cases it makes far more sense,
to simply allow the person to carry the textbook to the exam hall.

Its easy to get access to a textbook/google/documentation/manual/whatever. And
spending your effort to remember facts is a waste of time and energy which are
often in short supply. Now extending this same philosophy, what if the
solution patterns to large number of problems is readily available?

In such a case it makes more sense to focus on a) Quantity of problems one can
solve b) Quality of problems one can solve. Instead of learning the solutions
to the problems, _use the solutions to do something big, or use the solutions
to do a lot of things_.

If you are wondering why the CS illiterate guy next to you is as equally
productive as you who has read some thousands of pages of CS literature, its
because when solutions are available easily and for cheap- Putting everything
in your brain is a pointless exercise.

What matters is getting things done.

------
6ren
_Is a great memory a requirement for great programming?_
[http://stackoverflow.com/questions/572620/is-a-great-
memory-...](http://stackoverflow.com/questions/572620/is-a-great-memory-a-
requirement-for-great-programming/572673)

Alan Kay: _in programming there is a wide-spread 1st order theory that one
shouldn't build one's own tools, languages, and especially operating systems.
This is true—an incredible amount of time and energy has gone down these
ratholes. On the 2nd hand, if you can build your own tools, languages and
operating systems, then you absolutely should because the leverage that can be
obtained (and often the time not wasted in trying to fix other people's not
quite right tools) can be incredible._
[https://docs.google.com/viewer?url=http://www.vpri.org/pdf/m...](https://docs.google.com/viewer?url=http://www.vpri.org/pdf/m2004001_power.pdf)

------
joshualastdon
Let use an analogy in education:

A professor in college might allow the class have an open book exam, however
you still see a number of people who might not pass that exam. Why? Well,
there were two kinds of people in that class:

1\. The smart ones who actually know the material. 2\. The others who know
nothing about what had been taught so far in the class.

The students in the first category will pass the exam but the second crowd
perform poorly, because even though the book is in front of them, they don't
know what to look for, especially in a timed test.

So the way I see this is that googling will help those who already have
knowledge of the programming concepts, not those who have no idea of what they
are trying to implement at all. In reality those who can use google to get
what they want can also figure it out without google, even though it might
take longer of course.

------
alainbryden
Microsoft recruiters are doing their rounds for Seattle, and I was just asked
over the phone how I would implement a quick sort. The answer I wanted to give
would have been something like this blog post. As a developer I would never
waste valuable time trying to roll my own version of an algorithm that's
probably available on Wikipedia and optimized for every programming language
imaginable. I guess what they were looking for was some buzz words like
"divide and conquer" and "big oh n log n time". I understand interviewing
community college graduates with no experience like this, but young adults
with 6 years of SE behind them? Ridiculous.

~~~
fencepost
If I worked at Microsoft?

I'd implement a Quicksort by checking within the existing codebases that I had
access to and that were in the same language to see if it had already been
done, then patch what I found to match my needs for comparisons, etc.

Note: one big reason for this is licensing - if it was developed in-house,
odds are that licensing issues are a non-factor but if it came from "The
Internets" then life may get strange. Strange is bad.

------
xoail
This has side effects. In my case I was becoming more and more lazy and never
bothered thinking about the problem properly and taking a chance at coming up
with a solution. I became expert at search and finding solutions. Ex search:
'display uitableview in a grid view' came up with lots of libraries... I did
end up using one of them. But I wish I took sometime to do it myself or at
least try to understand how this library is working. As I continue to use more
and more libraries I realized I was becoming more lazy and more prone to
searching for solution as first thing rather than giving my brains a chance. I
felt dumb...

------
pav3l
>why in the world would you want to spend 2 hours trying to figure it out
yourself?

I am sure a large portion of HN-ers (myself included) enjoy doing exactly
that. I want to spend my day _solving problems_ , not googling shit.

~~~
xyzzy123
You want to spend your day _solving problems_. OK cool. Which ones? All of
them?

In terms of work efficiency, you generally want to focus quite tightly on a
specific part of the solution space. The part which adds value and is novel or
advances the state of the art.

Everything else is fodder for judicious library use, outsourcing to third-
party services, and occasionally recipes or gists.

Google is just the user-interface for code re-use in 2013.

On the other hand, recreationally, why yes I do enjoy inventing a better wheel
from time to time :)

------
ramirez60
Before I really started coding I worked in electronics (designing mixed-signal
design kits at the semiconductor level) and I remember I used to judge
programmers by how much "better" at google they were than me. Since I've
switched over and become a full-time coder (and co-founder which is a whole
different exercise) I have become far better at searching for solutions to my
problems than I was in the past. That being said I don't think it's the fact
that I default to searching that makes me a good programmer. I think it's like
some of the other comments have mentioned, the ability to filter what
information is useful or not quickly and then apply and test the useful
information so that you do not have to re-derive every action. This has led me
down a rabbit-hole a few times where I would be testing different solutions
when just building it myself would have been much faster, but overall I
definitely think it is part of what makes me work at the speed at which I do.

I'm reminded of Mathematics from college. When first learning something it's
difficult and simply seeing the solution won't improve your ability to
recognize it. But once you figure it out once, you may not immediately
remember how to apply it when faced with a similar problem, but recall is very
quick because your brain has already wired the pathways of understanding.

------
hotshothenry
I Googled "how to handle error messages in php" for your co-founder and came
up with this <http://www.w3schools.com/php/php_error.asp>, since clicking on
the "Get an invite" button (on <https://framebase.io>) while leaving the email
field blank throws an exception error:

Error: exception 'Exception' with message 'MDB2 Error: null value violates
not-null constraint, _doQuery: [Error message: Could not execute statement]
[Last executed query: EXECUTE
MDB2_STATEMENT_mysql_8edec1a3e8682362d38c86df48ba2cd8 USING @0, @1] [Native
code: 1048] [Native message: Column 'email' cannot be null]

Executed SQL: INSERT INTO `waitlist` SET `email` = ?, `created_at` = ?;' in
/var/www/.submodules/TinyDb/TinyDb/Orm.php:630 Stack trace: #0
/var/www/.submodules/TinyDb/TinyDb/Orm.php(194):
TinyDb\Orm::check_mdb2_error(Object(MDB2_Error), Object(TinyDb\Sql)) #1
/var/www/.submodules/TinyDb/TinyDb/Orm.php(165): TinyDb\Orm::raw_create(Array)
#2 /var/www/.submodules/Framebase-
Models/FSStack/Framebase/Models/Waitlist.php(20): TinyDb\Orm::create(Array) #3
/var/www/Includes/FSStack/Framebase/Controllers/register.php(38):
FSStack\Framebase\Models\Waitlist::create('') #4 [internal function]:
FSStack\Framebase\Controllers\register->__post_waitlist() #5
/var/www/.submodules/CuteControllers/CuteControllers/Base/Rest.php(25):
call_user_func_array(Array, Array) #6
/var/www/.submodules/CuteControllers/CuteControllers/Router.php(28):
CuteControllers\Base\Rest->route() #7 /var/www/index.php(47):
CuteControllers\Router::start('/var/www/Includ...') #8 {main}

...thought that might help

~~~
krapp
You should have googled 'how to validate required fields before passing them
to SQL because someone will click the button without having added an email...'

------
ericb
No, the best programmers have done it before, and documented it. Every good
programmer should have an Evernote or failing that, a Tiddlywiki for all non-
trivial information.

Googling is hit or miss--that great source for how to set up ssh certificates
in Apache might rank poorly tomorrow, and pages which don't do show how to
make a pem might be top ranked tomorrow.

Evernote has saved me tons of time... I look at it as a digital extension of
my brain.

~~~
gall
I feel the same way about my bash history.

------
cdl
From my experience of not doing this early on, the quicker you take this
advice, the quicker you will build really cool things.

~~~
gte910h
IMO, school worries about plagiarism cause young engineers to be overly
adverse to looking and seeing if the problem is already solved before
attempting their own solution

Too much NIH syndrome, and NIH among those least qualified to invent it
usually

------
jiggy2011
Most annoying thing ever was doing IT work at a company where internet access
was not granted to employees below a certain paygrade.

The amount of times I'd run into a problem and then instinctively fire up the
browser just to get the "cannot connect to google.com" message.

They handed out ringbinders full of notes to staff insisting that everything
we needed was in there.

------
polskibus
Such thinking can only take you up to a certain level of excellence. Having
admired some c++ standard committee members in action, I can say that if they
had to google every harder bit, their skills would've been mediocre.

If you want to be one of the best, you need to have a local data cache instead
of fetching knowledge from a remote resource.

------
jrussbowman
I agree to an extent, and I do use Google a lot when programming. However, I'm
a systems administrator by trade and not a programmer. I have been in cases
when I've wanted to write code in a cabin in Nova Scotia with no internet and
wasn't able to get everything accomplished because I was unable to Google and
didn't have the docs on hand.

I'd be really wary of telling people not to remember stuff and rely on the
internet. The primary reason being sometimes you can't access the internet. As
a sysadmin it's my job to understand this and document everything. It was
personally embarrassing when I realized all I had to do was download a couple
pdfs and I'd of been fine.

You may not need to keep everything in your head. However, having direct
access to knowledge is important. If it's not in your head, then keep it in a
local file or what I'm really fond of, get the book.

------
calhoun137
I'm sorry but no. This article should be called "The best programmer I know
can quickly understand things he finds from google, but I don't really know
what he's doing that makes him so awesome".

Sure googling something fast can be a nice little boost to productivity, but
only if you know what you are doing. If I drag and drop code from my web
browser instead of using copy paste, I might save a few seconds after doing it
50 times; but if I totally fuck up my code-base because I don't know what the
code is doing, then productivity is going to decrease significantly when the
entire team gets backed into a corner and has to take the time to figure out
where the bugs are, if/how to rewrite core systems, and hopefully this wont
happen, but where the security holes are that let a hacker pwn your DB or
worse.

------
lee
The one thing that this post completely overlooks is that storing knowledge,
even Googleable knowledge, can be very beneficial.

Knowledge can help develop intuition, to know which pieces connect to each
other. For example, in a programming competition you _could_ google various
algorithms to determine solutions. But Google won't tell you "which"
algorithms to look for, or give you the intuition you need to piece the
correct solution together.

A good analogy is chess. Before computers could beat humans, it was a pure
game of human mind vs. human mind.

Then the computer was able to dominate humans.

And now, we're discovering that a human paired with a computer, can beat
either alone. But that human still needs to have the intuition, experience,
and knowledge to know how to work with the computer.

------
nissimk
Yeah, we need to always be learning new stuff and the way you learn is by
RTFM. The point is that now Google is TFM. Or at least it's the index into
every manual published. So unless you are already an expert in every server
program, every library and every language that you are using, the way you
acquire the knowledge of how to accomplish whatever specific task you are
working on is to refer to the manual. You still need to know the technical
term for what you are trying to do so you know what to search for and you have
to know how to evaluate and select different technologies and how to fit them
together, but the details of how to work stuff and solve many specific issues
is best found on the Internet.

------
ichinaski
Many of the best programmers I've seen google stuff. So do many of the worst
I've seen.

The difference is the former won't type a single statement without knowing
what it does first, while the latter will just copy and paste something that
seems to work, regardless they understand it or not.

The last time I came across some copy-pasted code that was giving some
troubles, and after asking the owner of that code what some stuff did, he was
unable to tell me, after claiming it was just fine, because the code he copied
was from a trustworthy source. This, I guess, is a bad practice of how
googling things should work.

------
stcredzero
_> chances are, unless you’re an absolute genius, the collaborative efforts of
an open source project will beat whatever you can do in 8 hrs._

It depends. There could be an information asymmetry that leads most people
down the wrong path, and an open source team could be subject to groupthink
that leads them down that path faster.

A lot of what distinguishes experienced programmers from inexperienced ones,
is that experienced programmers generally know how to mitigate non-obvious
risks. What distinguishes great experienced programmers, is that they know how
to mitigate such risks more efficiently.

------
fnbaptiste
Agree and disagree. I'm very good at finding solutions fast with Google, but
those solutions only work for me because I know what I'm doing. I know several
developers (or designers who do a bit of development) who rely too heavily on
other people's code for every problem they encounter. As a result their work
is often riddled with conflicts and often doesn't work quite the way they
originally intended. Everything becomes a work around. When everything breaks
they have no idea how to fix it. Lately I find if I know how to build it from
scratch I'd much rather do that

------
marpalmin
I have seen too many people copy pasting from google and introducing bugs in
the code just because they don't understand what is going on.

I know that HN is really focused toward web apps and mobile apps. However,
sometimes is good to remember that there is plenty of software done also to
control machines and perform mission critical tasks. In those cases often is
better to have control over the whole software stack. That is why so many
High-Tech companies have their own software libraries, for example for image
processing. In addition there is an IP and licensing question.

------
RileyJames
When I was learning Ruby & Rails my co-founder told me about <http://ruby-
toolbox.com>, and while it's still not perfect for beginners, it goes a long
way to solving the "what to google / what to use" problem. If you have a very
basic idea of what you're trying to do it can generally suggest a few options
to use (gems). I've also used it to work out the category of the problem I'm
trying to solve.

I'd love suggestions regarding more sites where you can search in a problem
space as opposed to a specific bug or issue.

------
fluorescentLAMP
When I interview a candidate for a hacker-like position, I provide give them
the problem constraints and hand them my computer.

I tell them to lookup anything they want.

The portion of time spent on Google directly correlates to their success.

------
the_cat_kittles
Maybe there should be another programmer maxim: DRO (dont repeat others)

~~~
Bootvis
You must repeat the doing but not the inventing. I propose the following
maxim:

Good programmers invent, great programmers copy.

~~~
nissimk
A wise man that I once worked for said "The best code is the code you can
steal."

~~~
Bootvis
Agreed, but now I think of it there is a level beyond the copying/stealing of
code: "The best code is the code you didn't write".

Of course, it is even better to beat a complex program with a small amount of
shell-fu.[1]

[1]: [http://franklinchen.com/blog/2011/12/08/revisiting-knuth-
and...](http://franklinchen.com/blog/2011/12/08/revisiting-knuth-and-mcilroys-
word-count-programs/)

------
dmcg
and when Google fails, a well posed question on Stack Overflow can get results
in 10 minutes. I worked my way through a whole Scala project that way - Stack
Overflow Driven Development.

~~~
bti
I love that I am starting to see more and more SO answers at the top of my
Google results.

------
guelo
If I've been solving a specific type of problem using similar technologies for
10 years I'm going to code circles around you while you're off googling stuff.

------
8ig8
This has to be one of the widest pricing plan spreads I've come across:

$99, $699, $4999

<https://framebase.io/pricing.html>

------
chacham15
There are a few problems with that in my experience: you cant use all open
source projects in a proprietary context and open source projects all have
different dependencies. The former flat out stops you from using the code (and
you shouldnt even read it to avoid any accidental lawsuits). The latter is a
big problem because you dont want to use eight different frameworks in one
projects.

------
taylorbuley
The platitude sounds like something I can get behind but it's so much more
than knowing how to search -- it's knowing _where_ to search. I know
programmers who are great at searching but have no idea which online
information sources to avoid, which is at least half the battle.

In a world of copy/paste programmers, bad code gets worse as it's regurgitated
around the web.

------
rza
I'm not quite sure what is so revolutionary about this post. If you don't know
something of course you will Google it. However, a good programmer can make
better queries precisely because he/she knows more background about the
problem than a less experienced programmer, so in the end, it's still down to
who has internalized more information.

~~~
bdcravens
I can't speak to the author's intentions, but it feels like a typical HN-baity
title to get eyeballs on the blog. The real estate dedicated to the startup's
call to action (on the bottom and sidebar) is almost as big as the blog post.
I, like many, have similar "blurbs of brilliance" that I'd love to post, but I
feel that if I don't have at least several paragraphs with substantive
information then I'm merely adding noise to the Web.

------
billions
Top down thinking is the #1 most underrated skill in large scale problem
solving. However, there is an equally important need for fixing narrowly
defined problems which need detailed focus. In the end you need both the
engineer that projects the entire car and the one that builds the door handle.

------
xutopia
I thought from the title that you meant that Google, the company, thought that
faster coders are just better.

~~~
mmphosis
The best programmers may be the ones that work at Google as they are very
quick at mining for search requests, such as gleaning what other software
developers are working on. This may be what gives Google a competitive
advantage.

Spread that competitive advantage around. So as not to give our secrets away
only to Google, I may search for programming help using duckduckgo and other
search engines.

------
pit
Does anyone else find themselves Googling the same question over and over
again? How do you deal with that?

~~~
sakopov
Keep a blog where you "document" any issues you keep running into. By the time
you're done with the post you'll either remember it or if you don't you'll
know exactly where to find the answer if you need it.

~~~
alexanderh
I would actually recommend Wiki (specifically wikimedia) software for this
doing this.

It can act very much like a blog, but also brings along features of many
Knowledgebases, like versioning of information. Sometimes problems evolve, and
being able to keep track of that is beneficial.

------
jeffdavis
"So unless you’ve already memorized that sorting algorithm by heart..."

That's a bad example. Nobody does that, unless they are really trying to solve
a sorting problem.

This article comes down to: "don't reinvent the wheel", without really any
supporting examples to guide you further than that.

------
Goladus
The flip side of this is that deep understanding of fundamentals helps
dramatically when it comes to asking the right questions and filtering
results.

In my experience, google is often secondary to first-class reference materials
(language documentation, man pages, etc.)

------
0x0
I think the key takeaway here is not just being the quickest to Google, but
the quickest to _google well_.

It's so frustrating to see people trying to google a problem, but fumbling
with a poorly written query and/or focus on the wrong search result hit
snippets.

~~~
Legion
People call it Google-Fu for a reason.

You could probably tell a lot about a candidate by how they Google for things.
To effectively search, you have to effectively define the problem. Often that
means having the understanding to redefine your specific problem into a more
generic one that you can search for. Ineffective searchers will struggle to do
that, or worse, simply throw words into the search bar and expect a magical
answer.

------
samspot
With this title I was really expecting some kind of study, not an anecdote
from one person.

------
rapind
"the collaborative efforts of an open source project will beat whatever you
can do in 8 hrs" is often untrue.

You need to have the ability to read and understand at least part of the code
to make sure said project doesn't have fundamental flaws or sub-par code.

------
enraged_camel
I Google everything right away. I guess this makes me the _bestest_
programmer!

------
seanlinmt
Even faster than googling it up is searching through evernote or whatever app
you've used to organise your cheatsheets. Evernote has become my external and
more organised storage for my brain.

------
re_todd
The best programmer I knew was quick to google, but so was the worst
programmer I knew. If you're slow to google maybe it's the sign you are an
intermediate programmer.

------
lelele
More like: the most clueless programmers are the quickest to Google. If you
know what you are doing, there isn't always an urge to look for ready-made
solutions.

~~~
lelele
I have been away for a while. Has HN fallen so low in the meantime? Time to
change its name to Code Monkey News, maybe?

------
fotoblur
Its not only resourcefulness but the ability to know what pieces you need to
build the project. That is harder to find by Googling.

------
steeve
Makes me wonder then why Googles presses so much on academic CS knowledge
during their interviews.

------
jezclaremurugan
The best ones are those who know _solutions_ exist or what to google for.

------
bsg75
The best do not have all the answers, but they know how to find them.

------
noonespecial
But the slowest to cut and paste what they find there.

------
static_typed
I sat with a newbie programmer the other day. We sat there and made good use
of third-party libraries, frameworks and code to get things moving, and
concentrate on the core problem at hand.

Now, we had to Google a bit to install the third-party and dependency stuff,
and tinker with configuration to get it all ready.

Eventually we delivered the GUI version of 'Hello World', and the newbie
programmer had already progressed several steps when he remarked: "So, modern
programming is basically building my code on top of other people's code,
without really knowing how it all works, if it is really any good, and hoping
it all works well enough to make the whole thing work".

Any he was right. Long gone is the time when we understood all the components
and code for our entire domain.

And we are often the poorer for it.

~~~
danneu
The newbie's statement sounds like a romantic platitude.

You should've shown the newbie programmer that programming is the art of
abstraction and that there was never a pre-modern era where "we" were all
toiling away with omniscient domain knowledge.

We lean on other people's abstractions because we're mortal and the things we
decide to abstract have a surface area that overwhelms the problem we're
trying to solve.

Rather than being poorer for it, we're immensely enriched with the ability to
solve the problems of our domain with the same vernacular that expresses our
problems. Total providence.

------
macoughl
Be the quickest to Bing or DuckDuckGo; They are less spammy

