Scott Hanselman

Am I really a developer or just a good googler?

August 24, 2013 Comment on this post [98] Posted in Musings
Sponsored By
Photo by Hugh Ryan McDonald used with CC Attribution

I got a very earnest and well-phrased email from a young person overseas recently.

Some time in my mind sounds come that Is that I am really a developer or just a good googler. I don't know what is the answer I am googler or I am developer. Scott Please clear on my mind on this please.

This is a really profound question that deserved an answer. Since I only have so many keystrokes left in my life, I am blogging my thoughts and emailing a link.

I've felt the same way sometimes when playing a video game. It'll get hard as I progress through the levels, but not crushingly hard. Each level I squeak by I'll find myself asking, "did I deserve to pass that level? I'm not sure I could do it again."

You get that feeling like you're in over your head, but just a bit. Just enough that you can feel the water getting into your nose but you're not drowning yet.

First, remember you are not alone. I think that we grow when we are outside our comfort zone. If it's not breaking you down, it's not building you up.

Second, anything that you want to be good at is worth practicing. Do Code Katas. Do a Project Euler problem every few weeks, if not weekly.

Third, try programming for a day without Googling. Then two days, maybe a week. See how it feels. Remember that there was a time we programmed without copying our work.

Fourth, think about the problem, deeply. Read about algorithms, read Programming Pearls, read about Design Patterns. Rather than copying code from Stack Overflow, copy patterns from the greats.

Fifth, get involved. Go to User Groups, Nerd Dinners, meet with others who feel the same way you do about technology. Stretch.

What do you think?


Sponsor: A big thanks and a warm welcome to Aspose for sponsoring the feed this week! Check out their Aspose.Total for .NET has all the APIs you need to create, manipulate and convert Microsoft Office documents and a host of other file formats in your applications. Curious? Start a free trial today.

About Scott

Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.

facebook twitter subscribe
About   Newsletter
Hosting By
Hosted in an Azure App Service
August 24, 2013 3:29
How did we ever do this programming thing before the InterTubes??? I know we did it, but honestly it seems like a distant, muddy memory.

While it might be causing us to slack a bit on our actual computer skills, it also advances us because we don't have to constantly reinvent the wheel as we did in the old days. If you never found a given library already out there somewhere what other choice did you have :-)

But also in the old days it seems you had to know a whole less stuff - it was easier to keep what you needed to know in your head. Now we context switch all day between technologies, languages, paradigms etc. etc. Some days I fondly remember working in a single tool building a desktop application where I had all the pieces in my head. No more...

August 24, 2013 3:34
This hits close to home. I have wondered the same thing. Thanks for the tips on staying sharp.
Being a web developer isn't always easy. HTML and CSS and jQuery come easy. AJAX, XML, JSON, API work often comes in copied and altered from existing code. But if I didn't understand it, then I couldn't effectively alter it I guess. I couldn't make things work at all from examples, if I did not understand those examples and some fundamental programming concepts and data structures.
Great post, you really have me re-thinking things. And that is a good thing.
August 24, 2013 3:43
It depends on the day... Sometimes I feel like coding the hardcore way and thinking about complicated logic and such, but there are also other times when I think 'I know the answer more or less but I really don't want to hurt my brain to much today' and then, Google is my best friend! So as long as you know the direction in which to look for and find the answer within one Google/Bing search, that qualifies as being a Developer.
August 24, 2013 3:44
Thanks Scott!

This post really hit home for me today. I've been thinking about this a fair bit lately - that I use stackoverflow way more than I contribute, and that I'm not a very good whiteboard developer (I'm addicted to my IDE and google).

But I was thinking about this quote:
"Never commit to memory what can be easily looked up in books" - Albert Einstein

I think as long as we keep our reason skills sharp, and use google as a reference more than a guide, we're on the right path.
August 24, 2013 3:44
I started messing with code when I was 10 in VB3, everything I learned was a product of internet searches, and chat rooms (on Aol scoff if you must). There's nothing wrong with needing to research something, google, videos, open source code, and friends are what enable us to be better.
August 24, 2013 3:49
I think that the notion of developers using Google (or Bing) as a crutch is somewhat of a microcosm to the Internet, computers and technology as a whole. Google, StackOverflow, Hanselman.com etc. are all just tools we use in order to help us work more efficiently. Is it a good idea to just copy and paste code without truly understanding what you're doing? Of course not! And I do realize that there has definitely been a huge shift in how our brains work (particularly when it comes to memory and long-term storage) over the last 20 years pretty much since the dawn of web browsers and the World Wide Web went mainstream, but to say that using the Internet detracts from you as a developer would be like saying that using books, a better IDE or faster computer is also a form of "cheating".

On the other hand, faster computers and better IDEs don't give you the answers and let you skip over all of the analytical thinking just to get a quick answer to why you're getting a NullPointerException so I guess the argument could be made either way.
August 24, 2013 4:03
I agree that excessive reliance on the internet can potentially turn a developer into a 'cut n paster'. But, is there any value in being able to memorise the contents of MSDN? An important aspect of being a software developer is decision making on topics like problem identification, (non) framework selection, application of algorithms, design patterns etc... oh yeah, and being productive. If you are the decision maker and you reach out to a platform like StackoverFlow to verify your ideas before they are set in stone, is there really anything wrong with that? I don't think so. For me Google is a productivity tool. Maybe a good test for us all would be a 30 challenge without cut n pasting code from the internet...

P.S. Plz send me the code.

August 24, 2013 4:18
Like several of the previous commenters this hit a bit too close to home to be comfortable... I know I'm probably a bit too dependent on my IDE of choice (NetBeans as I'm currently into C; would love to use VS... get in the game and support C99 already) but at the same time I know that I can implement a stack or queue from scratch, and surely a b-tree too. A good hash table, not so much, and a priority queue might take some time (a lot probably). To me, the problem with google, SO and their likes is that when the answers are readily available it can ba hard not to take the shortcut instead of trying to figure out how to do stuff; and in the end it leads to programmers who can't really solve any problems without help.
August 24, 2013 4:28


>>would be like saying that using books, a better IDE or faster computer is also a form of >>"cheating".

