Software Design for the Long Game
Getting things up and running is only one part of the development cycle.
We take a longer term view of the code that we’re developing, out of consideration both for ourselves and any other future developers. Because we open source our development projects, they need to be designed to make them easy to modify and extend.
This involves taking the time to incorporate things that are not strictly functional, but are intended to make the code comprehensible and flexible.
We ensure that we document as we go, using meaningful names for methods and objects and inline reference notes to simplify the work for future users. We are also in the process of moving our documentation to the diataxis framework, which allows us to include different layers of usage instructions from tutorials to fine-grained technical reference.
Reusability is considered a vital component of our architectural decisions, with the intention that our choices now make it easy to modify and extend our work in new situations. We also include robust testing processes in our coding practices, opting for Behvioural Driven Development whenever possible. This BDD approach also documents and ensures transparency: each piece of code is there for a reason, and the test cases describe the desired behaviours.
Custom Integration Before Custom Code
We rarely start a new project with a blank slate. Rather, we take advantage of existing solutions that provide a solid base and add customizations as required.
For most of our larger projects, we use Drupal as a basis. This means that we are largely doing integration, providing our clients with a solution that includes long-term stability, a community of potential developers, and regular security updates. By minimizing the amount of custom code necessary to solve the problem, we also minimize the risks for maintenance and support.
The Right Tool For the Job
By staying familiar with a range of different possibilties for different scales, we can deploy everything from static HTML (built on the Hugo templating system), to customized Drupal sites for ecommerce and data-driven projects, to auto-scaling multisite systems.
Sustainable Approaches to Work
As veterans of more than one technology cycle, we have over a century of experience in software development and project management on our relatively small team. We know how to produce high quality code without burning out ourselves (or our partners). We follow reasonable work schedules and use genuinely agile development practices to make sure we’re still around a few years from now to keep our projects maintained and running well.