A year ago I had a basic grasp of Python and I knew some HTML and CSS. Two weeks ago I published my first proper Android app and I’m being offered jobs as a web developer. This is how I started learning programming.
A year ago my knowledge of programming was rudimentary. I did the codecadamy courses, did a few tutorials on HTML and CSS, and that was it. I knew how to modify my WordPress photo blog and nothing more. While I always had an affinity for logic and how things work, as a student of social studies, I never actually came into contact with programming.
However, that changed when I was installing a custom ROM on my Android phone. The operation was quite simple with an easy to follow tutorial. If I successfully changed my phone’s operating system, how hard is to create a simple app for it? So right then and there I decided to learn how to program Android apps.
How do I get started with programming? Probably the most important and most often asked question. I spent hours searching for tutorials and guides on where to start. After a while, a learning plan started to take shape. The plan consisted of not just the things I needed to learn to make a simple Android app, but also the fundamentals of programming that would help me in other areas as well (especially web development).
The plan was simple. Learn programming principles and its fundamentals. Learn about clean code and working with others. Then learn how Android works and put it all together in a simple app.
- Learn programming
- Learn the Android SDK
- Create an app
Putting the plan in action
The plan was set and off I went. I spent the first two months on this Stanford video on introduction to programming. It focuses on Java which was perfect as Android uses the Java programming language (killed two birds with one stone). I also grabbed a couple of Java books and did all the lessons in them, and I even watched all of the Clean code videos (even those that I didn’t understand at the time).
Once I knew the basics of programming and Java, I started learning how the Android SDK works. That was really really hard to do. It took me a couple of months just to learn the basics of how a simple Android app works. The whole ordeal was time-consuming and stressful, but seeing my apps actually working on my phone, was awesome. That kept me going. That was the only thing that kept me going.
Then it clicked. It all became super simple. I knew where to look for solutions and how to code them. In the next couple of months, I created several personal apps: a Dungeons and dragons app that taught me how to use fragments; a WordPress app that taught me networking and APIs; a Tetris app that taught me simple game development. Programming became fun and simple and something I wanted to do as much as possible.
I never thought myself being a programmer, so publishing my first app was a weird experience. I felt as an imposter because I used StackOverflow, tutorials and code snippets from other people. Then I realized that the only thing that matters is the finished app. So I published WordRefresh, a simple app that shows you words and their definitions. The app itself is not important – the important thing is that I successfully learned how to develop and code Android apps.
My learning plan actually worked.
What I learned
It’s been an interesting year. I learned that the most important lesson is successfully balancing the three main resources every person has.
Finding time to learn is hard. In the past year, I completed all of my college classes, got a job, went through 3 intense relationships and had knee surgery that confined me to a bed for three months. You have to find time to learn and actually code. I coded while my League of Legends game was loading. Five minutes here and five minutes there, it adds up.
Learning how to program is hard. You will spend hours searching for simple solutions and the most basic of logic. It’s a fact. You have to learn to walk before you can run. First you learn about printing statements to console, then you learn how to do network calls and SQL queries. Master the basics, then branch out. Don’t rush it.
Being motivated to learn is hard. You will get stressed out on simple things. Debugging is as fun as self-inflicted paper cuts. Failing at simple tasks is disheartening. So set yourself small goals that keep you motivated. You just fixed a bug? Be proud. You’re awesome. Then try to fix another one. Take care of your motivation, because it’s pretty important when every simple problem takes hours to solve.
A successful learning plan balances the three main resources. Having time without motivation is procrastination. Having motivation, but no time, is stressful. Break down things into simple, easily achievable chunks. Then do them.
I am now a programmer. I’m making a career out of this stuff. Even though my initial learning plan is complete, learning how to program is a neverending task. Onwards and upwards.
It’s been hard, It’s been stressful and it’s been the most fun I ever had.