What we do
First and foremost, we believe that we must understand your business before we can suggest technology. Technology should never drive the business, the business needs must drive the technology choices. With that goal in mind, our approach to design follows the tenets of Domain Driven Design. As such, we focus on understanding your business Domain Logic, and coming to an agreed upon ubiquitous language which describes how your business functions and is understood by our engineers and by your experts so communication is never a problem. This shared language, and a rigorous process of refining the language and continuously adapting the model to be expressed in this language, ensures that the underlying software adapts as the shared understanding of the domain grows.
In addition, our development is test-driven. Specification of behavior and tests to check behavior are written incrementally while the code is being developed, to ensure that assumptions are clear, behavior is fully specified, and logic is covered by tests to prevent problems when assumptions or business rules change.
Within our development team, we have adopted the agile development methodology. The primary impact of this is to ensure that accountability of our engineering staff is improved, and less time is wasted on misdirected efforts. This approach also avoids long development cycles, and instead emphasizes rapid turn-around that is responsive to your needs.
Underlying all of our development efforts is a commitment to the discipline of software engineering. Code is well documented, well organized, and refactored often to ensure brevity, clarity, and efficiency. Layering is used when appropriate to ensure clear contracts and promote reusability. Above all, we take pride in our code, and expect it to be beautiful.