Goal Based Conversations

January 2nd, 2008

I find myself asking my children with great frequency, “What is your goal?” Not in a philisophical “What are you going to do with your life” way, but in a “What could your goal be aside from making your sister cry” way. I want my children to grow up understanding that what they do and what they say will impact those around them, and that should carefully consider what they are trying to achieve and insure that are behaving in such a manner as to achieve it.

Understanding what your goal is and behaving in such a manner to achieve it is a tremendous asset to an Enterprise Architect. I have witnessed countless discussions and meetings spiral off topic and out of control as participants argued to defend the correctness of the details of their own position to the detriment of moving toward the overarching goal. Achieving maximum success in one’s career and in one’s life is about setting goals and behaving in a manner that gets one closer to those goals!

A goal based conversation is nothing more than one of the many interactions we have with stakeholders on the road to ratifying a design. Here are some tips for goal based conversations:

  • Be clear on your goal. If you aren’t clear what you are trying to achieve, you can’t possibly achieve it.
  • Don’t get caught up in winning or being right. It is all about achieving your goal. Anything else is a distraction, including taking a personal stake in the outcome. This is a common mistake. It is easy to get defensive about work you have done. I also discuss this in my article on diplomacy.
  • “Just the facts, maam”. Have a pros and cons discussion based on facts.
  • Know when to accept a minor victory. Not every battle is worth a last stand.

Avoiding Accidental Choices

December 17th, 2007

“If you choose not to decide, you still have made a choice…”
Freewill
, Permanent Waves, Rush

With frightening frequency, I see technology projects make “accidental choices“, bypassing rigor without a conscious choice to do so. A decision process is left by the wayside as the project careens to some arbitrary deadline and process, approach, controls, and the use of appropriate artifacts are dumped because there “isn’t enough time” to leverage them.

Choosing to bypass rigor in an area is acceptable as long as it is a conscious choice to take on the risks associated with bypassing it. Bypassing by accident is irresponsible, to say the least.

Read the rest of this entry »

Goal Oriented Diagramming

December 4th, 2007

A few years back I presented for the first time at the Open Group Architecture Practitioners Conference in Miami, FL, at which I spoke about UML as a Enterprise Architecture diagramming notation (see publications). The presentation was very well received and all seemed to be good in the world, until the Q&A phase of the presentation at which time I was fortunate enough to attract a heckler.

He suggested that if I had not considered the UML Profile for Schedulability, Performance, and Time, then I was – and I quote – “giving people tools to build bridges that fall down”. The line of questioning was a bit off base as the profile extends UML support for real-time systems modeling and the presentation was recommending UML for enterprise-level logical architecture diagrams, but it did cause me to consider (post panic) the importance of “scope”and “goal” when producing design artifacts.

All architecture design collateral should be created with the goal in mind, and if it is not clear to you what the goal is, then you need to step back and ponder – because otherwise you are not creating a design diagram, you are just playing with pictures.

My goal has never been to “design bridges that fall down”, and, if fact, has never been to design bridges at all. An enterprise architect creates views targeted at ensuring consensus and clarity about across a wide group of business and technology stakeholders. Sometimes they are business focused and sometimes technology focused, but they have never been bridge focused. Even if one accepts the analogy, an enterprise architect is more likely to identify that someone needs a bridge, and based on the required length of the bridge and the traffic it will need to sustain, recommend what type of bridge should be built. (Apologies to people that do design bridges as I venture to guess that even selecting the right type of bridge is a bit more complicated than that, but you get my point).

Proper scope is one of the most important and most elusive elements of visual modeling. The prerequisite for scope is understanding the goal or purpose of the diagram. The most effective diagrams are created by clearly determining what the diagram is intended to communicate, then omitting anything that does not contribute to the goal from the diagram.

Goal oriented diagramming:

  • Don’t start your diagram until you have determined its goal. Ask yourself for whom the diagram is intended and what is it meant to communicate.
  • Include in scope, only the elements that contribute to the goal – including a minimum of additional information. There will be some additional information likely needed to provide context and continuity. It is easier to understand a door knob if it is depicted on a door.
  • Do not attempt to be “complete”, but focus on elements significant to what your are attempting to communicate.
  • Once you have completed a diagram, review it again to confirm that every last box, line, and label contributes to clearly communicating and remove anything else – it is just noise that distracts the target audience from the intended message.

Also, avoid any bridges designed by me. :o )

Task Management for Mortals

October 25th, 2007

Organizational capability is definitely a core competency for an architect, if not for any human being who wants to be remotely effective.

