Real World Software Architecture

Real World Software Architecture is dedicated to providing information and experiences from the field of Software Architecture.



Subscribe with RSS or ATOM Add to Google

Links

  • Home Page
  • Real World Software Process Engineering
  • Suggested Reading
  • .NET Dev and Arch Collection
  • SEI Essays on SA
  • Software Architecture
  • Bredemeyer
  • wwisa
  • Product Line Engineering
  • PLEES
  • Software Product Lines
  • MSDN Architecture Center
  • patterns & practices






Wednesday, June 30, 2010

The Ivory Tower Enterprise and Software Architect

Lately I have been hearing a lot about the differences between an Enterprise Architect and a Software Architect. Grady Booch just did a great Podcast called Enterprise Architecture and Technical Architecture, Arnon just did a great blog titled Software Architecture – 5 years later, and Bredemeyer separates their site based on the differences. I agree with them all, the roles are different and I am not questioning their points of view. I am just pointing them out because they are what sparked my thoughts for this post.

I tend to see all the roles in the software field a little differently. I see three classes of individuals at different levels of their career path. One I call the Ivory Tower type of person. The second is an In the Valley type of person. The third is the person in the wrong career path. I won't discuss the last type of person more than to say that there just are some people who are not trainable, and they are usually in the wrong career path.

The Ivory Tower type of person usually believes their intelligence is sufficient enough to carry them in their current role. They will blindly follow the advice in a random article, web cast, or vendor demo. They see proof of concepts as a waste of time.

The In the Valley type of person understands nothing is invented, it is only discovered. They accept that odds are someone else has already discovered what they are looking for and gone through the pain of vetting it, but they will trust nothing until they have seen it work in the environment in which it is going to be integrated. Demos, articles, and web casts are not enough to persuade them a product is ready for adoption in their environment.
Java != .NET
My first week on a particular project I was asked to be the advising architect on a Java project. I said no. The manager believed anyone with architecture in their title could architect on any project and that technology should not impact the role. I explained I was a .NET Architect and that it was not my belief, or experience, that technology did not matter. I soon found out why he believed what he believed.

That organization had an army of Ivory Tower Enterprise Architects that blindly made decisions behind closed doors about what was best for the enterprise without ever understanding the enterprise. They would buy huge applications and force them down the throats of the employees in the enterprise. The answer as to why something was needed on a project was "because we bought it, and now you have to use it".

I soon learned why the EA division was made up of Ivory Tower Enterprise Architects. It was because the CIO was an Ivory Tower CIO. With regards to technology, if an organization is made up of managers that are completely confused, it can usually be traced back to their own IT organization.

What happen to the Java project? 80 million dollars down the drain. Would have been better spent on a spare tire for the Mars Land Rover.
So what's the point? The point is that I do not believe in the Ivory Tower side of career path. I have seen a lot of motion generated by these people, but the efforts usually end with nothing accomplished, or a train wreck for someone else to clean up. I am not saying they are lazy. I have watched them work their butts off.

Government is the perfect place for the Ivory Tower worker. Government is in the spending business. Spend your budget, or lose your budget is the driving force behind most government projects. The Ivory Tower worker is great at spending money.

In my book if you are an Enterprise Architect, you better know how to do Software Architecture. If you claim to know how to do Software Architecture, you better be a darn good developer. I do not believe in the hands off approach and I do not believe the Software Architect and Enterprise Architect should fall into completely different categories. To me an Enterprise Architect relationship to Software Architect is similar to the System Architect and the Software Architect. In my book if you claim to be an Enterprise Architect or System Architect, you better be able to fill the role of Software Architect.

If all you do all day is analyze business processes, you are a business analyst. If you translated the business processes to a software architecture, then you are a Software Architect. If you translate the business process into a software architecture that takes into consideration the enterprise it must live in and integrate with, you are an Enterprise Architect.

Enterprise Architecture and System Architecture simply include a broader range of soft skills and knowledge to do there jobs. I believe the same is true of the relationship between the Software Architecture role and the Development role, but if you aren't a great developer in the language you are architecting your solution for, you have no business architecting in that language/technology.

