Here at Terracoding we take pride in the software we deliver.
When we first decided to dedicate ourselves to the company, we tried to sit down and come up with a series of values that best describe both ourselves and what we strive for as part of the software development process.
The following is my attempt to best summarise and explain these principles:
1. Speed is great, but take time to figure out what matters first
You should always strive to deliver software as quickly as possible, whilst making every effort to ensure the result is both correct and well tested.
We achieve the best result by correctly understanding the problem, and moving forward appropriately. Any effort to rush forward without understanding is typically repaid again with any future changes, however pragmatism is king and there are always exceptions.
2. The collective wisdom is greater
It is almost always worth getting a second opinion on any large decision.
As much as we may dislike the fact, we are all human and as such bound to make mistakes. No one person has the correct answer to every question immediately.
When it comes to major decisions, verify your solution with someone else to check you haven’t missed something. Don’t be scared to make decisions when necessary, but take into account input from others when it’s easy enough to do so.
Note: This typically refers to anything that affects others, and/or is hard to change/adapt further down the line.
3. We have strengths and weaknesses
Each team member has a different history and set of experiences. We should respect others for the experience they have, and the strengths and weaknesses cultivated as a result.
Along similar lines to 2, no one person is the best at everything. We should do our best to maximise the strength of the team, whilst simultaneously improving on our weaknesses.
We should not avoid tasks we are uncomfortable doing, instead we should seek input from those who are particularly proficient at them.
4. Keep an open mind
It is too easy to grip tightly to a decision or idea simply because it was ours. Keep an open mind when discussing with colleagues and clients, and make every effort to understand both someone else’s point and the reasoning behind it.
This will not only result in better decisions being made, but less arguments and butting of heads.
5. Check your ego at the door
You are not the work you produce, the decisions you make, or the code you write. Constructively criticise the work of others, as well as your own, and expect constructive criticism from others.
Do not take criticism of what you’ve done as a criticism/attack on yourself. Be proud of what you’ve done, and be willing to defend the reasoning behind your actions (keeping in mind 4).
Finally, try to never collapse a discussion into an argument, and always be willing to take a step back and put everything into perspective. We are a team and there is no benefit in a toxic environment.
- There will always be exceptional situations.
- Try to keep in mind that these are guiding principles and not strict rules to adhere to.
- Pragmatism is king, be as flexible as possible to maximise the end result.