My colleagues and I opine frequently on the ever elusive goal of seamless task management. Our individual roads to chaos are littered with task management schemes and tools each proposing to do what the others have not been able to do – to tame the insanity and optimize efficiency. For the most part, the net result seems to be excessive amounts of precious time spent mastering approaches and converting from one to another. In the end, what I have found most effective is almost the first organization approach I ever employed and one I implemented, at that time, in a completely analog manner.

For nearly ten years beginning when I was in college, I ran a overnight summer camp. It was quite an organizational challenge – 100 staff, 12 groups, 300 campers, and roughly 420 weekly activities for 12 weeks. Add to that the expected number of hourly crisis and it was a handful. It took a few years to get my organizational stride, but in the end what really did the trick was 4 pieces of paper attached to a clipboard and a pencil.

The first piece of paper was a simple list of tasks for the current day or the next few days following. The list started the day in priority order, but I would add new ones to the bottom as they popped up and cross items off as they were completed. I would annotate with stars to indicate the really important ones. Any task that was not fated to be completed in the next few days, would end up on one of the other three sheets. Each was a monthly calendar (the camp only ran for 3 months), with blank boxes for each day. Any “future” task would get added to the day on which it needed to be completed.

The true secret to the method, however, was not the paper, pencil, or clipboard, but the daily review! At the end of each day I would rewrite the task list on a new piece of paper, adding the calendar items for the next few days and re-prioritizing the entire set of tasks for the next day. I have determined that the winning strategy for any task management strategy requires frequent review and reassessment of the tasks. A task does not stand alone, but needs to be assessed and prioritized within the context of the other tasks.

That’s it – I hope you were not expecting something magical. My current implementation of this is slightly more technical. I maintain my calendar within Microsoft Outlook, which I synchronize with my PalmOne Treo 700p. I keep my task list on a Wiki, because my whole team does and that was I can reallocate easily tasks across the team, but when working solo have used a simple electronic document. I attempt to do the nightly review and modify the document to prepare for the next day and find when I let that slip, my stress level slowly rises as I lose track of what is important.

I do have some specific pointers that help me, many of which I have extracted from the many task schemes that have not worked out for me (the bulk of the ideas came from David Allen’s Getting Things Done approach). Anyway, here is my regurgitating of the key things that work for me:

  • Don’t keep tasks in your head. That just creates stress. Write it down and free your brain to think impressive thoughts.
  • Not everything needs to be tracked as a task. Yes, I know. That contradicts what I just said. However, the more noise you put on your task list, the more the important ones get lost. Some things will happen without you needing to track them. For a contrived example – if you have a task to make 50 copies of a document, you don’t need to also have a task to print the document – that will “happen” when you go to make the copies and realize you need the original. :o ) Sounds obvious, but I find myself having to police my task list for these, which is why I mention it.
  • Only track near term tasks to detail. Still part of the “less is better” theory. A lot can change in a week, at the very least priorities are adjusted, at the most complete direction shifts can occur, so over-tracking the details of next weeks tasks is just creating additional work. Also, future milestones belong on the calendar, remember!
  • Use a list of projects to help brainstorm tasks. In addition to my calendar, I use a list of current projects I am currently working and ask myself for each,”Is there anything I need to do in the next few days to move this project forward?”
  • Review your tasks daily. I am not going to say it again. Otherwise you are just goofing around.

Once you get your tasks in order and have some free time, two sites that I have extracted some organizational gems from are 43 Folders and Lifehacker.

Dan’s Publications

June 8th, 2006

Leveraging UML as a Standard Notation for Enterprise Architecture.
The Open Group IT Architecture Practitioners Conference. July 19, 2006.
(Presented and co-authored with Andre Alguero, Matt Daniels, and James Hosey)

Proper Scoping of Enterprise Services.
The Open Group IT Architecture Practitioners Conference. July 18, 2006.
(Co-authored with Andre Alguero and Graham Williams)

Setting up and running an IT Architecture Practice.
The Open Group IT Architecture Practitioners Conference. July 19, 2005.
(Co-authored with Matt Daniels and Andre Alguero)

Architect or Diplomat?

June 1st, 2006

I was approached by a colleague after a recent architecture design meeting who remarked, “Wow, you are quite the diplomat!”, which made me stop and think. While I believe my technical knowledge and experience enable me to bring significant value to my clients, I rely just as heavily, if not more, on diplomacy to broker architecture designs to conclusion. Creating a great design is just a piece of the architect’s puzzle. This led to some ruminations on an Enterprise Architect’s “soft skills” that are not directly related to core technology capabilities and some thoughts regarding architecture diplomacy.

