Skip to main content



I have been creating software professionally for more than 12 years. But my development journey goes back at least five years. The first software I wrote was probably a website I created for my dad’s business in 2005. I hosted it on a free subdomain, not unlike Yahoo Geocities.

I am a generalist

<Bragging start>

During these long years, I’ve worked with a good deal of programming languages, frameworks, and libraries. I am easily excited and find it difficult to resist the urge to try new technologies.

When Ionic Framework was still in its infancy, I was spinning out mobile apps for internal clients. Migrating a fully-functional web app from AngularJS to Angular 2 (beta) was an adventure of a lifetime! I caught up with Flutter less than a year after its first stable release (and was modestly successful in promoting it as a viable mobile SDK at a large digital consulting firm).

Overall I’ve worked with a variety of languages and frameworks. My resume says that I can work intimately with JavaScript, Java, and Dart, and that I am comfortable working in PHP, C#, Ruby, and Python. You’ll also find an assortment of frontend and backend stuff I can work with.

<Bragging end>

The key lesson of software engineering

If there’s one thing I have learned over the years, it’s this:

Software engineering is much bigger and harder than coding.

Wait! Aren’t coding, programming, development, and engineering one and the same? Sorry to disappoint you: they are not!

good developer - perception vs. reality

Without reinventing the difference in my own words, I’ll just reference a quote from the book Software Engineering at Google:

Software engineering is programming integrated over time. If you accept this distinction, it also becomes clear that we might need to delineate between programming tasks (development) and software engineering tasks (development, modificiation, maintenance).

What does it mean for you as a software developer?

It means that writing code is just the first step toward creating a software that works.

To create a software that will work for years to come, it’s imperitive to widen your view of engineering to encompass other equally important aspects like automated tests, code reviews, version control, code style, and security.

These are things that a shockingly vast majority of us do not care about, have not been exposed to, or simply take for granted.

What is is a small attempt to highlight the criticality of best practices, and make these seemingly “boring” aspects of software engineering compelling and fun to use in everyday coding.

It will be my endeavour to share at least one insight per week that will help you in your journey to becoming a better software engineer. My medium of choice is video but I might occasionally take to audio podcasts and written articles.

I’m a person who likes to experiment and read books. The insights I share are a mix of my battle-tested experiences and wisdom extracted from books.

And since I’m an avid learner, a lot of my content will revolve around better learning methods and productivity tips.

Stay in touch

If you happen to like my insights and want to receive the latest updates, drop your email in the monthly newsletter form at the bottom of the home page. You can also subscribe to my YouTube channel to stay updated and support me :)