Some time ago an intriguing article appeared on Reddit: "Do Experienced Programmers Use Google Frequently?". The author discussed if expert programmers use google more often than novice coders. He mentioned than using google is actually a good thing. It helps to find the best solutions, validate ideas, speed the development. Google nowadays seems to be a crucial part of any developer toolbox. That reminded me of old times.
This post was originally posted at my blog: Bartek's coding blog: Coding without Google
I got my first computer when I was around 14 years old (in the year 2000). The specs were pretty decent at that time. If I remember correctly, it was something like Celeron 500mhz, maybe 256mb ram, 20gb HDD, Riva tnt2 Vanta. What's more important, there was no network connection! Some of my friends got their 56k modems, but it was not that common. Also, it was relatively expensive to surf the net that times... not to mention the great download speed! :)
After playing some games, I started reading some programming books and experimented with C++ language. Instead of playing games I actually wanted to create them... especially the graphics. Without an internet connection, I couldn't just google for tutorials or solutions. Was it that horrible?
How did I survive those days then!? It wasn't that bad, to be honest.
The first compiler that I used was Borland C++ with a nice Windows IDE. I bought C++ in 24h by Jessie Liberty and I got immediately drawn into all of the programming ideas I could find there. I read the book and tried to recreate examples, modify them, write my ideas. Chapter 19 Was about the list data structure. I remember being so proud of myself when I understand the principles behind it!
I could just focus on that book and learning.
Then I started doing graphics. In the first place, there was
<conio.h> with an amazing color mode for console apps! After that, I've discovered
<graphics.h> header from the library called BGI - Borland Graphics Interface. Now I could really play with individual pixels and use more than 16 colors! I learned what is the update loop pattern and why it's so powerful technique. Before that my space ship on the screen would freeze if there was a missile animation in the process.
I could just focus on the library.
My workflow updated after a year or two. From time to time I went to an internet cafe and we had also a connection at school. Eventually, I got a modem for my home PC! I won't lie that I didn't spend a lot of time being not productive. Just browsing the net. But still, it was a limited experience when we compare it to our current state. And the cost for an hour of browsing was still high. There was no Facebook, Twitter, or other social media. I often downloaded pages with tutorials, so that I could read them offline later.
At some point, I stumbled across a great library called Allegro! This was another breakthrough in my development experience! I spent a lot of time coding in the library. After getting a bit comfortable in the API I started to realize my ideas - I had a lot of them at that time. Problems with a bazier path for camera movement? I simply sat down, tried to understand the problem, use a lot of paper, experiment... Finally, it was working. Continue until all ideas are in a decent state. You could recently see my updates to Matrix, the demo that was created in those semi-offline times.
I could just focus on my ideas. But some distractions started to appear.
After Allegro I learned OpenGL 1.1/1.2. At that time, I had more or less full internet connection. My workflow wasn't radically changed. I could focus and just play with the code and graphics. Still, there were a lot of online incentives.
What was the main advantage of being partially offline? I could focus better on my tasks.
How would it look like today?
I hope you don't do it, but sometimes in my spare time, I sit in front of my computer with some great idea to implement. Then, instead of doing it I browse the net, I check statuses. Fortunately more often I try to block it and start the task I planned (the task can be still some online activity).
But let's not be so pessimistic! With the internet, I get access to huge amount of good content. A tutorial needed for some strange technology? Just type it in the address window. A solution to a programming problem? Go to StackOverflow. Need some programming/software news: go to Reddit.
Depending on the technology you use you might need more net resources or less. For example, I don't imagine going to some offline MSDN documentation (I remember installing that back then in the early versions of VS!). Now I simply type "msdn:... " and visit an online site.
With tons of good stuff out there it's worth to be a bit resistant to all the distractions. I wonder if I had learned the same things if I would have had today's net connection.
Was I slower in those offline (or semi-offline) days? IDEs weren't that advanced so when I wanted to invoke a function I probably needed to look at its file header. I could find it quickly in a pdf/chm with help for the IDE/Library. So it was not that slow...
I believe that the 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.
Lessons: Maybe it's good from time to time to disconnect and be offline? Could we just code and be quicker in the flow?
- Do you cut off the connection when you want to work?
- How do you fight with online distractions?
Bartek recently published a book - "C++17 In Detail" available @Leanpub - rather than reading the papers and C++ specification drafts, you can use this book to learn the new Standard in an efficient and practical way.