<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss'><id>tag:blogger.com,1999:blog-25178118</id><updated>2009-11-24T16:31:25.609-06:00</updated><title type='text'>Thoughtful Programmer</title><subtitle type='html'>John Reynolds' Blog on Programmers and Programming</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://thoughtfulprogrammer.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25178118/posts/default'/><link rel='alternate' type='text/html' href='http://thoughtfulprogrammer.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/25178118/posts/default?start-index=26&amp;max-results=25'/><author><name>John Reynolds</name><uri>http://www.blogger.com/profile/13852313153136272800</uri><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>131</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-25178118.post-5583668966646960203</id><published>2009-11-23T10:44:00.002-06:00</published><updated>2009-11-23T10:51:33.808-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Business Process Management'/><category scheme='http://www.blogger.com/atom/ns#' term='BPM'/><title type='text'>How to make Soduko boring - Follow the Process</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://4.bp.blogspot.com/_QviPbycN-9k/SwlP6IrIKmI/AAAAAAAAQ8s/PmrDfugVvzQ/s1600/sudoku.png" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_QviPbycN-9k/SwlP6IrIKmI/AAAAAAAAQ8s/PmrDfugVvzQ/s320/sudoku.png" yr="true" /&gt;&lt;/a&gt;I spend a lot of time travelling to and from client sites, and when I travel I often pass the time by playing &lt;a href="http://en.wikipedia.org/wiki/Sudoku"&gt;Soduko&lt;/a&gt;&amp;nbsp;on my iPhone (I use a very good version from &lt;a href="http://mmggames.com/"&gt;Mighty Good Games&lt;/a&gt;).&amp;nbsp; Once apon a time I relied on the paper versions in the airline's magazines - but the iPhone app is now my norm.&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;One incentive for playing Soduko was to keep my &lt;a href="http://en.wikipedia.org/wiki/Hercule_Poirot"&gt;little grey cells&lt;/a&gt; from getting lazy - but it also a fun way to pass the time, so I was rather surprised last year&amp;nbsp;when&amp;nbsp;my friend Roberta told me that she had given up the game after just a few months of playing. According to Roberta - who is a math teacher - the game wasn't challenging any more.&amp;nbsp; She'd figured it out, and the puzzles were no longer puzzling.&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;My first reaction to Roberta's&amp;nbsp;statement&amp;nbsp;was typical for me - I just assumed that the Soduko puzzles she had access to weren't "hard enough".&amp;nbsp; Many, many times I would finish a flight with an unfinished puzzle from the &lt;a href="http://www.americanwaymag.com/sudoku-06-15-2009"&gt;American Way Magazine&lt;/a&gt; staring me in the face.&amp;nbsp; I certainly hadn't "figured out" Soduko.&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Then in March I saw an article in &lt;a href="http://www.usatoday.com/tech/science/mathscience/2009-03-15-sudoku-secret_N.htm"&gt;USA Today&lt;/a&gt; about J. F. Crook and a Soduko "solution".&amp;nbsp; Crook is a mathematician, but his "solution" isn't a mathematical proof - it's a series of steps.&amp;nbsp; I'm a process guy - so when you say "series of steps" I say "process".&amp;nbsp; Crook had published a process definition&amp;nbsp;for solving any Soduko puzzle.&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;I read Crook's process definition, and it wasn't that far from recommendations that I has seen earlier.&amp;nbsp;&amp;nbsp;Soduko puzzles are grids of 81 squares, nine across and nine down. Some boxes have a number filled in; the rest are blank. Players must fill in the blank squares with numbers between 1 and 9 without repeating any numbers in a row, column or the nine interior 3-by-3 boxes of the puzzle.&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://www.ams.org/sitesearch/?cx=006070101833274801941%3Acyhu7o79tee&amp;amp;cof=FORID%3A11&amp;amp;q=crook#935"&gt;Crook's Sudoku Solving Process&lt;/a&gt; can be summed up as follows:&amp;nbsp; Mark all the squares in the puzzle that could be a "1" - Based on "what could be a 1" apply some simple rules to "solve" a few squares.&amp;nbsp; Repeat this process for numbers 2 thru 9. &amp;nbsp;Crook admits that you still may find some sqaures that might be one of two numbers, but you just "guess"&amp;nbsp; a number for that square and proceed until your guess is either confirmed or invalidated.&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;The problem with Crook's Process is that it's really tedious. While solving a Sudoku puzzle you'll often have insights or spot patterns that lead you to solutions for a whole bunch of squares at one time.&amp;nbsp; Consequently, when I read Crook's Process I said to myself "That's nice" and went on solving my puzzles the same way I always had.&lt;br /&gt;&lt;br /&gt;My method for Soduko was to&amp;nbsp;"solve" the obvious squares first, then scan the whole puzzle looking for the less-obvious relationships between the squares.&amp;nbsp; Using that rather random process I could solve many "Moderate" puzzles in ten to fifteen minutes, but I was also frequently left with puzzles that I just couldn't crack.&lt;br /&gt;&lt;br /&gt;When I switched from paper Soduko&amp;nbsp;to iPhone Soduko I initially followed my old-but-not-reliable process... but the iPhone apps features&amp;nbsp;opened my eyes to "the better way".&lt;br /&gt;&lt;br /&gt;With paper and pencil it's really messy to follow Crook's Process.&amp;nbsp; There's a lot of erasing that goes on, and it's really easy to make mistakes.&amp;nbsp; With the software version I can mark/unmark squares to my heart's content without reducing the legibility of the puzzle.&amp;nbsp; The software version also immediately flags my mistakes, so I don't multiply those mistakes by contiuing on with bad data driving my subsequent decisions.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: x-large;"&gt;A little bit of software can make it a lot easier to follow a process - Who would have imagined that? :-)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Even with my new found ability to make notes on the puzzle - I still stuck to my old process for the most part.&amp;nbsp; I's use my process to solve as much as I could, and then resort to Crook's process... and sure enough I would still get stuck with puzzles that I just couldn't solve. &amp;nbsp;This didn't happen often, but it happened.&lt;br /&gt;&lt;br /&gt;I should mention that up until this time I was limiting myself to the "Moderate" puzzles on my iPhone. It's very unsatisfying to have an unsolved puzzle when my plane lands, so I stuck to the relatively easy ones for the most part.&lt;br /&gt;&lt;br /&gt;On a recent flight I decided to tackle an "Expert" Soduko puzzle - and it was a bear. &amp;nbsp;I was so intimidated that I followed Crook's Process. &amp;nbsp;I diligently marked all the "1's", then the "2's", etc. and sure enough in 30 minutes I had solved the puzzle. &amp;nbsp;I tried again with a new puzzle, and sure enough, in 30 minutes I had solved that one too.&lt;br /&gt;&lt;br /&gt;Since that time I have improved a bit, I'd say my average is about 25 minutes, but sure enough I can solve any puzzle as long as I keep to the process. &amp;nbsp;Just like Roberta, the puzzles aren't really puzzling anymore. &amp;nbsp;Give me 30 minutes and I will solve the puzzle.&lt;br /&gt;&lt;br /&gt;The&amp;nbsp;trade-off&amp;nbsp;here is that I won't be able to solve &lt;i&gt;any&lt;/i&gt; puzzle in less time. &amp;nbsp;The process is tedious and it's not easy to speed it up. &amp;nbsp;I sacrifice "brilliant flashes of insight" for dependable, predictable, and plodding. &amp;nbsp;The process makes Soduko boring.&lt;br /&gt;&lt;br /&gt;As always I have to turn this experience into an analogy for the domain of &lt;a href="http://thoughtfulprogrammer.blogspot.com/2008/05/what-is-managed-business-process.html"&gt;Managed Business Processes&lt;/a&gt;: &amp;nbsp;I could have followed Crook's Soduko Solving Process all along - but a little bit of software really made the process easier to follow. Software made each step of the process easier, but it didn't force me to stick to the process - If the software had managed the process (forced me to stick to the process) I would have achieved the goal of consistently solving Soduko puzzles sooner.&lt;br /&gt;&lt;br /&gt;You might be saying - "Yeah, but it also made it boring". &lt;br /&gt;&lt;br /&gt;That's certainly something to consider when introducing a Managed Business Process into your organization... We don't want to turn our process participants into mindless drones. &amp;nbsp;We don't want to lessen the importance of creativity and insight - but we do need to make things more predictable and insure success. &amp;nbsp;Finding the balance between predictable process and bored employees in your organization is a puzzle that won't ever get boring.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25178118-5583668966646960203?l=thoughtfulprogrammer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thoughtfulprogrammer.blogspot.com/feeds/5583668966646960203/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=25178118&amp;postID=5583668966646960203' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25178118/posts/default/5583668966646960203'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25178118/posts/default/5583668966646960203'/><link rel='alternate' type='text/html' href='http://thoughtfulprogrammer.blogspot.com/2009/11/how-to-make-soduko-boring-follow.html' title='How to make Soduko boring - Follow the Process'/><author><name>John Reynolds</name><uri>http://www.blogger.com/profile/13852313153136272800</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16294191035180283464'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_QviPbycN-9k/SwlP6IrIKmI/AAAAAAAAQ8s/PmrDfugVvzQ/s72-c/sudoku.png' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25178118.post-7377750230900342428</id><published>2009-11-20T15:49:00.012-06:00</published><updated>2009-11-22T07:45:01.005-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Business Process Management'/><category scheme='http://www.blogger.com/atom/ns#' term='Tips for the Business Process Developer'/><category scheme='http://www.blogger.com/atom/ns#' term='BPM'/><title type='text'>Tips for the Business Process Developer - Process Data Perspectives</title><content type='html'>Those of us who build &lt;a href="http://thoughtfulprogrammer.blogspot.com/2008/05/what-is-managed-business-process.html"&gt;Managed Business Process&lt;/a&gt; solutions for a living have to spend a lot of time thinking about data. Our BPM suites make it a snap to define Process Flow and Routing, but we still have to make sure that each Participant in the process has access to all the data that they need to accomplish their tasks.&lt;br /&gt;&lt;br /&gt;I always insist that folks implement their &lt;a href="http://thoughtfulprogrammer.blogspot.com/2008/02/drive-path-process-and-data-flow.html"&gt;process flow first&lt;/a&gt;. Build a place-holder for each Activity in the process, connect them up with flow lines and any necessary Decision Gateways, and add in just enough process data and build just enough user interface to make sure that you can play back each step through every path in the process with your business folks.&lt;br /&gt;&lt;br /&gt;Building this much of your process first has huge paybacks - There's nothing like stepping through a process to validate whether or not the business folks agree that you've got the process right. Validate the process requirements first - worry about everything else later.&lt;br /&gt;&lt;br /&gt;Once you have this first playback of the process done you've got to turn your attention to defining the rest of the process data... and suddenly it's not as clear how to proceed. Where do you start?&lt;br /&gt;&lt;br /&gt;The data aspects of a Process encompasses many things that you might not consider when developing other types of applications. There are several common &lt;a href="http://www.workflowpatterns.com/patterns/data/index.php"&gt;process data patterns&lt;/a&gt; to consider - processes gather, transport and transform data across activities that are performed by multiple participants. Data models often dynamically evolve and transform as the process proceeds.&lt;br /&gt;&lt;br /&gt;I've had several recent discussions with &lt;a href="http://blog.lombardi.com/author/fosmani/"&gt;Fahad Osmani&lt;/a&gt; and some of my other &lt;a href="http://www.lombardisoftware.com/"&gt;Lombardi&lt;/a&gt; colleagues about how to effectively develop process data models. We've all implemented a number of managed business processes - We've all thoroughly mastered the craft of implementing processes - But we haven't really formalized our approach for designing process data models. Knowing in your gut what to do is great, but formalizing that into something that you can share with others is better.&lt;br /&gt;&lt;br /&gt;Here's what we've come up with so far:&lt;br /&gt;&lt;br /&gt;In every business process you've got a variety of actors with a variety of perspectives that you have to deal with - we've abstracted this into the following list:&lt;br /&gt;&lt;br /&gt;1. Process Owners&lt;br /&gt;2. Process Analysts&lt;br /&gt;3. Process Participants&lt;br /&gt;4. Process Builders&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;We've found it best to design a process data model from each perspective in this order, and then consolidate those models into a consistent unified model.&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold;font-size:130%;" &gt;The Owner's Perspective of Process Data:&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Start with the owner's perspective of process data - the folks with overarching concerns to make sure that the outcome of a process is achieved. If you're working with a Bank on a Loan Application process, these are the managers of the Loan Department who are held accountable for efficient and effective handling of the loan applications.&lt;br /&gt;&lt;br /&gt;Owners have a business perspective on the process data. They've got the big picture business view of the process payload - What are the basic business objects that the process deals with? What data is being gathered? How is the data transformed during the process? What happens to the data when the process ends?&lt;br /&gt;&lt;br /&gt;Owners often see process payload data as starting points and outcomes. Their major concern is with the state of the business data "now". They care about the state of the business objects when the process starts, the state of the business objects at key milestones, and the state of the business objects when the process finishes. The owner's data model provides that information.&lt;br /&gt;&lt;br /&gt;Beyond the payload data, owners also perceive data in terms of process rules - What data determines which activities to perform? What data determines when a task is due? What data determines who should perform a task? The owner's data model answers these questions.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="FONT-WEIGHT: bold"&gt;The Analyst's Perspective of Process Data:&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Process Analysts are the folks who look at historical process metrics to figure out if the process can be tweaked to work better. In some cases the Owner may also be the Analyst - but the Analyst perspective really is different. In a Loan Application process, the analysts are the folks who evaluate the effectiveness of the process itself in the hopes it can be improved in the future.&lt;br /&gt;&lt;br /&gt;Analysts deal with understanding the past to improve the future.&lt;br /&gt;&lt;br /&gt;Analysts view the process data as snapshots in an album. Their view of data is intricately linked to the process diagram - The snapshots are meaningless to them unless they know where the snapshots were taken.&lt;br /&gt;&lt;br /&gt;Analysts care about how long things take and why some things take longer than other things. Analyst care about "rework" (tasks that have to be redone). They don't really care much about what's happening now - they care about what happened over some time period. To meet the analyst's needs, process context data (and time stamps) are stored at specific points in the process. Making sure that the right snapshot is taken at the right time is their major concern. The analyst's data model works in conjunction with "snapshot events" in the process flow to capture the information the analyst needs.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="FONT-WEIGHT: bold"&gt;The Participant's Perspective of Process Data:&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Participants in the process are the folks who are tasked to perform specific tasks. Sticking with a Loan Application process, these would include the Loan Officers who review and make approval decisions about loan applications.&lt;br /&gt;&lt;br /&gt;Participants care about now. Their perspective of process data is immediate. What forms do they need to fill out? What fields are on each form? What are the acceptable values for each field on a form? Participants view data from a task level - What information do they need to consult and what information do they need to gather and modify to accomplish their task.&lt;br /&gt;&lt;br /&gt;Some information is passed to the participant when they are assigned a task, and some information they look up - but it's all information that is necessary to accomplish a task. Making sure that they can access data and modify the data that they need is their major concern.&lt;br /&gt;&lt;br /&gt;One special caveat when considering the Participant's view of data is to ask whether or not any of the data that the Participant changes must be "immediately" seen by others. Data visibility requirements like this are critically important to the Process Builders.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="FONT-WEIGHT: bold"&gt;The Builder's Perspective of Process Data:&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Finally we get down to the Process Builder's view of the process data - that's us. We really can't do our work until we understand what the Owners, Analysts and Participants need.&lt;br /&gt;&lt;br /&gt;Builders care about the actual structure of the data. What data are we going to pass around and how are we going to pass the data around? What data needs to be stored an retrieved and how are we going to store and retrieve the data? How are we going to meet the data visibility requirements?&lt;br /&gt;&lt;br /&gt;The Owner's perspective helps the Builder define the major business objects that the process will deal with. The owner's data model also identifies the data that is used to determine which paths are taken, how long each task should take, and who should perform each task.&lt;br /&gt;&lt;br /&gt;The Analyst's perspective helps the Builder define the data structures for the snapshots that are taken throughout the process - and informs the Builder where in the process the snapshot needs to be taken.&lt;br /&gt;&lt;br /&gt;The Participant's perspective helps the Builder define the process payload (the data that is passed to and from tasks) and it helps them define the data system architecture that is required to retrieve and modify data within activities.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="FONT-WEIGHT: bold"&gt;The Payoff:&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;The end result of this multi-perspective approach is a model for process data that just plain works.&lt;br /&gt;&lt;br /&gt;It takes a bit more up-front effort, but you are less likely to get blind-sided by unanticipated data requirements popping up late in your development cycle. The data requirements may change, and any requirement change may still require substantial rework - but odds are the rework will be much easier for you to accomplish.&lt;br /&gt;&lt;br /&gt;Clearly understanding requirements from the perspectives of your the process actors always pays off - and this axiom is doubly true when data is involved.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25178118-7377750230900342428?l=thoughtfulprogrammer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thoughtfulprogrammer.blogspot.com/feeds/7377750230900342428/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=25178118&amp;postID=7377750230900342428' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25178118/posts/default/7377750230900342428'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25178118/posts/default/7377750230900342428'/><link rel='alternate' type='text/html' href='http://thoughtfulprogrammer.blogspot.com/2009/11/tips-for-process-implementer-process.html' title='Tips for the Business Process Developer - Process Data Perspectives'/><author><name>John Reynolds</name><uri>http://www.blogger.com/profile/13852313153136272800</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16294191035180283464'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25178118.post-2612557902008955671</id><published>2009-11-11T07:37:00.006-06:00</published><updated>2009-11-11T07:51:26.964-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Thoughtful Programming'/><title type='text'>Open Source + User Builders = Great Products</title><content type='html'>I read &lt;a href="http://www.npr.org/templates/story/story.php?storyId=120271945"&gt;this story&lt;/a&gt; over at npr.org this morning:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;"Before Jonathan Kuniholm had a tour of duty in Iraq, he worked for Tackle Design, an industrial design, research and development firm. After that tour, he was missing part of his right arm — which he lost when his Marine patrol was ambushed near Haditha.&lt;br /&gt;&lt;br /&gt;When Kuniholm returned to his design shop, he brought along three prosthetic arms given to him at Walter Reed Medical Center — the same body-operated hook many veterans have used since World War I, a shorter utility prosthetic, and a new, state-of-the-art myoelectric arm. Each one had its drawbacks — and when Kuniholm and his Tackle Design colleagues disassembled them, they quickly concluded that they could improve on the designs. They founded the &lt;a href="http://www.openprosthetics.org/"&gt;Open Prosthetics Project&lt;/a&gt;, an open-source collaboration that makes its innovations available to anyone. And Kuniholm signed on with Revolutionizing Prosthetics, an initiative of the Defense Advanced Research Projects Agency, or DARPA."&lt;/blockquote&gt;There's an important lesson here for every company that builds products:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Users are a better judge of what your product should do than your developers.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Users who have the skills to build your product themselves will improve your product if given the chance.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;If you don't let your User/Builders improve your product, your product won't be as good as it should be. &lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25178118-2612557902008955671?l=thoughtfulprogrammer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thoughtfulprogrammer.blogspot.com/feeds/2612557902008955671/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=25178118&amp;postID=2612557902008955671' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25178118/posts/default/2612557902008955671'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25178118/posts/default/2612557902008955671'/><link rel='alternate' type='text/html' href='http://thoughtfulprogrammer.blogspot.com/2009/11/open-source-user-builders-great.html' title='Open Source + User Builders = Great Products'/><author><name>John Reynolds</name><uri>http://www.blogger.com/profile/13852313153136272800</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16294191035180283464'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25178118.post-326661045374366079</id><published>2009-07-23T09:53:00.006-05:00</published><updated>2009-07-23T21:24:20.923-05:00</updated><title type='text'>Viva Las Lunas!</title><content type='html'>It's taken me a few days to figure out what I wanted to write about the 40th anniversary of the moon landing... I was 12 years old - and the moon race played a very prominent role in the world view of that nerdy 12 year old.&lt;br /&gt;&lt;br /&gt;I remember an evening shortly before "One small step" - I don't remember if they'd already landed or if it was between the touch-down landing and Neil Armstrong's famous descent of the ladder - but I was outside with my father and looking up at the moon. Tom, my father, was talking with his friend "Mr. Hahn" about the landing, and "Mr. Hahn" asked me if I was going to watch it on TV that evening.&lt;br /&gt;&lt;br /&gt;For some reason, my response was "No". Perhaps I was just being a contrarian pre-teen, but I definitely remember him reminding me what a special occasion this was. Humans had been standing on the earth looking up at the moon in the sky for thousands of years, but never before had someone been standing on the moon looking back at the earth.&lt;br /&gt;&lt;br /&gt;"Mr. Hahn" was a rather profane man, born into the &lt;a id="ril4" title="wild-catter-oil-patch" href="http://en.wikipedia.org/wiki/Wildcatter"&gt;wild-catter-oil-patch&lt;/a&gt; culture of West Texas and not predisposed to poetry - but he shook me out of whatever funk I was in and I went home and watched Neil and Buzz with rapt attention.&lt;br /&gt;&lt;br /&gt;What amazes me to this day is the undeniable fact that at 12 I was already jaded by the space program before the moon's first footprint. I've been going through my stash of memorabilia weeding things out lately, and I came across a folder bulging with NASA photos and articles and sketches of my own plans for space ships. There's quite a lot of "Star Trek" along with the NASA glossy photos - obviously I was hooked on space.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;When I was 9 years old, we were all going to live and work in space. The first astronauts were super-human test pilots - but that made sense. They were blazing the trail that we were all going to follow. Space was not going to be the sole domain of multi-Phd toting eggheads - "Normal people" would be there doing all the things that "normal people" do.&lt;br /&gt;&lt;br /&gt;NASA was an agency of innovation. They were constantly unveiling new rockets, capsules, rocket planes, etc. It was always new and exciting.&lt;br /&gt;&lt;br /&gt;Perhaps the &lt;a id="rop:" title="Apollo One" href="http://en.wikipedia.org/wiki/Apollo_1"&gt;Apollo One&lt;/a&gt; disaster was the beginning of my disenchantment. The inferno that killed those 3 heroes was due to sloppy workmanship, not technical complexity. Even as a 10 year old I was sickened. How could anybody associated with the space program be sloppy?&lt;br /&gt;&lt;br /&gt;After the last moon flight it just got worse.&lt;br /&gt;&lt;br /&gt;&lt;a id="mst9" title="Skylab" href="http://en.wikipedia.org/wiki/Skylab"&gt;Skylab&lt;/a&gt; was a disaster on launch - Solar panels ripping off during launch due to poor construction. The shuttle - supposedly cheap and reliable - just a ticking time bomb of compromises that had more to do with keeping the money flowing to contractors than to accomplishing anything worthwhile.&lt;br /&gt;&lt;br /&gt;NASA (the agency) has no luster left to lose - not the people. The people are great. The agency NASA should be scuttled and its responsibilities parceled out to more focussed agencies: &lt;a id="ast8" title="NOAA" href="http://www.noaa.gov/"&gt;NOAA&lt;/a&gt;, &lt;a id="ffcb" title="DARPA" href="http://www.darpa.mil/"&gt;DARPA&lt;/a&gt;, &lt;a id="r00o" title="DOE" href="http://www.energy.gov/"&gt;DOE&lt;/a&gt;, etc.&lt;br /&gt;&lt;br /&gt;My space heroes are now &lt;a id="kd4z" title="Elon Musk" href="http://en.wikipedia.org/wiki/Elon_Musk"&gt;Elon Musk&lt;/a&gt; and &lt;a id="rgnk" title="Robert Bigelow" href="http://en.wikipedia.org/wiki/Bigelow_Aerospace"&gt;Robert Bigelow&lt;/a&gt;. These guys understand that interest in space has little to do with science - it's about adventure. If it's not exciting, then why go?&lt;br /&gt;&lt;br /&gt;NASA's &lt;a href="http://www.newscientist.com/gallery/lunar-base-designs"&gt;plans for a moon base&lt;/a&gt; are about as exciting as the Antarctic &lt;a id="tp2j" title="Scott Base" href="http://www.antarcticconnection.com/antarctic/stations/scott.shtml"&gt;Scott Base&lt;/a&gt;. How many people do you know who are dying to visit Scott Base? (How many have even heard of it?)&lt;br /&gt;&lt;br /&gt;I know many people who would love to take a &lt;a id="nk_p" title="cruise to Antarctica" href="http://www.coolantarctica.com/Travel/antarctica_travel_home.htm"&gt;cruise to Antarctica&lt;/a&gt; to see the fjords, glaciers and penguins... but who wants to go sit in an over sized high tech igloo? Compare NASA's &lt;a href="http://ares.jsc.nasa.gov/HumanExplore/Exploration/EXLibrary/images/Pics/LUNOX/07Base.gif"&gt;2009 vision of a moon base&lt;/a&gt; to their &lt;a href="http://www.nas.nasa.gov/About/Education/SpaceSettlement/70sArt/AC75-1086-1q.jpeg"&gt;1970's vision for a space settlement&lt;/a&gt; and you'll see how boring the future has become.&lt;br /&gt;&lt;br /&gt;Vegas baby... the moon doesn't need a "base", it needs a "strip". Vegas is a city that never should have been - a gaudy exciting bubble of sex, sin and gambling in the middle of absolutely nothing. If Vegas didn't cater to hedonism, there wouldn't be a Vegas.   &lt;br /&gt;&lt;br /&gt;Musk and Bigelow understand that. They're serious businessmen, and they're following the money that's available now (&lt;a id="oqje" title="COTS" href="http://www.nasa.gov/exploration/news/COTS_selection.html"&gt;COTS&lt;/a&gt;, etc.), but I think they know that the NASA gravy-train and communication satellites are only going to take things so far. The moon's going to remain forlorn until &lt;a id="wm7t" title="Cirque du Sole" href="http://www.cirquedusoleil.com/"&gt;Cirque du Sole&lt;/a&gt; has a lunar venue where they can perform.&lt;br /&gt;&lt;br /&gt;40 years ago something truly amazing happened on the moon. Let's hope that 40 years from now we don't have to look back 80 years for inspiration.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25178118-326661045374366079?l=thoughtfulprogrammer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thoughtfulprogrammer.blogspot.com/feeds/326661045374366079/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=25178118&amp;postID=326661045374366079' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25178118/posts/default/326661045374366079'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25178118/posts/default/326661045374366079'/><link rel='alternate' type='text/html' href='http://thoughtfulprogrammer.blogspot.com/2009/07/viva-las-lunas.html' title='Viva Las Lunas!'/><author><name>John Reynolds</name><uri>http://www.blogger.com/profile/13852313153136272800</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16294191035180283464'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25178118.post-792237749588207544</id><published>2009-07-22T17:31:00.009-05:00</published><updated>2009-07-22T20:20:57.796-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Business Process Management'/><category scheme='http://www.blogger.com/atom/ns#' term='Thoughtful Programming'/><title type='text'>Get the Words (and Notation) Right</title><content type='html'>Dan North (the chief evangelist for &lt;a href="http://en.wikipedia.org/wiki/Behavior_Driven_Development"&gt;Behavior Driven Development&lt;/a&gt;) loves to say: &lt;br /&gt;&lt;blockquote&gt;"&lt;a href="http://www.infoq.com/presentations/bdd-dan-north"&gt;Get the Words Right&lt;/a&gt;"&lt;/blockquote&gt;&lt;br /&gt;In the context of creating software if you don't know what somebody wants you to build - then you can't build it for them... That statement is true for lots of contexts but let's stick to software for the moment.&lt;br /&gt;&lt;br /&gt;If the person who wants something built uses terms that you don't fully understand, then you'll have to translate those terms into something that you do fully understand. Translation is never perfect, so you're bound to screw up something. When you are ready to explain what you're building to the client (to confirm that you are in fact building the right thing) if you use terms that the client doesn't fully understand, then they'll have to translate your words - and they are likely to misunderstand what you're building.&lt;br /&gt;&lt;br /&gt;Sometimes a 3rd party will be on hand who understands both the client's and the builder's terms (I do that a lot)... but then you are dependent on the translation skills of the 3rd party. The good news is that both you and the client can blame the 3rd party, but your software still stinks.&lt;br /&gt;&lt;br /&gt;Dan's solution to that problem is to spend more time up front agreeing on a common vocabulary between builder and client... with a definite prejudice towards adopting the client's vocabulary whenever possible.&lt;br /&gt;&lt;br /&gt;Seems pretty much like common sense, but it's very hard to actually do it. &lt;br /&gt;&lt;br /&gt;Many programmers just don't really want to understand their client's businesses... they're excited about programming, not business. Business concerns are mundane and boring compared to the challenges that they face when creating software... in their opinion. Many business people are just as bored by technical details as programmers are by business details.&lt;br /&gt;&lt;br /&gt;It's hard - but in truth it's the easiest way to succeed. When everyone is on the same page building projects are actually fun... and the "buildings" are really fun to "live in".&lt;br /&gt;&lt;br /&gt;In the Business Process software domain, we have a common notation for expressing the "flow" aspects of processes - &lt;a href="http://en.wikipedia.org/wiki/Business_Process_Modeling_Notation"&gt;BPMN&lt;/a&gt;. BPMN is relatively simple to learn and it has proved to be a very effective means for Business and Programmer to communicate about the "flow" aspects of their business processes. Unfortunately, BPMN isn't good at all when communicating all of the other aspects of a business process (data requirements, routing rules, etc.) but it's a good start.&lt;br /&gt;&lt;br /&gt;BPMN is Notation rather than words... but Dan's point is hugely relevant - you have to get the Notation right.&lt;br /&gt;&lt;br /&gt;I've worked with BPMN for a few years, and I think the Notation has elements that just aren't right. They don't convey the meaning of the symbol to most Business people.&lt;br /&gt;&lt;br /&gt;Here's my least favorite symbol - the Multiple Instance Activity:&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_QviPbycN-9k/Sme0tEy4wuI/AAAAAAAAP_k/SLma-87eFGU/s1600-h/MultipleInstance.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 142px; height: 117px;" src="http://2.bp.blogspot.com/_QviPbycN-9k/Sme0tEy4wuI/AAAAAAAAP_k/SLma-87eFGU/s400/MultipleInstance.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5361452567882154722" /&gt;&lt;/a&gt;&lt;br /&gt;When you see this symbol, you are supposed to know that many copies (instances) of this Activity will be performed at the same time. You "know" this because there are those two little parallel lines on the Activity - They're parallel to each other, so of course that means there are parallel Activities taking place.&lt;br /&gt;&lt;br /&gt;I am not a Business person, but I doubt that many would describe Activities-That-Happen-At-The-Same-Time as parallel Activities. If someone out there knows of a study that proves me wrong, please tell me.&lt;br /&gt;&lt;br /&gt;I think a better symbol would be something like the following:&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_QviPbycN-9k/Sme3guGOcTI/AAAAAAAAP_s/Cb6fZSQSj0E/s1600-h/MultipleInstance2.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 158px; height: 132px;" src="http://2.bp.blogspot.com/_QviPbycN-9k/Sme3guGOcTI/AAAAAAAAP_s/Cb6fZSQSj0E/s400/MultipleInstance2.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5361455654165705010" /&gt;&lt;/a&gt;&lt;br /&gt;With this symbol everyone can see at a glance that Multiple-Things-Are-Happening (hopefully at once). I'd also add some indicator of the number of "Things"... although often that's only determined when the process is running.&lt;br /&gt;&lt;br /&gt;I suspect that the current Multi-Instance symbol was chosen because it is easy to draw by hand. Fair enough... but I find that most of my hand-drawing is done on white boards, and I almost always draw something that looks a lot more like my proposed symbol.&lt;br /&gt;&lt;br /&gt;Fortunately, with the current state of BPMN editors it is usually pretty easy to swap out the "official" notation's symbols for your own... There are much bigger problems to solve in the realm of conveying Business Requirements to Programmers than this little icon - so please don't waste any time lobbying for it to change. I'm just using it to illustrate the point:&lt;br /&gt;&lt;blockquote&gt;Words Matter - Notations Matter - Diagrams Matter&lt;/blockquote&gt;&lt;br /&gt;Pictures are worth a thousand words, so take the time to get the picture right before you start building your next project.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25178118-792237749588207544?l=thoughtfulprogrammer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thoughtfulprogrammer.blogspot.com/feeds/792237749588207544/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=25178118&amp;postID=792237749588207544' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25178118/posts/default/792237749588207544'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25178118/posts/default/792237749588207544'/><link rel='alternate' type='text/html' href='http://thoughtfulprogrammer.blogspot.com/2009/07/get-words-and-notation-right.html' title='Get the Words (and Notation) Right'/><author><name>John Reynolds</name><uri>http://www.blogger.com/profile/13852313153136272800</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16294191035180283464'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_QviPbycN-9k/Sme0tEy4wuI/AAAAAAAAP_k/SLma-87eFGU/s72-c/MultipleInstance.JPG' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25178118.post-6825987948045702216</id><published>2009-07-14T22:55:00.005-05:00</published><updated>2009-07-16T10:17:04.726-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Business Process Management'/><category scheme='http://www.blogger.com/atom/ns#' term='BPM'/><title type='text'>The Toilet Paper Replenishment Process</title><content type='html'>&lt;a id="q33n" title="Don Norman" href="http://jnd.org/dn.mss/toilet_paper_algorithms_i_didnt_know_you_had_to_be_a_computer_scientist_to_use_toilet_paper.html"&gt;Don Norman&lt;/a&gt; has an excellent blog posting about the poor design of many Toilet Paper Dispensers - focusing mainly on the poor algorithms that we simple humans use when given a choice of which roll to use from a multi-roll dispenser... Multi-roll TP dispensers prove Don's thesis that many every day things just aren't designed well. I had read Don's book and seen his blog long ago, but it came back to mind when I encountered the following in a bathroom in &lt;a id="fklz" title="Stanford University's Terman Engineering Building" href="http://www-ee.stanford.edu/timeline.php"&gt;Stanford University's Terman Engineering Building&lt;/a&gt;...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="TEXT-ALIGN: left" id="h0v8"&gt;&lt;img style="WIDTH: 362px; HEIGHT: 285px" src="http://docs.google.com/File?id=ah8ggrjp5wrv_160qfzcnwfg_b" /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;No less than six partial rolls of toilet paper perched on top of a standard two roll toilet paper dispenser.&lt;br /&gt;&lt;br /&gt;Obviously Don is right about the design of the dispenser itself... Given the choice of which roll to use we'll pull sheets off each. But obviously there's something more at work here: The process for refilling the dispenser is suspect.&lt;br /&gt;&lt;br /&gt;I suspect the process is something like the following:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Check the dispenser each day. If either of the rolls is less than 1/4 full&lt;br /&gt;replace it with a full roll and place the partial roll on top of the dispenser.&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;The objective of this process is to make sure that there's always plenty of toilet paper available... Obviously you don't want to run out.&lt;/p&gt;My guess is that the partial roll is left on the dispenser in the hopes that folks will use it - This is much better than throwing it away, and given frugal college students I'm surprised that the partials aren't disappearing.&lt;br /&gt;&lt;br /&gt;The flaw in the process seems pretty simple... "Enough Toilet Paper on Hand" doesn't take into account the partial rolls. Instead of basing replacement on the size of the rolls installed in the dispenser, it really ought to be based on the total amount of tissue on hand - the rolls in the dispensers plus the partials.&lt;br /&gt;&lt;br /&gt;At first glance this appears to be a classic example of mis-stating the objective of the process. The janitor who refills the dispenser has been told something like "No roll on the dispenser should be less than 1/4 full". The real objective should probably be something like "There should always be the equivalent of a full roll on hand".&lt;br /&gt;&lt;br /&gt;Having restated the objective: What if you ended up an "equivalent full roll" made up of sixteen partial rolls? That certainly wouldn't be acceptable to most folks.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Returning to Don Norman's point - the design of the dispenser itself is really at the heart of this "process" problem. The process for refilling the dispenser is overly complex due to the poor design of the dispenser itself. Try as we might to give proper instructions to the janitor, success is going to be highly dependent on the janitor's judgement on whether or not enough toilet paper is on hand.&lt;br /&gt;&lt;br /&gt;What can we learn from this example?&lt;br /&gt;&lt;br /&gt;If a process that should be simple isn't, then look beyond the process definition: It may be better to buy a new dispenser than to figure out how to refill the one that you have.&lt;br /&gt;&lt;br /&gt;&lt;hr&gt;&lt;br /&gt;&lt;strong&gt;UPDATE:&lt;/strong&gt;&lt;br /&gt;&lt;hr&gt;&lt;br /&gt;Prompted by the comment of a good friend and Stanford Alum I delved a bit deeper into the conundrum and sadly discovered that this is both a Process and a Design problem... In another bathroom at Stanford I discovered the following shocking sight:&lt;br /&gt;&lt;br /&gt;&lt;p align="center"&gt;&lt;a href="http://4.bp.blogspot.com/_QviPbycN-9k/Sl9B7NqqhqI/AAAAAAAAP_c/rnBzXrn8kCA/s1600-h/TP2.JPG"&gt;&lt;img style="MARGIN: 0px 10px 10px 0px; WIDTH: 238px; HEIGHT: 260px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5359074567130875554" border="0" alt="" src="http://4.bp.blogspot.com/_QviPbycN-9k/Sl9B7NqqhqI/AAAAAAAAP_c/rnBzXrn8kCA/s400/TP2.JPG" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p align="left"&gt;The superior design of this multi-roll dispenser has been thwarted by the installation of two such dispensers... The point of the design was to eliminate choice (thus simplifying the refill process) - introducing a second dispenser nixes that advantage... and as you can see the "refill process" is still needlessly removing partial rolls.&lt;/p&gt;&lt;p align="left"&gt;Such a thing would never have happened at &lt;em&gt;my&lt;/em&gt; alma matter (&lt;a href="http://www.rice.edu/"&gt;Rice University&lt;/a&gt;) ;-) &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25178118-6825987948045702216?l=thoughtfulprogrammer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thoughtfulprogrammer.blogspot.com/feeds/6825987948045702216/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=25178118&amp;postID=6825987948045702216' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25178118/posts/default/6825987948045702216'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25178118/posts/default/6825987948045702216'/><link rel='alternate' type='text/html' href='http://thoughtfulprogrammer.blogspot.com/2009/07/toilet-paper-replenishment-process.html' title='The Toilet Paper Replenishment Process'/><author><name>John Reynolds</name><uri>http://www.blogger.com/profile/13852313153136272800</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16294191035180283464'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_QviPbycN-9k/Sl9B7NqqhqI/AAAAAAAAP_c/rnBzXrn8kCA/s72-c/TP2.JPG' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25178118.post-1938113368715608838</id><published>2009-07-09T22:34:00.003-05:00</published><updated>2009-07-10T21:48:43.372-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Business Process Management'/><category scheme='http://www.blogger.com/atom/ns#' term='BPM'/><category scheme='http://www.blogger.com/atom/ns#' term='Travel'/><title type='text'>Changing planes while in the air</title><content type='html'>I fly a lot... way more than I ever thought I would... and I can say with some confidence that it's sometimes much harder to get from point A to point B than you thought it would be.&lt;br /&gt;&lt;br /&gt;My home bases are Austin Texas and Santa Fe New Mexico, and neither is an airline "hub". Airline hubs are those wonderful airports where you can fly to and from a lot of places (non stop)... Neither Austin nor Santa Fe, as I just said, are one of those wonderful places.&lt;br /&gt;&lt;br /&gt;Virtually every trip that I take requires changing planes. I land, scurry to another gate, and take off again. "Scurry" is often a nice way of saying "run flat out as fast as I can". For those of you who don't fly often, you may not realize that most flights board 30 minutes prior to departure, so if you think you have an hour between flights, it's really only 30 minutes... even a minor flight delay can turn "plenty of time" into a missed connection or lost baggage (if you are brave enough to check your bags).&lt;br /&gt;&lt;br /&gt;Each trip that I take is (in a sense) a process. I fly from home to an airline hub, then I fly from that hub to another airport. On rare occasions I have to fly from the second airport to a third... You get the idea. On each flight, I am sitting along with a couple of hundred other people who are each taking part in their own similar processes. As long as all of the planes that we'll use are on time (the plane that we are on along with all the planes that we'll connect to) all of our processes will run smoothly. If the plane that we are on has mechanical difficulties and has to return to the airport, or if weather or some other obstacle keeps us from landing where we expected to, then our processes are all in a heap of trouble.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;From a process design perspective the events that I have described are exceptions. We don't "expect" these things to happen, but we have to handle them if they occur. Some airlines have processes in place that work really well... other airlines... well... let's just say that I've slept on a bench in O'Hare airport and leave it at that.&lt;br /&gt;&lt;br /&gt;Exception handling is actually pretty well understood in the realm of Process Design. With BPMN notation you can attach &lt;a id="hmea" title="event handlers" href="http://www.brsilver.com/wordpress/2008/09/17/event-handling-in-bpmn-20/"&gt;event handlers&lt;/a&gt; to Activities and model "what needs to happen" when something out-of-the-ordinary happens. Proper event handling requires a lot of thought... but in a sense it's a well understood aspect of programming that isn't specific to process engineering... and it's not really what I want to blog about today.&lt;br /&gt;&lt;br /&gt;Let's go back to flying... This example is admittedly kind of absurd, but imagine that the airline changes their schedule while I am in the air. Let's say that the itinerary that I am on is now supposed to go from Austin to Denver to Chicago instead of from Austin to Dallas to Chicago. From now on, whenever I want to go to Chicago I will change planes in Denver instead of Dallas.&lt;br /&gt;&lt;br /&gt;What I've described here isn't a process exception - it's a process change. The airline has changed the process of getting from Austin to Chicago.&lt;br /&gt;&lt;br /&gt;For somebody starting a new trip, it's obvious that they will follow the steps of the new process definition. For folks who are already in the air on the first leg of the trip, there are two options:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Continue the following the "old" process steps until the process finishes - this depends on the airline keeping a flight from Dallas to Chicago until everyone in the air gets there.&lt;br /&gt;&lt;li&gt;Switch to the new process while "in-flight" - this depends on the airline re-routing the plane mid-flight to land at Denver instead of Dallas - or perhaps jumping from one plane to another as they pass each other.&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;Option number one is really safe. The old process is well understood and it's very clear where everyone will end up... we know we have enough gase to get to Dallas. Unfortunately continuing an old process until it is complete isn't always a viable option. Some processes take a really long time to finish, and it's unreasonable to carry on as if nothing has happened (sometimes for years) - the airline can't keep an unfilled plane waiting at Dallas.&lt;br /&gt;&lt;br /&gt;Option number two - metaphorically changing planes while in the air - can be very risky to your in-flight process instances - the planes in the air may not have enough gas to get to the new destination, and it's quite likely that some of the passengers on the flight planned to get off the plane in Dallas. Let's not even think about jumping from one plane to another.&lt;br /&gt;&lt;br /&gt;It's this ability to handle in-flight process changes that makes the implementation of a really good process manager difficult. Creating an "engine" that can execute a process definition is pretty straight forward... it's mostly a &lt;a id="qp2l" title="state machine" href="http://en.wikipedia.org/wiki/Finite_state_machine"&gt;state machine&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Switching from one process definition to another while "in flight" can be a heap more complex...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Process improvement is a key goal of BPM adoption... When you figure out how to improve a process you want to be able to implement that change as soon as you can... but process change requires more that modelling the new process... you also really need to model the process of getting instances from the old process definition to the new.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;For every possible step in the original process definition, you need to define the corresponding step in the new process.&lt;br /&gt;&lt;br /&gt;If the correlation isn't exact (one process definition has steps that don't really exist in the other), then you must tell the process manager what to do. In some cases, an in-flight instance may need to "go back" and redo a "previous" step in the new process... or the in-flight process may have to perform some "transformation" steps before merging with the new process flow.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Unfortunately, BPM tools don't generally have explicit support for "migration" processes... it's generally left to the practitioner to figure out what to do with in-flight instances, and sometimes there's a rather painful transition when a new process definition is deployed. I'm sure this will change as BPM adoption increases, but in the mean time you'll have to build your own parachutes in case something goes wrong.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25178118-1938113368715608838?l=thoughtfulprogrammer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thoughtfulprogrammer.blogspot.com/feeds/1938113368715608838/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=25178118&amp;postID=1938113368715608838' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25178118/posts/default/1938113368715608838'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25178118/posts/default/1938113368715608838'/><link rel='alternate' type='text/html' href='http://thoughtfulprogrammer.blogspot.com/2009/07/changing-planes-while-in-air.html' title='Changing planes while in the air'/><author><name>John Reynolds</name><uri>http://www.blogger.com/profile/13852313153136272800</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16294191035180283464'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25178118.post-5482554526565837194</id><published>2009-06-25T13:51:00.004-05:00</published><updated>2009-06-25T14:16:43.607-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Business Process Management'/><category scheme='http://www.blogger.com/atom/ns#' term='BPM'/><title type='text'>People Manage the Process?</title><content type='html'>Gerhard Basson has posted a very nice article &lt;a href="http://www.bpminstitute.org/articles/article/article/process-oriented-systems-paradigm-for-the-process-age.html"&gt;Process-oriented Systems Paradigm for the Process Age&lt;/a&gt; over at the BPM Institute web site. I agree with almost everything that Gerhard says... but as usual one little phrase pops out and spawns a blog of my own.&lt;br /&gt;&lt;br /&gt;Gerhard asserts: &lt;blockquote&gt;"processes do not manage people – people manage processes"&lt;/blockquote&gt;I understand what Gerhard means... very clever word-smithing... but I squirmed when I read it. I know that I am splitting hairs here, but "manage" just isn't the right verb for the phrase: &lt;blockquote&gt;"people &lt;em&gt;&lt;strong&gt;verb&lt;/strong&gt;&lt;/em&gt; processes"&lt;/blockquote&gt;&lt;br /&gt;That aside, I vehemently agree (as opposed to vehemently disagree) with Gerhard when he says: &lt;blockquote&gt;"People will bypass and reject any system that does not help them perform work in a natural way."&lt;/blockquote&gt;&lt;br /&gt;It's always about the people... From the conception of the process to the implementation of the process to the running of the process to the improvement of the process... it's always about the people.&lt;br /&gt;&lt;br /&gt;If we don't adapt our systems for the People of the Process Age we're not going to get very far.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25178118-5482554526565837194?l=thoughtfulprogrammer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thoughtfulprogrammer.blogspot.com/feeds/5482554526565837194/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=25178118&amp;postID=5482554526565837194' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25178118/posts/default/5482554526565837194'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25178118/posts/default/5482554526565837194'/><link rel='alternate' type='text/html' href='http://thoughtfulprogrammer.blogspot.com/2009/06/people-manage-process.html' title='People Manage the Process?'/><author><name>John Reynolds</name><uri>http://www.blogger.com/profile/13852313153136272800</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16294191035180283464'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25178118.post-1210021829291402783</id><published>2009-06-24T09:55:00.006-05:00</published><updated>2009-06-24T12:04:09.272-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Thoughtful Programming'/><title type='text'>Programming Language Sociology</title><content type='html'>Bruce Eckel shares his reminiscences about the dawn of C++ and Java in his blog entry: &lt;a href="http://www.artima.com/weblogs/viewpost.jsp?thread=260578"&gt;Why? Language Archaeology&lt;/a&gt;. &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This is great stuff... Insight into the "why" C++ and Java are the way they are (from Bruce's perspective). My take-aways from this essay are the following:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;"Things" often make no sense because the requirements that dictated those "things" are no longer requirements&lt;/li&gt;&lt;li&gt;People skills can be just as important as Technical skills&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;I really appreciate Bruce admitting that his opinions about Java are colored by his dealings with Gosling... Social aspects impact Technical aspects. How you feel about someone impacts your evaluation of their work. That is a hugely important thing for us to remember.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I was an early adopter of C++ and loved it... but I loved Java more. Was that due to Java's technical superiority? &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Nope. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I loved Java more because it coincided with the Web... and the Web allowed me to collaborate with other Java developers in a way that I had never been able to collaborate with other C++ developers. The social aspect of this collaboration is why Java trumps C++ on my "fondness scale"... Java had (and still has) a much stronger sense of community than C++.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The stereotype of the programmer nerd with poor social skills had a lot of basis in fact... but in my experience programmers really crave social interaction &lt;i&gt;within a society where they feel comfortable&lt;/i&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;My programming focus is now in the realm of Business Process Management, so the society in which I find myself is much broader than that of my C++ days. In my C++ days I wrote stuff &lt;b&gt;for&lt;/b&gt; business people. Now I write stuff &lt;b&gt;with&lt;/b&gt; business people. Huge difference.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Successful Business Programming requires a society where both Business and Technical people feel comfortable. That's tough to accomplish because the passions of those two camps rarely coincide... &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Next time you're in a conference with both Technical and Business people, sit back and watch:&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;When the Business folks get into an animated discussion the Technical guys will be checking their Blackberries. When the Technical folks get into an animated discussion, the Business folks will start looking at their watches.&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;The challenge in business programming today is not about programming language features - it's about the social aspects of application development. We've got to solve the problem of engaging everybody in the development process. We need to fully engage the Business folks to make sure that we build the right things, and we need to fully engage the Technical folks to make sure that the things are built right.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Compared to the real challenges of business programming, agonizing over whether or not to include the "new" keyword in Java is seems positively "quaint". Bruce's recollections are a fond trip down memory lane for me... but lets not get stuck in the past lest our descendants look back on our concerns as "quaint" too.&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25178118-1210021829291402783?l=thoughtfulprogrammer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thoughtfulprogrammer.blogspot.com/feeds/1210021829291402783/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=25178118&amp;postID=1210021829291402783' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25178118/posts/default/1210021829291402783'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25178118/posts/default/1210021829291402783'/><link rel='alternate' type='text/html' href='http://thoughtfulprogrammer.blogspot.com/2009/06/programming-language-sociology.html' title='Programming Language Sociology'/><author><name>John Reynolds</name><uri>http://www.blogger.com/profile/13852313153136272800</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16294191035180283464'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25178118.post-3294345266607838549</id><published>2009-06-09T08:41:00.004-05:00</published><updated>2009-06-09T08:49:25.796-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Thoughtful Programming'/><title type='text'>Good Engineering != Good Design</title><content type='html'>This thought-provoking statement grabbed my attention...&lt;br /&gt;&lt;blockquote&gt;"Most tech products—heck, most products in general—aren’t as good as they can be because they’re put together by the people with the technical knowledge required to build them."&lt;br /&gt;&lt;a href="http://www.macworld.com/article/141051/iphone_black_box.html"&gt;Jason Snell, Macworld.com&lt;/a&gt;&lt;/blockquote&gt;&lt;br /&gt;Jason makes some really good points in this article... Go read it ;-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25178118-3294345266607838549?l=thoughtfulprogrammer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thoughtfulprogrammer.blogspot.com/feeds/3294345266607838549/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=25178118&amp;postID=3294345266607838549' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25178118/posts/default/3294345266607838549'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25178118/posts/default/3294345266607838549'/><link rel='alternate' type='text/html' href='http://thoughtfulprogrammer.blogspot.com/2009/06/good-engineering-good-design.html' title='Good Engineering != Good Design'/><author><name>John Reynolds</name><uri>http://www.blogger.com/profile/13852313153136272800</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16294191035180283464'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25178118.post-4548622077151518114</id><published>2009-06-01T09:43:00.006-05:00</published><updated>2009-06-01T10:45:02.184-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Thoughtful Programming'/><title type='text'>Artists (and programmers) hate negative feedback</title><content type='html'>If you really want to piss off an artist, just tell them how their painting/sculpture/etc. could be improved.&lt;br /&gt;&lt;br /&gt;The best possible reaction that you'll get is a politely disingenuous "Thank you"... More likely you'll get some form of "Mind your own business" delivered with various levels of hostility based on the strength of the artist's self-esteem.&lt;br /&gt;&lt;br /&gt;The creation of art is intensely personal... Art is an extension of the artist - created primarily to satisfy the artist's need to create. Art is presented to the public - not shared with the public. The artwork may be sold - but it always belongs to the artist.&lt;br /&gt;&lt;br /&gt;What does this have to do with Programming?&lt;/p&gt;&lt;p&gt;For many programmers - Programming is their Art... and that's the root of many of the conflicts that you will have with programmers.&lt;br /&gt;&lt;br /&gt;There's an anecdote about &lt;a href="http://en.wikipedia.org/wiki/Frank_Lloyd_Wright"&gt;Frank Lloyd Wright&lt;/a&gt;: The story is that he attended a dinner party in a house that he had designed, and before leaving he had &lt;a href="http://books.google.com/books?id=7CXCkW3FOAgC&amp;amp;pg=PA19&amp;amp;lpg=PA19&amp;amp;dq=frank+lloyd+wright+rearranging+furniture&amp;amp;source=bl&amp;amp;ots=n4EYGMRO1c&amp;amp;sig=xNxlxaHQ0Tcfdq_Dj3KKGyvJVco&amp;amp;hl=en&amp;amp;ei=1fMjSqLVIZXhtgfvtfG_Bg&amp;amp;sa=X&amp;amp;oi=book_result&amp;amp;ct=result&amp;amp;resnum=1"&gt;rearranged the furniture&lt;/a&gt; back to his original plan. Wright couldn't let go... The house was held hostage to his vision rather than released and allowed to become a home. Wright liked to preach that "&lt;a href="http://en.wikipedia.org/wiki/Form_follows_function"&gt;Form follows function&lt;/a&gt;" - but in this case he totally forgot the true function of a home.&lt;br /&gt;&lt;br /&gt;When you have to provide negative feedback to a programmer - focus on conveying the big picture: What do you really need? Instead of focussing on how the current software does not meet your needs, challenge the programmer's inner artist to create something that will fulfill your needs... You'll probably be much happier with the results.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25178118-4548622077151518114?l=thoughtfulprogrammer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thoughtfulprogrammer.blogspot.com/feeds/4548622077151518114/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=25178118&amp;postID=4548622077151518114' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25178118/posts/default/4548622077151518114'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25178118/posts/default/4548622077151518114'/><link rel='alternate' type='text/html' href='http://thoughtfulprogrammer.blogspot.com/2009/06/artists-hate-feedback.html' title='Artists (and programmers) hate negative feedback'/><author><name>John Reynolds</name><uri>http://www.blogger.com/profile/13852313153136272800</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16294191035180283464'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25178118.post-4726443291850413678</id><published>2009-05-08T11:16:00.004-05:00</published><updated>2009-05-08T11:51:07.101-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Business Process Management'/><title type='text'>Process Manager Interoperability - Wf-XML</title><content type='html'>&lt;a href="http://www.bp-3.com/blogs/"&gt;Scott Francis&lt;/a&gt; sent me a snippet from a recent &lt;a href="http://kswenson.wordpress.com/"&gt;Keith Swenson&lt;/a&gt; blog posting on &lt;a href="http://www.wfmc.org/wfmc-wf-xml.html"&gt;Wf-XML&lt;/a&gt;...&lt;br /&gt;&lt;br /&gt;I've been looking for a standard like this... Process Folks have been pretty focused on Process Definitions that can be executed on any Process Manager (Process Portability), but in my day-to-day it seems a lot more important to insure that Process Managers can operate with each other...&lt;br /&gt;&lt;br /&gt;Specifically, I want to be able to incorporate a Process that is running on one Process Manager as a Sub-Process of a Process that is running on another Process Manager. I want to be able to start the Process, Monitor the Process, and get Information back from the Process when it completes.&lt;br /&gt;&lt;br /&gt;Much as we might like a world in which there is only one Process Manager, this just isn't going to happen. Consider the Java app server world... Despite corporate attempts to mandate the use of only one Java app server you still find a mixed bag. Once a WebApplication is developed and deployed on one flavor of Java app server it's seldom migrated to another. It's just not worth the expense or the hassle - even though migration might be relatively straight-forward.&lt;br /&gt;&lt;br /&gt;In the Process World we should be able to take full advantage of previously deployed Process Applications regardless of their BPM platform. If an application has been developed with an embedded &lt;a href="http://www.jboss.com/products/jbpm/"&gt;jBPM&lt;/a&gt; Process Manager I should be able to incorporate it in my &lt;a href="http://www.lombardisoftware.com/"&gt;Lombardi&lt;/a&gt; solution. If my Lombardi implemented Process can be used by a wider &lt;a href="http://www.pega.com/"&gt;Pega&lt;/a&gt; implemented Process, then that should work too.&lt;br /&gt;&lt;br /&gt;Wf-XML is an attempt to make that happen... I haven't had time to delve into the details, but the concept is right on the mark.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25178118-4726443291850413678?l=thoughtfulprogrammer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thoughtfulprogrammer.blogspot.com/feeds/4726443291850413678/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=25178118&amp;postID=4726443291850413678' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25178118/posts/default/4726443291850413678'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25178118/posts/default/4726443291850413678'/><link rel='alternate' type='text/html' href='http://thoughtfulprogrammer.blogspot.com/2009/05/process-manager-interoperability-wf-xml.html' title='Process Manager Interoperability - Wf-XML'/><author><name>John Reynolds</name><uri>http://www.blogger.com/profile/13852313153136272800</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16294191035180283464'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25178118.post-5877729871305070277</id><published>2009-04-29T10:05:00.002-05:00</published><updated>2009-04-29T10:10:42.446-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Business Process Management'/><title type='text'>College new-hires and the zen of BPM</title><content type='html'>I'm supposed to be preparing a one hour lecture for some college new-hires on: "Basic and Advanced BPM Concepts"... but yet I blog instead ;-)&lt;br /&gt;&lt;br /&gt;For those of you who know me well, you'll probably think that my biggest concern is that I only have an hour.  I tend to go on and on (and on) about topics that I am passionate about, leading a former co-worker to coin the term "&lt;a id="ildi" title="johntification" href="http://johntification.blogspot.com/"&gt;johntification&lt;/a&gt;" in my honor.&lt;br /&gt;&lt;br /&gt;Explaining BPM is what I do - focussing pretty much on what's now being called &lt;a id="suvh" title="BPM-tech" href="http://www.omg.org/oceb/exam-info.htm#WhichSide"&gt;BPM-tech&lt;/a&gt; more than &lt;a id="yj.d" title="BPM-bus" href="http://www.omg.org/oceb/exam-info.htm#WhichSide"&gt;BPM-bus&lt;/a&gt;.  When I first encountered BPM I felt like I had found the &lt;a id="ktrk" title="missing link" href="http://thoughtfulprogrammer.blogspot.com/2006/10/business-process-musings.html"&gt;missing link&lt;/a&gt;... a paradigm and technology that closed the gaps between what I knew how to do and what my &lt;a id="m1eu" title="business colleagues" href="http://thoughtfulprogrammer.blogspot.com/2006/02/software-for-business-people-like-my.html"&gt;business colleagues&lt;/a&gt; really needed.&lt;br /&gt;&lt;br /&gt;I was blown-away by BPM because I had experienced the pain of the problems that BPM addresses.  This stuff fixed something that I knew needed fixing.&lt;br /&gt;&lt;br /&gt;My worry about introducing BPM to college new-hires is that they probably haven't experienced "Process Pains"... at least not from the perspective of one who writes or maintains software, or from the perspective of someone who tries to get the "right" software written. &lt;br /&gt;&lt;br /&gt;When I describe the problems that BPM tackles they may say "So what?".  They may scoff at the magnitude of the problems - and they probably assume that the solutions that BPM provides have always been around.&lt;br /&gt;&lt;br /&gt;With my standard BPM audience I'm fairly assured that heads will begin to nod in recognition of shared pain in thirty seconds or less... &lt;br /&gt;&lt;br /&gt;Most in my audience have experienced meetings where a dozen people had to be present to figure out how that incoming *application* finally ended up as an outgoing *disbursement* (*substitute the inputs and outputs of your own business).&lt;br /&gt;&lt;br /&gt;Most in my audience have also experienced "Office Heroes" - those harried individual who on a daily basis keep a company running through shear force of will.  Whenever anything falls through the cracks... Whenever anything gets lost or derailed... Whenever any critical deadline is in danger of being missed... Office Heroes jump in and save the day.  If a truck hits an Office Hero your business will really have to scramble to recover.&lt;br /&gt;&lt;br /&gt;BPM helps business people understand how their company really runs, and it helps reduce their company's reliance on Office Heroes.  BPM helps IT people provide tools that make it easier to run the company, easing the burden of the Office Heroes.&lt;br /&gt;&lt;br /&gt;My college new-hire audience will certainly understand what I tell them about BPM - but will they relate?  Can I make BPM relevent to their own experiences, or will I just sound like an old guy droning on about the old days:  "When I was your age, computers only had 4K of memory....."&lt;br /&gt;&lt;br /&gt;These "kids" are smart... they just haven't had as much experience.  Instead of relying on shared experience to grok BPM I'll have to find another approach... When (or if) I figure it out I'll let you know.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25178118-5877729871305070277?l=thoughtfulprogrammer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thoughtfulprogrammer.blogspot.com/feeds/5877729871305070277/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=25178118&amp;postID=5877729871305070277' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25178118/posts/default/5877729871305070277'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25178118/posts/default/5877729871305070277'/><link rel='alternate' type='text/html' href='http://thoughtfulprogrammer.blogspot.com/2009/04/college-new-hires-and-zen-of-bpm.html' title='College new-hires and the zen of BPM'/><author><name>John Reynolds</name><uri>http://www.blogger.com/profile/13852313153136272800</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16294191035180283464'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25178118.post-1025300962725460007</id><published>2009-04-17T13:11:00.009-05:00</published><updated>2009-05-08T12:52:05.661-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Business Process Management'/><category scheme='http://www.blogger.com/atom/ns#' term='Thoughtful Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='BPM'/><category scheme='http://www.blogger.com/atom/ns#' term='Travel'/><title type='text'>Applications as Process Activites</title><content type='html'>I return to this topic a lot... BPM solutions automate the transitions between Activities in a Process, but they don't necessarily automate the Activities themselves. Some Activities can be automated, but others require Human interaction or Human judgment to complete. If we are convinced that BPM is a good idea, and we want BPM to be as pervasive as spreadsheets, then we need to make it easier to implement the Human-centric Activities that our Processes need.&lt;br /&gt;&lt;br /&gt;Many BPM suites support building Human-centric Activities within the suite itself, but sometimes you'd rather re-purpose an existing application to do your bidding.&lt;br /&gt;&lt;br /&gt;Let me walk you through an example from my own wonderful life as a &lt;a href="http://thoughtfulprogrammer.blogspot.com/search/label/Travel"&gt;Travelling Guy&lt;/a&gt;...&lt;br /&gt;&lt;br /&gt;When I get a new assignment there are a lot of things that I have to do. I've got a mental checklist that I follow, but I'd really rather have a Managed Process to keep me from screwing up.&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 176px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5325759700728816258" border="0" alt="" src="http://2.bp.blogspot.com/_QviPbycN-9k/SejmOxEIIoI/AAAAAAAAPMM/nxE_bH3_hoQ/s400/Prepare+For+New+Gig.JPG" /&gt;Most of my gigs are somewhere else, and that makes it very important for me to make travel and lodging arrangements. I almost always need a flight and a hotel, and based on the location I might need a rental car.&lt;br /&gt;&lt;br /&gt;To perform this Activity I use my company's preferred Travel site - it happens to be Orbitz, but it could just as easily be Expedia, Travelocity or any number of sites. Each of these sites supports the concept of a "Trip" and each lets me make flight, hotel, and car reservations. These travel sites also provide feedback - they'll send me email when a reservation is confirmed or "something" changes.&lt;br /&gt;&lt;br /&gt;As I am going through my process of getting ready for a gig, I log on to Orbitz and make the necessary reservations. When I am "done" I will "check off" that task from my list of things to do.&lt;br /&gt;This happens a lot in BPM solutions. An Activity (a task) is assigned to an individual Participant. The Participant gets directions on how to perform the Activity (what it is that they need to do) but they have to use some "external" application in order to actually perform the task (in this example, the Travel site). When they are "done" with the task they "check off" the task and the process continues.&lt;br /&gt;&lt;br /&gt;Processes that are implemented like this can be really error prone. The Process Manager has to rely on the Participant's assertion that the task has been performed correctly. You just have to trust the Participant to do the right thing.&lt;br /&gt;&lt;br /&gt;If you had the time and if you had the money, then you could build all of the tools that the Participant may need to use in order to complete their tasks. Quite frankly, that would be a huge waste of both your time and your money.&lt;br /&gt;&lt;br /&gt;The better approach for all concerned is to encourage the makers of those "external" tools to become Process Aware. Get then to modify their existing applications to be aware of Process Flow.&lt;br /&gt;&lt;br /&gt;Let's go back to my "Get Ready for a Gig" Process... Some time after the Process starts I will need to perform the "Make Reservations" Activity. The Process Instance knows the Location of the Assignment, and it knows the Dates of the Assignment (the Process was started by a message that contained this information).&lt;br /&gt;&lt;br /&gt;When I run the "Make Reservations" Activity from my Task List I'd like Orbitz to open with the Dates and Location of my Trip pre-populated. After I make my reservations, I would like the site to send (structured) confirmation information directly to the Process Manager.&lt;br /&gt;&lt;br /&gt;Based on the information that Orbitz returns, the Process Manager would either move on to the next task, or require me to try again. For example - if Orbitz says that my reserved flight is on the wrong day the Process Manager should tell me.&lt;br /&gt;&lt;br /&gt;If you are a Programmer, then I think you can easily envision how you would make the Webapp that implements the Orbitz Travel Site "Process Aware". The trick is in recognizing that there is a beginning and an end to planning for each Trip. Modify the Webapp to support "Dates" and "Location" on the invoking URL - along with a "Return Address". When the Webapp determines that planning for the Trip is complete, use the "Return Address" to send structured information (most likely XML) back the the Process Manager.&lt;br /&gt;&lt;br /&gt;For Web Services (automated Activities) we've done this for several years. Service providers (like Orbitz) publish WSDLs that define the Services that we can invoke. It's time to do the same for Activities that cannot be Automated. It's time to standardize interactions with what I've called &lt;a href="http://thoughtfulprogrammer.blogspot.com/2006/11/people-powered-service-providers.html"&gt;Human Powered Web Services&lt;/a&gt; - Web Applications that can serve as Process Activities.&lt;br /&gt;&lt;br /&gt;In my ideal world, all Travel Sites would support "the same" interface for starting a new "Trip" and for returning results. That might be a bit much to hope for... but it's a good target to shoot for. Even if every site had a unique interface, we could build adapters for our Processes - a much better situation than today (from a Process Manager's perspective).&lt;br /&gt;&lt;/p&gt;&lt;p&gt;If you are a Developer who builds sites where folks go to "do things", then I hope I've inspired you to think a bit about those "things" as part of a larger Process. It's not a huge leap to build into your site the hooks that a Process Guy like me needs to incorporate your site into my &lt;a href="http://thoughtfulprogrammer.blogspot.com/2008/05/what-is-managed-business-process.html"&gt;Managed Process&lt;/a&gt;. I'll be grateful, and I'll bet the users of your site will be too.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25178118-1025300962725460007?l=thoughtfulprogrammer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thoughtfulprogrammer.blogspot.com/feeds/1025300962725460007/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=25178118&amp;postID=1025300962725460007' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25178118/posts/default/1025300962725460007'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25178118/posts/default/1025300962725460007'/><link rel='alternate' type='text/html' href='http://thoughtfulprogrammer.blogspot.com/2009/04/applications-as-process-activites.html' title='Applications as Process Activites'/><author><name>John Reynolds</name><uri>http://www.blogger.com/profile/13852313153136272800</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16294191035180283464'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_QviPbycN-9k/SejmOxEIIoI/AAAAAAAAPMM/nxE_bH3_hoQ/s72-c/Prepare+For+New+Gig.JPG' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25178118.post-8320991640089198322</id><published>2009-04-14T13:15:00.009-05:00</published><updated>2009-04-14T18:10:33.869-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Thoughtful Programming'/><title type='text'>Clarifying your ideas</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://xkcd.com/"&gt;&lt;img style="MARGIN: 0px 10px 10px 0px; WIDTH: 298px; FLOAT: left; HEIGHT: 234px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5324618806530937970" border="0" alt="" src="http://2.bp.blogspot.com/_QviPbycN-9k/SeTYl--kFHI/AAAAAAAAPJ0/CP5XAkBD_Rs/s400/UncomforatbleTruth.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;I love the &lt;a href="http://xkcd.com/"&gt;Webcomic xkcd&lt;/a&gt; by Randall Munroe... Geek humor for sure, but often very insightful...&lt;br /&gt;&lt;blockquote&gt;"&lt;a href="http://xkcd.com/568/"&gt;You'll never find a programming language that frees you from the need to clarify your ideas&lt;/a&gt;"&lt;/blockquote&gt;Amen to that. &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Programming is the act of transforming requirements into something that a computer can execute... but before those requirements can be transformed they'd better be clear. You might think that this would be obvious, but you'd be wrong... In way too many cases the "idea" that spawned the software either wasn't clarified or it wasn't communicated clearly.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Programming languages - both textual and graphical - won't substitute for an idea that hasn't been clarified. But "better" programming languages &lt;i&gt;can&lt;/i&gt; help to insure that the idea has been implemented properly (or at least make it clear what was actually built).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25178118-8320991640089198322?l=thoughtfulprogrammer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thoughtfulprogrammer.blogspot.com/feeds/8320991640089198322/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=25178118&amp;postID=8320991640089198322' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25178118/posts/default/8320991640089198322'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25178118/posts/default/8320991640089198322'/><link rel='alternate' type='text/html' href='http://thoughtfulprogrammer.blogspot.com/2009/04/clarifying-your-ideas.html' title='Clarifying your ideas'/><author><name>John Reynolds</name><uri>http://www.blogger.com/profile/13852313153136272800</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16294191035180283464'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_QviPbycN-9k/SeTYl--kFHI/AAAAAAAAPJ0/CP5XAkBD_Rs/s72-c/UncomforatbleTruth.JPG' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25178118.post-8305323854636494049</id><published>2009-04-08T08:37:00.025-05:00</published><updated>2009-04-09T07:41:05.484-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Business Process Management'/><category scheme='http://www.blogger.com/atom/ns#' term='BPM'/><title type='text'>Business Process and Activity Interfaces</title><content type='html'>Business Processes are made up of Business Activities. In a &lt;a href="http://en.wikipedia.org/wiki/Business_Process_Management"&gt;BPM&lt;/a&gt; solution the transitions between each Activity are automated, but the Activities themselves may either be automated or they may be performed by Humans &lt;span class="Apple-style-span"  style="font-size:small;"&gt;(That's why I use the term &lt;/span&gt;&lt;a href="http://thoughtfulprogrammer.blogspot.com/2008/05/what-is-managed-business-process.html"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Managed Business Process&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; instead of Automated Business Process)&lt;/span&gt;.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Most of the focus in the community of BPM practitioners of late has been on the &lt;b&gt;B&lt;/b&gt;usiness &lt;b&gt;P&lt;/b&gt;rocess &lt;b&gt;D&lt;/b&gt;efinitions (BPDs) that the Process Managers use to control the transitions between Business Activities. BPDs provide the information that the Process Manager needs to assign the right Activities &lt;a href="http://thoughtfulprogrammer.blogspot.com/2008/03/tips-for-business-process-developer.html"&gt;to the right Participants&lt;/a&gt; at the right time. Google &lt;a href="http://www.infoq.com/news/2008/05/BPMN20"&gt;BPMN&lt;/a&gt;, &lt;a href="http://www.ibm.com/developerworks/library/specification/ws-bpel/"&gt;BPEL&lt;/a&gt; or &lt;a href="http://www.wfmc.org/xpdl.html"&gt;XPDL&lt;/a&gt; and you'll find plenty to read.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;a href="http://oryx-editor.org"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 243px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5322668943954598274" border="0" alt="" src="http://2.bp.blogspot.com/_QviPbycN-9k/Sd3rNC1q2YI/AAAAAAAAPIU/SCPIC4qOn7o/s400/BPMN1.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;BPDs are crucial... but they only define the Process Flow. Activities are identified in BPDs, but only the interfaces to the Activities are actually defined &lt;span class="Apple-style-span"  style="font-size:small;"&gt;(The interface to the Activity defines the information that is passed from the Process to start the Activity and the information that is returned to the Process from the Activity when it completes)&lt;/span&gt;.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;div&gt;All of the BPM suites that I am aware of generate executable process definitions &lt;span class="Apple-style-span"  style="font-size:small;"&gt;(in one form or another)&lt;/span&gt;. Some BPM suites generate "portable" definitions using standards like BPEL and XPDL, but many &lt;span class="Apple-style-span"  style="font-size:small;"&gt;(including the Lomabardi Teamworks suite that I use)&lt;/span&gt; produce proprietary definitions that will only run on their own Process Managers. One of the big drivers between the efforts to make BPMN 2 "executable" is to drive the industry towards "portable" BPDs that can run Process Managers from any vendor. Great idea... but it's going to take some time to see if it gains traction.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Many BPM suites also incorporate tools to implement Business Activities. A Business Activity is really just an application that is tailored to perform a specific task. The Process Manager kicks off the application with some initial information, the application runs &lt;span class="Apple-style-span"  style="font-size:small;"&gt;(usually gathering information &lt;a href="http://thoughtfulprogrammer.blogspot.com/2007/08/anatomy-of-human-powered-web-services.html"&gt;from a Human&lt;/a&gt;)&lt;/span&gt; and when it completes it passes information back to the Process Manager.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;I've had discussions with BPM practitioners who feel that implementing Business Activities should fall outside the realm of a BPM suite. Perhaps I've been &lt;a href="http://www.infoworld.com/d/developer-world/product-review-lombardi-teamworks-conquers-bpm-superb-tools-flexible-execution-676"&gt;spoiled by Teamworks&lt;/a&gt;, but I can't imagine creating my BPD in one tool and implementing my Activities in another tool. It's just incredibly nice to be able to drill down from an Activity on a Process Diagram to the underlying implementation of that Activity.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Despite my bias toward integrated Activities, I freely admit that you must be able to implement an Activity outside the limitation of your BMP suite of choice. Some Activities do require a very sophisticated user interface - and in many cases a pre-existing application can be fairly easily adapted to perform an Activity. I've had to resort to "external" Activities on several occasions (&lt;span class="Apple-style-span"  style="font-size:small;"&gt;for key Activities&lt;/span&gt;).&lt;/div&gt;&lt;div&gt;&lt;span style="BORDER-COLLAPSE: collapse;font-family:arial;" class="Apple-style-span" &gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;blockquote&gt;If the implementation of an Activity is beyond a simple Form that the Participant needs to fill out, then you'll have to build some sort of task focused application for the Participant to use to complete the Activity.&lt;br /&gt;&lt;br /&gt;BPM suites such as Teamworks allow you to build rather sophisticated task focused applications - but sometimes it makes more sense to go outside the suite and build the application using JSP, ASP, .Net, Ruby - whatever tools make the most sense to get the job done.&lt;br /&gt;&lt;br /&gt;The "problem" is the lack of standard interfaces for connecting these "external" task oriented applications with your Process Manager/Process Engine. Most of the good BPM Process Managers provide the necessary interfaces, but they are almost always proprietary interfaces.&lt;/blockquote&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;In the early days of BPEL, Activities were "just" standard web services. An Activity (web service) that was invoked from one BPEL engine could be invoked by any other.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;BPEL (by itself) could only implement processes that could be completely automated. Most Business Processes include Human Activities - so pure BPEL implementations were few and far between. &lt;/div&gt;&lt;br /&gt;&lt;div&gt;Unfortuntely we've yet to come up with a standard (&lt;span class="Apple-style-span"  style="font-size:small;"&gt;or even a de-facto standard&lt;/span&gt;) for implementing Human Activities. Some BPM suites (&lt;span class="Apple-style-span"  style="font-size:small;"&gt;like &lt;a href="http://www.intalio.com/"&gt;Intalio&lt;/a&gt;&lt;/span&gt;) make use of standards (&lt;span class="Apple-style-span"  style="font-size:small;"&gt;like &lt;a href="http://www.w3.org/MarkUp/Forms/"&gt;XForms&lt;/a&gt;&lt;/span&gt;) to implement the user interfaces for their Activities, but the back-end interfaces between the Process Manager and the Activities are still unique to each vendor. There's no standard for registering an "Activity Application" with a Process Manager There's no standard way for an "Activity Application" to authenticate its user with the Process Manager. There's no standard way for an "Activity Application" to query a Process Manager for Activities that belong to its user. &lt;/div&gt;&lt;br /&gt;&lt;div&gt;Until we have these standards, there's really no such thing as a "Portable Activity". I could build a framework that helped me build task oriented applications, but I'd need adapters for any BPM suite that I wanted to interface with.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Hopefully this will change soon. As more BPM suites begin to support "standard" BPDs it will become obvious that we need &lt;a href="http://thoughtfulprogrammer.blogspot.com/2008/09/portable-bpm.html"&gt;Portable Activities&lt;/a&gt; too.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25178118-8305323854636494049?l=thoughtfulprogrammer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thoughtfulprogrammer.blogspot.com/feeds/8305323854636494049/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=25178118&amp;postID=8305323854636494049' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25178118/posts/default/8305323854636494049'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25178118/posts/default/8305323854636494049'/><link rel='alternate' type='text/html' href='http://thoughtfulprogrammer.blogspot.com/2009/04/business-process-and-activity.html' title='Business Process and Activity Interfaces'/><author><name>John Reynolds</name><uri>http://www.blogger.com/profile/13852313153136272800</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16294191035180283464'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_QviPbycN-9k/Sd3rNC1q2YI/AAAAAAAAPIU/SCPIC4qOn7o/s72-c/BPMN1.JPG' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25178118.post-3923169957004006469</id><published>2009-03-21T16:17:00.018-05:00</published><updated>2009-03-25T17:31:54.981-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Thoughtful Programming'/><title type='text'>All Big Brothers Aren't Bad</title><content type='html'>&lt;div&gt;Joel Trammell beat me to the punch with his posting: &lt;a href="http://www.networkperformancedaily.com/2009/03/you_cant_manage_an_economy_you.html"&gt;You can't manage an economy you don't measure&lt;/a&gt;: &lt;/div&gt;&lt;div&gt;&lt;blockquote&gt;&lt;span style="font-size:130%;"&gt;"this problem, in part, was caused by lack of oversight"&lt;/span&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;div&gt;I'll try to keep my outrage in check because I'm not an economist or an accountant or a lawyer. I don't really know what happened any more than anyone else (probably less than many people) but Joel's point resonates with me: If somebody had been watching and willing, then these problems could have been detected and dealt with earlier. In retrospect, it's obvious that excessive risks were taken for short term gain, and some folks were just plain crooks.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;It's ironic that folks in the Financial Services industry were blind-sided by this crisis. For years they have been at the forefront of analysis and pattern recognition technology, driving many of the advances in the field. Software that could have detected Madoff's ponzi schemes is trivial compared to the sophisticated &lt;a href="http://www.nytimes.com/2009/03/10/science/10quant.html?ref=science"&gt;financial gaming models&lt;/a&gt; developed by &lt;a href="http://www.forbes.com/2008/10/07/securities-quants-models-oped-cx_ss_1008shreve.html"&gt;the Quants&lt;/a&gt;. There's really no excuse except for a lack of someone who was willing to look out for everyone else.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;At times like these we realize that sometimes a Big Brother can be a wonderful thing to have.&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://4.bp.blogspot.com/_QviPbycN-9k/ScVsrbDzhVI/AAAAAAAAO4k/-AWD7LbvyJM/s1600-h/big+brother.jpg"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5315774428434629970" src="http://4.bp.blogspot.com/_QviPbycN-9k/ScVsrbDzhVI/AAAAAAAAO4k/-AWD7LbvyJM/s400/big+brother.jpg" style="cursor: hand; float: left; height: 150px; margin: 0px 10px 10px 0px; width: 102px;" /&gt;&lt;/a&gt;I'll bet that most of you think of &lt;a href="http://en.wikipedia.org/wiki/Big_Brother_(1984)"&gt;George Orwell's Big Brother&lt;/a&gt; when you hear the term. Orwell's Big Brother &lt;a href="http://www.tgdaily.com/content/view/39455/128/"&gt;scares&lt;/a&gt; the hell out of us - a omnipresent leader spying on everyone - but he's just a one dimensional character from a horror story.&lt;a href="http://4.bp.blogspot.com/_QviPbycN-9k/ScVtZ5wJTFI/AAAAAAAAO4s/IdSlHRtdxDo/s1600-h/big+brother+big+sister.jpg"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5315775226947652690" src="http://4.bp.blogspot.com/_QviPbycN-9k/ScVtZ5wJTFI/AAAAAAAAO4s/IdSlHRtdxDo/s400/big+brother+big+sister.jpg" style="cursor: hand; float: right; height: 80px; margin: 0px 0px 10px 10px; width: 271px;" /&gt;&lt;/a&gt; &lt;/div&gt;&lt;div&gt;We should also think of the &lt;a href="http://www.bbbs.org/site/c.diJKKYPLJvH/b.1539751/k.BDB6/Home.htm"&gt;Big Brothers Big Sisters&lt;/a&gt; organization... proving the point in real terms that having someone to look out for us can be a very good thing indeed.&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;But what about privacy?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;My personal belief is that real privacy is an illusion in the 21st century. Maybe not for those living on the margins of society, but for someone like me the walls are transparent and thin. If you are curious and persistent you can probably dig up every embarrassing and questionable act that I've ever done. You can figure out where I live, where I shop, where I eat, where I travel. You can dig up former girlfriends, past employers and folks who can't stand me. My life may not be an open book - but opening my book is way too simple.&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;I'm not all that happy with my lack of privacy, but I am more concerned by the thought that someone can use that publicly available information to pretend to be me (identity theft). As I wrote in my 2004 blog &lt;a href="http://weblogs.java.net/blog/johnreynolds/archive/2004/12/privately_famou.html"&gt;Privately Famous&lt;/a&gt;:&lt;/div&gt;&lt;div&gt;&lt;blockquote&gt;"I know that many people fear a &lt;a href="http://www.privacy.org/pi/activities/idcard/idcard_faq.html" style="color: #006699; text-decoration: none;"&gt;National Identity Card&lt;/a&gt;, and I can sympathize; Governments are notorious for turning oppressive. I hold the other view; I want a National Identity Card, and I want my DNA and finger-prints on file. Without a trusted identification authority (and I know that nothing is foolproof), it's just too easy for someone else to pretend to be me, and too hard for me to prove that I am me."&lt;/blockquote&gt;&lt;/div&gt;&lt;br /&gt;The price of Privacy can be way too high if it's carried to ridiculous extremes. Our fear of government prying led us to condone the &lt;a href="http://www.progressivestates.org/node/21888"&gt;gutting of regulatory oversight&lt;/a&gt; that we just naturally assumed was protecting us.&lt;br /&gt;&lt;br /&gt;Forget the financial mess for the moment: Did you ever think that American &lt;a href="http://bulletin.aarp.org/yourhealth/policy/articles/every_peanut_product_from_ga_plant_recalled.html?CMP=KNC-360I-GOOGLE-BULL&amp;amp;HBX_OU=50&amp;amp;HBX_PK=peanut_butter"&gt;Peanut Butter would be dangerous&lt;/a&gt; in the 21st century? Didn't &lt;a href="http://www.californiaprogressreport.com/2007/03/food_safety_and.html"&gt;Teddy Roosevelt&lt;/a&gt; institute food safety oversight a hundred years ago?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Regulatory oversight is certainly a potential evil - but it's a necessary evil. With the tools that we have today Big Brother can watch us, but we can also watch him. We have no real privacy, but neither does he.&lt;br /&gt;&lt;br /&gt;Technology can help. We can help reduce the "red tape". We can help spot the suspicious. We can help predict the long term. We can help the watchers watch, and we can help watch the watchers.&lt;br /&gt;&lt;br /&gt;We can help avoid messes like this in the future.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25178118-3923169957004006469?l=thoughtfulprogrammer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thoughtfulprogrammer.blogspot.com/feeds/3923169957004006469/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=25178118&amp;postID=3923169957004006469' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25178118/posts/default/3923169957004006469'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25178118/posts/default/3923169957004006469'/><link rel='alternate' type='text/html' href='http://thoughtfulprogrammer.blogspot.com/2009/03/all-big-brothers-arent-bad.html' title='All Big Brothers Aren&apos;t Bad'/><author><name>John Reynolds</name><uri>http://www.blogger.com/profile/13852313153136272800</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16294191035180283464'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_QviPbycN-9k/ScVsrbDzhVI/AAAAAAAAO4k/-AWD7LbvyJM/s72-c/big+brother.jpg' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25178118.post-362209343461820098</id><published>2009-03-21T09:15:00.004-05:00</published><updated>2009-03-21T15:59:30.561-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Thoughtful Programming'/><title type='text'>The Science of Art</title><content type='html'>If you've looked at &lt;a href="http://www.linkedin.com/in/johnreynolds"&gt;my LinkedIn profile&lt;/a&gt; you've probably noticed that I've changed jobs quite a bit over the years.  There have been many reason for changing jobs... but usually I've moved on to grow.  I've moved on because I found something that interested me more, or something that challenged me more.  On a few lucky occasions I've found things that were both more interesting and more challenging.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;On other occasions I have moved on because I just couldn't stand it any more.  Frustration over some aspect of my working days would build up until it was obvious (to me) that I was wasting my time and my talents.  Something about the company was perversely keeping me from doing my job in the way that I knew it really should be done (or so I felt at the time).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I think that all of us who work for a living have felt something like this from time to time, and that's why I found &lt;a href="http://stopdesign.com/archive/2009/03/20/goodbye-google.html"&gt;Douglas Bowman's post&lt;/a&gt; on his departure from Google to be so poinient. Bowman's artistic design philosophy crashed head first into Google's statistical mantra.  Classic case of irreconcilable differences... Make a clean break and part as friends.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Changing jobs is a personal matter... but Bowman raises an issue of wider interest in the community of UI designers and programmers:&lt;/div&gt;&lt;div&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;"&lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Is UI Design Science or Is It Art&lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;?"&lt;/span&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;div&gt;The answer is of course both... and everybody has always known that.  What's changed is our radically increased ability to apply Science to our designs.  Analysis of our designs used to be woefully limited to focus groups or beta testers, but as &lt;a href="http://news.cnet.com/8301-17939_109-10201160-2.html?tag=newsEditorsPicksArea.0"&gt;Stephan Shankland&lt;/a&gt; points out: Google's practice of  "&lt;i&gt;Choosing color shades and pixel widths on the basis of the behavior of millions of Web page users is a fascinating development to the form-follows-function school of design.&lt;/i&gt;"&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;With &lt;a href="http://en.wikipedia.org/wiki/Software_as_a_service"&gt;SaaS&lt;/a&gt; (Software as a Service) solutions it's much simpler to roll out a minor design change and "see what happens".  It's much easier to employ the Scientific method.  It's much easier to test instead of speculate.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Take this new "try it and see" capability with a grain of salt - you'd need Google's millions of users to even notice the effect of subtle changes - but the promise is intriguing.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Bowman's case warns us that there's also a down side if Science is improperly applied.  Demanding statistical justifications for artistic design decisions is fraught with peril... You'll drive off your best artists and you'll likely lose out on true innovation.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Inspiration seldom comes from statistical analysis... and inspiration is usually at the heart of all good designs.  Statistical analysis can measure the success of a design, and it should be more widely applied.  Statistical analysis helps us continually improve a design, but it's not the genesis of good design.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Art first - then Science.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25178118-362209343461820098?l=thoughtfulprogrammer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thoughtfulprogrammer.blogspot.com/feeds/362209343461820098/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=25178118&amp;postID=362209343461820098' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25178118/posts/default/362209343461820098'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25178118/posts/default/362209343461820098'/><link rel='alternate' type='text/html' href='http://thoughtfulprogrammer.blogspot.com/2009/03/science-of-art.html' title='The Science of Art'/><author><name>John Reynolds</name><uri>http://www.blogger.com/profile/13852313153136272800</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16294191035180283464'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25178118.post-4347123938916311997</id><published>2009-03-15T09:52:00.005-05:00</published><updated>2009-03-15T12:58:57.864-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Energy'/><title type='text'>Picking Power</title><content type='html'>The &lt;a href="http://www.statesman.com/"&gt;Austin American Statesman&lt;/a&gt; has a great graphic by Roberto Villalpando in today's paper that compares the energy costs of building a new power plant - I'd love to post a link, but it doesn't seem to be on their online edition.  Here's a scan:&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_QviPbycN-9k/Sb0_x_i3iiI/AAAAAAAAO4c/DLAqltEksO0/s1600-h/PowerOptions.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 319px; height: 400px;" src="http://2.bp.blogspot.com/_QviPbycN-9k/Sb0_x_i3iiI/AAAAAAAAO4c/DLAqltEksO0/s400/PowerOptions.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5313473263470873122" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;div&gt;The graphic compares the factors associated with Nuclear, Coal, Natural Gas, Wind Farm, Solar and Wood Biomass power plants.  As you'd expect, it's all about tradeoffs.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I really applaud the Statesman for publishing this comparison.  You might take issue with the details ascribed to each option - but this clearly makes the point that there are pros and cons to every Energy option.  There are costs and savings associated with each option.  Nothing is cut and dried - each option requires careful consideration.  Trite slogans just don't cut it.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25178118-4347123938916311997?l=thoughtfulprogrammer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thoughtfulprogrammer.blogspot.com/feeds/4347123938916311997/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=25178118&amp;postID=4347123938916311997' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25178118/posts/default/4347123938916311997'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25178118/posts/default/4347123938916311997'/><link rel='alternate' type='text/html' href='http://thoughtfulprogrammer.blogspot.com/2009/03/picking-power.html' title='Picking Power'/><author><name>John Reynolds</name><uri>http://www.blogger.com/profile/13852313153136272800</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16294191035180283464'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_QviPbycN-9k/Sb0_x_i3iiI/AAAAAAAAO4c/DLAqltEksO0/s72-c/PowerOptions.JPG' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25178118.post-8984868255680567850</id><published>2009-03-11T19:13:00.009-05:00</published><updated>2009-03-14T11:24:04.719-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Traffic'/><category scheme='http://www.blogger.com/atom/ns#' term='Energy'/><category scheme='http://www.blogger.com/atom/ns#' term='Travel'/><title type='text'>Power trip</title><content type='html'>MIT has come up with a battery that can &lt;a href="http://www.tgdaily.com/html_tmp/content-view-41686-181.html"&gt;fully recharge in seconds&lt;/a&gt;.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Wow.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Talk to anybody in the power industry and they'll tell you that the problem is storage, not generation.  Wind power is great.  Solar cells are great.  &lt;a href="http://en.wikipedia.org/wiki/Solar_furnace"&gt;Solar furnaces&lt;/a&gt; are great.  Unfortunately they're all undependable because the wind and the Sun aren't necessarily there when you need them.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Response to this sad fact has resulted in bizarre plans like huge &lt;a href="http://en.wikipedia.org/wiki/Solar_power_satellite"&gt;Solar Power Satellites&lt;/a&gt; orbiting the planet to beam down uninterrupted streams of microwave energy and relatively low tech solutions like the &lt;a href="http://en.wikipedia.org/wiki/Ludington_Pumped_Storage_Power_Plant"&gt;Luddington Pumped Storage Power Plant&lt;/a&gt; using a huge water reservoirs and gravity to store power.  Solutions like these are impressive, but they just don't work for cars.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Cars need portable power... and today that portable power is stored in gasoline.  Burning gas to liberate its power isn't that efficient - so folks are looking for substitutes.  The most common substitute that I have heard pitched is the &lt;a href="http://en.wikipedia.org/wiki/Hydrogen_fuel_cell"&gt;Hydrogen Fuel Cell&lt;/a&gt;.  Hydrogen was kind of scary to the Coal and Gas Industries, but then someone got the great idea of making &lt;a href="http://www.fueleconomy.gov/feg/fcv_fuels.shtml"&gt;Hydrogen from Gas and Coal&lt;/a&gt;. Amazing how the same folks keep making money... isn't it?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;MIT's new batteries kind of throw a wrench in those plans.  If you can fully recharge your car's batteries in a couple of seconds, then why lug around that Gas and Coal to Hydrogen Powered Fuel Cell?  Fortunately, you can still charge that battery from the local Gas and Coal burning Power Plant :-)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;But I digress... a battery that charges in seconds is an incredible development.  &lt;a href="http://news.cnet.com/8301-10784_3-9798043-7.html"&gt;Bill Joy&lt;/a&gt; identified batteries as the key stumbling block to practical electric cars:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="color: rgb(53, 53, 53);   line-height: 17px; font-family:Arial;font-size:12px;"&gt;&lt;blockquote&gt;"There's a range of new chemistries coming so that you can imagine, say five to ten years from now, instead of 100 watt-hours per liter we're at today, that a break-out company will have a 500 or thousand watt-hours--a five to 10 times (increase in) the energy density,"&lt;/blockquote&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;Bill and the rest of us were thinking about batteries that held more power... not batteries that charge faster.  Our thought was that a &lt;a href="http://www.chevrolet.com/electriccar/"&gt;Chevy Volt&lt;/a&gt; isn't practical because you have to charge it every 40 miles (or use the gas engine).  Give it a 400 mile range and folks will stand in line to buy one (and you can ditch the gas engine).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In retrospect - What were we thinking?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Would you rather have a large &lt;span class="Apple-style-span"  style="font-size:small;"&gt;(400 mile)&lt;/span&gt; gas tank that takes 8 hours to fill or a small &lt;span class="Apple-style-span"  style="font-size:small;"&gt;(40 mile)&lt;/span&gt; gas tank that takes 8 seconds to fill?  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;There are lots of factors to consider before answering that question... but I suspect that fast beats slow most of the time.  If the MIT batteries really work and you can recharge your car in a few seconds, then I think that most folks will accept a battery powered car as practical even if they still have to charge it every 40 miles.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;What do you think?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25178118-8984868255680567850?l=thoughtfulprogrammer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thoughtfulprogrammer.blogspot.com/feeds/8984868255680567850/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=25178118&amp;postID=8984868255680567850' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25178118/posts/default/8984868255680567850'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25178118/posts/default/8984868255680567850'/><link rel='alternate' type='text/html' href='http://thoughtfulprogrammer.blogspot.com/2009/03/power-trip.html' title='Power trip'/><author><name>John Reynolds</name><uri>http://www.blogger.com/profile/13852313153136272800</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16294191035180283464'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25178118.post-9081276783904452496</id><published>2009-03-10T07:02:00.015-05:00</published><updated>2009-03-10T19:50:15.466-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Thoughtful Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='BPM'/><title type='text'>Is that a bad thing?</title><content type='html'>&lt;a href="http://www.networkperformancedaily.com/2009/03/first_sell_then_code.html"&gt;Joe Trammell&lt;/a&gt; recently blogged an interesting anecdote that concludes with the following moral:&lt;br /&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;"The first step in trying to improve any process in IT is convincing the people with the power to make decisions that the current process is flawed."&lt;/span&gt;&lt;/blockquote&gt;I'd remove the words "in IT" from Joe's statement.  In any organization, unless "they" agree that "it" is broken, "it" is not going to get fixed. Joe goes on to say:&lt;br /&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;"enterprise computing isn't just technical knowledge, it's also social interaction"&lt;/span&gt;&lt;/blockquote&gt;Amen!&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In my experience, &lt;a href="http://thoughtfulprogrammer.blogspot.com/2008/07/most-software-development-obstacles-are.html"&gt;most software development obstacles are cultural&lt;/a&gt;.  People are different. One person's crisis is another person's acceptable annoyance - I'm not going to help you fix something unless I agree with you that it's broken.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;There's no quick fix for this problem, but I think that we're headed in the right direction - &lt;a href="http://thoughtfulprogrammer.blogspot.com/2008/06/bpmn-and-business-rules.html"&gt;BPMN, Business  Rules, Business Natural Languages&lt;/a&gt; -all attempts to foster better communication between Programmers and Business.  All attempts to help each camp understand what the heck the other camp is talking about.  All attempts to help each other understand what the problems really are.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;We're not there yet. Communication is still a bit awkward and stifled - but we're getting there.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25178118-9081276783904452496?l=thoughtfulprogrammer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thoughtfulprogrammer.blogspot.com/feeds/9081276783904452496/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=25178118&amp;postID=9081276783904452496' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25178118/posts/default/9081276783904452496'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25178118/posts/default/9081276783904452496'/><link rel='alternate' type='text/html' href='http://thoughtfulprogrammer.blogspot.com/2009/03/is-that-bad-thing.html' title='Is that a bad thing?'/><author><name>John Reynolds</name><uri>http://www.blogger.com/profile/13852313153136272800</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16294191035180283464'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25178118.post-4737865905807741986</id><published>2009-02-21T15:22:00.005-06:00</published><updated>2009-02-21T16:22:43.108-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Business Process Management'/><category scheme='http://www.blogger.com/atom/ns#' term='BPM'/><title type='text'>Seeing is Believing - Business Process Visualization</title><content type='html'>&lt;div&gt;Time to introduce a new TLA (&lt;b&gt;T&lt;/b&gt;hree &lt;b&gt;L&lt;/b&gt;etter &lt;b&gt;A&lt;/b&gt;cronym) to this blog: BPV - &lt;b&gt;B&lt;/b&gt;usiness &lt;b&gt;P&lt;/b&gt;rocess &lt;b&gt;V&lt;/b&gt;isualization.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;div&gt;I often sum up basics of BPM (&lt;b&gt;B&lt;/b&gt;usiness &lt;b&gt;P&lt;/b&gt;rocess &lt;b&gt;M&lt;/b&gt;anagement) with the following pitch:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:130%;"&gt;Model your Process &lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:130%;"&gt;Manage your Process &lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:130%;"&gt;Monitor your Process &lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:130%;"&gt;iMprove your Process&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;For me, the enabling factor for BPM was the Executable Process Diagram.  Use tools to graphically depict the Activities and Flows of a Process, and then auto-generate the software necessary to manage the transitions between those Activities.  &lt;/div&gt;&lt;div&gt;With any good BPM Suite I can rest assured that &lt;span style="font-size:130%;"&gt;the Right People will Execute the Right Activities at the Right Time&lt;/span&gt; to keep my Processes Flowing Smoothly.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt; The BPM Industry has more than met the PFS (&lt;b&gt;P&lt;/b&gt;rocesses &lt;b&gt;F&lt;/b&gt;low &lt;b&gt;S&lt;/b&gt;moothly) challenge - The decision for a company to adopt BPM technology and methodology is pretty much a no-brainer (Which suite to adopt may require some thought, but whether or not to adopt isn't even an issue any more).&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;So what's next?  &lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;In a recent post I attempted to describe a BPMS in terms that might have been familiar to any &lt;a href="http://thoughtfulprogrammer.blogspot.com/2009/02/19th-century-bpms.html" id="iqe5" title="19th Century businessman"&gt;19th Century businessman&lt;/a&gt; .  One of the comments I received really peaked my interest:&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.blogger.com/profile/02744153944427657174" rel="nofollow" style="color: rgb(85, 136, 170); text-decoration: none"&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;"&gt;&lt;a href="http://www.blogger.com/profile/02744153944427657174" rel="nofollow" style="color: rgb(85, 136, 170); text-decoration: none"&gt;&lt;i&gt;Roeland Loggen&lt;/i&gt;&lt;/a&gt;&lt;i&gt; said...&lt;br /&gt;Maybe your story reflects one of the key issues with current BPM thinking: if the software provides automated concepts of a year 1890 shopfloor, then not much innovation has been created. Since 1890 many many new ideas have been created on people working in processes. The mechanistic view of typical BPM software has not clue of these more modern concepts. &lt;br /&gt;The 20th century knowledge worker's reality and productivity is muh different from Taylor based process thinking... not based on orchestration, central coordination, workflow items, inbox/task screen.... but adhoc, collaboration, changing processes on the fly based on new insights and events....&lt;/i&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;dd class="comment-body" style="margin-top: 0.25em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px"&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.75em; margin-left: 0px"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.75em; margin-left: 0px"&gt;For the sake of argument: If every 1890 shop floor had an exceptional Process Manager on hand, productivity would have soared... but Roland's right: We can't be satisfied to stop with systems that automate 19th century businesses.  It's the 21st Century, and we can do better than that.&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.75em; margin-left: 0px"&gt;The key for doing better is &lt;b&gt;B&lt;/b&gt;usiness &lt;b&gt;P&lt;/b&gt;rocess &lt;b&gt;V&lt;/b&gt;isualization (BPV).&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.75em; margin-left: 0px"&gt;In my 19th Century BPMS I discussed someone that I dubbed the "Process Visualizer".  This is that person who took the raw metrics that the Process Manager had gathered and turned them into reports, charts and graphs that the Business Owner could use to understand the past and to plan for the future.  These reports, charts and graphs are an integral part of BPV, but there's a whole lot more to the full picture.&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.75em; margin-left: 0px"&gt;BPV begins with the Process Diagram.  The Process Diagram distills the essence of the problem into a form that Business and IT can share.  It's a crucial part of validating that the process is correct and for communicating the requirements from the process owner to programmers who will implement the process application.  In most of today's BPM Systems the life cycle of the Process Diagram often goes something like this...&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.75em; margin-left: 0px"&gt;The Business decides to improve their operations, so they hire an Analyst to come in and help them.  &lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.75em; margin-left: 0px"&gt;The Analyst talks to a lot of people and produces an &lt;b&gt;"As Is"&lt;/b&gt; Business Process Diagram.  This diagram is often used by the Analyst to reassure the Business that  the Analyst really understands what's going on.&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.75em; margin-left: 0px"&gt;Now that the Analyst really understands what's going on, a new &lt;b&gt;"To Be"&lt;/b&gt; Business Process Diagram is created.  This diagram is used by the Business to capture exactly how they want the new process to operate.&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.75em; margin-left: 0px"&gt;At this point simulations can be run to predict how the new process will behave relative to the old.  Simulation is always tricky, but if the assumptions are accurate (hopefully based on historical data), then it's sometimes possible to tune the "To Be" definition to increase the likelihood of success.&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.75em; margin-left: 0px"&gt;Once the Business and the Analyst are happy with the "To Be" diagram, it can be passed on to the Implementers (and it now becomes known as the &lt;b&gt;"As Planned"&lt;/b&gt; diagram).  The Implementers now morph the diagram into an executable diagram, usually adding way more details than the Business wishes to see.&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.75em; margin-left: 0px"&gt;&lt;i&gt;Slight digression:  There's a lot of controversy swirling around &lt;a href="http://www.brsilver.com/wordpress/2008/05/01/which-way-for-bpmn-20/"&gt;BPMN 2.0&lt;/a&gt; over the issue of adding execution semantics to process diagrams.  Implementers (in general) want truly executable diagrams but Business folks (in general) don't want to clutter the diagram with non-Business related details.  I think there's a simple solution... which I will get to later.&lt;/i&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.75em; margin-left: 0px"&gt;The Implementers work with the Analyst and Business until all are happy and the process application is deployed into production... at this point the Implementer's diagram becomes known as the &lt;b&gt;"As Built"&lt;/b&gt; diagram.&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.75em; margin-left: 0px"&gt;&lt;i&gt;Note to all: The "As Built" diagram is a clear differentiation from all pre-BPM Systems.  In a BPMS, the "As Built" really is the process that is running in production.  Before BPMS the diagram may have been accurate once, but you never really had confidence that the diagram ever matched reality.&lt;/i&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.75em; margin-left: 0px"&gt;In some BPM Systems, the "As Built" diagram is often the end of the line.  Once the process application is deployed they don't think about it much until the next time a process change is contemplated... However, in many BPM Systems the "As Built" morphs into a living and breathing &lt;b&gt;"As Running"&lt;/b&gt; diagram.&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.75em; margin-left: 0px"&gt;Live and historical data breathes life into the "As Running" diagram.  My old friend the Process Visualizer takes the raw data from the Process Manager and animates the "As Running" diagram to give the Business a clear view of what's happening where (and what happened when).  The "As Running" diagram gives you your first glimpse of what BPV can achieve.&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.75em; margin-left: 0px"&gt;Thus far the Process Diagram has be limited to a pretty small audience - those involved in designing the process and those involved in implementing the process.  BPV should expand the Process Diagrams visibility to a much wider audience.&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.75em; margin-left: 0px"&gt;Go into just about any office and ask a typical worker the following question:&lt;span class="Apple-style-span"  style=" ;font-size:18px;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.75em; margin-left: 0px"&gt;&lt;span class="Apple-style-span"  style=" ;font-size:18px;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;/dd&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;dd class="comment-body" style="margin-top: 0.25em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px"&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.75em; margin-left: 0px"&gt;&lt;span class="Apple-style-span"  style=" ;font-size:18px;"&gt;"What Processes do you work on?"&lt;/span&gt;&lt;/p&gt;&lt;/dd&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;dd class="comment-body" style="margin-top: 0.25em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px"&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.75em; margin-left: 0px"&gt;&lt;/p&gt;&lt;/dd&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;dd class="comment-body" style="margin-top: 0.25em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px"&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.75em; margin-left: 0px"&gt;Most likely, the response will be a blank stare.&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.75em; margin-left: 0px"&gt;Now ask the worker:&lt;span class="Apple-style-span"  style=" ;font-size:18px;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.75em; margin-left: 0px"&gt;&lt;span class="Apple-style-span"  style=" ;font-size:18px;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;/dd&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;dd class="comment-body" style="margin-top: 0.25em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px"&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.75em; margin-left: 0px"&gt;&lt;span class="Apple-style-span"  style=" ;font-size:18px;"&gt;"What Activities do you perform?"&lt;/span&gt;&lt;/p&gt;&lt;/dd&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;dd class="comment-body" style="margin-top: 0.25em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px"&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.75em; margin-left: 0px"&gt;&lt;/p&gt;&lt;/dd&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;dd class="comment-body" style="margin-top: 0.25em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px"&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.75em; margin-left: 0px"&gt;The blank stare will vanish and you'll get a very accurate litany of tasks.&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.75em; margin-left: 0px"&gt;BPV needs to give each worker the answer to that first question.  It's not enough to know what Activities you need to work on - To do your best you really need to know how those Activities fit into a bigger picture.  Process knowledge is a bigger picture, and it goes a long way to helping the workers understand why they are doing what they are doing.&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.75em; margin-left: 0px"&gt;A task that seem stupid in isolation may make sense when seen in a process context - or it may really be stupid.  In the former case the worker may do a better job, and in the latter case BPV may give the worker the context needed to communicate their frustration.&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.75em; margin-left: 0px"&gt;When folks such as Lombardi's &lt;a id="xnzw" href="http://blog.lombardicto.com/" title="Phil Gilbert"&gt;Phil Gilbert&lt;/a&gt; talk about BPM on every desk in an enterprise, this is what they are talking about.  Process Visualization helps everyone put things in context, and that helps everyone do a better job.&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.75em; margin-left: 0px"&gt;Now for a bit of Devil's advocate:  Most workers couldn't make heads or tails out of a BMPN diagram, and if you add all the execution semantics proposed for BPMN 2.0 that percentage is going to drop even further.&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.75em; margin-left: 0px"&gt;Granted, but there's a solution: Different views for different folks.&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.75em; margin-left: 0px"&gt;Returning to my programming roots... I am a huge fan of &lt;a id="rels" href="http://en.wikipedia.org/wiki/Aspect-oriented_programming" title="Aspect Oriented Programming"&gt;Aspect Oriented Programming&lt;/a&gt;.&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.75em; margin-left: 0px"&gt;Aspect Oriented Programming evolved from a simple fact: Most worthwhile endeavors can be broken down into distinct concerns, and often you can meet the goals sooner by dealing with these concerns (aspects) in isolation.  Obviously there are limits to this when concerns overlap, but it's a good place to start.&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.75em; margin-left: 0px"&gt;With Aspects as my inspiration it's easy to see where Process Diagrams need to go: Aspect Oriented Diagrams.  If we can identify the aspects of a diagram that the Business Owner is interested in, and those that the Operations Folks are interested in, and those that each Worker is interested in, then we can generate the Views that mean the most to the intended audience. It's all just a matter of Perspective, and BPV enables many, many perspectives.  Some views may look like process diagrams, others may look quite different - doing BPV right will employ a lot of artistic scientists.&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.75em; margin-left: 0px"&gt;&lt;span style="font-size:100%;"&gt;Here are just a few process views that come to mind:&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.75em; margin-left: 0px"&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Process Owner's "40,000 foot" view&lt;/li&gt;&lt;li&gt;Activity Owner's "Escalation logic" view&lt;/li&gt;&lt;li&gt;Participant's "Where does this fit?" view&lt;/li&gt;&lt;li&gt;Operation's "What's happening now?" view&lt;/li&gt;&lt;li&gt;Operation's "What happened?" view&lt;/li&gt;&lt;li&gt;IT's "Capacity planning" view&lt;/li&gt;&lt;/ul&gt;&lt;p&gt; As Roland said, the future is about "ad hoc, collaboration, changing processes on the fly based on new insights and events"...&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.75em; margin-left: 0px"&gt;BPV's going to help us find those insights.&lt;/p&gt;&lt;/dd&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25178118-4737865905807741986?l=thoughtfulprogrammer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thoughtfulprogrammer.blogspot.com/feeds/4737865905807741986/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=25178118&amp;postID=4737865905807741986' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25178118/posts/default/4737865905807741986'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25178118/posts/default/4737865905807741986'/><link rel='alternate' type='text/html' href='http://thoughtfulprogrammer.blogspot.com/2009/02/business-process-visualization.html' title='Seeing is Believing - Business Process Visualization'/><author><name>John Reynolds</name><uri>http://www.blogger.com/profile/13852313153136272800</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16294191035180283464'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25178118.post-2277052297496238017</id><published>2009-02-18T07:29:00.004-06:00</published><updated>2009-02-18T07:36:15.984-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Business Process Management'/><category scheme='http://www.blogger.com/atom/ns#' term='BPM'/><title type='text'>Grilling Business</title><content type='html'>Mike Hugos offers some interesting thoughts in his article: &lt;a href="http://www.cio.in/esntech/viewArticles/ARTICLEID=5833257/page=0"&gt;How To Truly Partner With Business&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Mike points out that the traditional requirements gathering process is:&lt;br /&gt;&lt;blockquote&gt;"about as friendly as being grilled by a police detective"&lt;/blockquote&gt;&lt;br /&gt;Not exactly the relationship we've all dreamed of, is it?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25178118-2277052297496238017?l=thoughtfulprogrammer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thoughtfulprogrammer.blogspot.com/feeds/2277052297496238017/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=25178118&amp;postID=2277052297496238017' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25178118/posts/default/2277052297496238017'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25178118/posts/default/2277052297496238017'/><link rel='alternate' type='text/html' href='http://thoughtfulprogrammer.blogspot.com/2009/02/business-and-it.html' title='Grilling Business'/><author><name>John Reynolds</name><uri>http://www.blogger.com/profile/13852313153136272800</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16294191035180283464'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25178118.post-9127321712066887928</id><published>2009-02-11T21:51:00.004-06:00</published><updated>2009-02-14T19:50:45.000-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Thoughtful Programming'/><title type='text'>== != =</title><content type='html'>This week I visited a client in the Detroit area, and on the whiteboard in their meeting room I saw the following:&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span"  style="font-size:x-large;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;== != =&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;/span&gt;For those of you who aren't programmers, this is a slam at perhaps one of the worst programming language syntax decisions that has ever been made.  You can read the above expression as "Equal equal is not equal to equals".   Still lost?  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In the C programming language (and derivatives such as C++, Java, JavaScript and C#) the way that you test to see if two variables are equivalent to each other is to use the "==" operator.  For example:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;if ( a == b ) { doSomething(); }&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If you want to assign a value to a a variable you use the assignment operator "=".  For example:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;a = b;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Believe it or not, even folks who have been programming for years occasionally screw up and use the assignment operator "=" when they meant to use the test for equivalence operator ==.   Here's an all too common example:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;if ( a = b ) { doSomething;}&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The line above sets the value of variable "a" to the value of variable "b".  If "b" is not zero, then the function "doSomething()" will be invoked.  Perhaps that's the behavior that the programmer desired, but I really doubt it.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;According to the wikipedia article &lt;a href="http://en.wikipedia.org/wiki/Comparison_of_Pascal_and_C"&gt;comparing the Pascal programming language to C&lt;/a&gt;: &lt;br /&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;"&lt;span class="Apple-style-span"   style="  line-height: 19px; font-family:-webkit-sans-serif;font-size:13px;"&gt;It is common for programmers new to C to &lt;u&gt;accidentally&lt;/u&gt; put assignment expressions in conditional statements such as &lt;code style="background-color: rgb(249, 249, 249); "&gt;if (a = 10) { ... }&lt;/code&gt;, which will always execute because the assignment expression &lt;code style="background-color: rgb(249, 249, 249); "&gt;a = 10&lt;/code&gt; has the value 10 ≠ 0 and is therefore considered "true" in C. Also note that &lt;code style="background-color: rgb(249, 249, 249); "&gt;a&lt;/code&gt; has now got the value &lt;code style="background-color: rgb(249, 249, 249); "&gt;10&lt;/code&gt;, which may affect the following code. This kind of mistake cannot happen in Pascal, as assignments are not expressions; using the wrong operator will cause a compile error (and it's not likely that anyone would mistake the &lt;code style="background-color: rgb(249, 249, 249); "&gt;:=&lt;/code&gt; symbol for equality test).&lt;span class="Apple-style-span"   style="  line-height: normal; font-family:Georgia;font-size:16px;"&gt;" &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;blockquote&gt;&lt;/blockquote&gt;I have to take issue with this statement... It's not just programmers who are new to C.  I made this mistake last week :-)&lt;/div&gt;&lt;div&gt;&lt;div&gt;This mistake is so common that some programming editors will actually flag statements like this to warn the programmer.  I've no idea how much time has been lost on this little syntactical monkey wrench, but I think it's probably quite a bit.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Long ago before I learned C I used Pascal.  In Pascal the "=" operator is used to test for equality.  If you want to set a value you used ":=".  When reading this symbol out loud I'd always say "set equal to".  For some reason, I don't ever remember confusing the two or knowing anyone else who ever confused the two.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The BASIC programming language is even simpler... the interpreter uses the context of where "=" appears in an expression to determine what it means.  IF $A = 0 THEN is interpreted as a comparison.  $A = 3 is interpreted as an assignment.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I don't know why the authors of C chose to use "==" and "=" in this way - but unfortunately that decision was inherited by most of the programming languages that are widely used today.  Every  programmer who includes some JavaScript on a web page might screw up and make this mistake... so just remember:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style=" ;font-size:18px;"&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span"  style=" ;font-size:24px;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold; "&gt;== != =&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style=" font-weight: bold;font-size:24px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25178118-9127321712066887928?l=thoughtfulprogrammer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thoughtfulprogrammer.blogspot.com/feeds/9127321712066887928/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=25178118&amp;postID=9127321712066887928' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25178118/posts/default/9127321712066887928'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25178118/posts/default/9127321712066887928'/><link rel='alternate' type='text/html' href='http://thoughtfulprogrammer.blogspot.com/2009/02/blog-post.html' title='== != ='/><author><name>John Reynolds</name><uri>http://www.blogger.com/profile/13852313153136272800</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16294191035180283464'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25178118.post-1173647005527447107</id><published>2009-02-06T13:28:00.006-06:00</published><updated>2009-02-06T17:47:03.958-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Business Process Management'/><category scheme='http://www.blogger.com/atom/ns#' term='BPM'/><title type='text'>19th Century BPMS</title><content type='html'>I sometime find it useful to describe a BPMS (&lt;a href="http://en.wikipedia.org/wiki/Business_process_management"&gt;Business Process Management System&lt;/a&gt;) in terms of things and people that you probably would have found in an office or factory in the 1890s:&lt;br /&gt;&lt;br /&gt;At the center of the BPM system is a &lt;b&gt;Process Manager&lt;/b&gt; who makes sure that each Process runs smoothly.  The Process Manager uses &lt;b&gt;Process Definitions&lt;/b&gt; to know what all the steps of each process are, the proper sequence in which each step should be performed and which people should perform each step.&lt;br /&gt;&lt;br /&gt;The Process Manager hands out assignments to each worker - updating each worker's &lt;b&gt;Task List&lt;/b&gt; to insure that each worker knows what to do and when to do it.  The Process Manager also passes along any information from previous Tasks that the workers doing the remaining Tasks may need.&lt;br /&gt;&lt;br /&gt;If a worker doesn't finish a Task on schedule, the Process Manager may escalate the Task. Escalation could take many forms - the Task might be reassigned or perhaps the worker's supervisor might be informed - It's all laid out in the Process Definition.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;A great Process Manager can manage many instances of many different types of processes simultaneously (that was probably rare in the 19th century).&lt;br /&gt;&lt;br /&gt;The workers do the work (just like they did in the 1890s) performing whatever activities are assigned to them by the Process Manager.  When a worker finishes a Task the Process Manager must be informed.&lt;br /&gt;&lt;br /&gt;Workers in the 1890s were given detailed instructions that told them exactly what to do to accomplish their current Task along with Forms to record any information that the Process Manager or other workers needed.  In today's world the workers rely on software to guide them through each task (often in the form wizards).  Most BPMS systems run these wizards using &lt;b&gt;Task Engines&lt;/b&gt; that can execute any &lt;b&gt;Task Definition&lt;/b&gt;, but often custom applications are developed or adapted to perform specific Tasks.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;The Process Managers primary job is to keep every process running... But that's not enough.... Are the processes efficient at accomplishing their goals?&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Workers want to know how they are doing relative to their peers.&lt;/li&gt;&lt;li&gt;Bosses want to know how well their workers are doing and whether or not the company's goals and obligations are being met.&lt;/li&gt;&lt;li&gt;Owners want to know how today's performance compares with that of last year... and how next year's perfomance might be better.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;Everyone needs to be able to Visualize their processes in meaningful ways that can help answer their questions.&lt;br /&gt;&lt;br /&gt;The Process Manager records all of the raw data necessary to track each process instance, but often relies on someone else to crunch the numbers and produce the meaningful reports, charts and graphs that help make sense of the processes.  I call this someone else the &lt;b&gt;Process Visualizer&lt;/b&gt; for lack of a better title.  I'm sure there were people in 19th century offices who performed a similar function.&lt;br /&gt;&lt;br /&gt;Ultimately it's the Process Visualizer that sets a BPM Sytem apart from a Workflow System. Without visibility into a process you can only guess on what changes might improve it. BPM is about enabling Continuous Process Improvement - so that Visualizer is key.&lt;br /&gt;&lt;br /&gt;Their are many vendors of BPM Systems in the world, and many might take issue with some aspects of my analogies - but I think that most will agree with my broad characterizations.  &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;BPM Systems are made up of relatively mundane parts that would sound familiar to most 19th century Businessmen - the concepts are old - it's our technology (and people who know how to use the technology) that is making these BPM concepts transformational. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Just imagine what could have happened in the 1890s if there had been a great Process Manager and Process Visualizer in every office and factory.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25178118-1173647005527447107?l=thoughtfulprogrammer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thoughtfulprogrammer.blogspot.com/feeds/1173647005527447107/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=25178118&amp;postID=1173647005527447107' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25178118/posts/default/1173647005527447107'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25178118/posts/default/1173647005527447107'/><link rel='alternate' type='text/html' href='http://thoughtfulprogrammer.blogspot.com/2009/02/19th-century-bpms.html' title='19th Century BPMS'/><author><name>John Reynolds</name><uri>http://www.blogger.com/profile/13852313153136272800</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16294191035180283464'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>4</thr:total></entry></feed>