Like many architects, I have been following the evolution of SOA for awhile now. One thing that has been sticking in my mind is what does SOA really mean for web development teams? The emerging answer is mashups.
There are a lot of very cool mashup apps, and the ground is still fertile. If you haven't already, check out these sites:
GoogleMaps (or rather it's API) is obviously the first major mashup player... there are links to more mashups and mashable APIs at Mashup Feed and some at Programmable Web.
Stephen O'Grady and James Governor have been talking up mashups for awhile now on their respective blogs, and they helped with invites to a very cool mashup event. I think the outcomes of this event will be interesting to digest, and will hopefully fertilize mashup ground even more (you have to have high hopes for an event that has Lessig on the waiting list.)
As enterprises convert more of their backend and middleware to services, and expose those services through REST and SOAP, this creates a great opportunity for a new direction on the front end. Web development teams used to building silo sites now have a fine collection of mashup material, and can extend service re-use into the presentation tier.
I think a lot of web developers are not sure what to make of SOA hype - trying to determine if they should just replace their rusting EJB middle tier with web services and consider themselves SOA-certified (the answer is no). Rather, web developers should start thinking about their own service-oriented presentation-tier needs and ensure those services are available (as in exposed) in both a server- and client-consumable fashion.
Web developers from the traditional server-oriented J2EE and .NET environments should also start boning up on rich internet application (RIA) technologies and architectures. Out of the gates it's probably not the best idea to go wholesale into RIA with applications, but rather to augment existing sites and applications with asynchronous pagelets that mash in backend services - perhaps tagging would be a good place to start. But it might not be too long before developers inside enterprises can start to act like true mashers, using Agile methods to more quickly deliver working software that leverages services.
BPEL and service orchestration are the mash up tools for the integration tier, but Ajax and other RIA technologies are the mash up tools for the presentation tier. I think there will be a lot of additional demand on enterprise developers to become more client-savvy than they have had to be for the last several years.
I am interested to hear from any enterprise developers who have already started mashing...
Everyone is talking about refactoring, which I agree is a very Good Thing. But I have also become very interested in Strangling, which I believe might be an even Better Thing.
I came across this interesting article by Martin Fowler on the Strangler Pattern, and also this interesting PowerPoint (see Note below) that tackles it at a development level. Refactoring is often applied in a development context, but I think Strangling has appeal because it is more easily applied in an architectural context. The notion of Strangling comes from a vine that begins growing on top of a tree and gradually overcomes and kills the tree. This concept applies to architecture in the sense that we often cannot completely gut and replace an architectural component, but rather have to replace it gradually overtime.
It makes good copy to write about the latest, greatest thing in Enterprise Architecture and Enterprise Development. But many of us who actually work at enterprises understand that people, processes, attitudes, and organizations comprise a complex ecosystem that surrounds technology systems. This ecosystem makes it naive to think that you can uproot something because it suddenly does not fit your standards, or just because a given vendor, analyst, or consultant told you so. The notion of strangling is a very pragmatic and realistic view that you set a course and work towards it gradually. If you have a valuable and correct vision in the first place, it will hold true.
Strangling works very well for enterprises that embrace Agile practices. Strangling allows you to deliver continuously while working towards an architectural vision. The unsavory alternative is that you spend months writing white papers and ceremonial documentation, followed by wholesale implementation, only to discover that your hot new framework is not ready for primetime when you run your entire system on it. Strangling encourages rapid prototyping, iterative delivery, and continuous improvement which are all important traits of Agile enterprises.
Are you a Strangler, or just a plain old Architect?
Note: the original link to the PPT seems to be broken, but I'm leaving it here in case it's temporary. Enter Google to save us yet again - you can take a look at its cached HTML version. You will have to highlight all of the text on the page, or print it out to see the text, as it is in a white font.
Many bloggers have resorted to the banal practice of blogging on resolutions, goals, etc. for the new year. I am certainly not above that practice, and will engage right here. 2005 was a fantastic year for me professionally and personally, and I hope to continue the trend. The following are some random thoughts and plans for the New Year - I would love you to add comments on what yours are!
- Relentless use of Agile methods - Last year I became an Agile zealot, and will no doubt continue. Our team has become better and better throughout the year at delivering early and continuous value in the form of working software. We will get even better this year.
- Use of non-hype Web 2.0 practices in the enterprise - Web 2.0 hype is still on the rise, so this will be a challenge. I have previously blogged that tagging is a key Web 2.0 concept that will be of use in enterprises. I also believe that increasing use of self-selected transparency will transform many existing one-way sites within enterprises.
- Use of lighter-weight solutions where possible - it's no secret that I'm a fan of many open source frameworks; Spring and iBatis are prominent among them. This is not exclusively because they are open source, but rather because they are lighter weight than many commercial alternatives, and are sometimes the optimal solution. There is a time for industrial strength and a time for just enough, and I will continue to expose when I think those are confused (easy to do in a large enterprise).
- Developing people, not just IT solutions - there are key Agile principles around valuing the people in your organization. We did a better job improving talents and skills on our team last year than ever before, and will continue that practice. Investing in high-quality individuals pays the greatest dividend of any possible IT spend.
Other professional goals
- Continue blogging - I have made some great connections through this blog, and it has been a great way to hone thinking on various topics. My original goal was once a week postings, I'm going to try to keep to that schedule.
- Presenting at a conference - I will be presenting to the attendees at some lucky conference this year, more to follow...
- Increase the social network - I will again be increasing my social network this year with new and maintained contacts. I think this is the single most under-practiced skill among technical folks. This is essential to being a high-quality professional, but more than that is just what life is about. I formed friendships with many fascinating professional colleagues last year, among them James McGovern and Richard Monson-Haefel. I gain the greatest value in my life through relationships that I maintain.
- Propose a lecture or training program to the University of Costa Rica - I will be proposing various topics that I could deliver to the UCR Computer Science department as guest lectures or short training possibly in 2006 or 2007. I would do this on my own time and probably my own dime, as a means of giving back to an alma mater. I also think it would be fascinating to see how far the university has come technically since I was there in 1992.
- Publishing - I will continue to seek publishing opportunities, beginning with a book chapter that is due at the end of this month. Drop me a note or comment if you want to collaborate on an architecture or enterprise development topic.
Personal goals (that I'm willing to share!)
- Use flickr to share photos - I started using flickr just as a means of research into Web 2.0 concepts and technology. It's a great example of that, but is also just plain cool! I will definitely continue to use this, and will probably go Pro in the near future.
- Organize my charitable giving - our family has always supported various charities, but have not been terribly organized about who we give to. This year we will be deciding on what goals and values to support, and what international areas to support and be more direct with support. I will continue to donate time, as this is often more valuable than money.
- Begin work on the cabin - we have an old cabin that has been in my wife's family for years, and will finally begin much-needed updates. Let me know if you are interested in swinging a hammer in exchange for some outdoor time!
- Do a better job teaching my kids Spanish - a highlight last year was when my Mom and sister (host family) from Costa Rica visited. My 5- and 7-year-olds should have been more able to speak to them than they were. I will be doing a much better job of this - it's my opinion that everyone should speak at least 2 languages (no, computer languages don't count!), and I need to act on that position.