Agile Portugal 2010 » Interviews http://2010.agilept.org Born To Be Agile Fri, 30 Sep 2016 20:14:59 +0000 en-US hourly 1 http://wordpress.org/?v=4.2.10 Interview: Nicolai Josuttis http://2010.agilept.org/2010/06/14/interview-nicolai-josuttis/ http://2010.agilept.org/2010/06/14/interview-nicolai-josuttis/#comments Mon, 14 Jun 2010 18:13:24 +0000 http://2010.agilept.org/?p=1238

Nicolai Josuttis is an independent system architect, technical manager, author, and consultant. He designs mid-sized and large software systems for the telecommunication, traffic, finance, and manufacturing industries.

He is well known both in the SOA and C++ Community and to attendees at various conferences. He not only speaks and writes with authority (being the author of “SOA in Practice”, “The C++ Standard Library” and “C++ Templates”) but is also an innovative presenter.

Together with Jutta Eckstein he is a partner of IT-communication.com, two world-leading experts for the successful realization of large and distributed IT projects in practice.

Greetings, Nicolai. Thank you for taking some time to answer our questions. We are eager to hear about your experiences and lessons learned with SOA and coping with the agile way. We were hoping you could lift the veil a little bit just to tease the audience…

1. Service Oriented Architecture (SOA). It has been a hot-topic for some time now. In your view, has the trend become a full-fledged adopted solution or will it be just another “slowly fading away” fad?
Well, there is some disillusionment right now, so that a lot of people are disappointed about SOA. One reason is, that there is no clear definition of SOA and that a lot of people and companies just used the term because it sells well. So, I am not sure about the term, but I am pretty sure that the concept behind the term (at least according to my understanding) will remain. It will remain because the principles of SOA deal with the requirements of globalization in IT. We are moving from system development to the maintenance of system landscapes, where system development is only a part of. SOA provides principles for this need. For example, SOA accepts heterogeneity instead of fighting for harmonization. Harmonization is good, but in a global world requiring harmonization (common platforms, common data models, etc.) is not an option.

2. SOAP or REST?
The REST community claims that RESTful HTTP is a better approach for the utilization of HTTP. And yes, the fact that the native HTTP calls GET, PUT, and DELETE are idempotent so that in the Internet some caching and retry mechanisms are possible, is utilized with REST but not with SOAP (which uses only HTTP POST). On the other hand, as far as I know significant requirements of a sophisticated SOA landscape are not provided with REST. For example, we still have a variety of payload formats and there is no support for end-to-end security. So, REST might be better, but this is just a minor technical detail in system landscapes where you want to realize distributed business processes. I’d still prefer Web Services, if interoperability is the goal, but for specific connections REST might be a better option. And I see a significant risk of technical-driven interfaces, when people only care for REST. Something, which is definitely the opposite of the idea of SOA.

3. “Agile embraces change, SOA embraces heterogeneous systems”. Is this the strongest parallel between the two or are there others?
It is one analogy that might explain why SOA is to some extend as revolutionary as agility. Too long we thought we have to fight against these constantly changing requirements until we (or at least some smart guys) accepted that changes even during development are natural. And too long some people claimed that it is a good approach to have one model, one platform, one programming language, one ESB, etc. But that doesn’t scale. There will be a system size where all these “one fits all”-concepts are not an option. Period. End of discussion.But there are more common things in agility and SOA. In the SOA manifesto you will find a lot of agile requirements. For example, you can only introduce a service-oriented approach step-by-step (iteratively).

4. Can SOA and Agility co-exist?
They can and they have to. The agile value system is necessary for the establishment and realization of SOA, because to some extend, SOA uses agile principles in a more complex context. You have multiple projects running at the same time, with different virtual teams and multiple product owners involved. Without agile principles you are lost in SOA.

5. In your talk at Agile Portugal, you will address the organizational structure and culture suitable for distributed development. How is the readiness of companies when adopting SOA?
The biggest problem is that almost nobody has a clue, what SOA really is about and what a fundamental strategic approach this is. SOA is sold by technical people, who prefer Web Services or REST, or it is sold by vendors, who want to benefit from the hype, but almost nobody has a clue about the real business case of SOA. We talk about a concept that handles the problem of distribution. But distribution is very very expensive. One key element is collaboration. To realize a solution in multiple systems and teams, you have to work together. From the beginning (design) to the end (common distributed test data). That’s really hard and you might find out that in your enterprise culture you are not able to work together. You will give SOA the fault, but your problem is that you are not able to see the big picture of a problem and collaborate with others. Now, decide on your own: Is your company ready for SOA?

6. From your experience with large distributed systems, what was the hardest agile principle to uphold?
This is a tough question. Going through the principles I tend to give different answers:
  • Of course, due to the distribution of system landscapes you have the usual problems with face-to-face communication and trust (Jutta Eckstein is the better expert here).
  • Then, early delivery is hard to reach in a distributed system. The first business process using an SOA approach might take 3 to 6 months.
  • But may be my final answer is simplicity. There are so many good ideas for a sophistic versioning of interfaces that you don’t see the easy simple way: Each change of a service in production is a new version (independent from its backward compatibility). There are so many tools available that make things more complex. There are so many strange ideas of what an enterprise service bus should be. People don’t start simple and don’t take their time to start simple. In the long term, a lack of simplicity is usually a recipe for a disaster.

