Posts About

'94 Celica Software Development

Software and cars have a lot in common, beyond the familiar usage of computers running software in cars. Software and cars both serve a purpose — a car will transport people from one point to another, while software will manipulate data from one form to another. Cars and software need to do their jobs for continuous periods of time, and reliably function each time it's required. Likewise, software and cars will fail at one point or another, and will have to be repaired.

The 1994 Toyota Celica is a simple car and like any Toyota it will start every time you ask. It's reliable and will doesn't break down frequently, and the magic of its simplicity makes it easy to troubleshoot and repair. By no means is the '94 Celica the prettiest car, or the most sophisticated, but it works.

I write most of my software like a '94 Celica. It doesn't need to be pretty or sophisticated; it needs to be easy to start, reliable for long periods of time, and be easy to repair. It needs to be simple, and through simplicity comes its elegance. Most software will never need the difference of complexity and sophistication between a '94 Celica to a 2020 BMW. It just needs to work within its requirements. Stakeholders want to be oblivious to the inner workings of a solution — as long as the solution is working and can be expected to work with new features, they will be none the wiser their 2020 BMW interior is running on the reliable '94 Celica engineering.

I feel that many modern SaaS and cloud offerings attempt to encourage developers to aim more for the sophistication and subpar reliability of the 2020 BMW. This has the added effect of increasing the reliance on them as the mechanic when something goes wrong. Older cars are significantly easier to work on and repair yourself, while newer cars make it difficult to even do oil changes. Increasing reliance on a third-party software means an increase in reliance on the third party themselves.

Perhaps the allure of a sophisticated architecture is similar to the status symbol that is an expensive, high-tech car. Startups and software companies want to be proud to say they use the same tools and architecture of FAANG companies, but few will ever really need the solutions these companies have built. I'm not sure why there is so much emphasis on technology and the tech stack rather than the problem a company fixes or the product it provides. A company doesn't sell its source code and architecture, it sells availability to a product — and that product needs to be there every time they ask it to be. I'd much rather trust Toyota than BMW in that regard.