I Cheated on Android with JavaScript… And My Boss Approved

i-cheated-on-android-with-javascript-and-my-boss-approved-0

I fell in love with mobile development five years ago. I loved the excitement of working on an app, deploying it on your phone, and being able to show it to everyone right away. Android was my first love, but everyone knows the first love never lasts.

Existing in the Android bubble

When I first started as an Android developer at Infinum having just finished Infinum Academy, I loved every part of Android. I didn’t have any professional experience at the time, so I wasn’t aware of other technologies that existed outside of the little Android bubble.

Being a junior, I had to focus on a single technology to learn the most I could, so I didn’t even consider other technologies at the time. As you gain more experience, you broaden your horizons. Little by little, you discover and learn about the technologies that exist outside of your bubble.

Choose what you love and let it kill you

Also, as you become more proficient in your area, it’s smart to decide what to focus on. In my opinion, there are a couple of different paths to pursue:

  • Management–the focus is on people and communication, and your responsibility is leading your team forwards, giving them goals to improve over time, and giving a helping hand whenever they are stuck
  • Technical–the focus is on the area of your expertise, and you’re expected to suggest new and better solutions, make important decisions about code style, architecture, and frameworks
  • Independent contributor, diversity track–the focus is on programming but with an emphasis on learning how different technologies coexist and depend on one another, as well as understanding their pros and cons

The management path

When I had little experience, I thought the only way to progress was by becoming a team lead. “You gain recognition and get to influence others around you, I mean, what’s not to like?!” I thought to myself as I looked up to my team lead, imagining that one day I’d like to be like him.

As I got more experienced, I understood the biggest con of the team lead position that you have to spend a lot of time communicating with your team and making sure everyone is happy. To me, that was a deal breaker because I enjoy programming and learning new things every day, and it’s what drives me forward to this day.

The technical lead path

Another possible career path was to try and become a technical lead. This position seems more alluring because you can focus mainly on your programming skills and lead the team by suggesting new ideas everyone can benefit from. Personally, I think the biggest flaw of the technical lead position is focusing only one area of expertise. If you don’t understand and know other areas, it can be hard to see the bigger picture, and this could potentially lead your team in the wrong direction.

I started my journey as an Android developer, I only knew Android development, so I thought that it was still too soon for me to try and become a technical lead as I still had a lot to learn.

The chosen path

In order to fill the knowledge gap, I was slowly leaning towards the diversity track. It all started on probably the happiest day of my life as a developer, with Google introducing Kotlin as the official Android programming language. Kotlin was a breath of fresh air compared to the outdated Java and consequently increased our team’s productivity and happiness.

But more importantly, it also made me curious to try out other new technologies and programming languages. Soon afterward, I started experimenting with Flutter, Dart, and JavaScript. I liked JavaScript and web development so much that I made a radical decision.

I wanted to change my area of expertise entirely and become a JavaScript developer.

Full support from my company

The decision was not instantaneous. I thought about it and discussed the potential career switch with more experienced colleagues and superiors for several months, questioning whether it was worth it.

It isn’t that common for companies to encourage switching careers, but I was very lucky that my company was forward-thinking and supported me through the entire process.

Another important thing to take into account when thinking about career switch is the reasons you want to switch technologies. It’s highly important to understand that every technology has its flaws.

You can’t seriously switch from one technology because of its disadvantages and expect the new technology to be all sunshine and rainbows.

How to decide whether to switch careers?

A career switch is a huge decision that literally changes your daily life, so don’t take it lightly. Take your time and decide whether the pros outweigh the cons.

Pros:

  • working in a new technology, which is always interesting
  • broadening horizons and understanding the bigger picture
  • being flexible when something wild happens with one system (e.g. Flutter takes over the world and leaves Android in a crumpled heap on the floor)

Cons:

  • being a senior experience-wise but a junior at the new technology
  • becoming easily frustrated because of it
  • influencing your salary

From hero to… zero

On the one hand, changing your area of expertise puts you in the position of knowing little if anything at all. You literally go from a senior to a junior in a day. On the other hand, the learning process is also much faster compared to when you first started programming, thanks to the previously acquired general knowledge that can be applied to any programming language and technology.

Perhaps the biggest change you need to make is to your thinking process. Basically, ask whatever question comes to mind, be curious and research whatever doesn’t make sense. You should spend a lot of time researching and reading documentation and online resources to learn as much as you can.

In fact, this is exactly why switching technologies can get really exhausting, but it’s crucial to success and reaching that same level of knowledge you had previously reached in another technology.

Resist the urge to learn everything at once

You should also be aware that your previously gained knowledge can easily backfire. The more knowledge you gain, the more aware you become of everything from frameworks and cool language features to dependency injection etc. You’ll feel the urge to learn all of it at the same time because you kicked ass in your previous area of expertise, but I strongly advise against that.

You should focus on one thing at a time, master it, and only when that piece of the puzzle really sinks in, go to the next one.

If you try to process everything simultaneously, things will become chaotic and everything will mix together. You’ll end up with a mushy pile of confusion about what is in front of your screen and what you are doing with your life in general.

Don’t bother unless you really want it

It’s important to decide which career path you want to take. If you decide to make a career switch and try a new technology or language, you must be 100% sure that you are ready to learn new things every day because it can become really exhausting over time. It is also important to understand the flaws of each technology you tackle and not expect everything to be ideal.

Finally, the most important switch you need to make is the one within your mindset. Ask stupid questions, make stupid mistakes, and learn something new every day. I promise that in time, you will grab the new technology by the balls and catch up with your senior colleagues. Just don’t do it the other way around.