7. Can you give us a glimpse on how will things evolve regarding SOA in the near future?
Because we can’t stop globalization, the principles will remain.But due to wrong and broken promises the name “SOA” might be a problem. So, the term might fade away but the concepts will stay. A typical request to me as a consultant these days is: “We need help, but please don’t call it SOA, because we are not allowed to use this term any longer.” The common term right now is “integration architecture”.  And, by the way, neither cloud computing nor event-driven architecture are a new or better SOA. The concept of a service is in both ideas, but in very different contexts.

Nicolai, thank you again for your time. See you on June 25th!
]]>
http://2010.agilept.org/2010/06/14/interview-nicolai-josuttis/feed/ 0
Interview: Joseph Yoder http://2010.agilept.org/2010/05/14/interview-joseph-yoder/ http://2010.agilept.org/2010/05/14/interview-joseph-yoder/#comments Fri, 14 May 2010 14:35:36 +0000 http://2010.agilept.org/?p=545 Joseph Yoder is a founder and principle of The Refactory, Inc., a company focused on software architecture, design, implementation, consulting and mentoring on all facets of software development. We interviewed him by e-mail to know more about his keynote.

Hi Joe. First of all, thank you for answering our questions!

You are very welcome.  I always enjoy an opportunity to talk about software architecture, specifically the BBoM and the influence it still has on us today.

1. Your keynote is about the Big Ball of Mud pattern, fondly known as BBoM. Can you quickly explain what this pattern is about?

Our paper stated it pretty well so I will partly summarize from that:

“A Big Ball of Mud is haphazardly structured, sprawling, sloppy, duct-tape and bailing wire, spaghetti code jungle. We’ve all seen them. These systems show unmistakable signs of unregulated growth, and repeated, expedient repair. Information is shared promiscuously among distant elements of the system, often to the point where nearly all the important information becomes global or duplicated. The overall structure of the system may never have been well defined. If it was, it may have eroded beyond recognition. Programmers with a shred of architectural sensibility shun these quagmires. Only those who are unconcerned about architecture, and, perhaps, are comfortable with the inertia of the day-to-day chore of patching the holes in these failing dikes, are content to work on such systems.”

It is worth noting that If mud is such a bad thing, why do people keep making it and why does it continue to be so successful? Mud is related to Richard Gabriel’s “Worse Is Better” concept.  In a nutshell we are looking at why do we continue to talk about such eloquent architectures while, in reality, the most successful architecture deployed to date do not meet the desired vision.  There are many forces that lead to BBoM such as “Keep It Working”, “Throw Away Code”, and “Piece Meal Growth / Iterative Development”.  Give the current state of the art, maybe this is the norm and maybe we can learn from it.  Our paper discussed the details of how BBoM happen (why and the forces), why there might be valid reasons for them, and how to deal them.

A BBoM in Urbanism

2. Since it is such a common pattern, how long do you think it is possible to delay it?

First of all I want to say that Brian Foote and I are both strong proponents of good architecture.  We evolved from the Software Architecture Group at the University of Illinois where we were dedicated to solid software principles as outlined in good OO design, reuse, frameworks, patterns, etc.  We spent many years in this arena talking about good architecture, working on systems, and writing patterns about these ideal types of systems.  To our surprise, no matter how much work was being done or talked about relating to good architecture, it was very apparent to us that BBoM is a very common architecture that still continues to thrive in our industry.  So maybe we should not try to delay it, but rather embrace it and accept it for what it is.  Maybe it is the best we can do given our current tools and programming languages?

However I am still an optimist.  I believe there are some things we can do.  First, we must be honest and admit the fact of BBoM (that it happens and there are forces that lead to it).  Also, in some cases, it might be inevitable.  Until we do this, we can not do anything about it.  Then, once we see this we can be more proactive with dealing with it.  Rather than running from it and ignoring it, maybe we should embrace it for what it is, knowing it will happen.  Then, we can apply some well known principles such as continuing to evolve our architecture, applying good architectural principles as our system evolves, along with good communication and refactoring.  So, if we accept Mud for what it is and teach more about it, then we can deal with BBoM and help prevent it from getting too “muddy”. So, although we might not be able to avoid it or delay it for too long, we might be able to make our systems a little “less” muddy and give us ways to deal with mud as our architecture grows and evolves.  So this might be our way to delay it.  It takes a lot of hard work and commitment.

3. Do you think it can be reversed?

There are some items that I have seen that can help. For example, some Agile practices can help such as continuous Refactoring, Regular Feedback, Testing, More Eyes, Good People, Continuous attention to technical details, Retrospectives, Face to Face conversations, and motivated individuals with the environment and support they need.  By practicing some of these core well-known principles, you have a much better chance to see Mud as it arises, thus able to make better decisions on how to deal with it and how to reverse it.  For example, Refactoring can help us separate things that change from those that do not change, keeping the architecture much cleaner.  Also, a continuing effort to evolve the design as the system changes is an important facet towards keeping systems from becoming too muddy.   So, yes, we can reverse it some. Though, as we stated in our paper, sometimes the only hope for a system is what we call Reconstruction or a complete rewrite of the system.

