Our Approach

Complexity, still the primary cause of failure and delay of IT projects, arises from the interaction of concerns.

The fundamental concerns in IT systems are code, form, data, and time — their subtle interactions and couplings combine to have a suffocating impact on software projects.

Our approach to building IT systems is defined by a unique methodology and a set of supporting tools that allow us to keep these four concerns separate, resulting in:

Rapid development of large IT systems

Increased levels of agility and software re-use

Lower maintenance costs

Secure, reliable systems that are robust yet flexible

Time

We believe that systems should be built on the conceptual bedrock of a dual timeline. This provides a universal set of essential capabilities for organizations who operate within disparate and ever-evolving landscapes of information, and who require an accurate and consistent view of information at any point: past, present and future.

The main timeline is fully controllable and it allows for:

Historical corrections

The integration of imported records

The previewable orchestration of future states

The secondary timeline is immutable and provides a guaranteed audit trail, 'built-in'.

image
image

Data

Data is fundamental to the creation of software. It will routinely outlive the interpretations we derive from it and the applications we build on top of it. Therefore, we will always seek to lay the foundations of data management independently of a particular application or use-case, and above a common timeline.

Table-based structures, found in spreadsheets and traditional SQL databases, are helpful for displaying and analyzing data, but they are not an appropriate format for storing data.

Tables are insufficient for representing data in its purest form, and this is particularly obvious when modeling sparse data or multi-valued attributes, or coping with the evolution of data over time.

Instead, we believe that data is best recorded as units of facts and relationships, without constraints.

More simply put, we believe graph-oriented systems point us towards the correct approach for data management, and organizations, such as Facebook and Google have proved how powerful the widespread use of graph-structured data can be.

Form

Organizations can unlock different amounts of value from data depending on how they interpret it, how they shape it and the constraints they place on it.

Complex types & tables, schemas & structures, classes & containers, models & metadata, formats & encodings, representations.

These are the forms we construct for interpreting, analyzing and extracting value from our data. Tools such as relational schemas and ontologies are common structures we use for understanding, analyzing and managing our information.

Too often, software developers will attempt to "codify" these structures into their software as types and objects.

By understanding that schema is just another form of data, on a timeline, we let our information systems grow and flex with the businesses they serve. This is how we are able to build maintainable models of the real world.

image
imageimage

Code

The software patterns and practices that underlie your application architecture are certainly important, but less fundamentally relevant than making the correct choices with regards to the structure of your data in time. Assuming those other foundations are in place, we believe that the best approach to code is to keep it short, readable and expressive.

In reality this means we prefer:

Writing modular & generic libraries of functions that operate over many types of data structures

Minimizing the use of state wherever possible

Maintaining declarative structures that avoid the need for reasoning about imperative control flows

By pulling out the state and domain, the remaining code is simple. Developers can focus on writing code to implement business logic, pure functional calculations and derivations, with resulting actions that automate the execution of business processes.

As software complexity is tamed, productivity soars.

Enabling Technologies

We select and develop particular tools and technologies that compose harmoniously, chosen to support our methodology.

image

XTDB

XTDB is our unbundled bitemporal graph database:

Transactional consistency

Query with Datalog, EQL, or SQL

Pluggable backends include PostgreSQL, Kafka, RocksDB and many more

XTDB provides the data 'time-line' as a value, storing both 'valid' time and 'transaction' time. Queries that are often impossible in other databases are made simple in XTDB.

image

Clojure

Many object-oriented programming languages coax the developer into coupling code with data.

Functional programming languages pull them apart. Our go-to functional programming language  — Clojure — goes further, providing language features to protect simplicity.

image

Agile

JUXT's leadership is made up of experienced software consultants who have led Agile projects, run Agile training courses and brought Agile methodologies into large organizations.

We have taken the best parts of Agile methodologies and combined them into a process that scales and delivers. We deploy often, provide regular showcases and encourage daily stand-ups. We use best-of-breed tools to provide transparency and to manage project work-streams.

image

Cloud

We’ve been building systems on AWS since early 2014, over that time we’ve accumulated first-hand knowledge and expertise of managing and automating AWS infrastructure.

Our AWS systems have been successfully audited for PCI DSS compliance and won praise for their operational stability, information security and regulatory compliance. We have experience in meeting GDPR requirements and protecting data privacy.

aws, google cloud, heroku
Head Office
Norfolk House, Silbury Blvd.
Milton Keynes, MK9 2AH
United Kingdom
Company registration: 08457399
Copyright © JUXT LTD. 2012-2024
Privacy Policy Terms of Use Contact Us
Get industry news, insights, research, updates and events directly to your inbox

Sign up for our newsletter