H&Cs roots are in software engineering

The company grew around a shared passion for software craftsmanship. This commitment to building elegant solutions still drives our approach to technology today.

We believe that software development is a badly misunderstood discipline and that the misunderstanding of its nature is what leads to so many high profile costly project failures. The root of that misunderstanding is often found in wrong metaphors. The unusual combination of the technical skill, creativity, logical objectivity, and team work means that it is a difficult discipline to find the correct metaphors for.

It is closer to musicianship than anything else, and certainly much closer to this than it is to displinced concerned with constructing to which it is often disastrously compared.

Technically we do this by using languages with an algebraic type system. What this means in simple terms is that we can transfer what's written on the post into computer code which will form part of the system without making it any less readable to the key stakeholders.

It’s not magic, but it is like music

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 highly talented and trained engineers working with maximum autonomy. The job of management is to assemble the team, choose a destination, and then get out of the way.

Scale with design not labour

Our technology choices reflect this mindset. We don’t choose technologies that are designed to give the impression that you can scale up a big team of average people because they will be following design patterns and prescribed structures. The Object Oriented world with its well established and elegant design patterns often leads to team bloat and unmaintainable software in which under qualified developers can create the illusion of short term progress but cutting and pasting existing code around. AT H&C we use many techniques from OO but also use many patterns from functional patterns which tend to be more expressive and maintainable in much less code that then doesn’t have to be maintained by a large team of error prone junior developers.

Demystify all the things

Fundamental to our approach is to help all stakeholders to understand that code is just a language for writing instructions. Most languages are good at writing instructions, the difficulty is to know what the instructions to the system should be. We use languages with what’s known as an algebraic type system which enables us to record instructions in a language that the computer and the non-technical stakeholders can understand.

The job of the software engineers is not to translate requirements into code. They must enrich and deepen the specification by writing it in a more precise medium.

One piece flow

H&C’s approach to software delivery is heavily inspired by the same Lean principles which many of our clients apply to their production lines. In our solutions code is the product and waste is the delays in the code being deployed.

H&C believe in making many small and frequent updates so that complexity does not build up

This also creates a virtuous feedback loop with the end users of the system. In Lean terminology this is called One-Piece Flow and it's incredibly powerful when applied to development of the complex technology. This approach allows our teams to iterate towards the optimal solution and then continuously evolve with the changing business context and user needs.

Lean architecture

We use many techniques from lean manufacturing to help us make scalable systems whilst avoiding premature optimisation. This form of optimisation makines system needlessly complicated for the foreseeable use case and is especially counter productive if those changes can be made later if and when scalability demands it. This approach leads us to identify waste in the system architecture and remove it. System should be as simple as possible but not simpler. Is this regard we use microservices architecture with queues between.

Distributed by default

To follow our philosophy of small teams of exceptional people we need to cast a wide net. As a result we decided back in 2014 to allow everyone to work from home. We found that this made our people more productive as each of them now had a closed door office and the number of interruptions was greatly reduced. We have been influenced by research that shows that developers working in open plan environments write more bugs that their colleagues who work from home. GThis way of working enables us to rapidly scale with talent as our hiring criteria rather than proximity to one of our offices.

Proven technology within the H&C Cloud

For more detailed explanation of our approach read more about Developers perspective.

As software engineers we love automation and hate repetitive work. This is why we have built a wide range of tools, technologies, and libraries which we reuse across our projects. This reuse enables us to ramp up very quickly on new projects and reduces technology risk in the 4 key solution areas in which we work. We have gathered these tools together in the H&C ToolKit which runs on the H&C Cloud within an ISO certified environment running on Azure. The H&C toolkit also runs on GPO and AWS. Our solutions are normally deployed using kubernetes and docker. Containerisation giving us rapidly scalability and ability to clearly demarcate the dependencies of our solution particularly if they interoperate with the clients legacy technology.

