When most teams complain about poor quality, they usually mean reliability woes; however, quality spans a more extensive spectrum and can mean many things. If you complain about your software being of low quality, what dimension do you mean? Use the Maslow quality hierarchy to identify the pertinent challenges and make the right tradeoffs.
This post focuses on steps to take during the first 3 months of forming a new team. It is the second post in the "How to onboard teams" series which covers lessons and techniques acquired from ramping up many teams.
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.
Less can be more - remove, don't add: say less, delete code, write tersely. Find the smallest things with the highest impact. The end
Are you working on the right problems? If no, then focus all your energies on identifying the right problem with the biggest impact.
How to brilliantly deliver on seemingly impossible projects
That is the question I like to ask nowadays at the beginning of anything: a sprint, a project or a book.
5 important ideas that engineering teams need to keep in mind to optimize value delivery.
Constantly factoring deletes into your iterations keeps your code base healthy
My heuristic is to green-light full adoption only if the long-term benefits outweigh the costs and risks
Tips for running services at scale with minimal toil
A couple of months ago, I needed to create backups of a database dump on one of my VMs. I initially thought it would be a difficult task but was pleasantly surprised to find it easier than I thought. Despite the excellent documentation; I still needed to do some research to get my automated pipeline … Continue reading How to backup files to Azure Blob Storage from VMs using managed identities
Some engineers believe they have to go to great lengths to eliminate every single piece of technical debt in their codebase. This focus on perfection ignores the cost of fixing debt, the risk of introducing new bugs and contagion (the chances of debt spreading).
These are a few strategies I employ to be more efficient at work.
Habits die hard It is hard to focus in a fast-paced work environment: there can be live-site incidents out of the blue; bugs to fix and meetings to attend. I have always struggled with coping with incessant demands and distractions; the urge to drop whatever I am doing and hop on the next fire is hard … Continue reading Less Work, More Impact
Do you want to sleep well at night?
Software services need a solid foundation that guarantees near 100% uptime. The work needed to establish such a base is termed devops, infrastructure or platform. About 18 months ago, my team got a new charter: launching a brand new service. I was involved in the setup of new platform resources as part of that effort. … Continue reading Essential Pillars for running a service at scale
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.
The JSON parse function takes in a string (invalid JSON will cause a SyntaxError exception). If parsing succeeds, JSON.parse returns the corresponding value or object.
I recently had to reduce the size of an Angular Web app for performance reasons. A quick run through the webpack bundle analyzer identified MomentJS and Lodash as the main culprits. Consequently, I had to eliminate both libraries and implement replacements in pure ES6.
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.