@ami

People have said that in the past.
August 24, 2013 5:00
This is a GREAT question.

I honestly believe I fall into the latter category ... and would consider myself a proud graduate of 'Google University'.

I think the true test of the question is whether you could pass a grilling job interview. I would guess that without a *lot* of studying, I wouldn't.

However, ultimately, is that really a good test of what you're capable of creating?

I took Fortran and C++ in college, and then didn't do any "real" programming for about 10-15 years. I got back into C, with an opportunity to create a gui tool and learned the toolkit solely through Google and by reading message boards. The tool was ultimately released by my company and is one of the most focused and intuitive we have.

When it came time to rewrite the tool in C++, I began research (Google) into C++ programming structures, and found Misko Hervey talking about how to write 'testable code' through dependency injection.

I'm currently learning Android almost exclusively through Stack Overflow.

So, in summary, while it's true that a 'real' developer would likely be quicker with a task, what ultimately matters is the end product.

And, the end product, at least if you're dealing with GUI, is a mixture of many many more things beyond just programming prowess.
August 24, 2013 5:01
I love the fact that you took the time to answer this! I think all of us who program for a living use google, stack overflow, msdn...etc. It is a very rare thing if I actually copy code but I have done it and will do it again if the code works perfectly for what I'm trying to do. It's always nice to send an thank you email to whoever was kind enough to post the code.

I think the key is, do you change what you're trying to do to fit the code you've found or do you use the ideas you found to craft what you're trying to do?

I equate it to music. A musician friend of mine who writes songs says that there's nothing really new under the sun. Every piece of music has some element of another and that's okay.

August 24, 2013 5:11
I was just thinking this today! I am a total Googler (and not much of a developer really).

Of course I learned programming by typing in code listings from PC Magazine (TSR anyone?) so really, not much has changed.
August 24, 2013 5:12
I really love this post. I, like the others others here, have felt the same. I really think think its a function of how much I like the problem.

But @Scott, as a fan of your edutainment I gotta know... do you still play games? What did/are you playing? Whats your preferred platform?
August 24, 2013 5:14
There is nothing wrong with being good at Googling. In fact, I believe that pretty much the only thing that separates a junior developer from a mid-level and a senior is the ability to find your own answers to problems.

Also, yes, we did write programs before the intertubes, but in today's world the number of disparate layers, frameworks, and choices etc are vastly larger. Remember when all we had was a console?

I mean hell, let's build a data-driven single page application (SPA) in the Microsoft stack by ourselves... let's see, what do we need to know?

Database Modeling
Some form of data access (Entity Framework, ADO, Hibernate, Dapper, etc)
Some .NET Language
Either ASP.NET Webforms or MVC
Oh snap, those aren't useful without knowing some HTML and CSS
Single Page App? Crap, now I need to know something like Knockout, jQuery, might want a framework like Bootstrap so it looks nicer...

Personally, I think the vast amount of choices we have a strength, but at the same time it's information overload out here, especially given the rapid pace of change.

If you're not good at searching and interpreting what you find... a Googler... good luck to you my friends.
August 24, 2013 5:40
+1 on Rick and Nathan's comment. Like the Albert Einstein quote.

But Googling and reference books are a problem when it comes time for job interviews. You have to recall all that stuff once again. No book and no search available, though ironic that in practice at work, those things are not disallowed but they are in an interview.

Curious question for Patrick, the data structures you mention, can you code them off the top of your head without a reference book or Google? To me, unless one uses those on a day to day basis, one can get rusty with the implementation details over time, where a reference book or Google comes in handy to remind you of what you forgot. But man that's lot of stuff to have to remember to ace an interview...
August 24, 2013 6:50
The other day I saw a tweet that I can't find again (I swear it was Damian Edwards) something like this:

Junior developer: I bet I could build that
Senior developer: I bet someone else has already built that

Where do you think senior developers find the answer to that? ;)

If you're copy and pasting without reading and thinking about the code you found online, you're doing it wrong. But if you learn from it and keep its patterns and capabilities in your back pocket - that's learning new things.
August 24, 2013 7:14
I have to disagree somewhat with point #3, "Remember that there was a time we programmed without copying our work."

Like others, I started programming many years before Google existed. But the program structures did not leap from my head fully formed as Athena. Instead of Google, I used Gutenberg: lots of programming books (and magazines) containing code (or at least pseudocode).

Our problem domains were smaller back then, so printed material was an acceptable resource; these days a programmer *must* hone his Google-fu. Knowledge of algorithms and patterns help you identify what kind of problem you're working on, which empowers you to use better search keywords.

But whether you copy code from books or the Internet, the same principles should apply: do not ever copy code blindly. Instead, examine the code and understand it; break it apart into its elements. Then combine the elements and build towards the solution, following your own coding patterns. Code samples are often poorly designed on purpose in order to emphasize the elements of the solution; by deconstructing and reconstructing, you end up with a solution that has the correct elements, that fits the design of your existing code base, and that you understand inside and out.

In fact, I would say that deconstruction and reconstruction are the key skills of a developer. Taking requirements (desired behavior) and tearing them down logically into patterns and structures, and then building those pieces together into a cohesive whole - that is software development. Writing the code is just an after-effect. (Almost)
August 24, 2013 7:31
I asked this exact same question a while back on one of my social media outlets. You re not alone!
August 24, 2013 7:48
@Rick Strahl we were able to do it, but were way way way less productive given the comparative size of reference materials and available people to consult with. We were forced to study the problems and understand their natures by ourselves or the immediate group. That took time to consolidate enough trial and error experience.

The Internet's liberating ability of linking us to the rest of the world's experience has provided us with quick answers to problems already tackled by other people. Most answers come in minutes, hours, or days. Compared to weeks and months. Some remain unsolved for a long time of course (i have plenty) but developers on a whole are getting more stuff done, and can move on to the next work item, and the next, towards their project completion.

The downside of that is most developers would just quickly focus on the next task after they've found a solution "that works". There is little time in today's work reality to really sit down to read and experiment to gather the deep understanding that is actually required to solve those problems. The law of project schedules dictates you have less time to finish the work than the time required to learn the technologies proficiently to do the work in the first place.

