| Rodney 的个人资料Sensible Perspectives日志 | 帮助 |
|
|
Credibility DebtThe term "technical debt" is used by managers to describe a development team’s situation when it has not consistently met the defined quality goals for the project. They use the phrase "paying down our technical debt" to describe the time lost in bringing a project up to the defined quality standards. In a way, it is an accurate phrase that I can live with. On the other hand, it leads me to believe that we have another type of debt that is more serious: credibility debt. Projects are usually difficult to get moving, and everyone wants their project to be "by-the-book" of whatever methodology has been chosen (or hacked together from the current methodology-du-jour). The problem is that most projects actually start moving into development before the quality standards have been completely defined, and adding those definitions at any point after the start of development imposes an artificial level of "technical debt" that must either be paid off or ignored. Zealous development managers tend to want to halt development to pay off this debt, especially since they are the ones typically defining the quality standards. Hearkening back to your economics courses in college, you'll remember the term "opportunity cost", which is the oft-overlooked component of the technical debt equation. So the cost of fixing technical debt looks like this: TOTAL = Cost to fix actual technical debt + Cost of project delays (opportunity cost) + Cost of slowed (halted) project velocity So, you've decided to pay off the debt, and now you show up at your next checkpoint/demo/etc meeting and have to explain to the product owners that you've decided to delay their project that you've been entrusted with to meet a new set of quality goals. Their first question the PM then asks is "Was there a problem with the quality of the product?" In most cases, especially near the beginning of a project, that is not the case. It is more about the dogged pursuit of the "ideal" that often gets in the way of real progress. This brings me to the point of this blog entry: your credibility is the biggest asset or liability you have. Credibility is a subjective measure that you can affect, but is ultimately assigned by every person to another. Think about your team for a minute. Now think about the next important task you have to assign, and regardless of current work assignments you know there are some people you can absolutely trust with the assignment and that there are some people you would not trust without significant oversight. The same is true for development managers and architects. If project management gives you a task and you incur significant "technical debt" early on in a project, that is likely to be applied directly to your credibility credit. The good thing about credibility debt is that it can be paid off as well, but not nearly as easily. A successful and strong finish to the project goes a long way towards paying it off, and hard work and planning to minimize the buildup of technical debt shows management that you are managing the situation well. "Role as a hat, not a head"I was recently reading an article entitled "A Study of Architect Roles by IASA Sweden" by Daniel Akinine in which he interviews Pontus Gagge, who makes this statement:
This statement struck me as particularly true, since many people move in and out of the role of architect quite frequently. In the context of the statement, Mr. Gagge makes the point that when a person moves into the role of "architect", that person does not forget or forsake any of the other skills, experience, wisdom and knowledge that they have acquired in previous roles. Quite the contrary, an effective architect leverages those intangible assets to help him/her excel in that role.
I think the inverse of Mr. Gagge's latter statement is also true: if an architect's experience almost always extends beyond the role of the architect, the person in that role rarely embodies the totality of the information required by that role. I would go so far as to say that the vast majority of architects approach each new project without the knowledge necessary to successfully complete a project.
But they learn...
That is perhaps one of the defining attributes of successful architects: they learn and adapt. They know where to look to learn, and can see structure long before others do. They easily grasp not just a new concept, but the implications of the concept. They understand principles and let those principles drive their decisions.
I'm sure we've said it as often as we've heard it: "I don't have to remember everything as long as I remember where to look it up". The older our profession gets, the greater the body of knowledge that will be available. We can't know it all, but at least we know that.
Failure of the FranchiseTechnorati Tags: Software Architecture,Patterns In my neck of the woods we have several ice cream shops that are part of the Bruster's Real Ice Cream franchise. Let me tell you: they have good ice cream. In the dead of winter you will find people at the drive-through window ordering their favorite flavors. I know they've certainly gotten their share of money from my family! Every week since January, however, we've been passing by one of Bruster's locations that has a sign up that reads "Will Reopen Feb". It's April, and they're still not open. I don't know if this store is gone for good, but whatever the case, no "cold gold" is being served up right now. That got me to thinking about why franchises fail. There seems to be some variation in the actual numbers, but it is commonly reported that less than 5% of all franchises fail. Researching the topic on the internet yields a large number of reasons, some of which seem entirely valid:
The real reason this interests me is simple: franchises are patterns. When a business is successful, the attempt to duplicate that success often takes the form of a franchise. One of the most important steps in successfully franchising a business is to derive consistently reproducible processes and getting the franchisees to follow that process. So, in essence, it is finding "process patterns" for the "franchise pattern". It doesn't take a genius to see where this is going: software architects and engineers live in the world of patterns. Whether or not you consciously research patterns and apply them to your craft, you could almost certainly look at your work (if you've been at it for any length of time) and begin to see similarities in the approaches you've taken in solving problems. If you've designed one data access layer, you've designed a hundred. So why do successfully described patterns fail during implementation? Consider these reasons:
Patterns are typically designed as best-of-breed solutions, and there are usually variations of each pattern to fit specific problems. If you find yourself deviating from a pattern, then you need to make sure you understand the full impact of your actions. When followed properly, patterns provide solid benefits and enable you to increase your confidence in the result. Like franchises, sometimes patterns fail, and they do, the result can be disastrous. Most of the time, they are successful if they are followed properly. In general, patterns are in place to help avoid failure, but then again, so are do-it-yourself auto repair guides! Architects and PlannersTechnorati Tags: Ruth Malan,Bredemeyer,software,architecture,enterprise planner,enterprise architect I've just finished a 4-day software architecture course with Ruth Malan of Bredemeyer Consulting, and I must say it was a very rewarding week. My eyes have been lifted up to see beyond the immediate horizon, and I've come away with a renewed hope and a sense of enthusiasm for the challenges that my team and company will be facing. Perhaps the real goal of any workshop such as this is to stir the imagination and awaken the mind. I'm sure that tomorrow after I've slept on these ideas, they won't seem so extraordinary, but at least this evening they seem relevant. The idea that has been stirring in my mind relates to how organizations view their disparate systems and infrastructure. Consider this: view your business as a city and pretend that you are flying over the city at about 5,000 feet. Looking down you can see a lot of buildings, and in fact, that is probably the thing you tend to notice first. Some buildings are tall and majestic, while others just seem to provide filler for the landscape. But there is much more to the landscape than just the buildings. An entire infrastructure of roads, bridges, train tracks and perhaps even waterways tie the city together into a cohesive, functioning city. From your viewpoint as you fly above the city, you notice the cars traveling between buildings, and that draws your attention to the neighborhoods that surround the city and the condominiums and apartment complexes that house the citizens. Pedestrians stroll through the sidewalks, each with their own purpose and goals, and each with their own reason for being in the city. The urban landscape is broken up by beautiful parks as well as the all-too-familiar construction areas. Buildings and roads are constantly being erected and repaired, torn down and replaced. Towers dot the horizon and flash their lights to make sure you don't fly into them. Antennae of every sort seem to sprout from the roof of every building in sight. A relentless stream of airplanes seems to appear and disappear from the airport with equal speed. Then it dawns on you that beneath that landscape exists an entirely different infrastructure of water and sewer lines, cables for providing electricity, television, phone service and all the conveniences of modern society. Tunnels house transit systems to connect far reaching parts of the city. All that you see was planned. Not by one person. Not by one architect. Not by one planner. Yet it all works because each piece was planned to meet certain objectives, driven by varying agendas and business goals. Admittedly, I'm sure we've all thought that a planner or civil engineer could not have possibly laid out a particular road any worse than what they did, but overall it works remarkably well. It seems that a city makes a good analogy for enterprise architecture. Each building could be likened to a line-of-business application, the place where the money is made and the business is sustained. The infrastructure of the city (roads, utilities, etc) is likened to the IT infrastructure and line-of-support applications needed to support those buildings. The higher the density of buildings, the larger the capacity of the infrastructure needed to support them. The vehicles and pedestrians represent the interaction between these systems and applications. As usual, analogies can only be carried so far, and perhaps this one has already begun to break down, but it seems that there is something else here that might be missing from the discussion of enterprise architecture: the planner. A term like "Enterprise Architect" sounds good, and there is certainly more to it than just this, but one of the top responsibilities of an EA is that of a planner. A city planner most likely knows the planned purpose of a particular building, but is certainly not involved in the architecture and engineering of that building except to the extent it places a load on the surrounding infrastructure or deviates from established city codes. The planner is often critical in the design to grant the final permit to build the building, and that permitting process revolves around the building architect and engineer following the established building codes for the city. Likewise, an EA (or EP for "Enterprise Planner") is intrinsically involved in the "permitting" process for a new application or infrastructure change. They have helped set guidelines and "building codes", and are making sure that the infrastructure is in place to support the new addition or change. They should be careful, however, to not exert undue influence (outside of an advising capacity based on experience) over the solutions architect building the LOB application or over the strategy architect designing the new LOS application. The role of the EP is critically important to the success of the organization, and the temptation to drop down into another’s realm of responsibility is often hard to resist, but for the good of the overall organization, it must be done. As was emphasized in this workshop, this applies at all levels. As you may have noticed, this is my first blog post, and as with most things in life, getting started is usually the hardest part. So, I guess now I can say that I've started, and actually it wasn't all that hard after all. I suspect it might be a while between blog posts, but if you wish to engage me in this dialog, I certainly welcome your input. |
|
|