To write better code, programmers have to apply design fundamentals and read existing code, says Martin Thompson, a Java Champion and high-performance-computing specialist. InfoQ interviewed him after his Engineering You talk at QCon London 2016 about the challenges that the software industry is facing and what programmers can do to deal with those challenges and become better software engineers.
The web experience through a mobile device differs in many ways from a desktop version with its smaller screen, limited data plans and need for fewer requests. A mobile device also requires different data and may provide other interactions, e.g. with a bar code reader. One solution is to have one API backend for each type of client, a Backend For Frontend (BFF), Sam Newman explains in a blog post.
There is tremendous value in microservices, probably giving us the best environment we have ever had for doing Domain-Driven Design (DDD), Eric Evans stated in his keynote at this year’s DDD Exchange conference in London. Iteration is the most important key to good design and microservices is the second attempt, after SOA, to get things right.
For Ralf Westphal common architectural patterns like Layered architecture, Hexagonal architecture and Clean architecture all look very similar giving a very crude idea of the structure of an application. Looking for another way of describing architecture Westphal has defined an architectural style, IODA Architecture, built on three formal responsibilities: Operation, Data and Integration.
Move as much as possible of the behaviour away from the Entities into Value Objects when working with Aggregates, As more behaviour is needed this is added as new value objects, Paul Rayner recommends in a series of blog posts covering aggregates, entities and value objects, all concepts from Domain-Driven Design (DDD).
Successive changes to architecture and technology throughout the lifetime of an application can lead to a fragile and fragmented codebase that is hard to understand and maintain, an anti-pattern named Lava Flow or Lava Layer that Mike Hadlow often finds in enterprise software, especially in large, mission critical and long-lived software.
Layered systems are an architectural style used essentially to avoid coupling, the biggest enemy of software maintainability, with Ports and Adapters, or a Hexagonal Architecture, an example of such an architecture, Ian Cooper explains in a presentation about architecture styles, specifically the Hexagonal Architecture.
Domain-Driven Design (DDD) together with Onion Architecture is a combination that Wade Waldron believes has increased his code quality dramatically since he started using it a few years back. Using DDD was a kick-off but together with Onion architecture he found his code to be more readable and understandable, and far easier to maintain.
Oracle's latest update to Java, 8 update 11, introduced a breaking change that has affected a range of third-party tools, including JRebel, Groovy and Google's Guice library.
Martin Thompson answers a few questions about the opportunity for developers and architects to introduce custom protocols to their system's interaction points.
This article has been updated based on community and Jing Chen (Facebook)’s reaction. (See the Update section below.) Facebook came to the conclusion that MVC does not scale up for their needs and has decided to use a different pattern instead: Flux.
Independently from each other, Richard Warburton in a presentation, and Mark Seemann in a blog post both talks about object-orientation and the SOLID design principles from a functional programming perspective.
The patterns & practices group at Microsoft have released a guide with solutions and patterns suitable when implementing cloud-hosted applications. The guide contains ten guidance topics together with 24 design patterns targeting eight categories of problems covering common areas in cloud application development. Also included are ten sample applications to demonstrate the usage these patterns.