This is a work culture that needs to be solved by both developers and managers/bosses; especially the latter who almost never allocate enough time for tired staff to catch their breath.
August 24, 2013 8:25
I was thinking, a good googler - does not that mean the googler knows exactly what he is searching for?
In that case, a good developer who knows coding practices, and have already have fixed the algorithm in mind - will just need to google about implementing the stages he does not know how to .. yet.
August 24, 2013 8:48
I work in Developer Support (not exactly coding) and one time my colleague were congratulating me for my good work solving a certain problem, so I explained how I get to be so good by drawing this simple chart on my whiteboard.
It's based on this entry at Geek and Poke.
Amr
August 24, 2013 9:52
Scott,

Thanks, and its was an amazing post...
August 24, 2013 10:22
We have to program in much more complex environments which change all the time. Cloud, Windows Store apps, web applications, and all have their frameworks and tools. These are all external factors which you have to know about, to keep your own code as simple as possible. It is almost impossible to know about all these technologies before starting a project.

We are not building console apps anymore, where the added value of your programming is the algorithm you are writing. We more and more trying to compose and connecting existing technologies and frameworks.
August 24, 2013 10:30
Thanks Scott.
August 24, 2013 10:31

  • Why do we manually search, cut & paste code snippets from StackOverflow ?

  • Why doesn't a flowchart step in a compilable spec automatically pull functional code chunks based on pre & post conditions from a common code repository ?

  • How much code is duplicated across organisations , let alone projects ?

  • Is software engineering stagnating ?

August 24, 2013 11:37
I am extremely fortunate to have had a boss who trusted me (then only an enthusiastic amateur developer) to build a mission-critical content production system for our department when I wasn't strictly working in a technical position at all. I bought books and used Google to teach myself my craft, and I have been working as a professional developer ever since.

I am a good Googler and very proud of it; I have used this tool to absorb the wisdom and knowledge that others have so graciously left for me on the world wide web. Unless you are building systems to support the research of nuclear fission or perform neurosurgery, I firmly believe there is no problem that you will encounter that someone else hasn't encountered and solved before, and their code is simply an expression of how they did it.

That said, what marks the men from the boys is surely having the inquisitive mind to ask what's going on underneath. Not just asking whether a copied passage of code solves the problem but how. Never hitting Ctrl+V unless you are happy that you can confidently stand up in front of your peers and justify your decision. Any idiot can, with enough time, knock up a simple dynamic website using a modern IDE, Google and a bit of time; but can they tell you what's ACTUALLY happening on the TCP/IP stack, at the HTTP protocol level or in the request pipeline?

Code is just code. Great developers take the time to ask why and how.
August 24, 2013 12:13
Thanks Scott
August 24, 2013 14:14
As an engineer, to be producive and efficient we have to "stand on the shoulers of giants". We used to have to refer to manuals and API docs, but now we have the internet we can do a lot more than that... it's likely that the problem you are having has been solved in some way.

With that said, to improve critical thinking and development speed then its nice to not have to Google everything
August 24, 2013 14:52
Much of what we do every day is similar, run of the mill kind of stuff. I think that having stack overflow available makes sorting good solutions to these kind of problems from the bad solution quite easy.

And having standard ways of solving common problems, or accomplishing run of the mill tasks frees me up to focus on the aspects that are unique, challenging and lacking any form of google provided answers.

And even if you particular project is lacking in the challenging department, it still takes skill to adapt googled answers into your program.
August 24, 2013 16:28
I don't think the two are mutually exclusive. Being a good developer comes through practice and experience, and good developers make the best possible use of the available resources. That includes Googling for an established solution to problem. Why spend days or weeks trying to solve a problem when the answer is only a Google search away? Googling for answers doesn't make anyone a bad or lazy developer, that would be like saying bad developers are ones who spend a lot of time reading books or talking to colleagues. A worse developer would be one who couldn't solve a problem and didn't know where to turn for help. Google is just one problem-solving tool we have available. The important thing is how we use the information once it's been found. Ideally we should read the code and understand it, then type out the eventual solution ourselves, no copy and pasting. That sounds like a pointless rule, but it's part of the practice which contributes becoming a better developer. Don't use Google as a crutch, use it as a resource for building knowledge and experience.
August 24, 2013 17:30
@David Luu Your post could open up a new entire thread of discussion: are we interviewing well? When I interview someone (primarily for Android positions) I let them use whatever IDE they want and I let them access Google and the Android developer docs if they need to. My feeling is that for the type of technical exercises I'm giving, they shouldn't really need to look anything up. But if they do, I'm interested in what and why.
August 24, 2013 17:47
Being a good developer is making use of all available resources which includes searching (googling) for known solutions. The problems start when a developer doesn't understand the code they are grabbing off StackOverflow or other sites. I have been guilty of this myself and it leads to nothing but problems.

Thanks for the post.
August 24, 2013 17:58
I am a very good googler and proud of it. By which I mean I am very good at asking questions. The point being that a good question is more than half of the answer.

I develop business web apps. As I work alone, no, I don't work in a cubicle in a large office, I need to know way too many technologies to know them well enough.

So although I lack "enterprise skills", my interrogation technique is second to none and I never need to torture anyone.

If you google the right question, you get the right answer. That is why Google is Google.

But...

The strategy falls apart when you start working with new-ish technologies like Orchard CMS. There simply isn't (yet) enough on the net about Orchard. And the Orchard team have no concept of the lone developer. They presume that your ground zero is a cubicle in a large office and that you think and breathe enterprise skills.

If you are talking to Bertrand Le Roy et al over at Orchard, put a word in for the lone developer who has great interrogation skills but no enterprise programming skills. It hasn't dawned on them that there are a lot of people like me.

And our numbers will only grow.
August 24, 2013 19:51
in the 'old days' we had the windows developer docs delivered to our front by forklift. tons (literally) of 'physical manuals' to pour over! reading the books! ahh the good old days... didnt need no 'stinkin internet'. lol... hahahaha
August 24, 2013 20:43
"Googler" whatever happened to bing?
August 24, 2013 21:41
When need to know HTML, CSS, javascript and its many frameworks, C#, VB, SQL, IIS, WCF, XML, Unit Testing frameworks; well you get the idea. Its a lot to have memorized.

