
Coding without Google - ingve
http://www.bfilipek.com/2016/05/coding-without-google.html
======
numair
Programming is so much more fun and awesome now. Everyone has a computer, and
has their computer on them 24 hours a day. Whether it's a website or a mobile
app, you're able to immediately get things in the hands of your "normal"
friends and see what they think.

The development side of things are also better. All of these open-sourced,
internet-networked tools/libraries/languages allow you to build really
powerful stuff really quickly. Yes, there is a huge quality and maintenance
problem, with lots of people writing libraries they instantly abandon, but I
think this just forces you to read lots of source code and become a better
programmer.

Build more powerful stuff, faster, and get it in the hands of more people,
faster. What a time to be a programmer. The article does a good job of noting
the problem of distraction, but I think that has always been an issue, and why
we have always seen anti-social traits among lots of successful developers.
Tuning out the allure of being young and having mindless fun in the 90s to
focus on code is no different from tuning out the allure of being young and
having mindless fun today. As for older people, well, it's always been a
challenge to be super-focused and dedicate time to learning new things while
dealing with household/adult responsibilities.

This is a very special moment as a developer. It is like being in the business
of rock 'n roll in the era in which radio and television took off, which made
it possible to create music that ended up broadcast around the world within
weeks. If you can stay true to the roots of the code, and avoid all of the
weird get-rich-quick types that have entered the scene, you can have a lot of
fun right now.

The past wasn't any better, and the future can't be predicted. The time is
now.

~~~
geophile
Programming is far less fun now, and more painful than it used to be: stupid
management practices (agile, scrum, ...), broken and poorly documented 3rd
party libraries, code reviews, pair programming, politically correct unit
tests, it goes on and on. Check my previous HN postings for rants, if you'd
like.

It used to be that your computer had a compiler, and editor, and a shell, and
you would go to work, writing code. Now, in the age of programming by google,
you are left with the much duller task of gluing together other pieces of
code. It's boring, and there are so many distractions -- the ones noted above,
as well as Facebook, Buzzfeed, etc.

Now there is one other thing that's going on. Most of us are working pretty
high up the stack. I suspect that if you are working on low-level algorithms
(for AI, database internals, DSP, ...) that programming remains a fun
activity.

~~~
Benjammer
It sounds like you enjoy writing code itself more than the process of building
software. I get the same sense of wonder and excitement when I get an app to
successfully do something I thought up in my head whether it's just attaching
up a Google API to get a map or location picker integrated and working or if
I'm coding out the whole feature myself.

