r/learnprogramming • • Dec 04 '13

How I learned to develop Android apps in less than a year

Here's the link to the blog post on my website (no ads)


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.


Background

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.


The plan

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.

  1. Learn programming
  2. Learn the Android SDK
  3. Create an app
  4. ???
  5. Profit!

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). Check out the tutorials for a list of other helpful resources.

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.

Time

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.

Knowledge

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.

Motivation

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.


Final thoughts

I am not a programmer, and I feel awkward when people say that I’m a developer. I’m just a 25-year-old dude that was bored and likes doing tutorials and learning new things. Now 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.

*edit

Fixed the broken Stanford link.

1.2k Upvotes

238 comments sorted by

219

u/[deleted] Dec 04 '13

Dude. You ARE a programmer. You know how to create a functional application on a computer, through a combination of your OWN code and by utilizing the resources available to you.

You are an architect that has put the pieces together. You are a builder. You are a programmer.

59

u/poopMachinist Dec 04 '13

Yeah! Never looked at it that way. I agree with you, but it's still a wierd feeling for me :D

→ More replies (11)
→ More replies (7)

39

u/Jsnoopy93 Dec 04 '13

Good shit man. Just wondering - how do you get ideas to start an app? I feel like starting is probably the most difficult thing to do.

58

u/poopMachinist Dec 04 '13

You have to think in terms of simple needs and wants.

My first app solved a simple need I had. I started playing Dungeons and dragons and I didn't have a dice set and I always forgot to bring a pencil to my sessions.

Created an app that rolled dice and kept a character sheet. Solving a personal need kept me motivated to keep learning. Win win situation :)

→ More replies (22)

9

u/allonsyyy Dec 04 '13

I had an idea for an app today, you can have it. A couple of people that I work with play the lotto, I pitch my two dollars in whenever they do a group one when powerball gets really high. They photocopy the tickets and hand them out but it's a pain in the butt and I never bother looking at the tickets. It would be cool if you had an app that scanned the tickets in and notified you if you won anything, seems pretty doable since they come with barcodes on them. I went looking at lotto apps once and found them severely lacking in quality and features.

→ More replies (6)

9

u/rjp12 Dec 04 '13

I don't know about OP, but for me the 'idea' was the only thing that made learning real. For months I took classes and read books but found myself mindlessly walking through tutorials etc. It wasn't until I discovered a problem in my everyday life that I said "Huh, I could make program to do that for me," and since then it's taken half to time to go twice as far.

→ More replies (5)
→ More replies (3)

11

u/[deleted] Dec 04 '13

Congrats and thanks for pointing me to several resources, especially codecademy. :)

→ More replies (2)

8

u/[deleted] Dec 04 '13

did you use Windows as your OS to program? just curious.

16

u/poopMachinist Dec 04 '13

Yes. I'm on Windows 8, and I used Eclipse and Android studio while learning how to program.

→ More replies (1)

10

u/poopMachinist Dec 04 '13

Op here.
If you have any questions, I'll be here to answer them.

Oh, and here's the github repository for the Android app (the only thing missing is the Wordnik API key and the Google Analytics API key).

→ More replies (14)

5

u/Gwaak Dec 04 '13

That's honestly fantastic. I'm interested in how much you actually knew before you started and where would be a good place to start for someone who's pretty much never learned anything.

4

u/poopMachinist Dec 04 '13

Start with codecadamy, and do whatever you like. It's not the best thing out there, but it's fun and it might get you hooked. Then just branch out from there. It doesn't matter if it's HTML or Javascript. The only thing that matters is that you're learning how to program.

As I said, I had some programming knowledge. I knew what to google if I wanted to change something on my Wordpress page (modifying CSS), and I knew the basics of Python (tried to create a game with it and failed horribly). But that was it. I started learning from scratch (how computers work, how compilers work etc.).

17

u/twofaze Dec 04 '13

I think you've inspired many folks to at least give serious programming a try.

→ More replies (3)

10

u/ploidZero Dec 04 '13

That's really amazing. This encourages me as I've tried getting into programming so many times but I Always give up :(. Now I'm 18 and I've set my mind that I'm going to learn it. No matter how frustrated I'll get and how stressed from not finding an answer, I'll do it!

Thanks for sharing this :) It really gets my hopes up as I really like this stuff but it always feels like climbing a huge wall

27

u/poopMachinist Dec 04 '13

Never focus on the "huge wall". You'll only get demotivated. Focus on ONE foothold at a time.

Creating a calculator app is hard. However creating 9 buttons with numbers on them is easy. Adding 4 more buttons with symbols is even easier (+, -, *, /). Linking the buttons together is a bit harder, but still way easier than creating a calculator app.

It's all about proper focus and perspective! If I did it, you can too!

→ More replies (2)
→ More replies (4)

3

