How to run better stand-ups

There is a high chance that you attend or have attended an inefficiently-run stand-up. I have seen various stand-up styles over the years. Sadly, most of the roughly 2000 stand-ups I attended were unproductive. Mildly put, most were status reports for some manager or higher up.

Five challenges of engineering teams

1. Clarity What does success mean? For Leads and Managers Are you working on the right problems? Would your VP/Director/CEO be interested in your work? If the answer to any of those questions is no, then why are you doing all that work? If yes, great job! More questions!! What are the secondary and tertiary … Continue reading Five challenges of engineering teams

Chasing fads or solving problems?

Sample chat between two engineers Engineer 1: We should use Hadoop/Kubernetes/Cassandra/insert-random-cool-tech. Engineer 2: Why? Engineer 1: Well, all the cool guys rave about it: latest-fad-tech is the next big thing on the tech horizon. All the hot startups are using it too! Engineer 2: So what will we use it for? Engineer 1: Well, we … Continue reading Chasing fads or solving problems?

Less work, More Impact : 5 tricks to boost productivity

1. Automate Automate toil away! Everyone has daily tasks that could be automated. Automating mundane tasks leads to immediate time savings, skill acquisition and huge cumulative benefits in the long run. For example, a 10-minute task costs about 2600 minutes a year (assuming 260 working days). Automating the task to run in 5 minutes leads … Continue reading Less work, More Impact : 5 tricks to boost productivity

Three high-impact non-coding tasks for software engineers

There is more to software development than writing code. this post describes three of the most oft-repeated tasks I have been asked over the years. These are not strictly programming tasks but help magnify the impact. 1. Documentation As a grad student in 2012/2013, I set up a continuous delivery pipeline on AWS for my … Continue reading Three high-impact non-coding tasks for software engineers

Do you want to sleep well at night?

Do you want to sleep well at night? That was the question a senior engineer asked me in 2015. I had sought his feedback on some elegant code I wrote. While I was sure the code covered the scenario; I could not prove it would cover all possible scenarios all the time. That was a grey … Continue reading Do you want to sleep well at night?

Guaranteeing software behaviour

My foremost goal while building software is to build stable self-healing systems with deterministic behaviour. I want to ensure my code continues to work even when unexpected events occur. In the event of unknown unknowns, the expectation is a graceful degradation in the worst case. This requirement is even more important when implementing high-risk projects. … Continue reading Guaranteeing software behaviour

How to build Resilient Software

Downtime = lost revenue. One of the most challenging aspects of software development is staging changes without breaking the service. Releasing new features always comes with a risk - bugs might be introduced and existing failure points might become more prone to failure. The task is even more daunting when you have many microservices with … Continue reading How to build Resilient Software

A framework for shipping high quality software

Software engineers, technical leads and managers all share one goal - shipping high-quality software on time. Ambiguous requirements, strict deadlines and technical debt exert conflicting tugs on a software team's priorities. Software quality has to be great otherwise bugs inundate the team; further slowing down delivery speed. This post proposes a model for consistently shipping … Continue reading A framework for shipping high quality software

How to Create Great User Experiences

Have you ever wondered why some applications always look and feel similar? Why for example does Apple have a unified experience across devices? Why are Google products starting to adopt the material experience? This post explains some of the underlying themes influencing design choices. Developers can use these concepts to craft better user interfaces and experiences. 1. … Continue reading How to Create Great User Experiences

Efficiently shipping Big Hairy Audacious Software projects

I recently transitioned into a full-stack role - I wanted to stretch myself and step out of my comfort zone. The biggest challenge was my struggle to quell the quite nagging voice in my mind screaming 'impostor!'. So I got a couple of Big Hairy Audacious Software (BHAS) pieces dropped on my plate and that experience motivated … Continue reading Efficiently shipping Big Hairy Audacious Software projects

Book Review:Build your own AngularJS

As part of my continuous learning; I started reading Tero Parviainen's 'Build your own AngularJS' about 6 months ago. After 6 months and 127 commits, I am grateful I completed the book. While I didn't take notes while reading, some ideas stood out. Thus, this post describes some of the concepts I have picked up from the book. The Good 1. Get … Continue reading Book Review:Build your own AngularJS

Maturing as a software engineer

Looking back on my time as a developer, there are a lot of things I would have avoided doing if I had as much knowledge and maturity as I did now. While I am grateful for the experiences and don't regret them; I felt it would be a good idea to share these. These might motivate others … Continue reading Maturing as a software engineer

Code complete != ship ready

I used to work for a team where whenever an engineer said he was done, the next question would invariably be are you 'done done'? Do you find yourself always under-estimating the amount of time needed to complete some software project? Does it take more time than what you planned? Or do you say you are … Continue reading Code complete != ship ready

10 years of programming: Lessons Learnt

I wrote my first program around 2006 or thereabout - it was some toy program for the FORTRAN course at school. Ever since then, I have been given the opportunity to take on more challenging programming tasks. It's been a heck of a journey for me and I am very grateful for the learning, the mentoring … Continue reading 10 years of programming: Lessons Learnt

Tips for printing from web applications

Web developers usually have to format user content for printing; for example, accountants might want physical copies of online ledgers while teachers might need lecture note printouts. The challenge lies in getting consistent print output across a range of browsers and their never-ending stream of subtle nuances. This post approaches printing from three viewpoints: tooling, JavaScript … Continue reading Tips for printing from web applications

5 things I learnt from Code Complete 2

My yearning to read Code Complete started early in 2012 - I came across the book in the MASDAR library. Most of it didn't make sense to me then but I made a mental note to return to it. Alhamdulilah I eventually got a copy of the book around August 2012 but I couldn't bring myself to … Continue reading 5 things I learnt from Code Complete 2

The Myth of Perfect Software

Programs do not acquire bugs as people acquire germs, by hanging around other buggy programs. Programmers must insert them... Harlan Mills Software breaks all the time: booting issues, corrupt software and files, crashes etc; nearly everyone has had a close shave or two with fragile software. Can programmers write 'perfect' fault-free software? I presume a trip to … Continue reading The Myth of Perfect Software

Beautiful Code 1 : 5 Symptoms of Software Rot

I used to wonder why people would refer to software development as an art; to me there was absolutely no correlation between programming and art. However, after hacking at software for years and writing all sorts of software: crappy ( I bet I'll would hide my face in shame if I see some of my … Continue reading Beautiful Code 1 : 5 Symptoms of Software Rot

And you thought you knew about Open Source

Popular opinion about open-source software - having access to the source code – does not adequately express the meaning of free software; it is even weaker than official definition of open-source as it includes lots of propriety and/or commercial programs.Free software does not imply that software is available at zero cost; it is possible to … Continue reading And you thought you knew about Open Source

I’m beginning to hate PHP?

While working on a new web application, I felt somewhat bored because I was going through my same old cycle all over again – there was nothing challenging or exciting to me. My first thoughts was that I was getting used to PHP but deeper thoughts proved me wrong. It boiled down to two options … Continue reading I’m beginning to hate PHP?