How JavaScript saved my career (a personal story)

Life saver

While I had done quite a bit of programming from an early age, I didn’t get my first “real” programming job until 2010. I was hired by a company called Ansca Mobile1 to develop public frameworks and product demos for their mobile SDK product (Corona SDK). It was a long, difficult road to get there (I didn’t have a college degree at the time), but my programming career had officially started and I couldn’t be more happy.

I used the company’s SDK (their product) for all of my work, so pretty much all of my development experience involved the Lua programming language and the Corona APIs. During my time at Ansca, I was becoming quite the Lua expert, but as far as other “hard skills” go, I didn’t have many. While it is commonly used as an embedded language in games and other applications2, outside opportunities for a “Lua programmer” were pretty much non-existent.

If I were to lose my job for whatever reason (laid off, company goes under, etc.), I may not be able to find another one, and that thought scared the daylights out of me. I was familiar with PHP, which I had used for personal projects over the years, but I never used it in a professional capacity so that didn’t help quell my fears.

Then in 2012, the co-founder of Ansca and my mentor, Carlos Icaza3 decided to leave the company and founded a new startup (Lanica). After a few months, he offered me a job and I gladly accepted for these reasons:

  1. He was my mentor, the person who gave me a chance and hired me at Ansca (despite my extreme lack of professional programming experience at the time), and he was also who I reported to at work (until he left). I trusted and enjoyed working with him, so it was an honor to be invited to join his next venture.

  2. Ansca’s morale took a big hit after Carlos left. He was the heart and soul of the company, so this was a dark time. Carlos had left for “personal reasons”, but for those of us on the inside, it was pretty clear he was pushed out. Overall it didn’t seem like the company had a very bright future, and I really couldn’t afford to be around when the ship sank. The new job offer was like a lifeboat.

  3. Lanica’s main product would be another mobile development kit (focused on gaming), but this time built on Appcelerator’s Titanium SDK, which used JavaScript—a more widely used language than Lua. My role would be the same as it was at Ansca (plus a little more), but with a new development stack. I saw it as a great opportunity.

JavaScript beginnings

Titanium was a cross-platform (Android, iOS) mobile SDK that sort of filled the same role that React Native does today. Despite using JavaScript, that was the only “web” part of its stack. The language was used in an embedded manner, similar to how the Corona SDK used Lua. There was no DOM, browser, or even Node.js environment to work with, and third-party libraries were limited, so this was a pretty unconventional use of JavaScript to say the least (and was long before JavaScript got good).

While I didn’t gain any web development skills specifically in this new role (outside of the language), it did give me an opportunity to get intimately familiar with JavaScript itself, outside of its usual contexts (browsers, Node.js), without the help of widely-used libraries like jQuery. It was a challenge, but being forced to have a solid grasp of the language (and its quirks) really paid off in the long run (literally).

Web development

Fast forward a couple years, the new company wasn’t doing so hot. Mobile devices back then were a lot less powerful than they are now, and Titanium wasn’t the fastest solution even at that time. Add a game engine on top of it and performance was even less impressive. Truth be told, Corona SDK was a better product, but as I mentioned earlier, it was really hard to transfer those skills elsewhere.

When it became clear the company wouldn’t last much longer, I was encouraged to start looking for work elsewhere so I wouldn’t be stuck without a job when the company inevitably closed its doors (this “heads up” was another great thing Carlos did for me). It was a sad ending, but was a fun experience and the things I learned were invaluable. Most importantly, I was finally able to break free from being just a Lua programmer. Having good JavaScript exerience opened a lot of doors for me.

I interviewed at a few places, and was eventualy hired in 2014 by a company that partnered with other companies who made mobile apps for children (Fingerprint Digital). There was a shared “parent mode” that was embedded in each of these apps, which was itself a web app rendered inside of a webview—in other words: a browser environment.

At Fingerprint, I was finally able to exercise my JavaScript experience in a more traditional web environment. The years I spent at this company gave me a ton of experience with the latest frontend web technologies of the time. More specifically, we made heavy use of Backbone.js and Marionette.js. Eventually I was even able to transition into a full-stack role working with both frontend JavaScript frameworks and Node.js on the backend.

These days I’m primarily using React (web), React Native for mobile development, and Node.js for backend development. This was all made possible because of that early job where I was forced to use JavaScript on a daily basis, which allowed me to expand beyond my Lua beginnings.

Some key take-aways

My experience has taught me some very important lessons that are relevant to just about anyone in the field:

  • Don’t get stuck on proprietary stacks! It may be good for your company to be an expert on their software, but you’ll severely limit your future opportunities and be left holding the bag if you lose your job. Take some personal time to build up experience using technologies that are more widely used. I can’t stress this enough. If I had stayed “comfortable” at Ansca until I was forced to leave, at best it would have been extremely difficult to find another job and at worst my programming career would have effectively been over.
    • This is doubly important for those who don’t have a formal education and have to rely on work experience and “what you can do” over credentials4 to get a foot in the door.
  • Master your chosen programming language outside of specific frameworks and tech stacks. I was able to quickly learn various different JavaScript environments because I was forced to use the language early on outside of a typical browser and Node.js context. As an alternative, gain experience in multiple frameworks and platforms for your chosen language.
  • Always take opportunities to learn more and expand your knowledge. Software engineering technologies and best practices are always evolving and it’s easy to get stuck in a rut doing the same things while the industry moves on. If you’re ever forced to move beyond your comfort zone, you may find yourself waking up to a completely different world.
  • Build good relationships at the companies you work for (otherwise known as “networking” and “soft skills”). Apart from my first official programming job at Ansca, every other job I had afterwards was a direct result of being referred by a former colleague who had enjoyed working with me.
    • You’ll still need to have the interview and technical skills, but referrals from trusted people put you ahead of other applicants by a pretty wide margin.

As you can see, I’m not exaggerating when I say JavaScript quite literally saved my career (and is still a huge part of it today). Even if you ulimately choose a different path, there are some lessons here that are universal and I hope you were able to take away a few things and learn from my experiences.

I’m also interested in learning about other people’s experiences and enjoy reading about them, so feel free to send me a message to share yours!

  1. Before I left, Ansca Mobile had changed their name to Corona Labs. The name sounds bad, but this was almost a decade before the Coronavirus (COVID-19) pandemic, so it didn’t sound so bad then. Corona SDK itself was eventually open-sourced and renamed to Solar2D↩︎

  2. Some famous uses of Lua includes World of Warcraft and Adobe Lightroom, where it is used to script add-ons and plug-ins. ↩︎

  3. Sadly, Carlos Icaza passed away in 2014. He is sorely missed and has also helped launch the careers of many other people, similar to what he did for me. He was a great mentor and friend. ↩︎

  4. I eventually got a bachelor’s degree later on, but when I started my programming career, I was completely “self taught” with no formal college education, which made it difficult to get interviews. ↩︎