I've always seen myself as a problem solver and solution finder. The internet has certainly made this process a whole lot faster. When working on a web based UI, I will always have the jQuery API documentation open in one of my browser tabs, with another tab being a search engine. The internet has become my instruction manual

I typically don't copy and paste my way through a problem. With that said, code samples go a long way in helping me to understand a new technology or framework.
Ben
August 25, 2013 0:01
Maybe we should turn the question around "can I be a developer without being a good googler"?
In the olden days we had instruction manuals which we could not do without. All googling (or binging) is is reading a more sophisticated and up-to-date instruction manual.
If I wasn't a good googler I would never have found Scott's wonderful blogs - and be troubled by such philosophical wonderings!
Keep on writing the good blogs, Scott. Thanks.
August 25, 2013 0:12
I began as a developer before Google came out (1994) but since Google has become available I do not look back.
I used to save all of my code for reference for future projects. It was a valued treasure at the time since I was building a useful arsenal. But because I can find much of what I am doing online Ive realized that I no longer need to retain such knowledge long term .
But since we often use many tools and languages and platforms today, Google is the most efficient way. but, if you taught yourself many of the new tools and languages then you are a developer. Google cant give you the experience that time and repetition gives you.
but google can make you better because you also learn from those who have taken the hard road before you. There is a plus to learning from those who have become experts in an area.
August 25, 2013 0:39
Try resisting the need to use auto-completion in your Visual Studio IDE. I mean, a good developer should remember (as in *memorize*) some bunch of APIs he's using every day, right?
In fact, why not stop using any kind of IDE and just use command line? That's how a *real* developer should work!
Please read Phil Haack'article We are not paid to write code and then you'll start using more tools, APIs or whatever helps you deliver in a faster way better products, because in real life, the client usually wants a product, not some code.
August 25, 2013 1:22
If you at least understand what the code does, it's okay.
But I often have that feeling I use google too much. I'm writing some code .. ooh I do not know what to do here .. google .. oh facepalm!

But that's a very philosophical question. What do you want to be? Do you want to be a developer or you simply want to close only the next work item?
August 25, 2013 5:37
Thank you, Scott
August 25, 2013 7:42
I agree with Ronald. This isn't 1985 any more folks (OK, pick your own date). The world of programming is so much more vast and subsequently more complex simply due to it's vastness. Unless you are a specialist, doing one app, one framework, one languange , you are gonna be a googler (savants aside).

I am a generalist MS programmer. I'm expected to deal with several versions of Visual Studio each with mutiple service packs and hot fixes, several versions of SQL Server, several browsers with mutiple versions (there's a lifetime of pain and suffering for you), Sharepoint 3.0, 2007 2010, etc, ASP, ASP.NET Webforms (and MVC), VB, VB Script, C# (with how many versions of .NET?), 32 bit OS's, 64 bit OS's, how many versions of windows? multiple source control platforms, javascript, html, html 5, Win NT, Win RT, Windows Phone 7, and on, and on.

And this is just windows development. Now add Mac, Linux, Android each with their own universes. Honestly, the vastness boggles the mind.

Sometimes when I read resumes, I just laugh at what companies expect their devs to 'know'. For the average, generalist developer, there's just no way to know it all.

The need for and value of google (does anybody bing? or maybe 'bing(oog)le') is built into the complex nature of the vast programming universe.

If you are a generalist like I am and keep your customers happy, give yourself a pat on the back.
August 25, 2013 10:56
Scott, you are a developer.. ;)
August 25, 2013 13:08
I think the most important part is when to use Google. Every good developer should use the internet in an exploration phase before starting the actual coding. The only bad habit is to copy & paste code from the internet while doing the actual implementation.
August 25, 2013 13:29
well google or bing are very helping in finding everything you just advocated for, design patterns (books, websites, videos, tutorials, blogs), programming techniques like TDD or BDD, language/technology user groups, nerds/geeks/programmers centric events (conferences, workshops, webinars, ...)

stack overflow has value in that for general purpose problems (which they encourage you to ask about) it is a great ressource, like: i want to use this framework in this language, with this database, how do i set this up or why isn't this working etc...

But when it comes to the business logic of your real application you can't expect producing your own code and thus having to do some

i find that actually most professional developpers i have worked with would copy/paste code from their colleagues who are working on the same application not from the internet

by the way before the internet: people would actually read books, with some of those books called cookbooks that give you recipes for a technology or a language. Stackoverflow is a huge unorganised very messy cookbook
August 25, 2013 13:32
erratum: But when it comes to the business logic of your real application you can expect producing your own code and thus having to do some good old algorithm and at some point apply design pattern etc...
August 25, 2013 15:48
Let me start out by saying that I'm am probably a little older than most of the people on this thread. I've been developing for the Microsoft platform and others for close to 30 years.

When I first started working with Windows, there was virtually no information available. As an independent developer, the only choice was to go to Redmond and visit Microsoft University to learn the "secrets" of Windows or to buy a book.

I remember the day when MSDN came out. Finally the playing field was somewhat leveled and I could have access to the inside information I needed. The internet only made things easier. It's rare that I or my team come across a problem the *someone* out on the web hasn't encountered. It's an amazing resource.

The problem that I see is many young developers use the web as a crutch. They are quick to Google or go to Stack Overflow and many times just cut-and-paste blocks of code into the project without even taking time to understand what the code does.

I've even seen developers who graduate with a CS degree and have trouble writing a program from scratch. They are so dependent on the Web for answers that they have trouble when asked to build something from the ground up.

Don't get me wrong. I'm a fan of having access to information. But if you are a developer, you have an obligation to build quality code and to understand how it works. Using Google doesn't make you less than a real programmer. Not understanding your code and your craft does.
August 25, 2013 17:31
I think the answer to the question very much depends on context; and I firmly believe that neither condition is mutually exclusive.

