Core Principles

posted by Matías E. Fernández

Developing software requires engineers to constantly make decisions. Those Decisions sometimes concern new components or systems being developed. In that case engineers are relatively free to do as they want. They can decide on the architecture, best practices and the tools and technologies involved. Implementing things from scratch is what software engineers generally enjoy most.

More often however, software engineers have to modify, extend or interact with existing pieces of software. Generally those existing parts where developed by others. The existing parts have to be considered and pose limitations to how new parts have to be implemented. Working on existing software is what software engineers most often dislike. Particularly when it was developed by others.

But then, software is never finished. Requirements change, feature requests arise and thus software needs constant adaptation. As much as software engineers want to write new software from scratch, sooner or later that software will require rework. It’s always worth taking that into consideration when developing something new.

This leaves us with two questions:

  • How to develop sustainable software?
  • How to handle existing (legacy) software?

At work, my team and I decided to write down a couple of principles that we think address both questions in a sustainable way. We agreed on 6 core principles and wrote them down to make them explicit. As a framework and reference they will hopefully help our future selfs and our colleagues in their decision making.

Over the course of the next 6 articles, I’d like to present you these core principles:

Writing them down these is our attempt at creating a common understanding of how we want to do things right. For me as a team leader it was a way of expressing my intent and align the team. Having developed these core principles as a team ensured both interest and support from all team members.

From Dev-Team with