Why it’s so hard to estimate the time to build software

Estimating the time for software projects is notoriously difficult. This is because the majority of the work in most software projects is "discovered" work. Work that was not obvious while planning that is discovered when implementing. If you've done any serious programming work, you'll know what I'm talking about. "Turns out this 3rd party API … Continue reading Why it’s so hard to estimate the time to build software

Designing at the right level of abstraction

As SharpestMinds matures as a company, good design is becoming increasingly important. For most of the company's lifetime, we embraced a design-on-the-fly, just-make-it-work attitude. Without much more than a text or verbal description, we would simultaneously plan, implement, and design new features for our web-app. This approach worked well enough while we iterated towards product/market … Continue reading Designing at the right level of abstraction

When to scrap the codebase and start from scratch

This is one of those decisions that is so context specific that almost all advice on it is worthless. Nevertheless, I thought I'd share the story of when I had to make this decision as a beginner programmer. There may be a lesson or two. In the summer of 2018, SharpestMinds was a platform for … Continue reading When to scrap the codebase and start from scratch

Why you should engineer your environment for better habits

An important lesson I've learned in the last year is how important environment is for forming productive habits. Good habits don't arise from exerting more will power. Instead, they come from engineering an environment that makes good habits easier, and bad habits harder. For example, If you want to play more guitar and less video … Continue reading Why you should engineer your environment for better habits

How to have more productive meetings

Meetings are an inevitable part of business but they are costly. Everyone involved has to take time away from their work day to participate. Having no process in place for conducting meetings practically guarantees wasted time.  Meetings are a medium of work. People’s time is highly valuable so all meetings should be purposeful and well … Continue reading How to have more productive meetings

Death metal, machine learning, and algorithmic bias

AI and machine learning algorithms are becoming increasingly relevant in the technology we use and it’s important for everyone to understand the implications. There is a key difference in how machine learning algorithms are programmed compared to traditional algorithms. Instead of being logic-based, they are data-based. We’re going from software that is explicitly programmed (if … Continue reading Death metal, machine learning, and algorithmic bias