The cardinal rule of architecture diplomacy is “Include fellow solution stakeholders early and often.”

Solution stakeholders are the group of people that have opinions about how a solution should be architected – most typically they are either technology teams that will play a role in building or supporting the solution or they are owners of technology domains within the enterprise, like information security or database management. There are actually a multitude of reasons to make an extra effort to include these stakeholders:

  1. Engaging people early makes them a part of the solution – people are always more likely to root for your team if they are on your team. Nobody likes being kept out of the loop. You are not an army of one – even if you are Genius #1, you need some help implementing your brilliance, in which case you want the implementors on your team!
  2. If you are unsure about the design, brainstorming with a team with varied opinions and experiences will result in design epiphanies. Draft something to depict the target solution – even if incorrect it will be valuable. People are quick to identify mistakes. Don’t take it personally, but use it as a tool to engage your stakeholders.
  3. If you are sure about the design, reviewing it with a team will undoubtedly result in ample feedback. Some of it will align with the design as you envisioned it. Excellent! There is nothing that ratifies a design as quickly as consensus. Some of the feedback will disagree with the design as you envisioned it or offer refinements to your design. Ask anyone giving only negative feedback on the design to propose changes to fix it. If proposed changes improve the design, you would be a fool not to implement them. If they worsen the design, you would be a fool to implement them. You are a complete fool if you did not seek feedback in the first place!!
  4. Don’t talk at your stakeholders. Talk with them. “Talking with” requires listening and responding as opposed to driving ahead down whatever path you started. It seems obvious, but when you are listening, you will hear others “talking at” and not “talking with”. People don’t like being “talked at” becuase it wastes their time – they could be elsewhere doing valuable work while you talk.

Why am I obsessed with UML?

November 13th, 2005

I have experienced great success with visual modeling based on the Unified Modeling Language. I am not going to define UML nor describe its origin in any detail – you can check UML in Wikipedia for that! – but instead focus on what I perceive to be its benefits and provide some useful techniques.

UML is an industry standard modeling notation – with that come some foundational benefits:

  • You have the potential of handing your diagram to someone who already knows how to interpret the notation without being told.
  • You can find books, training, articles, web sites, and other educational and support resources for UML.
  • There has been widespread tool adoption of UML, from drawing tool templates to repository based modeling tools to integrated development environments.
  • Many of your stakeholders can increase their market value by mastering the notation – don’t forget to tell them that!
  • You can hire people who know how to read and write your diagrams without having to train them.

UML is also a very structured notation. That also brings benefits:

  • The precise structure of the diagrams assists with consistency, completeness, and scope. Recasting your architectural vision into a predefined structure forces you to flesh out the appropriate details.
  • The fact that it is a structured notation makes it possible for tool vendors to provide functionality to transform a diagram from one view to another or even to code.

Additionally, I think the UML notation itself carries benefits:

  • While the notation allows for creative use of icons, in practice the notation is pretty generic. This actually speeds the diagramming process as more time can be focused on content and less on form. It also increases the readability of the diagram as the reader is not required to interpret symbols.
  • There are different diagrams for different purposes. For UML novices – and even sometimes experts – this can be challenging. I sometimes find myself really struggling to add information to a diagram only to eventually realize that I am having a tough time because it doesn’t belong there! This “separation of concerns” means that each diagram can clearly communicate information without distractions. A picture that looks different from different angles is cool, a diagram that does the same thing is not!
  • The core notation is very consistent. It is easy to learn and easy to use. The complexity to producing good UML artifacts is not understanding the notation, but determining the correct content. That having been said, the exercise of refining the content stimulates the design process in addition to producing clear artifacts.
  • UML evolved out of industry best practices in diagramming and has evolved and been refined for 10+ years. There is always value in experience.