The same holds true for COTS products. You should know how to use the product inside out before you include it in your solution.

I know you can't know everything. That is what proof of concepts are for. Proof of concept the heck out of a solution you don't understand. Heavily documenting your findings for a diverse audience forces you to think about it in different views and helps to flush the gotchas.

I also understand that there are a lot of soft skills needed to be a Software Architect versus being a developer, and being an Enterprise Architect versus a Software Architect require even more. But gaining those skills does not mean you can compromise your technical skills.

Below are some of the characteristics I witness in the different types of people.

RolesIvory TowerIn the Valley
In all the rolesConsiders themselves artists.

Likes to invent

Creates new things that need to be fitted into the context in which they they are working
Considers themselves engineers.

Seeks out industry standards

Creates new things that are of value to the context in which they are creating and therefore fit naturally into that context
DeveloperUse Agile to mean "we do not document"Use Agile to mean "take full advantage of the team's collective experience"
Lead DeveloperActs more like a project managerIs building the first of every type of module, and guides the team from that baseline.
Software ArchitectBelieves they can leave behind their development skills

Does not believe software architecture is dependent on their knowledge of technology
Understands that keeping up with their development skills is a must.

Understands software architecture requires complete understanding of the technology they are using
Enterprise ArchitectBelieves they can leave behind their development skills and architectural skills

Is not involved with application level details
Understands that keeping up with their development and architectural skills are a must.

Understands the details of their enterprise's applications


The entire point of this blog is to provide some insight into the reasons for some of the mangled up messes we see out there in our industry. Being a consultant I see a lot of them. A lot of times I am coming in after an Ivory Tower crew has wreaked havoc on an environment.

As with agile, I do not believe a process, or a role defined in a process, creates excellence. The characteristics the individual brings to the role will determine the level of excellence they achieve. A key characteristic is the ability to remain teachable. Lose that and your on the way to your own Ivory Tower.

posted by tadanderson at 6:48 AM 3 comments

Monday, June 21, 2010

iPhone iOS 4.0 is Available

Just open up iTunes and hit update on the Summary tab.

posted by tadanderson at 11:07 AM 0 comments

Free Software Engineering Institute Webinar Serves as Software Architecture Primer

The Software Engineering Institute is doing a free webinar on Software Architecture. It is on Thursday, July 8, at 1 p.m. EDT.

Below are details from the SEI web site.

During the webinar, titled Software Architecture Fundamentals: Technical, Business, and Social Influences, Wojcik will discuss

- What is a software architecture?
- Why is software architecture important?
- What factors influence the design of a software architecture?
- Which requirements are most important during software architecture design?

“The discussion will introduce the concepts of a software architecture and emphasize the importance of designing a system that goes beyond functionality to achieve business and quality attribute goals,” said Wojcik. “Attendees will walk away from the webinar with a solid understanding of what a software architecture is and practical knowledge that they can use as a starting point to discuss how to integrate the principles and practices of software architecture into their existing development process.”

Sign up here.

posted by tadanderson at 5:28 AM 0 comments

Sunday, June 13, 2010

SOA with .NET and Windows Azure Book Review

This book is a must have for anyone that wants to know what Microsoft technologies have to offer to accomplish Service Oriented Architecture.

If you are a .Net Enterprise Architect, this book should not leave your side. It covers all the right ways to accomplish distributed application architecture and enterprise integration using .Net technologies.

It is a book for both the beginner and the experienced. It covers SOA fundamentals in the beginning of the book as well as a history of legacy .Net distributed technologies. I enjoyed reading the history chapter. It brought back a lot of memories of COM+ and .NET remoting issues, which made me happy to be be using WCF.

The book does a great job of covering WCF and WCF Extensions. After two chapters on WCF, it then covers .NET Enterprise Services Technologies. They include SQL Server, Windows Workflow, Application Blocks and Software Factories, and Biztalk Server. The book does a great job of showing why, when, and where you would consider using the technologies.

