I'm a self-taught programmer* and the CTO at SharpestMinds, where we have very small team (we just recently went from N=3 to N=4) and our engineering and development team consists of mostly just me. After leaving my PhD in Physics, I've learnt to code almost exclusively by building. Inevitably, I've had to refactor a lot … Continue reading How to manage technical debt with a small team
From experience, I know how easy it can be to over-engineer a feature nobody actually wants, or succumb to the sunk-cost fallacy and continue down the wrong product path for too long. To counteract these mistakes, you need to build a habit of constantly questioning your decisions - of keeping the bigger picture in mind. … Continue reading Are you building the right thing?
"If you can’t measure it, you can’t improve it," is common business wisdom. It is especially important advice for startups searching for product/market fit via the build-measure-learn feedback loop, a major part of the Lean Startup ethos. Build something. Measure its effect. Learn what worked, what didn't. Repeat. The ability to execute this loop quickly … Continue reading Leading vs. lagging indicators in business and in life
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
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
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
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
A framework for building habits from the ground up Joining an early-stage startup was a turning point in my life. I joined SharpestMinds two years ago as a relatively ignorant PhD dropout. But, since then, I've gotten a crash course in startup culture and best practices and, in an effort to keep up with the … Continue reading The Lean Habit