Many times I have found myself having trouble getting some framework or library to do what I need it to do and have had to resort to Google and/or Stack Overflow to help me get some running code because the original library is poorly documented; but then I always force myself to go back and take the code apart to make 100% certain I know what I've actually done. I guess that's my way of enforcing some kind of learning process...

In the same way, any time I come across a supposed answer to my problem in a technical blog, I always take the time to read the comments fully - you never know when what you're being shown is just plain wrong, for reasons that only a full on flame war in the comments section can explain :)

Now on the other hand, I have broken my own rules when it comes to *algorithms*; if it's on SO and highly upvoted then I will confess I have on rare occasion just copy-pasta'd and forgot about it...mind you I do unit test so I don't get caught out too often ha ha.

One thing I would recommend over not using Google for a day is actually going a week without using CTRL+C; if you really need some code from the internet, and you really find your eye glazing over as you scan it, then force yourself to type it out manually; change the variable names, method names, refactor it on the fly; you will find yourself then having to fix a broken implementation of algorithm X (no better way to learn it!) whilst a the same time having a working reference. It's really surprising how quickly you can learn an algorithm or a concept this way.

So in the end if a person uses the internet as a replacement for dead trees that contain information that's out of date by the time you read it, and as a repository of knowledge that will constantly inspire and challenge their assumptions, then they're going in the right direction. But if as Dennis mentioned above they use it as a way of not taking intellectual responsibility for their own craft, then this is a bad thing.

Just my 2c.
August 25, 2013 22:31
Am a very lazy programmer. i love googling out informations and code snippet rather than spend hours writing the code. like you said, it better we focus on our coding rather copying codes from Quora and stackoverflow
August 25, 2013 23:18
I'm going away to a remote cabin in the woods with my wife this weekend and while I'll be taking my laptop with me (my wife's a web developer, so she doesn't mind), I won't have any access to the internet.

I'm going to try to work on something while I'm there, but fear not having my coding buddy, Google by my side.
August 26, 2013 1:53
While I have often pondered this very point myself - it would be disingenuous to consider how we would cope without the matrix compared to the way we used to.
This is because all the software libraries and APIs we rely on are now geared this way. The quality of documentation was of a much higher calibre than we what we have now - out of necessity. I rarely bother with official docs anymore, since places like stackoverflow render them obsolete.
August 26, 2013 10:05
I think if you take away Google tomorrow, we all will still find ways to get things done. Not everyone can Google and become a developer.
August 26, 2013 12:14
I agree with Dennis Suppe in that I think there are too many developers who rely on the web, and who would struggle to build anything from the ground up. Here in South Africa, they had to "dumb down" the programming assessments in job interviews, because most of the applicants failed them outright. I thank them... they made me look good, because it enabled me to get 100% easily, although I have never thought of myself as anything more than an average developer.

But I also believe that if you are one of those who ask yourself that question (Am I a developer or just a Googler?) then you *are* pushing yourself, are always learning, are growing as a developer and in your career.

It's those who do not question such things that we must worry about... Those who are so supremely confident and thing they are so very clever. I have walked out of an interview by such a person already, because I refuse to work with somebody like that.
August 26, 2013 13:09
Great question that You absolutely have to think about every now and then. To me, it doesn't matter if You spend Your time googling code instead of writing it Yourself as long as You follow a couple of guidelines;


  • You should fully understand the code that You are copying. Not only bits and pieces. Everything.

  • Googling and copy/paste the code should be significantly faster than coding it Yourself or it has no purpose.

  • The main focus should be on solving the problem for the end-user/customer - You are a developer and not a coder/programmer. Your solution should be elegant and solve the problem. Nothing more - nothing less.

  • The code snippet that You are copying should be well written according to Clean Code or some other guidelines.

  • Pay respect for the original coder and the copyrights. Name Your source. That might also come handy when six months later going back to the code and doing some rework.



And I agree with Jerome; If You don't ask Yourself this question - then You aren't pushing Yourself.
August 26, 2013 17:11
Go a day with only books. Flip the pages and learn a thing or two about learning and applying the text to your project. Then see if you could do it better with Google. You'll pick up other nuggets of knowledge that you won't see with a narrow search in Google.</strong>

My current development position has me living in an area without internet during the week and commuting home on weekends. Yes, it stinks. Pain helps you remember.

I think I'm a horrible developer that can't live without Google until I run into something that I struggled to figure out and remember the solution better than when I Google the code. There is no copy and paste with a softcover. Google to learn, not get a new line. This is how I finally learned RegEx - handcuffed to a hotel with no internet I actually remembered the syntax afterwards after tons of tries.

If you can read a text, digital or analog, Understand it, Apply it, and Learn it - you'll be awesome in any field or vocation.
August 26, 2013 17:25
Long time ago when I developed applications using Pascal I read the book to find how a method or function was implemented. I started the solution from scratch and when I about to finished I needed to find a way to log my app. I did that log from scratch. Doing it that way I learn how to do it. Now we have Internet that we can search for anything. I would say that now we have a bigger book. We have community and people that developed apps so you do not have to do it. So now I can find different logs applications that I can use and attached to mine application, doing so may won't help me to understand how log works, if I do not have the care and discipline to check what I am doing. I am creating a new black box. It is important to learn even if that take you more time that you expect.
August 26, 2013 17:25
Time is too valuable to not use all the tools at your disposal... In cases where Googling avoids guess & check, or picking up a book and trying to track down what you are looking for the old fashioned way, Google is a optimization on your time. There are things that I pick up that aren't worth making space in my brain for. I know when I find the answer that it will be easier & faster to find it again when I need it next time than it would be to try to commit it to memory. Plus, there have been times when I stumbled on the same Stack Overflow question with a different, better response... or one that makes clever use of a library/framework feature that's newer than the question itself.

