Welcome!

Deep Thought aims at helping you become a better software developer by bringing you distilled, time-tested ideas about the craft of writing code. We talk about topics such as design patterns, development workflows, software architecture, maintainability and technical debt.

It’s been more than half a century since humans have been writing computer software. We believe the best way we can be better at this is by learning from what the smartest people in the field have already figured out – by standing on the shoulder of giants of our time.

Deep Thought is a collective, non-profit initiative, driven by some passionate individuals who care deeply about their craft and giving back to the community.

Recent Articles

Zero-downtime Database Migration

Let’s say you maintain an e-commerce application that uses an RDBMS, like PostgreSQL, to store data. Your application has a catalog of 100 products which you store in a table named product. Now assume you need to add a column to the table, called discount.

Continue reading ⟶

What indexes should I create on a table?

While designing a software system that involves a database, this question inevitably pops up in the minds of software developers. Indexes improve the speed of data retrieval operations, and who wouldn’t like their queries to be faster? Aside, database design is such an important decision in the lifetime of the software. Your application code is most likely to change over a few years, unlike your database schema which is most likely to stay the same.

Continue reading ⟶

Trunk Based Development

When it comes to software development and release workflows, there are a number of strategies that can be followed. A common way of thinking about this is to look at the size of the team working on it, or the type of project. For instance, a small, scrappy team of where everyone wears multiple hats would work in a significantly different manner than a bigger team. Similarly, development of a client library would typically be different from that of a self-hosted executable.

Continue reading ⟶