What principles should guide engineering decisions? At Procuret we are starting to scale up. It's time for us to grow our engineering team. I want to ensure that we can do so while retaining a principled engineering culture.
To that end, I've drafted up the following principles.
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.
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.
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.
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.
Our code should be at least somewhat comprehensible to non-technical observers. Declarative, natural language code is fast, maintainable code.
What do you think? Have I got it right? What would you add or change?