Digitalisation – Creating a software organisation

Digitalisation – Creating a software organisation

Software is difficult to master, but at the same time is its mastery the key to competitive advantage in the digital world. Success depends basically from putting in place the following elements:

  • Know why you need to create your own software, and it should be about profit.
  • Make sure your requirements engineering capability is top notch.
  • Establish and nurture multi-skilled DevOps teams that contain domain knowledge.
  • Choose good programming languages, automated development environments and engineering practice.
  • Make sure its part of the firms technology branch.

For those who want to learn more, a more thorough story is told below:

The first thing to put in place is the rationale for doing it. The only valid reason is profit. I have chosen to talk in terms of profitability, as I see cost reduction as a mean to create profit.  There are basically three ways software can create profit:

  1. Create a product and license it to users for a fee.
  2. Create an online subscription service.
  3. Create an internal product or service that automates and optimises internal processes.

In addition there is a forth alternative; make internal services available for external customers for a fee. All these three options can use open source development and licensing models for cost reduction and sharing. How that can work will be addressed in a separate post.

So, knowing why you want to be good with software, lets take a look at what you will need to put in place.

Firstly, since software is systematised knowledge, and knowledge is perishable by nature your software will need to be continuously updated. This make your software outfit a centre of change and it needs to be designed in such way.

Secondly, to quote Steve Jobs: «the most important software you have, is the one you decided not to write». This mean that product management is crucial to succeed and it means that the product owners, to use a SCRUM term, most important word is NO. Being able to prioritise features in such way that released products or services continuously adds business value is crucial for the profitability of your investments. In terms of software engineering this mean that a good requirements process need to be in place.

Good requirements is the key to reduce rework. Therefore is it not enough to provide the right requirements, but the requirements need also to be right. If it cost $1 to fix a requirement the same defect will cost $20 during design build and most likely $200 or more in production. Good requirements engineering practice is the key to product profitability and product quality.

Thirdly, with a backlog of good quality requirements we need a skilled team of developers with good software engineering practices at their backbone. The best way to organise the product team(s) are as DevOps, where the same people is responsible for new features and operational stability / product quality. The team should consist of both subject matter specialists and software engineers, usability expertise and testing capabilities.

On the technical side I have a preference for strongly typed programming languages combined with Domain Driven Design, ensuring that the domain concepts at hand find its way into the source code, and that the source code is readable in terms of domain concepts. A banking systems operates with concepts such as accounts, interests rates, deposits and withdrawal.

To enhance product integrity develop libraries that are shared between various modules. Such libraries consist of functions and immutable value objects.

Fourthly, put in place an automated production lines for both development and operation. Instrument the running code with logging and use tools such as Splunk to analyse these logs in real time. It´s the only way to capture and understand the products operational behaviour.

Finally, how to organise? Dependent of size, but my recommendation is to make this entity part of the firms technological muscle and place it at the appropriate organisational level. The more important it is for the firms competitiveness the closer it should be to the CEO.

Digitalisation – Becoming a software company

Digitalisation – Becoming a software company

Accepting that future success depends on how good your organisations becomes with software does not come easy for leaders who have succeeded in a traditional industry sector; it be oil, health care, engineering or manufacturing.The hardest part  is to understand  the practical implications with respect to what decisions and actions that must be made and carried out to succeed.

Before we try to answer what actions that must be taken, lets take a look at what software is and what its used for. Software is a representation of systemised knowledge that can be repeatably executed by a computer.

Knowledge mean anything from what is needed to control the temperature in a living room to pursuing strategies in war-games or even war it self and everything in between. One off the most common applications is to use software to strengthen human capabilities and senses, as is the case in medical ultrasound imaging. It is software that make it possible for doctors to look into the internals of a beating heart and to see if the heart chambers are performing as intended.

The same is true for seismic imaging where software algorithms are used to create images of 200 million old sediments, tousands of meters below todays surface.

Its by understanding that software is knowledge we understand why software is perishable and need to be continuously updated. The need for continuously updates includes also the software tools used to create software.  This make change the name of the software business. For sectors who strives to avoid change this feels scary.

At this point one might argue that we have created software programs for more than 50 years, what have changed? The answer to this is the cost of computers. Back in the days a computer was so expensive that only the most valuable problems where tried addressed, and programming was for the first of the few. Today computer hardware is pervasive and almost for free, making the start-up cost with global reach affordable for anybody. Think of the app-stores and the fact that smart teenagers with some luck become millionaires.

The effect of this is that software is leveraged at the edge of any business, forcing firms to systemise their intelectual property and knowledge and package it into software for sharing, sale or just internal use.

On the strategic level the implication is that vendors become competitors, customers might become suppliers and nobody knows how the market and the competition will look like down the road.

For senior management the solution is simple, they have to make software a first order thing to manage and create an organisational entity that is made for taking care of software at the edge of their business. Further they must create a culture for learing and continious change.

By not doing so they will loose opportunities they never new they had, and in the worst case their organisation will face extinction.

How such entity could be created will be addressed next.

Digitalisation – Reinventing the toolmaker

Digitalisation – Reinventing the toolmaker

We the humans have tried to strengthen our capabilities and simplify our living since we took our first steps on the planet by creating tools. Historically our tools has been simple, an knife an ax or a hammer. With the industrial revolution they began to take the form of powerful machines,  machines that was directly controlled or steered by us.

Automation made it possible to delegate some of the required control to a computer, or to the «logical resolver» as some might like to call it. With the physical downsizing of digital computers and their  dramatically drop in cost, any machine can now be equipped with a computer enabling us to make smarter machines. To instruct these machines to do anything useful we have to develop software programs, something we have been striving to do for more than five decades.

The term «Internet of Things» mirrors the capability to equip smaller and smaller machines with more and more computing power, creating  machines that can be connected into clusters or networks of interconnected machines.

While the Internet of Things movement has focused on the physical things, we must also understand that there are even more machines without any physical form, the software robots.

(Be aware that our digital world diverse from Tolkien´s world. While Sauron could not excess his final power without physical form, requiring access to the ring of power, the formless robots of cyber space has no such limitation).

These logical machine´s or computer programs exists in the cyberspace and do a lot of work such as buying and selling stocks, oil cargos and optimising value chains. They perform the tasks they are programmed to do, including learning and adapting to a changing environment.

With digitalisation, firms will compete not only by providing the better physical machines, but also on their ability to develop and deploy logical machines, automating / actively supporting their processes, it be designing an oil well or diagnosing a cancer patient.

This is also the reason digitalisation will drive radical change to how we thing about tool making. Traditionally, disciplines, being a civil engineer, geologist or medical doctor have been driven by the possibility to perform their trade directly and they have developed the tools needed for such direct involvement, it be the scalpel or the screw driver.

With digitalisation, firms, it be hospitals, oil companies or car manufacturers will need to use their best experts not only to perform their trade directly, but also to involve them in the development and deployment of digital assets or assistants that can perform parts, if not all of their work, or directly support a more junior practician.

This represents a major shit in how we think of professions and professionals. Firstly, disciplines are forced to become tool makers. Secondly professionals are forced to work with other professionals creating tools. For many professionals this imply that they must spend time with programmers creating the software that captures their insights and knowledge so execution can be left to a computer.

The benefits from this change is that suddenly the expert is available 24 hours a day, He or she is not tired any more and their knowledge become institutionalised and available for other more junior practicians.

The downside is that professions need to change their way of thinking about their profession. They might also need to change behaviour and culture. They need to think of themselves as toolmakers, not only tool users.