Innovate towards the future Augmented reality Image recognition Platformization More about innovating towards the future Connect with customers Driving CSAT with connectivity Self serve knowledge bases Automated expert assistance More about connecting with customers Empower your sales force Real time sales tools Business model exploration Chatbots and sale automation More about empowering sales force Optimise productivity Knowledge management Real time operational intelligence Empowered field engineers More about optimising productivity H&C Cloud IoT scaffold AI driven search UX patterns Front end tool kit Image recognition Omni channel Elastic scaling Continuous integration Data science pipeline API framework Secure infrastructure Logic engine Innovate towards the future Augmented reality Image recognition Platformization More about innovating towards the future Connect with customers Driving CSAT with connectivity Self serve knowledge bases Automated expert assistance More about connecting with customers Empower your sales force Real time sales tools Business model exploration Chatbots and sale automation More about empowering sales force Optimise productivity Knowledge management Real time operational intelligence Empowered field engineers More about optimising productivity H&C Cloud IoT scaffold AI driven search UX patterns Continuous integration Data science pipeline Front end tool kit Image recognition Omni channel Elastic scaling API framework Secure infrastructure Logic engine Innovate towards the future Augmented reality Image recognition Platformization More about innovating towards the future Connect with customers Driving CSAT with connectivity Self serve knowledge bases Automated expert assistance More about connecting with customers Empower your sales force Real time sales tools Business model exploration Chatbots and sale automation More about empowering sales force Optimise productivity Knowledge management Real time operational intelligence Empowered field engineers More about optimising productivity H&C Cloud IoT scaffold AI driven search UX patterns Elastic scaling API framework Elastic scaling Secure infrastructure Logic engine Continuous integration Data science pipeline Front end tool kit Image recognition Omni channel Innovate towards the future Augmented reality Image recognition Platformization More about innovating towards the future Connect with customers Driving CSAT with connectivity Self serve knowledge bases Automated expert assistance More about connecting with customers Empower your sales force Real time sales tools Business model exploration Chatbots and sale automation More about empowering sales force Optimise productivity Knowledge management Real time operational intelligence Empowered field engineers More about optimising productivity H&C Cloud IoT scaffold AI driven search UX patterns Elastic scaling API framework Elastic scaling Secure infrastructure Logic engine Continuous integration Data science pipeline Front end tool kit Image recognition Omni channel Innovate towards the future Augmented reality Image recognition Platformization More about innovating towards the future Connect with customers Driving CSAT with connectivity Self serve knowledge bases Automated expert assistance More about connecting with customers Empower your sales force Real time sales tools Business model exploration Chatbots and sale automation More about empowering sales force Optimise productivity Knowledge management Real time operational intelligence Empowered field engineers More about optimising productivity H&C Cloud IoT scaffold Continuous integration UX patterns Elastic scaling Secure infrastructure Logic engine AI driven search Data science pipeline Front end tool kit Image recognition Omni channel Elastic scaling API framework

Specification and Implementation are the same activity

Traditional approaches view engineering as having two distinct and linear phases. First projects go through a specification phase and, once that specification was signed off, the implementation phase would begin. This false separation between specification and implementation causes most IT project failures. It was also the catalyst for the creation of the Agile movement. There is a lot that can be said about the benefits of functional programming over the more common Object Oriented approach and there is further information on the technology page. Its key feature in solution design is that it separates data modelling from system behaviour. It is the mingling of data structures with behaviour which makes some code unreadable to everyone except an expert engineer.

Constriants are insights

Start by understanding the domain. Then enforce your understanding of it in the instructions.

Most problems are solved through iterations rather than speculation.
The important thing is to start iterating.

Technologies we use

.Net

F#

C#

Python

Docker

Kubernetes

Google cloud platform

Amazon web services

Microsoft Azure

Tensor flow

Keras

Xamarin

React

Angular

Raspberry Pi

Android

iOS

Learn how technologies we deploy could transform your business

Get in touch and discuss if we could help you achieve your targets.

Talk to H&C