As I have gained proficiency in UML and embraced it as a powerful tool in my personal toolkit, I have identified some techniques that help me produce better artifacts:

  • Use only the core notation. Finding some obscure facet of the notation doesn’t make you brilliant, but it does make your diagram less consumable.
  • Label every diagram with the UML diagram type, your diagram purpose, and the last modification date.
  • Fit your diagram on on standard letter size. Clearly, there are situations where it makes sense to break this rule, but this is a good rule of thumb that helps keep your artifacts with the right level of information to be easily consumable by your stakeholders. It also makes it easier to print and embed in documents. Some techniques to keep it page sized are:
    • Manage scope and detail and have more detailed diagrams with less scope roll up to a high level diagram with a broader scope but less detail.
    • Identify some categorization that lets you break the domain into multiple sub-domains.
    • Consider the purpose of the diagram and only put “fit to purpose” items on it. (see below)
  • Only represent “fit to purpose” items on a diagram. One of the keys to “rightsized” diagramming is to only diagram what you need to be successful. If you are designing a solution in an Enterprise where every desktop contains Microsoft Word, you don’t need to include a component for Microsoft Word on the diagram unless the solution has some dependency or impact on it.
  • Separate “concerns” onto separate diagrams. Some of this happens naturally due to the multiple diagrams available in UML. However, there are many things that can be depicted on each diagram type. Is the diagram for the hardware team? What is important to them? Certainly not the same things that are important to the code deployment team. This is a balance. You don’t want to have to maintain multiple similar artifacts, but, conversely, it is easy to over-populate a diagram with information and reduce its effectiveness. The information that is not of interest to the hardware team is nothing more than noise and distraction to them.
  • If you are implementing diagramming standards for your organization – which I highly recommend you do – start with some clearly defined diagrams that are based on one of the UML diagram types, but provide users with guidance regarding the appropriate content and constrain which facets of the notation should be used. This will help people be successful with the contents of the diagrams, which is always more challenging than the notation itself.
  • Scott Ambler’s Elements of UML Style is a fantastic primer of good technique.

I have truly found UML to be an extremely powerful tool and frequently use it to understand problems, design solutions, and broker stakeholder agreement! If you don’t already leverage it in your daily activities, you owe it to yourself to give it a try. It is an industry standard, so at the very least you can add it to your resume and increase your market value!

Searching for Artifacts

July 11th, 2005

The American Heritage Dictionary (English Language, 4th Edition) defines artifact as “An object produced or shaped by human craft, especially a tool, weapon, or ornament of archaeological or historical interest.”

Interesting. In the software engineering field an artifact is (1) shaped by human craft; (2) in fact a very powerful tool, (3) can and will sometimes be used as a weapon, (4) has been known (given a decent plotter) to ornament many a cube, and (5) two years down the road it is certainly of historical interest. The Treasury Enterprise Architecture Framework (TEAF) provides a more precise definition of the software engineering use of the term – “An
abstract representation of some aspect of an existing or to-be-built system, component, or view. Examples of individual artifacts are a graphical model, structured model, tabular data, and structured or unstructured narrative. Individual artifacts may be aggregated.”

To the lay person, an artifact is simply a document.

I was once assigned by a client to provide architecture guidance to a project that was well under way in order to minimize the damage. I seem to frequently have the pleasure of engaging with a project much like a person on a bike engages with a bullet train – I try my best to catch up, but I certainly have to pedal fast. (Incidentally, architectural legs do pedal faster with conditioning.) Anyway, I knew there was a problem when the conversation started like
this:

Me: Hello, I am really exited to come on board. < insert really smooth introduction to the value of architecture here >… so if you send over whatever requirements documents you have, I can ramp up and ensure that the technology solution aligns with your business needs.

Stakeholder: I don’t have a requirements document.

Me: < insert stunned silence here > But you have a signed time and materials contract with the vendor. How are you going to ensure you get what you want?

Stakeholder:I know what I want and I explained it to them. (Instantly demoted from “stakeholder” to “person on phone”)

True story. It might be a story without a train wreck ending if the project team was small or the problem space was well understood, but neither was the case. Fortunately, the client eventually saw the risk, stopped the train, and found a new conductor.

You might be able to get by without requirement and design artifacts if you are designing for yourself and are your own stakeholder or if the number of stakeholders is extremely small and highly engaged in your design process. Even in those situations, your project would benefit from artifacts. In my experience there are very few projects where the problem and the solution cannot be better understood with some level of artifacts.

