The computing scientist’s main challenge is not to get confused by the complexities of his own making.

        — E. W. Dijkstra

 

Our Mission

- holistic software solutions

We feel that lot of software solutions ultimately fail or become extensively expensive, because the development team loose focus on keeping the development process agile.

During this process accountability is often lost, as no single team has full insight of all the IT pieces that makeup a business feature.

We believe several advances in process and technology can be combined to address these problems and the benefit gained from combining them will be greater than the parts. 


AGILE PROCESS

Hofstadter's Law: It always takes longer than you expect, even when you take into account Hofstadter's Law.

— Douglas Hofstadter

Traditional project managemen try to give an estimate for a project upfront. Unfortunately the problem domain is poorly understood at the beginning of a project. This gives rise to estimation errors and a end product that does a poor job of solving the original business problem. The process will often fight changes to the original scoping of the project, since the changes threaten the original estimate.  

Opposed to this an agile processes embrace change. It tries to deliver the full product in measurable increments of business value (the product goes in production in small steps). This way the business owner can measure how far the project is by looking at the history of what the team has actually done, rather than look to the future and set a date based on whishfull thinking.

more >>


Micro Services

How do you eat an elephant? One bite at a time.

Software teams are often divided in sub teams base on technology; a database team, a middleware team and a UI team. Also deployment and daily operations of a solution is often handled by a separate teams. The end result is that when there is a problem with a business functionality, it can be quite difficult and costly to gather all the information needed to solve the problem. 

An alternative is to organise the software team based on business functionality, where a sub team delivers one or more microservices, that solves a single business functionality. The sub team owns the microservices (business functionality) and are fully accountable for the running service.

more >>


Functional programming

If you only have a hammer, you tend to see every problem as a nail.

        — Abraham Maslow

Some problems can be solved more naturally and simply in a functional programming language. This results in fewer lines of code and is less complex, hence the solution is easier and cheaper to maintain. 

Sometimes an objected oriented design fits the problem domain better. It is the hammer vs screwdriver discussion. The important thing is to consider both solutions.


Cloud

Cloud is about how you do computing, not where you do computing. 
- Paul Maritz, CEO of VMware

When the development team has to fully own a business feature, this includes deployment and mangement of the feature (micro service). Cloud computing providers is a perfect fit for this, it ensure the team doesn't get bugged down with setup and management of physical servers and networks. 


Automation

I choose a lazy person to do a hard job. Because a lazy person will find an easy way to do it.

― Bill Gates

As a project grows in size and scope it is important to automate repetitive task that would otherwise reduce the teams efficiency. Tasks like deployment and testing.