Upcoming Classes
Real-World OO Programming
There’s so much hype and so many buzzwords surrounding object oriented
programming, do you sometimes wonder if there’s anything behind the PR?
In this class, you’ll learn to master the art and science of
writing OO applications—and put it to use to
create apps that are easier to build and maintain.
Feb. 23-27, 2009 Sarasota, FL
Newsletter Sign-Up
By signing up for my Occasional Newsletter, you’ll also be kept informed of upcoming training.
Are You OO-Ready?
Take My Test
Hal Helms
|
| |
|
Mentoring
|
|
|
Organizational Development Maturity
Software development shops (whether their clients are internal or external to their organization) operate at a certain maturity level. Watts Humphrey in his book, Managing the Software Process, identified five levels. (These were the basis for the Capability Maturity Model.)
These levels don't have sharp edges to them -- at any time, an organization is likely to be a mix of two or three of these levels -- but their definition provides a valuable metric against which to judge organizational maturity.
Humphrey's observations were not specific to Object-Oriented shops. OO shops certainly go through these phases; in addition, there is a progression to OO maturity that might be characterized thus:
- Novices: Novice shops have some exposure to OO terms, but OO represents a vast unexplored landscape. Novice shops see the passion of others possessing greater OO maturity and may be puzzled by it: they are more concerned with finding tools that will help them deal with the daily challenges of writing code. They like certain aspects of OO (often, inheritance) but don't see how they can use OO in their daily work.
Success Path
As novice shops enjoy small successes from employing OO, their enthusiasm grows and their thirst for knowledge intensifies, leading them to a transformation to an Enthusiast shop.
|
Failure Path
Failure to more deeply assimilate the basis of OO can cause novice shops to give up on OO altogether. Or shops may get stuck in the trivial use of OO, disparaging more mature shops as "purists".
|
- Enthusiasts: Enthusiast shops are actively engaged in learning about OO in all its facets. They read blogposts, go to seminars, buy books, argue amongst themselves and with others over issues. Enthusiast shops are attached to terminology. Enthusiast shops have begun to see tangible benefits from OO adoption. As much as they have evidence, they have even greater belief in OO's efficacy. Enthusiast shops are assiduous about rules and on constant guard lest they compromise on their OO design.
Success Path
Careful to adhere to best practices and buoyed by their willingness to "do OO right", Enthusiast shops begin to experience greater benefits, spurring them on to acquire more knowledge. At the beginning of their journey as Enthusiasts, the shop was looking for the "right way" and they formed strong allegiances to particular individuals who articulated their understanding. As Enthusiast shops mature, they appreciate the contributions of individuals, but the process of internalizing OO is well underway and the Enthusiast shop treats the OO expert more as an older sibling and less as an infallible guru. Enthusiast shops may take on projects that the Skilled Practioner would eschew as too risky. The tireless enthusiasm that marks this stage is both its great strength and weakness.
|
Failure Path
The Enthusiast stage is perhaps the most dangerous one. It is not uncommon for shops to become stuck at this stage. Failure is marked by an increased stridency about the one, true OO way. Terminology, useful for identifying concepts, turns into buzzwords that are used in place of real thoughts or insights. The reason for adopting OO -- gaining measurable benefits in robustness and maintainability of code -- has been lost. What remains is a group of fanatics whose belief in OO has degenerated into slavish devotion. Much time is spent producing "tools" and the manager of the Enthusiast shop gone bad has an extremely difficult task in righting the ship.
|
-
Skilled Practioners: Skilled Practioner shops are well on their way towards complete maturity. They have mastered much of OO and have internalized what they have learned. They are able to evaluate ideas on their own merits (rather than judging them by the reputation of the speaker), yet they are open to challenges to their current knowledge. They have sustained success at producing robust, managable projects. A dynamic arises that seeks out excellence from any quarter. Skilled Practioner shops are looking to refine their process. Expert consultants and trainers can be highly valuable in propelling the Skilled Practioner shop to the next stage of maturity.
Success Path
As the Skilled Practioner shop increases in experience and knowledge, it generates the motive force for achieving the next stage of organization maturity: Mastery. The Skilled Practioner Shop is an ideal workplace for developers: it uses the skills of more mature developers while encouraging and providing good guidance to more novice developers. Having gone through the "fanboy" phase of the Enthusiast shop, the Skilled Practioner shop is far more confident in its own decisions; there is little chance that the Skilled Practioner will fail to achieve Mastery if it continues along its current path.
|
Failure Path
About the only risk the Skilled Practioner shop faces is the destruction of the team. If key team members leave or an overly micro-managing administrator is placed in charge, the development of the team may stagnate. (Even then, the Skilled Practioner team will have developed internal defenses against these shocks.)
|
- Master: This stage is marked by creative problem-solving. While the Enthuiast shop produces "tools" of dubious value, the Master shop produces components, tools, frameworks, etc. that may be used by others. The Master shop can be recognized by the dedication to knowledge of its members. The Master shop is able to evaluate all ideas, from whatever source and in whatever form, to see if anything can be gleaned from them. The Master shop welcomes a broad variety of challenges in order to test its current knowledge and add to its current store. Because all of the basics (and a good deal more) has been mastered, there is no tolerance for buzzwords and discussions do not have the rancor that earlier stages sometimes exhibit during the process of ideation and decision. Although this is a good environment for a Skilled Practioner moving ahead, the Master shop is not the best environment for the less mature developer, who may mistake the lack of heat for a lack of passion.
|
|