I had a job interview once where I needed to perform a programming test in front of a group of people. They wouldn't allow me to use the internet or resharper. I guess I understand it as a critical thinking exercise, but as a test for how a person will perform in their job, it's total BS. I wouldn't build a deck without a drill or a saw. It was a big factor in me taking a different job.
August 26, 2013 18:21
I always try to remind myself that when I find a potential "solution" to a problem I find whether it's on StackOverFlow,MSDN, etc. that I should really try to understand the code I'm "borrowing". It's too easy to copy some code and go "oh that works" and walk away. I've seen far too many "solution" provided on the web where I was like "OMG! That's the worst idea ever" but some developers definitely just copy and paste, see it "works" and walk away.
August 26, 2013 18:57
She said: "enough with RnD, its time for DnR (download and run)"

Thanks Scott for this great post! 8-)
August 26, 2013 19:42
Just so you know, Scott, this post and the one about the Imposter's Syndrome punched me square in the face repeatedly (that's a good thing). Thank you for your posts.

I, personally, tend to go back and read Scott Meyers' and Herb Sutter's books, and sometimes Uncle Bob. I don't look as much for the technology or even the written code, as much as the ability to reason through with them on the problems.
August 26, 2013 21:40
Just replace "googler" with "code researcher" and you'll feel better :)

All kidding aside, knowing what to ask (google) is the important part. Whether you ask it to yourself, to your peers, to your books, or to google is irrelevant.
August 26, 2013 22:37
What baffles me are the people who are getting paid to be a "programmer", "software engineer", or "developer" but aren't good at either developing or googling. Far too frequently I see posts on "that evil site" (i.e. Experts Exchange, what can I say, I'm addicted to the free t-shirts, sue me) asking for help and I think to myself, "that seems pretty basic", so I do a google with bing and the first hit in my search results answers the question.

I appreciate not having to dig through hundreds of pages of manuals to get my questions answered, but the dark side of this is that it's made a whole legion of software "developers" incredibly lazy, so lazy they won't even perform their own searches anymore, and I wonder what that says for the future of our profession and the software that gets produced.
August 27, 2013 0:33
A good developer _is_ a good "Googler" - though a good "Googler" isn't necessarily a good developer. You need the ability to do research effectively; and the knowledge/experience to apply that research appropriately to your project.

The point is, you shouldn't feel bad by using any and all tools available to you to do your work. The skill of reading a whitepaper about an algorithm (even one with example code), and then applying that algorithm to your codebase effectively is the core of being a programmer in the first place. If you don't agree with this, then you're basically saying that any developer who hasn't contributed a unique searching or sorting algorithm (for example) to the programming community isn't really a developer. If any field of science was conducted this way, we'd still be in the stone ages.
August 27, 2013 13:09
Hell, I just had this problem.
Had too much time on my hands and tried to solve it without the internet...
The problem was on reportviewer usercontrol and guess what...all the methods have 0 (ZERO) comments saying what they do...had to download dotpeek to reverse all the code and dissect it manually.

In the end it took me 6h to do what I after found in 5min of googling...
Where the 6h waste? Hell no. Learned a lot of what the control was doing but also that google is faster although you won't get that deeper knowledge most of the times.
August 27, 2013 13:47
I have thought about this a lot in my career but actually I think it's ok to use google/bing as one of your primary programmer tools.

My approach is this:

1: I watch a lot of pluralsight/lynda videos
2: I read a lot of technical books
3: I listen to podcasts such as dotnetrocks/hanselminutes etc every day on my commute
4: I subscribe to blogs from respected developers in the community

This gives me a high level overview of many technical topics, obviously I can't remember it all but at least I know of the existence of a particular language, framework, best practice or upcoming technology.

Then when am I am faced with a problem to solve, I can pick the right tool for the job and google to get the finer details.

IMHO, good developers are people who have a passion for the craft, who are constantly learning and improving and have the ability to find the right answer, it doesn't matter if that answer came from a blog post or stackoverflow question or from the depths of your mind.

That being said, practice is essential so doing programming katas regularly will improve memory retention and productivity.

But don't feel too ashamed if you need to google for the answer.
August 27, 2013 14:55
Well just as a follow up to my own and other similar comments, I can attest to the "dangers" of google because I just typed "hNSWLMan" (really bad keyboard day) into my browser and the first result is this blog. I don't have it bookmarked, I know, shame on me :(

But can you imagine my confusion if I was looking for the parameter reference for a handle to a Library Manager from New South Wales? None of the code in this blog will even compile against the Antipodean Public Services Lookup framework. Sheesh.

So you see, there is proof that you shouldn't trust everything you find on the internet. Does that makes me a bad googler?
August 27, 2013 15:18
Great post. Great tips as well, and I am proud to say I do most of them as often as possible, albeit with varying degrees of success (visiting Project Euler after posting this comment!).

I believe that you have to be a programmer of at least some skill in order to
A. Know what questions to ask the almighty Google and,
B. Know how to find and utilize the best answer once the results are magically delivered.

I wonder more frequently about the increasing levels of abstraction created by various frameworks, piled upon various other frameworks, piled upon libraries.

Am I a programmer, or simply a Framework Assembler?
August 27, 2013 18:53
"try programming for a day without Googling" really? The internet is a big giant help file that can be searched in seconds, why struggle to remember things?

I remember the old days without internet and remember the following:
1. The programming surface was much smaller than now
2. We rely on mags and books to learn new things
3. We have to shuffle some MSDN cds for help when things go wrong.

I'm glad those days are over, I'm much more productive now.
August 27, 2013 20:20
Maybe a different take on our dependency on the internet. When I first started programming in the mid 90's, resources other than expensive books and other programmers were scarce. This led to what I referred to as the "gate keep symdrome."

Experience developers that had a wealth of knowledge but didn't what to share with those less experienced. I couldn't afford to compete with their library and I truly began to resent these gate keepers. To me the internet took away their keys and gave us all access to resources that previously were hoarded.

This was my personal experience and I'm not trying to generalize. I've also worked with very helpful developers, though much later in my career.

The internet has greatly expanded my developer world view.
August 27, 2013 21:00
Really,
I thought as humans we are supposed to evolve and build tech so we go even further.
Not googling would require a longer period of searching in books. (Manual text processing)
As humans your memory is meant to degrade as you grow older.

So I would consider somewhat no evolving if you still go through a pile of text books to look up an academic concept you don't remember form the top of your head.
I think that interviewer or companies instead of the interview with academic algorithms should instead go to Harvard get their Final exam for Computer science graduates and submit interviewers to that.