4. Recently, Kent Beck spoke about going beyond agile programming. One of the thoughts we had when watching his presentation was that most BBoM we know of were created by valuing the business forces more than the engineering forces. Do you agree with this view?

I don’t completely agree with this view.  Of course if you just value the business forces, then you will probably end up with a BBoM. However, what about all of those muddy systems that focused more on Process and Tools as Kent talked about yet are still messy.  Originally those process and tools were suppose to focus more on the “right” way to develop software with a “good” set of tools and practices.  The goal was to help ensure “good” code. Yet those using those processes and tools still often end up with muddy looking code.  I know of groups who completely focused on the software engineering side of things and yet they still either ended up with a BBoM or never made it into production as they tried to achieve perfection. Now of course with good people and good communication, along with paying attention to good principles of software development, your chances of ending up with a better architecture is greatly enhanced.

However, as things become larger and more complex, the architecture in general becomes harder to keep completely clean and might be as good as we can do given our current state of the art.  Our software systems have grown to model more complex business and engineering needs and thus mud might be “normal” given the complexity of our problems.  On the other hand, it makes sense only to build what you need when you need it.  This might lead to some mud but it seems to be a better way to guarantee success.  We know requirements and needs change and it is hard to completely know how your system will evolve.  So no matter what we do, given changing requirements, mud seems to find ways to creep into the architecture.  If we lived in a world where we could get a solid set of requirements that would never change, and we are given enough time to make sure we end up with a clean system, then we could theoretically avoid mud.  But this is not realistic given our current business and engineering needs and the way the world changes.  I believe that this is why Agile grew and became so successful.  Agile potentially gives us a better way to deal with these changes and, as a side effect, a better shovel for moving mud.

5. We heard your keynote will focus on the relation between the BBoM pattern and Agility (we can’t imagine why :-). Can you give us a very brief taste of what you’ll speak about?

Somewhat to our astonishment, since our original statement, no one has ever undertaken to dispute this premise. Also, to some it might be surprising as to why this approach or architecture stills endures and thrives. This talk will examine a few issues including BBoM’s relation to Agile such as: Why is this architecture so popular? Is it as bad as it seems, or might it serve as a way-station on the road to more enduring, elegant artifacts? What forces drive good programmers to build ugly systems? Can we avoid this? Should we? How can we make such systems better?  I will show how some principles of Agile lead to mud and how some can also help us cope with Mud. Is this brief enough :-).

6. Speaking of patterns, we know you’re an active member of the Hillside Group and the patterns community, and that a lot of your work is on Object-Oriented Analisys and Design. What do you think about today’s OO development and where do you think we’re heading to?

We’ve come a long way but we have a long ways to go.  OO was a good first step towards giving us good abstractions and ways to think about the way we design and develop software.  Frameworks, Reuse, Patterns, and Agile are good principles and  ideas that evolved from the OO community, which have proven invaluable to our community.  My involvement with the Hillside Group and the patterns community relates to my belief that I think software is still too hard to change and I want do something about this.  Putting the ability to change software into the hands of the people who understand the domain seems to be one promising avenue to solve this problem.  For examples DSLs have had many successes for allowing domain expert to change their software. When you get your framework or DSL right, adapting the system to changing requirements can be done fairly quick and easy.  So I believe that we need to focus more on the people side, and help make better languages and tools to support both people creating and using software.  Let’s face it, software is developed by people, for people.  Too often we put our pure engineering hat on and forget this fact.  This is why I also believe that Agile has had such wide acceptance as it embraces this fact that the people side is key to being successful.

7. You’re also widely known for being a co-author of the Adaptive Object-Model pattern. The phrase “everything you do, I can do it meta” comes to mind. Are you able to reconcile this with the subjects we’ve been talking about?

First of all let me briefly describe what is an AOM. Architectures that can dynamically adapt to changing requirement are sometimes called reflective or meta-architectures. We call a particular kind of reflective architecture an Adaptive Object-Model (AOM). An Adaptive Object-Model is a system that represents classes, attributes, relationships, and behavior as metadata. It is a model based on instances rather than classes. Users change the metadata (object model) to reflect changes to the domain model. AOM stores its Object-Model in XML files or in a database and interprets it. Consequently, the object model is adaptive; when the descriptive information for the object model is changed, the system immediately reflects those changes. These are highly related to Domain Specific Languages (DSLs).  So maybe the best way to get agility is to let your users (domain experts) change your systems without needing to changing code.  If you are successful in allowing certain changes to your system in a controlled fashion, such as those outlined by an AOM architecture, will this not give you Ultimate Agility?  Your system can change and you can be very agile and adapt to a changing business requirements while possibly limiting the mud factor in your code.

Joe, thanks once more for your time. See you on June 25th!

My pleasure.  Thanks for the invitation and I look forward to participating at Agile in Porto!

]]>
http://2010.agilept.org/2010/05/14/interview-joseph-yoder/feed/ 0