Learn Programing By Copying
I finished this programming book and I still don’t feel like a real programmer. What do I do next?
This is a question that I get asked a lot having been involved in LaunchCode STL. There are a million things to learn, but we all have to start somewhere. Most people start with a book that takes them so far and then drops you off in the middle of nowhere when you’re finished.
The answer to that is actually remarkably simple: I tell people to build software they would use.
Most people seem to mistake this advice for something that it’s not. I typically start hearing ideas for software they wish they had. Things that don’t exist. But you don’t have to build something new. Of course that is your goal but that is not what I told you to build.
To clarify, I’m saying that you should build your own version of the software you use every day.
Do you use url shorteners like bit.ly or Twitter’s t.co? Build your own.
Have you ever used a pastebin like like pastebin.com? Build your version.
It is up to you to fill the gaps. For me, I wanted to become an expert web developer so I sat down and built my own web server. I built a Java app that listened to port 80 and served up files just like Apache or Nginx would do. The time I spent building this app was filled with acquiring such deep understanding of the web that I could not have gained any other way so quickly.
Build something without the help of any libraries and you will learn programming. You have to in order to complete the project and guess what? It is stuff you use every day so you know exactly how it should work.
You have the best understanding of how this software functions so replicating it on your own means that you can understand the ins and outs of it without the overhead. There are no requirements to deal with. You get to purely focus on the art of programming and that’s it. This is what you’re trying to do right now.
Conclusion
So if you are teaching yourself programming, take a step back for a second and look at all the software you use on a daily basis. That is a whole lot of stuff to take for granted.
Everything from your web browser down to the operating system and boot loader. Every single piece was designed and written by a software developer that probably isn’t smarter than you, they just had experience.
You want to learn how the best programmers in the world work right now? Copy their work and you can peer into their minds and understand exactly how they think.