Some time ago an intriguing article appeared on Reddit: "Do Experienced Programmers Use Google Frequently?". The author discussed if expert program...
For further actions, you may consider blocking this person and/or reporting abuse
The problem for me or not the distractions, but the fact that the information is so fleeting when you look it up on the web. I always feel a little sting of shame when I have a basic problem I know I've solved before, but have to look it up on the web again because I forgot the syntax. This might even happen multiple times, especially when the answer can be copy-pasted from stack overflow directly.
I recently read as a sidenote somewhere that inexperienced developers simply copy paste stuff from stack overflow without understanding it, and I had to admit that even though I consider myself quite experienced, I do not even try to read the code most of the time. As a result I started to try to at least read and understand the code I was copy-pasting and that has helped me to learn more from googling for answers.
Where the internet has helped improve my coding skills, was when I started to read open source source code.
So as a whole, I think the Internet has helped me improve on some levels, made me lazy on others, and sometimes it's the way I use it that makes the difference between help and hindrance.
One thing that's helped me when StackOverflow has the perfect piece of code, is to force myself to manually transcribe it instead of just using copy-paste. I have to pay more attention to how the code actually works and I get a more immediate opportunity to customise it to the project I'm working on.
If you paste code in without understanding it, how will you maintain it when you have to make a change in a couple of months? How do you know it doesn't have bugs, or a condition which will have a knock-on effect in your program?
I cannot fathom why anyone would use foreign code like this when it's not at least black boxed into its own library.
I have a makeshift rule that "I will not reuse code I do not understand". If I'm going to copy-paste something, it's going to be after I spend an extensive time actually learning and understanding exactly what it's doing. It made life hard at the beginning. Then my own knowledge started to grow at a very accelerating rate compared to before, along with the fact that debugging issues became a breeze because I immediately know what's wrong. Even if not immediately because of a more complex issue, it's still actually solvable in a much more timely fashion!
It took me two years, three distinctly different projects and technology stacks, and countless tutorials + reading + Stack Overflow visits to finally get to this stage. Just keep at it, it's definitely worth it in the end.
I really like thinking about this, but my workflow is almost completely tied to Google and Stack Overflow now.
This one time, I didn't have Internet access for a couple hours and it almost broke me. I'm not sure what the policy is on self-promotion here, but I wrote a stream-of-consciousness style blog post about the tribulations.
Ultimately, I don't keep in my head a lot of the detailed knowledge that you need to write code, it's offloaded into the cloud. My workflow involves a lot of cache misses and trips to the Internet to look up syntax, core APIs, and Unix command usage. And it pretty much always has. To the point where I can't even write a blog post in markdown without Googling.
Here's the thing - you're in earlier stage of programming.
I had this phase as well, but i kept at it, and kept increasing sizes of projects i do - eventually (granted your brain isn't damaged) - neural connections will store all constantly-reused info. it's like with typing or any other repetitive task - our brain is good at storing that info.
Just keep practicing.
Full Disclosure: I am ancient, not all that wise, but have stuck with things since 1989.
The first time it's research, the second time it's engineering.
Taken from one perspective, the interwebs offers great resources where you can get up to speed, rapidly. In theory, no need for failure, struggle and head banging as you can glean important details from other's experience on Stack Overflow, review good code on GitHub, read blogs, etc. How useful this is still depends on the level challenge you are facing, and how diligent you are at understanding the code you chose to implement. In other words: do you really know what that code is going to do that you just pasted?
Here is an alternative view, and comes from an interview that I recently had where I didn't get the job. In many respects I was interviewing the company as well, so the thing happened as I wasn't offered the position. The question I was asked was this: what sources do you use online?
I answered honestly, and said the first thing that came to mind: Well there's lot's of resources like Stack Overflow but to be honest there's a lot of noise out there. I try to sift through it all, but to be honest I tend to be skeptical.
I was one the first beta testors of Stack Overflow and followed Jeff's experiment as it blossomed into something amazing. I have a decent rating, but quite frankly I don't what it is, and am not impressed when people wear their badges. Skepticism and trying things for yourself and struggling is one of the best teachers. All those mistakes build a foundation.
In the end it's up the individual to go back and judge themselves, and yes, look to others for guidance.
Back in the 80's and early 90's I hauled around a few massive "cookbook" tomes. In the mid 90's to the early 00's, I hauled around large CD binder with MSDN and other books on CD. Now, I just have my work PC and my phone. I'm glad I can find the same info plus a whole lot more online today.
So far as online distractions, I'm pretty good at staying focused on the task at hand. I don't answer Stack Overflow questions or get involved in forum/blog discussions when I'm working on a program. I save that for off times.
For me It will be like this when coding to solve a problem:
So in the entire journey i used Google 4 times. That is more, but it keeps my productivity levels high. If Google is not there i'd look up to JDK JavaDoc, some offiline HTML help, talk to a senior.
Cheers!
Nice article! I do indeed remember those days when I was less tethered to the World Wide Web :-) I actually think those days impacted my learning style and, to this day, I still like to immerse myself in written content/physical books.
That said, I do feel more productive and rounded in certain ways when I can find answers swiftly and confirm assumptions I am making with a large community. Sometimes I feel completely at home in some online tech community and other days I feel lost, like I can't keep up.
I guess whereas in the days of yore I felt like I was learning from a handful of masters of my craft, these days I feel like I'm standing on the shoulders of millions of giants in our space - and it is a diverse set of folks too. That is a nice feeling.
PS: I believe my first programming book was Waite Group's Turbo C Programming for the PC send to me from the USA by my big brother. :-) I hope I still have it #Nostalgia
I think this is a question of what I'm working on. A new field of study (currently js and UI) requires a greater amount of information input for me to get my hands around the concepts and tooling. Once I've established a baseline of understanding and I simply have less questions then the rate of query decreases.
I love reading through other people's code examples and their approach to problems and I'd like to think that it keeps me from developing really bad habits. If I were isolated I'd likely fall into a heap of anti-patterns that seemed to make sense at the time. I can think of more than a few of these that more experienced friends have pointed out to me about arrays in JavaScript and I'm better off having my mistakes pointed out.
I'd rather have the connection there and make my own choices about when it's best to use it, when it's best to keep beating my head against the problem, and when it's best to just take a walk around the block and come back to it.
Dealing with distractions is a constant practice in daily life and in work. I try to cultivate discipline actively. Some of that is in the environment setting; turning off notifications, clearing my work space and getting a good cup of tea at hand. Some of it is inner work, gently pulling myself back to the task at hand when I am wandering off, allowing space for breaks and extensively Pocketing interesting technical bits that I'm not currently working on.
I figure it's going to happen; I'll get distracted. So I've designed a workflow that neither punishes me for it nor allows it to become the all consuming time suck it is likely to become if left unchecked. I just try to let it be a natural part of working in the hive mind.
Very nice article Bartlomiej you remind me how I got started as well, the steps were similar if not exactly the same! The love about programming from the beginning, the "gamer" who wanted to be the creator and all that...you really moved me! Keep up!!
I totally agree, as reading this has also been a distraction. Done, I’ll unplug the cable now :)
But...wait, I can plug it back in :(
I guess that we need some sort of outside control, like a big brother, which you can instruct to kill your internet connection between this and that hour, without any exceptions. That’ll do!
Being from the same country I can completely relate to your experience :)
I started my programming journey from the bottom up. First language I was writing in was x86 assembly. I had a computer (486SX;)), a book, a notebook (paper one) and a pencil. The thing was the computer was there for me only during weekends, so I had pages of assembly code created after school from Monday-Thursday, which I typed in from Friday to Sunday.
This was slow and difficult, but I had lots of time back then, and I could think over some things. Finally, when my assembly code started to look like regular C, I moved to C.
The internet was precious and expensive, I used dial-up connection to download programming tutorials and read them offline. Every minute (or rather 3 minutes) counted ;)
I miss these times and I know that I do, because I was young and responsibility free, not because it was better back then.:) Although there is limitless stream of information and resources available now I think we are getting more and more lost.
I think this is a great post, I agree when I encounter a problem in which I need to double check the API for, however there are plenty of offline documentation apps out there
Actually google, stackoverflow are connected to my workflow too. I think it isn't bad thing so it makes me work fast, find the best solution. But I'm agree it has bad sides.