I have a lot of respect for hardcore "coders" (I feel like that term has a
pejorative connotation in tech, but I don't mean anything bad by it). But I
think there are plenty of people out there like me as well. I consider myself
an engineer, not a programmer. I solve problems and build things. Writing code
is just one of the major tools in my arsenal to get things done.

I think there are still tons of options out there for people who like writing
lower-level code, but it's moved into areas like embedded systems and
scientific lab tools. All the coding work for most of the common stuff has
been basically commoditized already.

~~~
sklogic
The funny part here is that in many cases it is still far easier to build
stuff from scratch than to glue someone else's poorly documented shit
together.

~~~
sbov
Yes. So many libraries are engineered to solve everyone's problems, you can
spend hours, or days, figuring out if it is engineered to solve _your_
problem. It's like searching for a needle in a haystack you aren't sure has
your needle.

------
Morgawr
When I was 17 (about ~10 years ago) I was hospitalized for a whole month. All
I had was my linux laptop without any games (well, I did have Battle for
Wesnoth which was great) and no internet connection in the hospital.

I was so bored of being bed-ridden at the hospital that I eventually started
browsing the source code of a C++ game engine (Irrlicht engine) and use that
as documentation for a small game project. During that experience I learned to
read the local documentation, read the source code and actually figure out how
stuff was implemented in the engine, which quirks it had and even modify and
recompile it.

Simply because I was bored and I had no way to get the answers I needed off
the internet.

It was a very enlightening experience, I think every developer should get to a
point, at least once in their life, where they're just sitting in front of the
computer with no external distractions and no internet connection, just
explore what you have and make the best out of it.

~~~
lugus35
> "I think every developer should get to a point, at least once in their life,
> where they're just sitting in front of the computer with no external
> distractions"

Well, that's why I use Emacs in full screen mode, without menu bar or tool
bar, with a very minimal .emacs configuration and only reference documentation
inside Emacs in info format.

~~~
cmplxconjugate
Yea but I guess the point is 'self control' \- I use emacs full screen too,
that doesn't mean I don't just switch to a workspace for a browser when I need
it.

------
nostrademons
It can be kind of a fun experience to try coding something substantive without
an Internet connection - say, while riding Caltrain or on a plane flight. It's
a very different workflow. You need to download all of your docs ahead of
time, and then get used to browsing through them as the doc generator
intended. If you get stuck, better dig into the source code of that library
you don't know how to use. You end up thinking through your code a lot more,
and being more careful and more rigorous about the library calls you use.

I've found it's a pretty handy skillset to have, but for most everyday
programming, I'm happy to reach for the search box.

~~~
voltagex_
Any ideas of a particular project to try while disconnected?

~~~
technomancy
I've been working on a game recently,
([https://technomancy.itch.io/bussard](https://technomancy.itch.io/bussard))
and I've been struck with how refreshingly simple and self-contained it can be
compared to a web service. I can still count all my dependencies on one hand
instead of pulling in a huge intertangled graph of them, and I nearly always
find that when I run into problems, they are of my own making instead of being
thrust upon me by 3rd parties.

Granted I need reference documentation for the engine (love2d in my case), and
I occasionally consult the Lua stdlib documentation (which I get from apt-
get), but that's about it.

------
iamleppert
Wow, this really took me back!

My first real experience with coding was the NeHe OpenGL Tutorials (which are
still available online ironically). At the time I was writing a visualization
plugin for an early version of Winamp, and I downloaded all NeHe's tutorials
and saved them offline, as well as the OpenGL reference and Visual C++ CHM
help file.

I would then go down to spend time with my grandparents in Southern Ohio,
without any kind of Internet access, no cell phone back in those days, and a
barely Pentium laptop. I later hauled my desktop down there, but most of the
time was spent out on the deck with my shitty laptop.

It was amazing.

I would just spend the entire day coding and learning, while my grandmother
read her book, out in the wilderness, looking out over a picturesque lake
every now and then to clear my mind and think about a problem I was having, or
to ponder the next steps in what I wanted to learn or do. Especially hard
problems would require a nature walk while I thought about how to best
represent things in the real world and grasped 3D graphics concepts for the
first time.

In between breaks we would take turns getting up and making tea for one
another, and every now and then I would make something cool, or learn
something for the first time, and excitedly have to show my grandmother, who
would immediately tell me I was "so smart" and shake her head in amazement of
"modern technology".

Towards the end my grandfather put up speakers and we listened to old 50's and
60's big bands out on that deck during these trips. I think more than anything
these were the shared experiences that got me into coding and really opened my
mind up to the possibilities.

These days, this kind of situation and environment is hard to replicate.
Things are just so unnecessarily complex and now all our tools expect an
Internet connection to work. It makes me sad that today's generation will
probably never know the kind of experience I had. There is something about not
having the Internet at your fingertips that forces you to reason through
things on your own and find your own powerful source of creativity rather than
the route search/download someone else's code that we all do now.

~~~
cyphar
While I don't live in as nice of a place as that, I used to go on walks with
my dad when a programming problem was bothering me (he used to be a programmer
in the 90s and early 2000s, but is a lawyer now). These days I still go on
walks by myself when I'm trying to solve an especially hard problem, and my
suburb is very tranquil and calm at night. Good chance to get some exercise
and think about whatever is bothering you.

IMO, you don't need the internet to solve a problem if you actually understand
what's going on.

------
Tistel
I have been a dev for 15 years. Its seems less fun now. I did hard core C++
games for 13 of that (Nintendo DS+Wii, 360 and PS3 games). You always had a
pretty good sense of what what going on. Now I am doing web/mobile. Its just a
messy swamp. Everyone's first instinct is to slap another JS library on every
problem. The build breaks and I ask what does somebslib.js do? No one knows or
cares. They just keep slapping more JS on the problem until it looks like it
works. No desire to have a clear mental model. No desire for efficiency. Oh
well. Working on personal projects is the only super fun coding I get to do.

~~~
jbob2000
I get what you're saying, but I don't think we should stop this movement of
"plug and play" coding. Last year, I needed to build a really small app to be
used internally by my company. Without "slapping another JS library" in, it
would have taken me 6 months to build this application, but I did it in 2
weeks. It works, ~30 people use it every day, haven't run into any problems.

A critic would say, "but what about in ten years when they need to fix a
problem with the app you built, but none of the libraries are around, or have
all changed significantly, etc". To which I say, just build another one, the
first one took me two weeks, just spend another two weeks building a newer
one. Code is cheap, throw it away and get new code if the old stuff stops
working.

------
pjmlp
I started coding in the 80's, when all I had was access to the BASIC
programming manual that came with the Timex 2068.

Thankfully I also got some programming books shortly thereafter, which
introduced me to Z80 Assembly.

Back then these books for home micros were targeted to children so you had
cartoons and funny drawings explaining programming concepts.

[http://www.misteriojuvenil.info/detalhes.php?id=3422](http://www.misteriojuvenil.info/detalhes.php?id=3422)

Since those descriptions are in Portuguese, the Atari archives are a better
example for an international audience,

[http://www.atariarchives.org/](http://www.atariarchives.org/)

Other than that, we had to get listings in Crash, Your Sinclair, Micro-Hobby,
Micromania, Input, Spooler. Most of them we had to fix before they could run,
because there were always the usual typographic errors breaking the code.

Specially painful when typing hexdumps of Assembly for entry into monitor
applications.

Then those of us lucky enough to live close by to a library with computing
books, also got to hold some of them. Or get to meet others to share our
ideas.

When I managed to get online to the local district BBS, I was already 18 years
old, and one could hardly use it, because how expensive it was and it only
allowed between 5 to 10 simultaneous connections.

We were forced to think out of the box and try to figure out the solution to a
given problem on our own. Which lead to very creative ideas.

Specially in the demoscene community, which was a great experience back then.

Nowadays, we just copy-paste.....

~~~
AdmiralAsshat
_Back then these books for home micros were targeted to children so you had
cartoons and funny drawings explaining programming concepts._

Some of these books are still available. Usborne put a bunch of their old ones
from the 80's for free online:

[http://www.usborne.com/catalogue/feature-page/computer-
and-c...](http://www.usborne.com/catalogue/feature-page/computer-and-coding-
books.aspx)

See their assembly book, "Machine Code for Beginners"

~~~
pjmlp
Thanks for the reference!

------
dvirsky
When I started coding 30 years ago, I didn't have internet, and being a kid
living in a remote rural area where even the nearest bookstore is a long drive
away - virtually unreachable for a 12 year old - I hardly had any resources
available at all. It was both frustrating and exciting.

Every book or tool you could get your hands on was a treasure; and my friends
and I, developing primitive adventure games, had to reinvent some wheels in
pretty lame ways, like image compression for our backgrounds, or drawing of
sprites onto a background.

I once got my hands on a 8086 assembly manual, what a gem that was! but alas,
we had no assembler or a C compiler, so we reverted to creating blank files
and using DOS' DEBUG.EXE to tweak the assembly from all zeros to whatever we
wanted.

It was really exciting although not very "productive". Then one of the guys
got a modem and the BBS world opened up to us, and it was never the same
again.

~~~
stevekemp
> we reverted to creating blank files and using DOS' DEBUG.EXE to tweak the
> assembly from all zeros to whatever we wanted.

I started coding in assembler on a z80 based machine. All my programs would be
written out in opcodes, on paper.

Then once I was sure they "looked right" I'd place the opcodes on another
sheet. Leaving the jmp-targets blank.

The final step, before entering the code, was to count the length of
instructions so that the jmps went to the right location.

Fun times. I'm amazed I had the patience to stick with it.

~~~
mgkimsal
Very similar story here, and I share the amazement at my own patience, but
then I remember - there was nothing else to do. I was a kid - no car, no job,
3 channels on TV. What else would you have done?

~~~
stevekemp
I only started programming at all because the bundle that contained the
computer + tape-deck + games had a faulty tape-deck, such that my family
couldn't use it.

I spent about four days reading the manual, complete with BASIC tutorial,
until the shops opened again and it could be returned & exchanged.

(This would have been in 82-83 or so. When I was 7.)

------
aavotins
Maybe programming with Google by my side has taken away some of the romance I
associated with programming, but it has certainly made me a better and more
productive programmer.

I found a Zip drive(anybody remembers those?) with lots and lots of my early
source code, circa 2004, when I programmed day and night, because it was so
much fun to learn. There was no Stack Overflow back then and even Googling
yielded fewer results. Unfortunately some of the creative solutions I came up
with back then, make me cringe right now.

Being able to consult with knowledge and experience of people much, much
smarter and wiser than me, has made me more productive. I don't waste time
solving the same problems again and again, I can find tested and efficient
solutions to problems quickly. I am more productive by leveraging all the
knowledge. I am not paid to implement quicksort and then test it extensively
to match already existing solutions that are blazing fast, I am paid to do
real, practical work. The less boilerplate I have to write, the better.

Just my 2 cents.

~~~
sklogic
Internet is dark and full of stupidity. It is weird to expect it to feed you
with a refined collective wisdom.

There are far better places full of knowledge. You know, good ol' libraries.

------
tluyben2
My (I was 8) first computer (not PC) I got beginning of the 80s when there
were only BBSs with, at least in my country, not much programming info
(pirated software, images, stories, text games, porn). I had a Basic, assembly
and C book second hand and I bought the occasional magazine and
listed/disassambled existing software I typed over from mags or downloaded.
That was all that was needed: the rest you had to make up by reading in the
manual or experimentation.

For my current hobby projects I use things like C, Forth, Lua: languages and
libraries I can keep in my brain and do not need internet for to write things
that work. Compared to commercial work it is especially the fast changing
things (often changing for no apparent reason) like JS projects and/or some
web/app frameworks that really require Google. Certainly the best practice to
use a library for _everything_ , even when unstable or rapidly changing, is a
pain. It is often much faster to write things yourself without having to debug
yet another library but you keep thinking you are wasting time and fall for
it. With internet not available you have to find a solution yourself. Using a
lib is usually the better solution but just writing things without Google just
feels better to me.

~~~
NobleSir
Lua was my first programming language and it really is beautiful in that you
can keep the whole language in your head and write entire programs without
looking anything up. In fact - when I first started programming in other
languages, it would essentially boil down to: write snippets in Lua, then
google to find out how the syntax works in the other language, and copy it
over.

~~~
tluyben2
Yeah that is why I did (and sometimes do) in Forth. Because it's terse and no
syntax it is so rapid to just try little things out. Unfortunately MOST code I
write does not benefit from that (web/app) but the embedded and game work
certainly does.

------
hoodoof
In current times you can build vastly more powerful software than you could in
"the day", but you can't possibly remember how to drive it all.

Constant reference to Google and StackOverflow is unavoidable unless you are
building something within a very constrained technology.

~~~
ry_ry
This is very much on-point, many of us are working with a bunch of disparate
technologies loosely connected by standardised protocols and considerably less
standardised APIs.

------
marcus_holmes
I find coding offline more constructive - my most productive coding sessions
are on the train. Getting to focus on what I'm trying to achieve without
getting distracted is important and useful.

But debugging is impossible without the internet, I find. Working out what an
error means from just the error description and the source code of the library
is bloody difficult. Googling the error message gets better results
immediately. A friend and I were talking about this, that maybe we should just
use UUID's for error messages and write the error description in Stack
Overflow, since that's where they'll end up anyway.

~~~
geocar
> I find coding offline more constructive - my most productive coding sessions
> are on the train. Getting to focus on what I'm trying to achieve without
> getting distracted is important and useful.

I do this as well. Airplanes and underground trains are some of my favourite
places to program.

> But debugging is impossible without the internet, I find. Working out what
> an error means from just the error description and the source code of the
> library is bloody difficult.

I find most bugs by reading the code.

The error doesn't mean anything.

You have decided that the computer did something unexpected. Rather than
assume the computer is wrong, you need to assume that it is correct, and that
some part of your assumptions were wrong.

A friend of mine was trying to hash some content, but _every_ file it hashed
was `da39a3ee5e6b4b0d3255bfef95601890afd80709` so he tried all sorts of stuff.
If you _know_ what the SHA-1 of an empty string is, then you're like google,
but if you just read the code, you'd see a `||` instead of an `&&` that meant
that the `read_file()` never occurred.

~~~
iamflimflam1
1.That can’t happen. 2.That doesn’t happen on my machine. 3.That shouldn’t
happen. 4.Why does that happen? 5.Oh, I see. 6.How did that ever work?

~~~
cmplxconjugate
That's always the tough one: "How did this even work in the first place...."

------
mobiuscog
I think part of the problem these days is expectations.

Many years back, drawing a simple vector drawing on the screen was amazing...
now it's a single command, and people expect HDR 3D rendered images otherwise
it's not worth doing.

Life is busier, more 'impressive' and the internet shows you many people who
are so advanced you shouldn't even bother.

The days of home computing were awesome in so many ways.

Then again, the opportunities are just different these days - the astonishing
capabilities given to new games designers through Unreal Engine / Unity, etc.

The ability to show your work to so many people and not need computer
'friends' that live nearby.

It's just different.

It is a shame that so many people don't read so much to gain knowledge but
instead mentally cut/paste examples to build something quickly.

------
ino
I learned programming alone with qBasic when I was 14 without internet.

By luck my father had left an icon to qBasic on his win 3.1 computer and it
had a similar interface to edit which I knew very well, and I opened a file
and realised the code made it go.

qBasic had a good and complete help with all the functions and examples. I
loved it, and It helped me learn english and basic.

I remember playing football with friends and an idea came up to solve a
problem I had at the time and I stopped playing to write the code in my school
notebook. When I came home, it worked.

The internet has many dogmas and principles that are being repeated and
learned by novices without understanding why by going through it themselves.
Sometimes a singleton is the right thing to use, for example.

------
tonyle
Google is too useful to not use it, But you shouldn't have to do a google
search because you don't remember a command or basic functionality of a
language or library. That information should be rapidly available by the
documentation. Google should be used for troubleshooting or researching a new
concept.

[http://devdocs.io/offline](http://devdocs.io/offline) is a great resource if
you want to code offline.

------
gwbas1c
One of the advantages of Google is that technical documentation often omits
critical details. How often do you look at something on MSDN, or Apple's docs,
and just scratch your head? Then, a quick Google search fills in the missing
information!

Back in the 90s, I couldn't just go Google the ambiguous areas of Borland's
documentation. As a result, I probably made lots of silly novice mistakes that
a novice today won't make.

------
Bahamut
I have a slightly different perspective as someone who learned how to code in
recent times (about 4 years ago) with the rich amount of resources on the web.

I do use Google & the internet generally a fair amount, largely for referring
to APIs, but for various people's approaches to solving certain problems on
occasion.

The two dangers of relying heavily on Google though is losing knowledge &
sometimes generating doubt in ones conclusions from a well-reasoned
understanding of the problem, and encouraging inefficiencies when sometimes a
little harder thought at a problem could solve it much faster due to having
sufficient knowledge.

My opinion is that there are pros and cons having the vast resources of the
internet, and while it has mostly been a net positive thing, we should know to
guard against the weaknesses that is possible to slip into being too heavily
reliant on it.

------
geff82
I often find myself contemplating to move my information consumption back to a
purely paper based approach as long as this is still possible. After all, good
newspapers and magazines do a good job at curating the most important
information for me. The fact that this way, "news" arrive with a little delay
at my desk, doesn't make me less smart on a higher level. The only useful
information on the net (useful in the sense: makes me money and saves time) is
purely job related stuff. But the net makes it really hard to only read those
parts... I still hope, I can find a good balance on the electronic world one
day.

------
pavlov
I feel that programming is fundamentally similar to other writing in that
there are more and less research-oriented "subtypes" of writing and writers.

If a journalist is writing a 1-column newspaper story about how the European
Central Bank's latest meeting affects banks, that's clearly a research-
oriented piece. Probably she will spend more time on discovery of facts and
stakeholder opinions rather than actual writing.

On the other hand, a writer working on a short story may do very little
research. Fiction generally builds on life experience -- it's very hard to
write a heartfelt story on a topic that you have to constantly google up.

Something similar happens in software, at least to me. There's some coding
that requires constant online research and browsing... But then there's the
other kind where I know my tools already, I know the project is possible based
on previous experience, and I can just sit down and start writing. IDE
autocompletion and one-click access to relevant API headers often ensures that
I don't need online help for anything.

I like the latter kind much more. Research-oriented coding makes me feel like
I'm some kind of junior API lawyer. The other kind is more like making a
painting: you're slowly building up something that might be good but you also
have to accept that it will look like shit at many stages. That solitary
exploration is the reward to me in both painting and programming.

------
joemi
My problem with with trying to learn programming back in the mid-90's (my
first attempt at programming) was that I couldn't find any books that I could
really get into and truly learn from. I knew I should be able to figure it
out, but things weren't clicking. I'm sure that had to do with the quality of
bookstores in rural NH at the time, but still, it was horribly frustrating to
drop a bunch of cash on a few books that seemed pretty good in the store only
to get home and realize that after the first chapter or two I felt completely
lost and hopeless.

Fast-forward to my second attempt to learn programming ten years later in the
mid 00's, and between the sheer amount of tutorials/ebooks/other random things
online, I was able to pick it up very quickly, the way I always figured I
should be able to. Part of that was definitely the shift to higher abstraction
levels for a lot of things, but I firmly believe a large part was that I was
able to much more easily find instruction that worked for me, rather than
having to choose from just a few limited options.

Because of that, I have no real fond memories of programming before google,
and I owe all of my ability to the programming-with-google world. (That said,
I have extremely fond memories of the communities on the BBS's I frequented
back in the day!)

------
lanevorockz
A bit surprised with the view of Code Googling, imho it boils down to deep and
shallow knowledge. Even though results are quicker when googling you will
never find optimal solutions for your problem or not even necessarily
accurate. It was a bit more painful before but the diversity of solutions was
immense and solutions were optimized for the problem at hand. It's a good
thing to make programming more accessible but it's not the necessarily the way
to go for all programmers.

------
markbnj
I was one of those guys in 1990... heck I was one of those guys in 1983. But I
don't really romanticize it. I still have three shelves full of books,
including some classics like the 3-vol. Knuth, Abrash's Zen books, the ARM of
course, as well as the C++ essentials (Lippman, Meyers, Eckel, etc.), gang of
three patterns books, and quite a few others. I spent thousands on books, but
I haven't bought a book on programming in something like ten years now. I once
paid $140+ for an IBM manual on programming the PC VGA chip. I'm sure I still
have it in a box downstairs. I also paid $700 for a 9600 baud modem, and
regularly forked over $400+ a month to Compuserve, where I spent time with
other geeks on the Computer Language and Dr. Dobbs' Journal forums.
Interesting times.

It's worth noting that one of the reasons search is in general so important
these days is there are so many more things we have to know. If you weren't
actually working in those days then you don't realize how comparatively simple
it was. There was more complexity on a micro scale, because we were writing
compiled code w/o the benefit of all the high level abstractions available
now. But on a macro level things were much, much simpler.

------
rmtew
When I programmed in university pre-2000, I used gopher in place of google.

Applicable matches were limited to source code file search, which gave
examples of function calling out in the wild. There were no books of use
available, and the documentation was often vague and incomplete man pages.

------
joneil
This reminds me of Derek Siver's post about memorizing a programming
language[0]. If I start working in a new language or new framework full time,
I find it really helpful to be deliberate about learning the things I'll use
regularly, to reduce the dependence on Google for common API calls etc.

Like others have said I've found that programming on a flight or long train
ride is super productive, especially for starting a new feature where I'm
writing fresh code (as opposed to debugging existing code). For some reason
I've rarely translated that into deliberately using "flight mode" when I need
to focus.

[0]: [https://sivers.org/srs](https://sivers.org/srs)

------
zwischenzug
I find this interesting, as I recently completed a book (1).

My co-author (much younger and smarter than me) mentioned while we were in the
middle of writing it that he'd 'never read a computer science book'.

I had to reflect on how much had changed in 15 years of software development.
When I started I was using Dogpile to search for 'documents' on the 'net
(which had an apostrophe then) while balancing a 'learn C++ in 21 days' book
on my knee.

So 'coding without books' (and coding well) is already more than possible.

1) [https://www.manning.com/books/docker-in-
practice](https://www.manning.com/books/docker-in-practice), since you ask.

------
bechampion
Wouldn't be a great idea a VLOG of someone coding without internet at all ,and
talking about the pros and cons?

Once I moved to a small town , and I didn't have too much money for proper
broadband , so I had 2 hours of dial-up every day.

I remember using that time much more efficiently and trying to download PDFs
and such for the following hours , a lot of the things I've read in books/PDFs
then I still remember today after 10 years. (Basic unix IPC and others)

Some of the things I've read online yesterday I don't remember today ha!

------
asakurasol
I semi-experienced this last year when I was teaching coding in prison. For
obvious reasons prisoners weren't allowed to have internet access, their
learning entirely depended on outdated learning manuals and tutors.

It was hard, though it became clear very quickly which books were actually
written for beginners even though all of them said "introduction to blah blah"
or "foo bar for beginners".

------
alexroan
I felt like I was doing a degree in google-ing at one stage, but I don't
believe the speed and complexity of development nowadays could be matched by
the pre-broadband days. Communities can be brought together on sites like
Stackoverflow and people who aren't experts in certain fields can just google
it, and implement something in minutes that would take much much longer to
find, then learn, pre-google.

------
therealmarv
With that program you even download an offline version of Stackoverflow. Just
download Dash [https://kapeli.com/dash](https://kapeli.com/dash) and make all
your coding docs offline available. It's really impressive for coding/working
without Internet connection. UPDATE: Did not know about devdocs.io Seems like
an opensource version of Dash.

~~~
girvo
Yeah. Dash is brilliant, though Zeal[0] is the real FOSS Dash ;)

I adore Dash though, and honestly reach for it (with a tonne of docsets loaded
into it) before I reach for my browser these days. Extremely useful,
especially when doing work with very well-defined APIs.

I do a lot of personal programming on public transport, and while I can
tether, to be honest I prefer using Dash and keeping my computer mostly
offline if I want to focus.

[0] [https://zealdocs.org/](https://zealdocs.org/)

~~~
partycoder
I came here to post the same thing. Now, some projects do not have their
documentation wrapped in Dash docsets.

------
Ensorceled
All the people romanticizing the good all days need to write CAD/CAM software
in Fortran IV on an IBM 360 with nothing but the five thousand opaque IBM
reference binders and a couple of college texts on computer graphics. To a
deadline.

The real "joy" was posting a problem on the comp.lang.c and praying Dan
Bernstein or Henry Spencer was online and would answer sometime in the next
day or so ...

------
groovecoder
To fight distractions online and stay in a coding zone, I use RescueTime and
set limits on time spent on distracting sites. Like hacker news. ;)

------
nurettin
>I could focus better on the ideas and on the code. Now, with so many
distractions you need to be more resistant and self disciplined.

I think it is about the task at hand. When I try drawing 2D spaceships and
adding keyboard controls, it is a flowing experience no matter what tools I
use.

When I start solving bugs in compression libraries or debugging million line
code bases, it is all pain, frustration and google.

------
rukuu001
God, I remember hunting up the various Inside Macintosh books in the mid-90s.
I finally found some in the library of a tech college.

"No, we don't even let our students take those out of the library."

So I made hand-written notes, went home and tried to use them. It was slow
work and I didn't get very far.

I much prefer Google. I just read whatever I find with a much more critical
eye.

------
xufi
This reminds me of the time when I first started getting more into computers
around age 13/14 and learned HTML when I had limited bandwidth dialup. I had
to push myself to test things by going over to someone overs house and then
tried my best to get the concepts down

------
KennyCason
"I often downloaded pages with tutorials, so that I could read them offline
later." \- So true.

------
tacone
> I believe that offline experience that I had in the past was a good thing. I
> could focus better on the ideas and on the code. Now, with so many
> distractions you need to be more resistant and self disciplined.

More disciplined === better programmer. The Internet is doing it right.

------
shams93
I got into java pre google my mac didnt have enpugh disk space for code
warrior but the jdk was tiny enough to fit on my mac performa with its 250 meg
hard drive. Wrote my thesis project in java 1.0 java was horrifically slow
back then but the jdk was really small.

------
cmrdporcupine
Coding with Google at your side is great, until you have to interview on a
whiteboard without access to Google... while interviewing at Google.

------
dmh2000
i remember back in the day when you had to order paper reference books and it
took days to weeks to get them, or for the supposedly free ones you were
denied because your need/qualifications were somehow not right. And you simply
could not proceed without them.

------
unexistance
related :
[https://news.ycombinator.com/item?id=11700640](https://news.ycombinator.com/item?id=11700640)

older :
[https://news.ycombinator.com/item?id=7516914](https://news.ycombinator.com/item?id=7516914)

------
hyperpallium
A huge difference between programming Before Google and now is the explosion
in libraries/frameworks/APIs. With arbitrary undocumented "features" requiring
obscure setup and workarouds. Google gets you to actual programming faster.

------
tunnuz
Point made, I'm reading this instead of coding right now.

------
gkanai
Come to China. No Google here!

(You can get to Google with a VPN but...)

------
thallukrish
Actually there is a difference between gluing pieces of code and making it
work and writing algorithms that solve hard computer science problems.

------
known
Good coders code, great - reuse. :)

------
pmontra
I learned programming on a Sinclair ZX81 with the manual of that computer. I
think it was called Timex in the USA. There wasn't much that could be done on
that computer so the manual was more than enough. Exception: machine code,
which needed another book. With two reference books I could do basically
everything.

Fast forward to today. I would need a reference book for every language I use,
possibly more than one per language (core language, standard libraries, etc),
plus one reference for every library (jars, gems, node modules, ...). This is
both inconvenient and impossible.

Inconvenient because I would need a bookshelf of, how many? one hundred books?
And good luck doing it on a train.

Impossible because how could the author of Random Library XY n.0 publish a
reference book for at least every major version of it? Software development
would slow to a crawl (but maybe there won't be JavaScript fatigue and the
like.)

The solution would be something close to what I did out of necessity in the
early 90s, pre-web: download the manual of the program or of the library and
maybe print it. I remember that reading a manual from the first line to the
end meant that I really knew what that library did. Now it's more like I
google for it, load the page, CTRL-F for the concept I'm looking for, try it,
it works -> done, it doesn't work -> google more or look for another library.
Shallow knowledge of hundreds of libraries vs deep knowledge of a handful of
them.

Some languages enforce or facilitate writing documentation inside the code and
distribute it. Example: Ruby gems usually install the rdoc so you have local
documentation fore every gem you download and can use it offline. However
getting to the rdoc for one among the dozens of gems I could be using in a
project is slower than getting to its README on GitHub, which maybe is the
only documentation there is. Can maven download the javadocs for every jar it
gets? Apparently yes but I googles for it :-) [1]

Finally, looking on the ruby-lang site for that method I seldom use in the
Enum class is much faster than turning pages in a book.

And this is when everything goes well. When you have errors (not the easy
ones) good luck without googling the answer. You could waste days
understanding what's going on. Either you end up with intimate knowledge of
every piece of software you're using or you give up and find a job in another
industry. Again, software development would slow down to a crawl.

So... there is no good alternative to googling with the exception of very
short sessions when you want to be totally focused, you know very well every
piece of software you're working on (maybe you use other software of yours as
a reference) and there are no surprises.

[1] [http://stackoverflow.com/questions/5780758/maven-always-
down...](http://stackoverflow.com/questions/5780758/maven-always-download-
sources-and-javadocs)

~~~
sklogic
Far better solution is to supply documentation with a library. Also, there are
such things as docstrings and literate programming.

Also, there are still areas where you can be pretty much on your own and do
not use any external libraries.

------
ry_ry
Coding without searching basically boils down to coding without docs, and that
seems pretty self-defeating.

Sure - If you just can't resist Stack Overflow's dubious charms, or find
yourself updating your LinkedIn profile three times a day then cutting the
hardline has some merit, but they aren't inherently programming issues.

~~~
Jaruzel
> Coding without searching basically boils down to coding without docs, and
> that seems pretty self-defeating.

He does mention though, was that back in the day he used programming books,
which would have contained example snippets explaining most problems.

I started coding pre-internet. All you had was your text mode IDE or editor,
and if you were really lucky, it had a basic searchable help function that you
just kept attacking with keywords until you stumbled on a function or
principle that solved your problem.

These days, everyone goes to the top result on StackOverflow and looks at the
answer, then thinks 'ok, that'll do' without actually seeing if the answer is
actually the most optimal. Pre-internet, without that level of group-think,
there'd be multiple ways to solve problem X, and each programmer approached it
differently. Some methods would be good, and some bad, but by working it out
yourself made you a better coder in the long run.

This is why I think that older programmers have better analytical brains due
to their long history of not being able to 'just look it up' \- you had no-one
to help you; if you couldn't solve it yourself, it didn't get solved. I lost
track of the many early ideas I abandoned because the routines needed were
beyond my coding ability (for me, graphics coding was/is my Achilles heel). Is
that a good thing or not? I don't know. But what I will say is that starting
to learn to code with the internet at your fingertips, may make someone a lazy
coder, but it's hard to ignore that infinite well of knowledge...

~~~
jon-wood
> These days, everyone goes to the top result on StackOverflow and looks at
> the answer, then thinks 'ok, that'll do' without actually seeing if the
> answer is actually the most optimal.

Maybe some people do, but I don't know anyone good who does that. They might
go to Stack Overflow to get an idea of what direction they should be heading
in, but they'll then use that information to build a solution that fits the
overall system they're working on.

~~~
Jaruzel
Agreed. I was generalising to make a point. I do think though that a LOT of
'coders' out there are just adept at copy-pasting.

