Many years ago, a younger and more naive version of myself decided to try bootstrapping a startup together with my co-founder, while still juggling our full-time jobs. She had the idea, product vision, and contacts for initial users, while I was in charge of tech development. Our plan for the MVP was to launch using … Continue reading Experiences working with an Outsourced Dev Shop
Preventing Software Rot
I recently came across a story that is just as amusing as it is shocking: One of my clients is responsible for several of the world's top 100 pension funds. They had a nightly batch job that ... crashed. No one knew what was wrong at first. This batch job had never, ever crashed before, … Continue reading Preventing Software Rot
When Feature Flags Do And Don’t Make Sense
Over the past years, I’ve worked in multiple teams adopting very different strategies when it comes to feature flags. I’ve seen the pros and cons of both, and over time, I found myself disagreeing with any fundamentalist position on their use. There is a lot of nuance to this topic, and I think it is … Continue reading When Feature Flags Do And Don’t Make Sense
Rethinking Software Testing: Perspectives from the world of Hardware
The conventional view of Software Testing The hardware and software worlds may seem poles apart, and in many ways, they indeed are. But there’s a wealth of knowledge that each can learn from the other. Despite the seemingly massive differences in the final product, they share more in common than you might expect. Computer engineers … Continue reading Rethinking Software Testing: Perspectives from the world of Hardware
Myths Programmers Believe about CPU Caches
As a computer engineer who has spent half a decade working with caches at Intel and Sun, I’ve learnt a thing or two about cache-coherency. This was one of the hardest concepts to learn back in college - but once you've truly understood it, it gives you a great appreciation for system design principles. You … Continue reading Myths Programmers Believe about CPU Caches
Product-Engineering Collaboration – Getting Past Waterfall
XKCD #1425 I was reading a book on a lazy Sunday afternoon when I learnt something that completely changed the way I looked at one of the iconic movies from my childhood - Toy Story. This was the first computer-animated feature film ever attempted, and, as I was beginning to realize, the challenges were staggering. … Continue reading Product-Engineering Collaboration – Getting Past Waterfall
18 Years A Transient – My Journey Through the American Immigration System as a Computer Engineer
It sounds surreal to even say it out loud, but I’ve been living in America for the majority of my life, ever since I was a teenager. And for 18 of those years, I was legally a transient - hopping from one temporary visa to another. I’ve explored so many nooks and crannies of the … Continue reading 18 Years A Transient – My Journey Through the American Immigration System as a Computer Engineer
Our Engineering Principles and Best Practices
As the CTO for an early-stage startup, I had put together a version-1 of the Principles and Best Practices for our engineering team. Most of these are borne out of my past work experiences at a variety of companies, including two of the FANGs. There are many great things I've learnt from these companies. But … Continue reading Our Engineering Principles and Best Practices
My Path to Financial Independence as a Software Engineer
One of the watershed moments of my life was as a 20 year old intern attending a workplace presentation about personal finance. Over the course of one hour, I learnt about the power of buy-and-hold investing and compound growth. I learnt that even an average engineer with a five-figure salary can become a millionaire by … Continue reading My Path to Financial Independence as a Software Engineer
The Law of Net Design Costs
Suppose you’re working on a software system and need to implement user-logins using a userID and password. After a bit of research, you narrow it down to two possible options. Your first option is to implement it yourself - hash/salt the password, store it in a database that you manage, and use it to authenticate … Continue reading The Law of Net Design Costs
Mutation Driven Testing – When TDD Just Isn’t Good Enough
As someone who loves discussing Software Craftsmanship and best practices, Test Driven Development (TDD) is a bit of a sore spot for me. Let me start off by saying that I love TDD’s emphasis on testing. Too many software projects skimp on testing. And the results speak for themselves many years down the road, when … Continue reading Mutation Driven Testing – When TDD Just Isn’t Good Enough
Why Is There So Much Crap Software In The World
All around us, we are surrounded by crappy software. Pension funds that are stumbling along using decades old batch scripts with faulty assumptions. Credit agencies have leaked over a hundred million social security numbers and other confidential data. Planes need to be rebooted every 51 days to prevent "potentially catastrophic" bugs.And not to even mention … Continue reading Why Is There So Much Crap Software In The World
If Founders Treated Their Investors The Same Way They Treated Their Employees
Founder: Hey Joe! How are you doing? Everyone here loved meeting you, and we would really love to have you on board as our investor! We really respect your expertise, and think this could be a great partnership. What do you say? Investor: Glad to hear! Can you give me more details about how much … Continue reading If Founders Treated Their Investors The Same Way They Treated Their Employees