Estimation Accuracy

Estimating software projects is basically the tech equivalent of arguing about Irish weather. Everyone has an opinion, nobody really knows anything, and the forecast changes all the time. One minute you’re looking up and see that nice blue sky, and fifteen minutes later you’re sprinting through sideways rain wondering why you ever trusted an umbrella in this country. If you […]

Why Legacy Systems Are Worth Your Time

I know. When you hear legacy, you think untested code, brittle systems, weird edge cases, and “what the hell just broke now.” Every moment feels frustrating. You don’t know what the next change will trigger. I hear you. Been there, done that. A lot of cursing happens. But here’s the thing: if you’ve ended up with legacy software, it means […]

Why Metrics Don’t Equal Quality

In 1902, Hanoi was drowning in rats. The government was getting nervous about plague. Hence, the city put a bounty per rat tail. Suddenly, the system had a scoreboard, something you could count, stack, report, and feel good about. And it worked. Hunters brought tails in, the numbers soared, and the program looked like a win. Then reality showed up. […]

Teaching Software Engineering

As a software engineering instructor, I’ve taught a diverse group of master’s students with varying technical backgrounds. Not everyone comes in with the same level of expertise. Some have industry experience, some come from completely different fields, and some are writing real code for the first time. I’ve found that catering to the needs of all students requires a different […]

System Design Interviewing Tips

System design interviews are inherently subjective. Outcomes depend on many factors, including the backgrounds of both the interviewer and the candidate. Even if both have experience in backend systems, their expertise often lies in different domains. It makes direct alignment almost impossible. Over the years, I have conducted countless interviews. I’ve also run plenty of mock design sessions for mentees. […]