It can often be a challenge the first time you introduce the concept of capturing and using artifacts – particularly where people aren’t in the habit of producing or using them. You may find yourself wondering where to start. To help you hit the ground running, here are some of the techniques I use most often:

  • Enable a shared vision. I have found that in a conversation with five people, each leaves with different threads resonating. Working as a team on a central artifact – a diagram, a list, a use case, whatever – is an extremely effective way of brokering clarity across a project team. In the decentralized model, everybody takes personal notes with personal interpretations of the discussion. In some cases, perhaps a project manager or analyst scribes the entire meeting as “meeting notes”. Both are better
    suited for defense than success. Since there is not a shared “in scope” artifact, everybody will be marching toward personal notes which will be pulled out for defense when something goes wrong, but do not contribute to a shared vision. Scribed meeting notes likewise get filed for defensive use in the end game. Ask people to bring nothing but their thinking caps to your requirements or design meetings. Then, use the whiteboard or a sticky wall (see this article by Ellen Gottesdiener) to capture a shared artifact. Put that useless digital camera phone to use and email out the results – Poof! Instant artifact!
  • Encourage feedback (“The Straw Man”). Producing a draft artifact for review prior to a requirement or design session will always stimulate discussion. Even, drafting an artifact that incorrectly identifies information will serve as a catalyst for feedback, since people are quick to identify mistakes. Remember – that was the plan. Don’t get defensive, just capture the information you needed!
  • Guide discovery. I am a big proponent of formal artifact techniques. Standard notations (like UML) and approaches (Cockburn-style Use Cases) provide a structure that guide both scope and completeness. Creating the artifacts basically acts as a questionnaire that forces you to ask the right questions in order to complete the artifact. The
    very act of producing the artifact helps you understand the problem or solution in a way that would have eluded you otherwise.
  • Define scope. Clearly identify which artifacts are in scope and which are not. If information is not part of an in-scope artifact, it doesn’t count. Sounds a bit totalitarian, but it trains people to contribute to the well being of the in scope artifacts and minimizes the likelihood of some critical piece of information being lost in a deluge of emails.
  • Leverage visual models. I am a huge proponent of visual models, specifically UML-centric visual modeling.

Requirement and design artifacts are extremely powerful tools and should not be underestimated!

I would also like to debunk some common “artifact” misunderstandings:

  • “We don’t have time to produce those documents.” Typically, the time-consuming part of producing well-designed artifacts is figuring out the content, not the act of completing the artifact itself. If this is what you think, you should actually be saying “We don’t have time to figure out what we need” or “We don’t want to think about the design now, we want the problems to sneak up on us later.” Artifacts are actually tools used to understand the problem, design an appropriate solution, and ensure clarity
    among stakeholders. The power of artifacts is in the trip as much as the destination.
  • “Hey, do you know how to type? Good, you can do the documentation for us.” While it is unbelievably common to believe that anyone who has free time and a word processor can produce effective artifacts, that is most definitely not the case. It is the equivalent of saying that anyone who can use a paintbrush, can paint a Picasso. I can, in fact, use a paintbrush, but I’m challenged to paint a wall. The ability to capture information in a well scoped and clear manner is a skill which is not to be confused
    with ability to use Microsoft Word. In addition, producing artifacts cannot be a sidelined activity performed by a spectator – this is not news reporting!

In closing, while I concur that heavyweight documentation is definitely not needed (or helpful), the logical foil is not “no documentation”. The answer is that the right number and type of artifacts should be produced in order to reduce risk and ensure the success of your endeavors. What is needed is not heavyweight nor lightweight documentation, but rightweight documentation! Determining the right number and type of artifacts is left as an exercise to the reader.

Ported to WordPress

May 23rd, 2005

With an awesome display of focus, instead of adding content, I have taken this evening – or a few hours anyway – to port from blogger to WordPress. I have more than convinced myself that this was the right decision:

  1. As I didn’t read the license agreement when it popped up (some day I will share the excellent story of how RogueWave changed the licensing from royalty-free to big royalties on an upgrade without me noticing), I was unsure who owned my writings if I bloggered. On the outside chance that something intelligent eventually shows up here, I figured it would be better to be safe than sorry.
  2. I prefer products and tools that are useable “as is”, yet extendable. I also don’t mind free. Wordpress is pretty slick and powerful out of the box, is open source (gpl’d), and has an active community that seems to love writing plug-ins.
  3. I am a geek to the core and fill an ample percentage of my life with upgrades.

The (xen) of Geek

May 20th, 2005

I must have expended all my creative energy running through the blog creation wizard becuase I am now officially spent and have nothing to offer. Well – here goes nothing.

In short, I consider myself a geek, in the most positive sense of the word. I like the Wikopedia definition of a geek – “a person who is fascinated, perhaps obsessively, by technology and imagination”. I had to search long and hard before I found a definition with which I agreed – or rather, which agreed with me!

I consider a geek a master of his or her chosen craft – my chosen craft is software development. This blog will contain a range of geek topics – enjoy.

Note: It is my mission to not use the word “blog” ever again in this… thing.