Objects. They were big in the 1990s, right? But not so much now, as we hug in our scrums, pattern our designs, get building our architectures, micro our services, internet our things, web our apps and get functional with our code, all the while reusing existing components as our starting point. Right? Objects are something we might look at in the rear-view mirror – what is their importance now? If we look back carefully, objects in the mirror are closer than they appear.
Target Audience: Developers, Architects
Prerequisites: Knowledge of OO, software engineering and current architectures and technologies
You will learn:
- Overview of the roots and history of object orientation
- Impact of object-oriented technology on current state-of-practice software engineering
- Practical advice for deliberate use of object technology in development projects
Objects. They were big in the 1990s, right? But not so much now, as we hug in our scrums, pattern our designs, get building our architectures, micro our services, internet our things, web our apps and get functional with our code, all the while reusing existing components as our starting point. Right? Objects are something we might look at in the rear-view mirror — what is their importance now?
If we look back carefully, objects in the mirror are closer than they appear. They are ever present as an influence, a source and as the foundation of much of our modern practice. In the spirit of Agile, we take a retrospective look at where they came from, the people, the movements, the ideas and the technologies that were influenced and built on OO. We see where they are now and where they might go.
The talk covers the following topics
- Objects have Failed (Dick Gabriel): a discussion on potential shortcomings of OO, e.g., misuse, missing features, insufficient modularization concepts, no system-level design concepts, no increase of productivity. Basis for the discussion is Dick Gabriel's essay, paired with the famous discussion on “Why Objects Failed” in the Byte magazine from 1996.
- Objects have not Failed (Guy Steele): the list of techniques, practices, and methods the OO community developed over time to address observed shortcomings, paired with a discussion of Guy Steele's response to Dick Gabriel's essay:
o Modularization: components, services
o Architecture: patterns, microservices, web services
o Productivity (in the broader meaning): agility
o Misuse, missing features: sharpened features/new features in OO languages (concurrency, functional programming, lambdas, closures, reflection)
The discussion of these technologies also addresses some meanders, e.g., Singletons as the new global variables, Visitor to mimic double-dispatch (which is often a design flaw), agility without discipline, agility as the new "controlling method", ...
- Object orientation is still visible in many advances in software technology and methodology. For each of the topics in part 3, the heritage of objects is discussed. For instance, object properties in components and services, better design with objects in the GoF patterns, etc.
- Objects in the mirror are closer than they appear. A short reflection of the key topics of the talk, plus an outlook where they might go in the future. E.g., objects were intended to represent real-world things, which makes OO attractive as a technology to implement IoT systems.
The talk is an interactive discussion between the presenters, who also include real-world anecdotes from their decade-long practical experience into the discussion.