When I was 11 years old I decided that I wanted to be a hacker. Yup, a real hacker. I had no internet, no high end computers, no dual screen setups like you see in movies and pictures. All I had was a simple Core 2 Duo, 2 GB RAM system but I still wanted to be a hacker. I knew not the first thing about hacking or programming. I had a few books on programming and computers at home but they were mysteries best left untouched. Besides, I wanted to become a hacker not a programmer.
My journey started with a very, very bad book. Nowadays, people would refer you to “Hacking: The Art of Exploitation” or some other book on hacking but with no internet and no hacker friends, I was totally in the dark. I, however, read the whole book and did every exercise it had but unfortunately I did not succeed in hacking Pentagon though I did come to know what hackers basically did; which was also wrong of me to assume. You see, I believed that hacking was all one-click-do-all thing where the hacker would already have all the software with nice UIs and…I know, silly of me.
So what did I gain by reading such a bad book? Well, it introduced me to a higher level of computer understanding but with no internet and no resources, I couldn’t actually do anything with that understanding. Programming became a little less mysterious and those books became a little less daunting. One day, I actually opened one and to my great astonishment it was written in English; in simple readable, understandable English! You must think me a total idiot.
Again with no mentor and no guide, I chose the wrong book to begin. It wasn’t as bad as I thought so it all worked out eventually. I consulted multiple books, worked all night and eventually after a year of C++, I could make a fairly good program but I migrated to C# because I wanted to create desktop apps. I loved programming and loved being a programmer.
Now the problem with programming is that it takes time. More so after you start creating real apps and that is, especially, frustrating when you are still in 8th Grade. I won’t say that programming did not effect my studies or that I had plenty of time to develop apps. Nope, it effected me, my health, my mental prowess and my whole life in a way I did not expect. I won’t go philosophical on you so forgive me for not explaining but don’t be afraid of the change, sometimes, it is for the better.
So how do you learn programming with no internet, no guide and a simple lousy computer? It’s simple, really.
Choose a programming language:
Quantity leads to confusion, lack of attention, too many distractions and eventually abandonment. Click To Tweet
Every programming language has its own purpose. Choose one and stick to it and keep learning it until you become a pro. The common mistake of all newbies is that they try to learn as many languages as they can. Quantity leads to confusion, lack of attention, too many distractions and eventually abandonment. Here’s a short list of most used programming languages:
C#, C++, JAVA, Python – Desktop & Mobile Development
C, C++ & Rust – Low Level Development
Swift & Objective-C – iOS Development
You can get a C/C++ development environment with a 14MB download (though it’s admittedly rather ancient), which you might be able to manage at a library. It’s probably a lot harder to get any of the other development environments without an internet connection.
You can download the Python documentation to view it offline. You can install monodoc for C#, but that requires you to get a number of packages that aren’t installed by default. For C on Linux, you have manpages, but that’s not super easy to navigate.
Learn as you go:
Too much time with tutorials and books will do nothing but bore you. The best way is to explore, experiment and invent. When I migrated to C#, I started without a book or a guide. I can tell you, it is the most beautiful experience in programming. There are quite a few things you can learn if you create rather than imitate. Most developers out there start with tutorials then read a few books and after a year or two of writing no apps or software, they give up. You need motivation and the best way to be motivated is to progress.
Don’t create unique apps:If you chase after uniqueness, you will never complete an app. Click To Tweet
When I started working on Macalifa (now known as Bread Player), my friends and family asked me what was new in it. I used to think that it was special, that it was different but let me tell you a truth: there is no unique app. All apps have already been made, you just need to create better apps, not unique ones. If you chase after uniqueness, you will never complete an app. Instead, create an app that helps people or something that is better.
This problem is, fortunately, solved for those without an Internet connection. Without an Internet connection, it’s hard for you to download programs. This means it matters a lot less that your program is a duplicate of someone else’s — you create something that solves your problem in part because you can’t get that other program you’re duplicating.
Keep your work Open Source:
Okay, let’s be honest. This requires Internet but don’t ignore this, it will come useful in the future.
When I started creating real apps, I never thought open source would matter so much but soon after I open sourced Bread Player, I realized what a great weapon this can be. You don’t need to open source a Linux level project just any project, however small, will do.
In the beginning, everyone wants to earn money fast and easy but believe me, no one knows you and no one cares for what you do. Build a profile of your projects on GitHub, Bitbucket or any other Git source so that people know that you exist. This is better than building a website because it takes much less time to maintain and is totally free.
Open source is a community so you get to meet great people, maybe attract some contributors to your project and if you are really lucky someone may hire you too. In fact, open source is the largest community of developers where you can learn a lot if you desire it.
Work on multiple projects:
I worked on a single project for more than 3 years and I can tell you it is not easy. Having a single project to work on saturates you like nothing else. Instead having multiple projects will keep you going always. If you are bored of this project, start that one. This way you will always be progressing, always be making apps.
However, the greatest thing about doing multiple projects is that you learn the fastest way. You have multiple point of views, multiple sets of problems, multiple ways of fixing them and, eventually, multiple points of motivation. As of writing this, I currently have more than 5 apps under development and very soon I may publish one so that others may benefit. 😀
Start programming in your thoughts:
Good developers think, dream and speak in programming. If you give me an idea, I won’t think of it as an idea. It will already have been turned into an app. Coding is thinking in code, dreaming in code, speaking in code. Once you have accomplished this, you are truly a developer.
You don’t need an internet, a guide or a goddamn printer to program. Stop making excuses, stop dallying and start developing. I am no model of modern programmers so don’t take me on my word. Try yourself, learn from your mistakes and keep this in mind that the world doesn’t need you but you can make it need you. Begin today, succeed tomorrow.
Special thanks to tkannelid for their thoughtful contribution!