Quality is everything
H&C's approach to software engineering is inspired by the Lean Manufacturing principles first developed by Toyota in the 1930s. We focus on eliminating waste from the process of turning business requirements into software. This enables us to deliver the highest quality solutions.
Demystify all the things
We help stakeholders to understand that code is just a language for writing instructions. Most languages, including plain english, are good for writing instructions. The difficulty is in knowing what the instructions should be.
We use programming languages with Algebraic Type systems. This enables us to record instructions in runnable computer code that can also be understood by non-technical stakeholders. This ensures that nothing is lost in translation between business domain experts and our engineers.
Scale and quality by design
We know that small teams of exceptional engineers are many times more productive than much larger teams of less experienced people. Unfortunately, SCRUM and object orientated design patterns have led to very large teams and bureaucracy heavy development processes.
Our use of Functional programming eliminates code bloat by capturing business logic concisely. Our commitment to waste reduction leads to a client engagement model that focuses on delivering value over ceremony.
Technologies we use
.NET
F#
C#
Python
Docker
Kubernetes
Google Cloud Platform
Amazon Web Services
Microsoft Azure
TensorFlow
Keras
Xamarin
React
Angular
Raspberry Pi
Android
iOS
One piece flow
Another Lean Manufacturing principle we have applied to our software delivery process is 'One piece flow'. Many of our clients are already applying this principle to their production lines. Working in large batches requires speculative planning and reduces feedback information. Instead we create quality through a feedback loop by continuously delivering small updates. This enables us to delay decision making until we have facts, rather than forecasts. It also ensures that quality control is a continuous rather than retrospective activity.
Music not magic
Writing software is like making music, the quality of software is as dependent on the skill of the engineers as music is upon the level of the musicians. Quality in software is measured in speed to market, number of bugs, how well it solves the target problem, and how easy it is to change as the problem and surrounding context evolves. These problems are best solved by a small team of empowered engineers who work with tools and methodologies that reflect their expertise.