22

Possible Duplicate:
Google is good or bad for programmer?

I'm currently in college to be a software engineer, and one of the main principles taught to us is how to learn for ourselves, and how to search the web when we have a doubt. This leads to a proactive attitude - when I need something, I go get it.

Recently, I started wondering how much development would I be able to do without internet access and the answer bugged me quite a bit. I know the concept of the languages and how to use them, but I was amazed by how "slow" things were without having the Google to help in the development. Most of the problems I have are related to specific syntax.

For example, reading and writing to a file in Java. I have done this about a dozen times in my life, yet every time I need to do it, I end up googling "read file java" and refreshing my memory. I completely understand the code and fully understand what it does, but I am sure that without Google it would take me a few tries to get the code correct.

Is this normal? Should I be worried and try to change something in my programming behaviour?

seth
  • 895
  • 1
  • 7
  • 12
  • 5
    Really a duplicate of http://programmers.stackexchange.com/q/25063/3688 – Cyclops Mar 28 '12 at 11:19
  • 1
    Consider books and highlighters. –  Mar 28 '12 at 12:10
  • 3
    I guess I'm the odd person who still prefers books for these kinds of reference docs; too many online resources are of dubious quality whereas I can generally count on one or more of my book sources as being respectable. (If a book isn't good it does not stay in my possession long though) – Billy ONeal Mar 28 '12 at 12:25
  • 4
    A better subject would be: "Google Driven Programming" – Chiron Mar 28 '12 at 13:11
  • But, Java is unusually difficult with regards to I/O – Izkata Mar 28 '12 at 13:49
  • I have a [blog post](http://www.matthewedmondson.info/2011/01/often-underrated-value-of-googling.html) about this topic – billy.bob Mar 28 '12 at 14:04
  • 1
    I fail to see how this wasn't constructive – pdr Mar 28 '12 at 16:40
  • 1
    @Cyclops I don't think this is an exact duplicate. This question is asking of a programmer should be concerned about their reliance of Google, and the one you linked is about if Google is good or bad for a programmer to use. – Rachel Mar 29 '12 at 14:53
  • related (not a duplicate though): [Is it a really required skill to program without API documentation?](http://programmers.stackexchange.com/questions/129806/is-it-a-really-required-skill-to-program-without-api-documentation) – gnat Mar 29 '12 at 15:18

11 Answers11

23

Working without internet is a skill. You don't have it, as most developers.

The thing you must ask yourself before being worried is if you need this skill in your life. Chances are, you don't, because at every developer job with Joel Test higher than zero, you will have a fast internet access.

Then, you have a choice:

  • Either you spend years learning how to work effectively without internet, without IDE (just with a text editor with no syntax highlighting) and even without a high level operating system (i.e. only in console mode).

  • Or you spend the same time learning things you will really use in your daily work.

The first will help you a lot in a case of some post-apocalyptic world where there will be no IDEs, no operating systems and no internet, and where most developers would be unable to continue their career because of the lack of skills.

The second helps you today, in the world you live, right now, and very probably in the near future.

Arseni Mourzenko
  • 134,780
  • 31
  • 343
  • 513
  • 4
    Gotta say: your answer got me smilling. Thank you. – seth Mar 28 '12 at 10:33
  • `post-apocalyptic world where there will be no IDEs, no operating systems and no internet` This analogy would make more sense if digital assets were truly perishable and expirable, which of course they are not. Not really. The notion that software has a "life" is mostly an artificial construct. Windows XP could continue to be supported for the next 100 years for instance and I could theoretically continue to play my old computer games from the mid 90's on that operating system. – maple_shaft Mar 28 '12 at 11:07
  • 5
    @maple_shaft, provided you have a functional computer, reliable electric supply, a safe environment and enough free time, as a minimum... – Péter Török Mar 28 '12 at 11:32
  • @PéterTörök that is why a pen and paper is till the ultimate perfect storage medium. No need to rely on those pesky electrons. :-) – tehnyit Mar 28 '12 at 13:45
  • 1
    @tehnyit, unfortunately, it is far from perfect. Humidity, rodents and pests can easily destroy it - and each of these are fairly ubiquitous on most parts of this planet :-( – Péter Török Mar 28 '12 at 13:59
  • "at every developer job with Joel Test higher than zero, you will have a fast internet access." - totally wrong assumption, too localized into *"some countries"*. – Lazy Badger Mar 30 '12 at 07:58
13

If - as you seem to indicate - you use Google & the web to gather information you know how to use, and (ideally) you would be able to get from other local sources (such as printed books - provided you had the perfect developer's library), it is IMO fine. Practically all developers seem to do this nowadays (even those of us who have development experience from the pre-Google and pre-internet time). Because when used sensibly, the web indeed gives us an amazing productivity boost, by resolving repetitive and slow tasks for us, such as looking up information in paper-based books and libraries, and ensuring it is up to date.

Syntactic details is a typical thing for me too. Nowadays I can have a task requiring the usage of any of at least 4 different languages, 3 of which I am not a master of. So looking up the specific details like this is regular activity to me. Still, I know enough of each of these languages to use the code examples I find (more or less) the correct way and in the right context.

OTOH, copy-pasting snippets of code googled from the net into production code without fully understanding what and how these do is definitely a Bad Thing which must not be done - else it is bound to backfire sooner or later.

Update

Reading and writing to a file in java. I have done this about a dozen times in my life, yet every time i need to do it, i end up googling "read file java" and refreshing my memory.

I would pretty much do the same, even though Java is my main language at the moment :-) Since I have mostly done server side development in it, I rarely need to do file manipulation. So these things aren't in my (limited) short term memory.

Memorizing the details of specific APIs / frameworks / languages / whatever may give us intellectual satisfaction, but ultimately it is only useful insofar it helps us solving (our own and customers') actual problems. If I haven't needed the nuts and bolts of Java File I/O API(s) in order to solve any problems recently, there is no value in keeping it in memory, and IMO it is entirely logical and useful to replace it with something more useful in my short term memory (keeping only a brief reference to the source of relevant information).

Péter Török
  • 46,427
  • 16
  • 160
  • 185
  • See my updated answer with an example please. – seth Mar 28 '12 at 10:19
  • @seth, see my update. – Péter Török Mar 28 '12 at 10:33
  • Quite right, short term memory is a cache - it should only contain the things needed right now (or probably needed in the *very* near future). – Treb Mar 28 '12 at 10:36
  • 5
    "I never commit to memory anything that can easily be looked up in a book." - Albert Einstein – David Murdoch Mar 28 '12 at 12:27
  • @PéterTörök That said, the things you do often, say grabbing data from the database in a CRUD app, you should just know how to do. Looking up syntax is fine, looking up an algorithm or pattern is fine, looking up a solution is fine, as long as it isn't for something you do frequently... Wish I could spare the time to rite up a full answer. – Joshua Drake Mar 28 '12 at 13:19
  • 1
    @JoshuaDrake, indeed, if I use it weekly or daily, it will stay in memory after the first couple of times. Our brain is fairly well optimized as a cache :-) – Péter Török Mar 28 '12 at 13:55
9

Recent research suggests that the internet has completely changed the way we memorise things, as a species, not just in programming. Rather than memorising a whole piece of information, we are learning to remember how to find it (for example, I just Googled "memory google" to find that link). This is not a bad thing, it's a more efficient use of our limited brain-spaces. Think of it as a complex version of a database index.

I'm old enough to remember days when I had the entire MSDN library, in book form, piled on my desk. It was big. And it wasn't even close to the full collection of books I had. But, because it was hard-work trudging through those books, I memorised a lot of it. It was imperative, to be productive.

Nowadays, I don't have to remember anything, I need to hone my Googling skills. If that doesn't work, I can usually get an answer to my question from Stack Exchange in minutes, even if I have to ask and wait for a response.

If it's something I have to do 20 times a day then I'll soon learn to do it without even thinking, let alone searching. But if it's something I do monthly then it's not an efficient use of my brain to remember it. Rather, it's useful for me to know how to find it -- keep a link to a blog or even write some notes in the corporate wiki.

But, if I had to go back to working without that information available, I've no doubt that I could. It's highly likely you could too. We adapt like that, as a people. This is exactly how we've advanced as a race. ("It is not the strongest of the species that survives, nor the most intelligent, but the one most responsive to change." - Darwin.)

Just be really thankful that we probably won't have to.

pdr
  • 53,387
  • 14
  • 137
  • 224
  • Googling "memory google" - that sounds recursive, take care or you'll end up in an endless loop ;-) – Treb Mar 28 '12 at 11:43
5

I think this is completely normal.

You can not overestimate the influence of the internet and effective search engines on productivity!

Before we had the internet, we had to rely on books and other printed source of information to look things up. Boy, was that slooooooow... (ok, yes, I am old - not only do I remember the time before Google, I even remember the time before the internet!)

Regarding your example of reading and writing files in Java: I have done this more often than a dozen times in VBA, but if I wanted to do it now, I would need to look up how to do it anyway. I wouldn't need that in C#, because that's what I program in right now. But VBA is not something I use on a daily base (thank God), so the knowledge is not that present in my mind.

If you are doing it every single day and after two weeks you still need to look it up, I would say that you have a problem with mid term memory and should worry (and go see a doctor about it, perhaps). But if you need a refresher on things you have learned some time ago, but do not remember right now, that's ok.

Treb
  • 1,638
  • 15
  • 15
  • And that was a time where library developers *also* optimized for this kind of simplicity of use. Today, frameworks and libraries are designed on the assumption that you can easily access the documentation, search it, have tools like IntelliSense etc. Because in the end, it's easier. Designing something simple that does the job is always harder than designing something complex that does the job. – Luaan Mar 17 '16 at 12:13
2

It depends on what you are googling for.

If you are googling for precise syntax definitions or some obscure reference to apply to your solution that's okay. without Goole and with time and books you will get that solved

If, on the other hand you are googling HOW to solve the problem, you have a problem

EDIT: when I say 'HOW to solve the problem, I mean along the lines of the 'can I have the code' posts, rather than 'I have an idea, but need clarification'

Amy
  • 790
  • 4
  • 8
  • 2
    What's wrong with Googling how to solve a problem? This usually gives you hints about 3 or 4 mathematical or algorithmical approaches, so that you can decide on runtime, memory, etc. parameters and implement using well known, best case algorithm, or improve upon existing one. Knowing the direction in which to do the research, say use hash tables vs linked lists vs vectors to attain insert/lookup characteristics of A or B. It's only bad when you `ctrl+c` & `ctrl+v` solutions. Or use patented approaches without legal backing. But research is always good. Don't reinvent the wheel. – Coder Mar 28 '12 at 10:53
  • @Coder maybe I phrased that wrong. I mean googling the problem with no basic idea (think of the 'can I have the code' posts) rather than 'I have an idea, but need clarification' - I'll add this in as an edit – Amy Mar 28 '12 at 12:33
2

As a developer who occasionally has to do work in relatively unfamiliar languages on computers that are airgapped from the internet for security reasons I'm probably better able to comment on this than most people, and I agree the general sentiment of most of the other answers.

A decent IDE's autocomplete is able to find about 95% of what I need in the standard class libraries. Walking to/from a networked computer (and occasionally taking notes/making a printout) only costs me an hour or two of reduced productivity per month of coding.

Trying to memorize massive class libraries just isn't worth the effort expended. Spending a few hundred hours learning something else would have a much higher return on the time expended.

1

I did programming in the "pre-Internet" days. Back then, I had several books on hand to look up bits of info I needed for MASM and C. I'd look in the table of contents or index and find what I needed. If it wasn't in one of my books I'd have to go to the bookstore and buy one that did or, in some cases, order one through the store and wait for it to be delivered.

I'd also communicate with other programmers via Compuserve, Genie or other paid services, Usenet or on bulletin board systems (FIDOnet, etc.). It wasn't that much different than SO or other online forums although it wasn't nearly as efficient as doing a Google search today.

So, the Internet has made programmers more efficient because more information is available and more quickly. You don't need to lug around a bunch of books or try to search through tons of unconnected text from dozens of different sources.

jfrankcarr
  • 5,082
  • 2
  • 19
  • 25
  • Yep, I used to have quite the large library of programming books back in the day. Nowadays, there's really not any need to have any books at all (although, I can't get entirely away from my roots... I've got a few programming books still on the shelf). – Brian Knoblauch Mar 28 '12 at 12:29
0

I find myself on your description, and what I can say is because of that I could get a deadline in a c++ project without any experience in the language itself.

As you pointed, when I needed to read a file in c++ I googled it and got to several pages, thanks to some OO knowledge, I could find the most accurate solution to my problem, even had the luxury to find logical errors in one of the proposed solutions.

What you are doing with google, you can replace with a cheat-sheet, Eclipse has a very nice User Assistance section in the wizard when you do ctrl+n, that helps you to create your own cheat-sheet, in that way you can code once and paste several times.

Like some answers pointed out, Internet boosts your productivity! Don't be afraid to use it :)

0

This sort of thing is why the UNIX world has man pages... the internet has just made this sort of thing better.

Spudd86
  • 101
  • 2
0

There is nothing wrong with Googling for answers, but it is not optimal to retrieve information that you have already found. Here's some suggestions:

  1. Develop your own library in each language. Then, when you want to write to a file, you can use your library. And, you can even use it to look up the syntax.
  2. Create a "Brain Backup" system. I use Evernote and find it wonderful. Here's more ideas: https://softwareengineering.stackexchange.com/questions/113462/how-do-you-manage-all-of-the-information-you-have-learned-and-found
  3. Get good at memorizing. Memorization is a skill that is not taught in school. It is hardly critical to being a great programmer, but it is better to remember something than having to Google for it. We can greatly improve our skill at memory the same way that we improve all of our other skills: learning effective techniques and practicing.

By the way, I found this interesting tool to improve brain performance on the SPOJ site: Improve your brain health and performance

B Seven
  • 3,105
  • 3
  • 16
  • 14
0

Believe you're missing the point, that being languages naturally bootstrap from the exchange that results from their use, and to believe that's not the case is a misunderstanding of the nature of languages.

Even before the internet, computers, or even written word - people or "peopleware" used natural forms of communication which resulted in a dialog that bootstraps the exchange and development of any logic based system.

blunders
  • 4,550
  • 4
  • 31
  • 48