There are several chapters on how to accomplish service orientation. Topics include Service Contracts, Interoperability, Coupling, Abstraction, Discoverability, Reusability and Agnostic Service Models, Service Composition and Orchestration Basics, Orchestration Patterns with Windows Workflow, and Orchestration Patterns with BizTalk Server.

There also several chapters on Infrastructure and Architecture. Topics include Enterprise Service Bus, AppFabric Service Bus, SOA Security, Presentation Layers with .NET, Performance Optimization, and SOA Metrics.

The book ends with several very helpful Appendices. They include an Industry Standards Reference, Service-Orientation Principles Reference, SOA Design Patterns Reference, and the Annotated SOA Manifesto.

I found the coverage of topics in this book to be just at the right level for introducing them, and then showing how they fit into the .NET SOA environment.

I will always have this book with me. It will not leave my side. It contains all the topics I need to consider when doing enterprise architecture. It will serve as a great one stop shop for solutions and ideas.

My only disappointment was that it was in black and white. I own the SOA Design patterns book which is in full color. With the type of diagrams in these books, color does make a big difference in ease of reading and understanding them. It would have been worth paying an extra $10-15 bucks for the book in color.

My other gripe is with Amazon. I had this book in hand for weeks because I ordered from the publisher before Amazon even had it available. Not sure where that went wrong, but it is no ding to the book.

I am counting both of my dings against the publisher and not against the book.

All in all you must buy this book if you are building applications with .NET in an enterprise environment. Even if you are building stand alone applications this book is worth reading. It has a ton of valuable information presented in a way that makes it unique to this book.

posted by tadanderson at 6:58 AM 0 comments

Previous Posts

  • DevOps: A Software Architect's Perspective Book Re...
  • Scaled Agile Framework (SAFe) LiveLessons Video Se...
  • Bulletproof Android: Practical Advice for Building...
  • Swift for Programmers Book Review
  • Security in Computing (5th Edition) Book Review
  • Swift in 24 Hours, Sams Teach Yourself Book Review
  • Sparx Systems Releases Enterprise Architect 12
  • Learning Swift Programming Book Review
  • Android Security Internals: An In-Depth Guide to A...
  • Adaptive Code via C#: Agile coding with design pat...



Archives

  • December 2005
  • January 2006
  • February 2006
  • March 2006
  • April 2006
  • June 2006
  • August 2006
  • October 2006
  • November 2006
  • December 2006
  • January 2007
  • February 2007
  • March 2007
  • April 2007
  • May 2007
  • June 2007
  • July 2007
  • August 2007
  • September 2007
  • October 2007
  • November 2007
  • December 2007
  • January 2008
  • February 2008
  • March 2008
  • April 2008
  • May 2008
  • June 2008
  • July 2008
  • August 2008
  • September 2008
  • October 2008
  • December 2008
  • January 2009
  • February 2009
  • March 2009
  • April 2009
  • May 2009
  • June 2009
  • July 2009
  • August 2009
  • September 2009
  • October 2009
  • November 2009
  • December 2009
  • January 2010
  • February 2010
  • March 2010
  • April 2010
  • May 2010
  • June 2010
  • August 2010
  • September 2010
  • October 2010
  • November 2010
  • December 2010
  • January 2011
  • February 2011
  • March 2011
  • April 2011
  • May 2011
  • June 2011
  • July 2011
  • August 2011
  • September 2011
  • October 2011
  • November 2011
  • December 2011
  • January 2012
  • February 2012
  • March 2012
  • April 2012
  • May 2012
  • June 2012
  • July 2012
  • August 2012
  • September 2012
  • October 2012
  • November 2012
  • December 2012
  • January 2013
  • February 2013
  • March 2013
  • April 2013
  • May 2013
  • June 2013
  • July 2013
  • August 2013
  • September 2013
  • October 2013
  • November 2013
  • December 2013
  • January 2014
  • February 2014
  • March 2014
  • April 2014
  • May 2014
  • June 2014
  • July 2014
  • August 2014
  • September 2014
  • October 2014
  • December 2014
  • February 2015
  • March 2015
  • April 2015
  • June 2015
  • July 2015
  • September 2015

Powered by Blogger