Is the Development Environment a Valid Architecture Constraint?
By pmonday on Jun 23, 2005
Hypothetical Problem: You're an architect trying to produce an architecture that meets some set of requirements that will be turned into a product. You realize you have limited resources and time to build the product prior to doing the architecture. Where should you fit the constraint on time and resources?
The question is...something has to give...doesn't it? Here are some options I can think of off the top of my head:
- The architect works in a "clean room" without considering resources and hands the architecture off to implement. The management team must, in turn, recognize what cannot be built and make choices to lessen requirements thus, incurring additional architecture spirals.
- The architect work in a "clean room" and produces a roadmap for all of the requirements to be implemented, the management team then takes responsibility for carving things up into resources and making product release cutoffs.
- The architect builds an architecture, then takes into consideration resources to determine reuse, off the shelf implementations, etc... to streamline development of the architecture.
- The architect puts resources as a constraint PRIOR to building the architecture, possibly influencing how requirements are interpreted and met within the architecture.
The latter two are interesting because the architect takes responsibility for delivery of the product by fitting the architecture around the constraint. The former solutions are also interesting because the buck gets passed for a product slip. How much responsibility should an architect have for delivering a product based on the architecture?
My opinion? Probably what most people would consider a "true" architect opinion..."it depends" on the context of the product and architecture development as well as how the architect is positioned in the company. So, my style is to consider the constraint early in the architecture and style the architecture around the constraint. That's a difficult choice to make though, because a team could be replaced making the assumptions of the talent to implement the architecture invalid.
Also, there seem to be so many types of projects that there is no "definitive" answer here. I do think architects should make a conscious decision about the "target" engineering team that can implement the architecture. Its much like a business plan, why should someone invest in the architecture if you haven't made the case that the ROI is valid...it is the architect's responsibility to make this case, at least to get the management team SOME idea of whether the ROI will be in the ballpark if the architecture is implemented with the architect's recommended resources...
Of course, my view on this changes all the time, so I'll add a big IMHO on the topic...do you have any thoughts?