Skip to content

Guiding Principles

At HoneyGrid we aim to quickly build software that is easy to maintain and cost-effective to run. To achieve this we follow a set of guiding principles.

  1. Plan together, implement alone: When working on a new feature, we should begin with a shared understanding of the problem we are trying to solve, create clearly-defined acceptance criteria in a product requirements document, create an engineering spec that includes a detailed set of tasks, type interfaces, and wireframes. We can only commit to and implement a feature once we have adequately planned it. Once we have a plan in place, implementation should be relatively straightforward and can be completed by a single developer + AI.

  2. Use AI in all stages of the SDLC: We should use AI to help us plan, design, implement, and test our software. We should use AI to help us write code, review code, and even write documentation. Current AI models have massive context windows, large knowledge bases, and the ability to index additional context specific to our project. You’ve got the best pair programmer in the world at your fingertips. Use it!

It's dangerous to go alone! Take this.

  1. Build for yourself 6 months from now: With everything you build, pretend you’re coming back to this code 6 months from now and don’t remember how it works. Write code that is clean, easy to understand, well commented, and easy to maintain.

  2. Write tests: We should write tests for everything we build. Test the happy path, the error path, and the edge cases.

  3. Write documentation: We should write documentation for everything we build. AI is great at generating documentation, so we should use it to help us write documentation. Documentation makes it easier for us to understand the code and also for us to pass context to large language models.

  4. Ship early, ship often: We should ship our software early and often. We should ship our software to production on a regular basis. We should ship our software to production on a regular basis.

  5. Feature flags over branches: Feature flags enable us to ship features to production routinely, lowering complexity and reducing the risk of shipping broken code because everything is tested in production.