August 27, 2013 22:57
I read one day about the Google effect: http://en.wikipedia.org/wiki/Google_effect

Google Effects on Memory: Cognitive Consequences of Having Information at Our Fingertips - http://www.sciencemag.org/content/333/6043/776.abstract

And even if I can remember a lot, I find easier to remember where to find the information instead of remembering it.

In fact this is a bad habit and quite difficult to get rid. We want to have information and we want to have it "now". As fast as possible.

We talk about Google (or enter your search engine here) but what we did before without Internet? To find a solution for our issue or even to get in touch with more people about a specific topic.

"try programming for a day without Googling". Yes I'm sure we can all do it but sometimes we need information about something really specific and it can be hard to find the answer without Internet (or even a book).
August 27, 2013 23:39
@Andrew: we're doing our best to put as much content as we can out there, but you are right that the technology is still too young to get you a hit on all Google searches. Our answer to that are our very active forums. If you ask your questions there, you should usually get an answer pretty fast.
August 28, 2013 3:54
If you're scared that you're copying/stealing other people's work and that you lack of creativity/knowledge just because you google code ... don't be. I just read a great book about such misconceptions "Steal like an artist" and this is just one of many quotes that will help you think otherwise:

Nothing is original. What a good artist (developer) understands is that nothing comes from nowhere. All creative work builds on what came before. Nothing is completely original.
August 28, 2013 10:05
Great Post Scott. Googling/SOing has become more like an subconcious obsession, it doesn't need to be "stuck with a problem", even for the small code snippets-calling jquery ajax or a simple connection string, googling comes first even faster than "digging into a little bit of memory" and always lands on SO.
In my office, sometimes when we have problems with internet connectivity, most of us get up from our work stations and roam around, practically we could be still working but since we cannot "google" we feel we cannot "code" as well.
August 28, 2013 15:57
Heh,


I'm old enough to remember how we coders did it without Google.

We would read books.

We would thoroughly read our favorite language's documentation -- I still have Turbo Pascal's, Turbo C++' 1.0's and Visual C++ 2.0's, hunt for great books on the topic, read technical magazine that used to include technical articles (in Italy we had MC-MicroComputer, published from 1981 to 2001, and the first 120 issues or so did have a section devoted to coding )

We would consult the online help. (Even Turbo Pascal 5.5 for DOS had one!). I still work off-line, when commuting, and I read lots of PDF and wget dumps.

We'd try the examples included in the package, understand them and adapt them to our needs.

And when BBSs came out, in the late eighties/early nineties, we would download libraries, toolkits, sample code and try them. If you dabbled with Turbo Pascal, as lots of european young coders did, you'd download and cherish SWAG -- "An elegant weapon for a more civilized time.".

And we'd experiment a lot.

However, there's one thing that must be said: in those times, you learned one-two languages, their standard libraries, windows API / MacOS api and you were set (sort of). Today, as Joel Spolsky pointed out in 2001, that's no longer the case for the majority of professional coders I know. And API grew more and more complicated and numerous.
August 28, 2013 16:19
About Good Googler vs. Good Developer:

if you find a solution via google that solves your problem BUT


  • It isn't written in your programming language so you have to translate it, or/and
  • It's written in an awkward style so you have to refactor it


then if you perform these task you almost certainly are a Good Developer, even if you resort to Google.

Case in point:


  • Translating Java Code to C# to write an external program to drive Open Office
  • Translate and refactor PL/SQL code to C#.
  • Convert some old Delphi code in QT.
August 29, 2013 8:13
Most of the knowledge we have is derived from knowledge of others who came before us. Most of us copy code and integrate it, with modifications, into the code we are writing. The fact that we can integrated it into the code we are writing proves we are a developer.

