Skip to main content

Just Because You Can Doesn’t Mean You Should

Modern software development gives us an extraordinary range of possibilities. We can add animations, dashboards, artificial intelligence, real-time notifications, advanced filters, personalized recommendations, multiple configuration screens, and integrations with almost any service imaginable. The technical question is often straightforward: Can we build it? In many cases, the answer is yes. The more important question is: […]

More...

Good Engineering Is Measured by Longevity, Not Complexity

Complex software can be impressive. It can include sophisticated architecture, extensive automation, numerous integrations, and layers of abstraction designed to address every imaginable requirement. None of those qualities necessarily make it good software. The more meaningful test is whether the software continues to work, remains understandable, and can adapt as the organization changes. Good engineering […]

More...

Software Should Solve Business Problems—Not Create Technical Ones

Businesses rarely decide they need new software because they want more technology. They need invoices processed more reliably. They need information to stop disappearing between emails. They need staff to spend less time copying the same details into multiple documents. They need forms that are easier for customers to complete, records that are easier to […]

More...

Build Products That Evolve Instead of Projects That Decay

Many software projects are planned around a finish line. Requirements are gathered. A budget is approved. The software is designed, developed, tested, and launched. Once it goes live, the project is considered complete and attention moves elsewhere. The software, however, has only just begun its working life. Users will find needs that were not obvious […]

More...

Designing for Likely Change Without Over-engineering

One of the most important skills a software developer can develop isn’t writing code. It’s analysis. Before writing a single line of code, we should be asking questions. Software is constantly evolving. Today’s “final requirement” often becomes tomorrow’s change request. Planning Without Over-Engineering Years ago, I was working on a project when a product manager […]

More...