u/tt13 Dec 05 '13

3 intense relationships

OP you are my hero.

→ More replies (1)

2

u/VintageTesla Dec 05 '13

Just want to add that this post has really motivated me to act on the latent desire I have to learn programming. Thank you. Here we go.

→ More replies (1)

2

u/BrotherGA2 Dec 05 '13

As someone who is trying to do pretty much exactly what you did, going from a background in Sociology, to learning programming "on my own" with the hopes of pursuing it as a career, I just wanted to say thanks for sharing this.

I took the Intro to Programming with Java class at Udacity (and got credit at San Jose State University for it) this summer and did really well in it, so I was really excited for whatever was next. I've been really anxious to start learning again and building stuff, but until a week ago I had been without a computer so I'm really stoked to finally get back into it now.

Any tips for moving from the foundation you got by taking the Intro to Programming class to actually building stuff you can put on a portfolio?

What about from having a portfolio to getting job offers?

Good luck to you and thanks again for sharing!

3

u/poopMachinist Dec 05 '13

Hey! Congrats on your current progress! That's awesome to hear.

Well, a few months ago I started showing my work to others, and they were pleased with the results. That gave me a confidence boost that kept me motivated. And then just came a time when I said to myself "I'm pretty decent at this, why don't I create a simple app and use that as a reference for my skills and so forth". So I created WordRefresh and started showing it to people. Even though the app itself is simple and doesn't solve any "important" needs, it shows that I can actually produce a working application. In the end it's not about the app, it comes down to you and your ability to actually create something.

That's the start. Then you expand on it. Network, build on your success, improve, get feedback, learn new stuff, and don't be afraid to fail. Just make everything a learning experience :)

Good luck!

2

u/Patienceisavirtue1 Dec 05 '13

Thanks for sharing dude. I love these types of posts because in my darkest programming times these testimonials keep me going.

When I took the leap from being an illustrator to becoming a programmer it was a super daunting task, and I won't even lie. I kept asking myself what the hell I was doing. It was hard at first, but after a few lessons on codeacademy I started feeling good about myself, catching on and even when reading convos with other programmers and actually understanding what they were talking about was an amazing feat. I just finished the HTML & CSS track, now finishing up the Javascript track, I'm going to do some reviewing in my notebook and start building stuff in the new year.

I want to get into web design but gaming may be a fun endeavor too. But no matter what I get into I'm really hoping for a potential pay upgrade and getting out of a call centre environment.

My advice to anyone is to stick to it, it's an extremely rewarding task, although there are nights you will feel like you got your ass kicked by JS, keep at it. Keep a programming journal, write down bits of code you think are causing you headaches, and experiment. I used to keep a sketchbook of drawings whenever ideas popped up and I now keep a similar notebook for programming and mark up.

→ More replies (1)

2

u/Pheromone89 Mar 13 '14

I’m just a 25-year-old dude that was bored and likes doing tutorials and learning new things.

Lol, this is exactly me right now. I'm also been learning Java and stumbled to this sub when searching for tutorial and such. Thanks for your experience. it's an inspiration!!

→ More replies (1)

3

u/tyang209 Dec 04 '13

Wow the link to all your tutorial and resources is really helpful! Thanks!

Could you go into a bit more detail into how you got your job as a developer? Did you start applying to jobs after you felt like you had enough experience?

7

u/poopMachinist Dec 04 '13

Hey thanks for the feedback. Much appreciated!

I actually started as an “office monkey”. I copied data from one spreadsheet to another. Simple stuff. Then my former boss wanted to redesign her website and brought an internet guru as an advisor. I helped on the redesign and sat on the countless meetings we had.

The guru saw that I had the knowledge and the right attitude and recommended me to a different person, who then hired me as a project manager for a pretty big website (for my region at least). I do content creation, branding as well as I coordinate its renovation and a bit of UX. Knowing how to program helps a lot, because I can just talk to the programmer in technical terms and it's way easier for all of us.

About the job offers. A month ago I entered into a local AppChallenge competition. You get to present your idea, gather a team, do market research, develop and publish. I met a lot of great people there and a couple offered me a position in their businesses. I’m also semi involved with a couple of local start-ups. Word gets around and if you do good work (or if you’re motivated to learn), the world is your oyster.

I'm just at the start of my career (been employed for the past six months), and so far the future is bright.

30

u/NDaveT Dec 04 '13

I coded while my League of Legends game was loading. Five minutes here and five minutes there, it adds up.

Louis L'Amour said something similar about reading books. On the bus? Read. In line at the bank? Read.

That approach doesn't work for me. I have to get my head into a project, and once it's in I don't want to take it out. But for those whose brains can work that way it's a great idea.

→ More replies (2)

7

u/[deleted] Dec 04 '13

Learning Ruby on Rails right now, this is very encouraging!