The shift to agile software development techniques is equivalent to the shift to the object-oriented paradigm.
The prevalence of programming languages such as Java, C++, Object Pascal, C#, and Visual Basic make it incredibly clear that object-oriented technology has become the approach of choice for new development projects. Agile software developers, be they application developers or agile DBAs, must have an understanding of object orientation if they are to be effective on modern software projects. This includes understanding basic concepts such as inheritance, polymorphism, and object persistence. Furthermore, they must have experience with the industry-standard Unified Modeling Language (UML). A good starting point is to understand what I consider to be the core UML diagrams — use-case diagrams, sequence diagrams, and class diagrams — although, as I argue in Chapter 10, you must be willing to learn more models over time.
One of the advantages of working closely with other software developers is that you learn new skills from them, and the most effective developers will learn and adapt fundamental concepts from other disciplines. An example is class normalization, the object-oriented version of data normalization, which is a collection of simple rules for reducing coupling and increasing cohesion within your object designs (data normalization and class normalization are the topics of Chapters 4 and 5, respectively).
This chapter ...