Engineering > Principles

Procuret Engineering Principles

Software development involves constant decision making. Interests must be balanced, compromises made, and difficult problems solved. In making those decisions, we are guided by the following principles.

1. User data are sacrosanct

Anyone that interacts with our software provides us with data. These data might be deeply and obviously personal, like identity documents. They might be less obvious personal, like browser data, approximate location, or usage patterns.

All of these data are sacrosanct. Protecting these data from inappropriate access, by parties internal or external, with intentions malcious or careless, are our primary concern at all times.

2. There is no such thing as "User error"

There's an old joke that some errors have the code PEBKAC: Problem Exists Between Keyboard and Chair. While funny, if used in seriousness such a joke reveals a dangerous arrogance. If someone using our software is confused, we have done something wrong. Our software is the problem.

3. Speed is quality

How often do we release updates, how fast do we build new features, how quickly does our test suite run, how rapidly do we fix reported bugs, and how short is our page load time on customer devices?

The faster we can do these and other things is a measure of our performance. What we do in a day is less important than how fast we do it.

4. There are no stupid questions

If you don't understand what someone else is saying, there is a very strong chance they don't understand either. Ask questions for your sake and the sake of everyone around you.

5. Readable code is good code

Our code should be at least somewhat comprehensible to non-technical observers. Declarative, natural language code is fast, maintainable code.