The Robot’s Back! And Why I’m Learning Android Next

After an intense vacation where I got to learn things about the world that have nothing to do with programming, I’m back, refreshed, and ready to dominate 2014!!!!!!

So starting my New Year with a bang, yesterday I officially started learning Android development at CodePath. For those who haven’t heard of CodePath, it’s an after-work bootcamp for more experienced Software Engineers who want to get the latest skills in Mobile (Android and/or iOS) development to advance their careers.

I feel very honored to have gotten into the class, and could not be more excited. Seriously, I went to the class last night exhausted, and walked out jumping at the joy of learning from the very energetic Nathan Esquenazi! And it’s only been one class 🙂

When I went to Mobile Makers last year, I joked that I’d like to be in a new bootcamp every six months. Well, that has officially become my trend. But I can’t help it! I’m addicted to learning, and when the opportunity to learn Android came up with CodePath, I had to take it, here is why:

Becoming a Better Engineer

One thing I learned from switching computer languages and frameworks a lot, is that when you learn a new language or framework, you learn about the philosophy and patterns behind Computer Science theories in general, which makes you a better programmer in general.

Knowing Ruby on Rails has made me a better iOS Engineer, because I understand the concepts behind Object Oriented Programming and how to abstract my code. Learning iOS, in turn, has made me a better Ruby on Rails developer, since I’m now getting practice architecting my own system, and can understand the Rails layers of abstraction a lot better.

When I first learned Java via Stanford’s CS106A, I thought it would just be something I had to learn to get to the good stuff (web development), and that I would never use it again. Well, knowing Java has really helped me learn iOS. If I just went straight from Ruby to Objective-C, the transition would have been a lot more challenging. And, now that I’m learning Android, which is in Java, I cannot be more happy with my decision to have started and finished CS106A.

Knowing both Java and iOS and Rails will make my transition to Android that much easier. And, of course, in the process of learning Android, I will become a better iOS Engineer.

For example, even yesterday (just one day into CodePath), we were learning about Android’s advanced layout system, which I can already apply to understanding Auto Layout in iOS a lot better. I also know that knowing mobile development will help me understand the concepts behind JavaScript frameworks such as AngularJS a lot better if I wanted to learn them in the future.

As a beginner programmer, I cannot overstate how important it has been for me to learn new languages and frameworks over and over again. Part of being a programmer means you always have to be learning, so the sooner you recognize the different patters across different languages and frameworks, the easier it will be to learn new stuff. Oh, and yes, there will be new stuff! Can you imagine what we’ll be coding in in 10 years? Or what devices will be the most popular? I have no idea, but I’m going to learn it fast!

Career Development

As a coder, I feel like a wizard. And each new language I learn is a new super power I can use! With my experience in Rails, iOS, and now Android, I’m become a pretty strong wizard!

Knowing all three is very important in my career. As an iOS engineer, I have to communicate with the back-end server team all the time about how the API is structured and different bugs around it. Knowing Rails, databases, and what it takes to make the necessary changes or fix bugs is really important for communication with the server team. For my personal projects, I’m not afraid to get my hands dirty and build the necessary back-end for whatever app I’m building next.

Likewise, as an iOS Engineer, I often communicate with the Android team. After all, when we’re building features in parallel, communication is great for bouncing off ideas on how to accomplish the necessary tasks. However, it’s harder to communicate with the Android Engineers when we do not have a common language. Learning Android will allow me to have the necessary language to discuss implementation ideas with Android Engineers and even look at their code to get better ideas for how to accomplish more difficult tasks.

Most mobile focused job descriptions out there expect iOS engineers to know at least some Android, and vice versa. Knowing both iOS and Android, and, of course, the back end web development stuff will only make me more valuable for potential employers.

This also sets me up for management positions in the future if that’s what I want. Knowing a little bit of each language is great for hiring new Engineering employees and managing projects across multiple platforms.

Android is Taking Over

As Nathan Esquenazi from CodePath pointed out yesterday, 80% of world’s smartphones are now Android. Android is also primed to be added to consumer products such as toasters, refrigerators, and even military helmets. Google Glass will also be running on Android, and that’s just the starting point!

While I love iOS dearly and would ideally keep developing only for iOS, I like to make personal apps, and ignoring most of world’s population (including many of my friends) is just not an option I’m happy with. Time to go all the way, and develop for both platforms!

The Opportunity

One of the main reasons I’m learning Android right now versus a year from now is because I got into CodePath. The bootcamp-style learning has been amazing for me so far with Dev Bootcamp and Mobile Makers, so when I heard that I got into CodePath, it’s just an opportunity I couldn’t pass up!

After only one day of CodePath, I cannot be more excited with my decision. Learning Android on my own would take forever, but learning with really smart peers, many of whom are amazing Java Engineers, and incredible teachers and mentors is just something I cannot pass up!

I’ll write more about CodePath as I get closer to the finish line, but I definitely recommend it so far! They have classes starting in March, so sign up! It’s free by the way.

The Challenge

As a beginner programmer, the impostor syndrome is something I’m always struggling with. What if I’ve just been lucky with what I’ve learned so far? What if I can’t learn anything new?! Android sounds really hard. Will I really ever be able to learn it? How will I test it across all those devices?!! I only know a little bit of Java, should I know more?!

Android is one of those things that I’m scared to learn, and leaning into that fear is the only way I know to overcome it! More than the fear of it, the excitement and challenge I felt yesterday as I was learning something completely new makes more sure than ever that I’m making the right decision for myself.

Happy Learning Year!

If you’d like to learn more about how to make the most out of a bootcamp experience, read more in my book:  How To… Learn To Code. Get Your Dream Job. Change Your Life.

Enjoy the article? Join over 14,500+ Swift developers and enthusiasts who get my weekly updates.

  • CK

    Haha, nice. I’ve also always thought of myself as someone in Hogwarts learning new spells when I learn new languages and tools

  • Paul

    Think you pinned the tail on the donkey about learning Android. Actually, that’s the only reason why I’d learn it myself. To become a better engineer.

    What I don’t like about Android are the tools and the fragmentation of their OS’s and screen sizes. I don’t feel like the platform was really thought out.

    How did you deal such issues as fragmentation?