“Going back to simplicity and elegance”

  • Created by Sebastian Höing
  • Javaland

Java Champion Martin Thompson is well known for his more than two decades of experience in building complex and high-performance systems. In his keynote at the upcoming JavaLand 2017 he is exploring a different development approach by listening to design pressure. In this interview Thompson explains these design pressures and how they help to evolve software architecture.

Martin, how do you think the future of Java and software architecture will be in 20 years or more?

I think these quality attributes are going to come much more central as we become more connected to the web. We are going to have to be much more aware of security. Being secure has to become a much more fundamental concern. We need to become more efficient, our CPUs are not going to get significantly faster; we are going to have to use the ones we have much more efficiently. We will have to learn to write more efficient code and be less wasteful. There are lots of other concerns with good engineering: we’re going to have to go back to simplicity, elegance, and doing the right thing rather than creating, baroque monstrosities we currently produce for software.

You will give a talk about projects where the team is under enormous design pressure. Can you tell us more about design pressures?

When the most important requirements are quality of service requirements there are pressures on the design. They could be performance, security, or reliability for example. Many people will call them non-functional but I don’t like to use the words “non-functional”, because it makes the brain work the wrong way round. The brain only works by positive assertion. When these quality of service requirements are the most important then they cause you to think about the design in a way that means you can’t follow the trends. They will drive the requirements towards picking different design patterns. Different design choices and patterns will get applied from what is typically seen. But we can move forward by applying those design patterns dictated by quality of requirements.

What is the point here? 

It’s just being aware of what is important. We are in this world where people follow trends and they make design choices for an architecture even if they don’t understand the requirements. This is not like other engineering disciplines. Other engineering disciplines are driven by the requirements, not by trends so much. We, in software engineering, are very immature as an industry and as a result we are kind of learning that as we go.

Are there benefits for the software architecture?

Yes very much so. If you work on the more extreme end of performance, most people will think: Oh, I’ve got to use lots of threads, I’ve got to go concurrent to get the performance up. However when you measure you quite often find that this doesn’t make things faster, in any cases it can make things slower. This is because you end up with contention and from there you’re dealing with Universal Scalability Law and the mathematics behind it starts to dominate. Sometimes it’s much better to do things on a single thread, then things go much faster and that is counter to the logic of what people believe today.

So, would you say that design pressures are a kind of method or strategy for project management in software architecture?

It’s not so much a project management strategy. It’s more how we approach design – it’s approaching design with an open mind and being curious, letting the requirements and the data lead your design decisions, while practicing the fundamentals. So rather than apply the latest product or pick up the latest cool open source project, just look to the requirements.Do these requirements suggest that coupling needs to be applied here? Or does it need to be more decoupled there? Where do we apply cohesion? Where do we apply separation of concerns? What I’m suggesting is that we have design pressures. We have to listen to them. We have to do this more then we currently do.

What can the audience learn from your lecture?

I want to illustrate that whenever you have these strong requirements you can’t follow the trends. You have to go back to doing things from first principle, doing it with good engineering and good science. If you follow that path you often end up with designs that are not what people typically expect. That’s the journey I want to take people along so they can see and realize that we should go back to first principles more often. You don’t make assumptions of which design you are going to apply. You let the requirements drive your design patterns and you do it guided by measurement.

It’s the first time for you at JavaLand. What do you expect from the conference?

What I’m hoping is that I’ll have some good conversations with people. It’s always great to talk to people so that we can learn and share. Hopefully that will be something I will benefit from as much as everyone else. Hopefully my own talk will inspire people to have discussions about it.Martin Thompson is Keynote speaker at JavaLand with his talk „Listening to the Design Pressures“.