That being said, I agree with Scott's suggested exercises. I think they will make you a better developer. I learned that I could code without the crutch of an IDE when I wrote code Ruby without one. I still write Ruby without an IDE. I hope to do the same with C someday.
August 29, 2013 12:36
We are (all of us who read this article) is googler because we found this post by googling it too .. hello slaves :)
August 29, 2013 13:57
When I study something new, perhaps a new framework, I browse the whole book from start to finish while coding some interesting examples. I don't memorize the codes but instead, the topics or concepts in the book. All I needed is to say "I know framework X can do that" and not how to specifically implement it. When I know framework X can definitely help me with a requirement, then I hit google or revisit the book I read to search for the specific implementation.
August 30, 2013 8:45
No essay sized response from me. Just wanted to say awesome article. Really relevant to how I often feel as a developer. Thanks!
Sam
August 30, 2013 20:19
Scott, you are simply awesome. I see Rick Strahl left a comment above. He blogged about this too. Been around a long time myself, way back to C, WinMain, WndProc and even before the MFC days. I’ve been wondering the same things as you folks. I consider myself one of those "Dark Matter" developers that you often speak of. Brief history: Back in the day (late 70's) ,a developer’s desk was unbelievably messy. It typically contained a green screen we endearingly called F.R.E.D. and stacks and stacks of books, manuals and other written material. We needed this stuff to look-up error codes, function/routine argument structs/data types, lists, basic algorithm books, Job Control Language incantations and more. The really productive developers strategically placed their library of materials accordingly on their desks. We simply could not commit the plethora of detail to human memory. Here end'th the history lesson. Before Bing/Google, some of the adventurous developers found details through Archie et al, then Yahoo. Slowly, our desks began to get neater. But I digress. If your work on the various Microsoft Windows platforms entails developing software with C/C++, MFC, COM, ATL, C# (.NET 1.0->4.5) WCF(3->4.0), Entity Framework, NHibernate, ASP.NET MVC, ASP.NET Webforms, Winforms, Javascript, … I can go on forever …..
As a developer in the modern world, I would never condone copy/paste programming but on any typical day, with the myriad of detail, on the various development vehicles, programming languages and more, required to get the job done in the enterprise world, IMHO, it’s simply not feasible to program without references.

I certainly agree with the remaining points.
September 01, 2013 17:38
I think the idea that because we Google doesn't make us good programmers is totally bunk. Ask someone from the old days what they did before Google. We bought BOOKS. When I was stuck on something, I would read through a book, find some code that did what I wanted, and copied the book code. Google replaced books is all, no big deal. In this day and age who has 5 days to code some complicated bit of logic when you can download a sample in 5 minutes. You think Einstein and Newton didn't build on what came before them? Google has just accelerated the pace on which we can find information. I think what makes a good programmer is someone who downloaded some code from the internet ( which a lot of times are simple examples, not written well for production quality code ) and finds the code doesn't work, and figures out how to make it work.
September 02, 2013 19:18
I personally think that a huge part of BEING a good developer is about understanding how to use the tools you have to preform research.

I Google a lot of things. I spend a lot of my time in developer blogs, code samples, and documentation.

But that is part of that makes me a developer. I have the capacity to unlearn and relearn as the field evolves, and to figure out how to do things that I was not taught how to do.
September 03, 2013 18:14
I have 15+ years of development experience, but I've been fulfilling more of a Business/Technical Analyst role for the last year or two, and was mostly doing programming on a legacy C/Unix system before that.

I now find myself back programming, in both C and C# for Windows.

I can't imagine getting anything done without Google and all the wonderful developer sites I find through it - but that's because it's all about using libraries and APIs.

The only way to find documentation - even from Microsoft - seems to be a search engine, and even then it's confusing and ambiguous, so you really have to find someone who got it to work and base your work on theirs.

I really just don't believe it's possible to program for Windows based solely on Microsoft documentation. At least, not in a timely fashion.
September 06, 2013 9:07
Nice Article Scott...Thanks!!

I think - Google/Searching on internet makes someone specifically aware about the problem only and not allow you to understand what is there actually.

There is difference between "SEARCH" & "EXPLORE". The important thing is "EXPLORE", I guess. You can search the things on Google but we should also "EXPLORE" them deeply - What these things are, What they can do/or else, etc, None will say "Googleing" is not good or efficient. But, Important is to take the best of your logical skills and material/medium to achieve them (which may be most of the times provided by Google/Bing).

You may get best taste by this funda of mixology...
September 09, 2013 19:00
Everything is built upon something. In essence a 'Google programmer' is just the next step in the evolution of a commercial programmer. The human mind is large and complex but can only store so much data much like a computer. If we are being silly then:

"You can't even code C# from memory? Why not?"

"You have to use C# to build programs that you can build in assembly? Why?"

"You can't even build programs in machine code? Why not?"

"You can't even manually enter the binary signals using a turing machine? Why not?"

"You can't even mine the raw materials to physically construct the turing machine yourself? Why not?"

"You can't even initiate the big bang to generate the raw materials with which to construct the turing machine yourself? Why not?"
September 10, 2013 15:46
I think "Google Programmer" or "Googler" is a good thing. You are stuck and you tried out some ways to achieve your goal but couldn't find it. In that case you search for something different in Google (different approach). If it's working we learn/remember that the specific problem was done in that way. Well, remembering the whole code is not that easy; you need to practice it for it's PROs and CONs. That way you remember the code as well as refer others to do it.

If you don't remember things you copied and used in your program; is not advisable. In this case you did not learn anything.
September 10, 2013 15:50
In-fact this is the question of every new developer.
Nice Article.
September 10, 2013 19:17
I didn't know that the perception is almost all developers use google in daily basis, but I am not. Fortunately, I am also a programmer.
September 11, 2013 8:43
It's useless to build a wheel when it has been built before !!! I always use Google to find solutions but always I have to change theme for my domain problem and I just get the Idea. rarely it happens just to copy and past simply ;)
September 16, 2013 15:24
Sometimes I felt like that. I don't know what's my job: Good Googler or programmer :(. But I felt very excited when I resolved my problems without Google ;).

I rarely just copy and paste code of others.

Thank you for your nice article.
October 10, 2013 20:46
So what you're saying is I should be giving stackoverflow 40% of my paycheck? Lord knows they deserve it, nobody can know everything any more and I save my company a ton of time by searching rather than spending endless time getting things to work, also, remember github, there's a ton of useful and MIT licensed solutions up there than can save your company time. The real question is, am I a developer or am I hired to deliver a project on time and under budget. I love that I find so many answers online, that's a good thing not a bad thing.
October 21, 2013 17:59
Thanks Scott for this great post.it was so amazing.
October 21, 2013 21:32
I consider good googling as a skill. But you have to know how to solve a problem in the first place. You need to know what you really want to search for, and determine where to start at. Therefor you need to be skilled in separating complex systems into their parts within your head.

I wrote something similar: What makes a great developer
October 29, 2013 2:33
What would happen if google had a rule that you can search as long as you contribute it back with content (code, etc). Like with the torrent sites. Under ratio 0.6 you are banned from the internet. Ha! The end of stackoverflow programming.
Iwo
November 01, 2013 19:20
for me, programming is more than just googling and copy - paste the codes etc .. it's more than it .. programmer must be person who face a puzzle (design), then try to build it by thinking the way (develop), and finally got it done (result) .. regardless of the way he/she solve it by googling/IDE/ebook etc, coz all of them are just tools to solve the problem.
November 07, 2013 1:24
Let's not forget we're not writing code that will endure for eternity. We're living and working in a Just In Time world, so that is a reality we live with. I'm a mid level (ish) developer. One of the realities I hold on to is that I don't invent the wheel. Scott and guys like him do that. I just take those new tools and modalities and apply them in an efficient manner to whatever company I'm working for. It isn't any more complicated than that. If I spend my time perfecting some temporary technology then that is really a waste of my time and the companies.

On the more flippant side of things, every mistake today is job security tomorrow!
November 29, 2013 11:56
The short answer would be - doesn't matter! Who cares?

The only important thing is to have task well done. It's a matter of preference whether to keep everything in local brain storage, or in a clouds ;) So actually it doesn't matter - to remember everything or google on demand.

I guess you should provide nice solution first. Remebering is just what makes you a bit more cool comparing to others, who just googling. But both of you could create pretty cool solutions.

Comments are closed.

Disclaimer: The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.