<?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:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7580188453882133873</id><updated>2023-05-25T15:05:00.778-07:00</updated><category term="ITIL"/><category term="business"/><category term="Information Technology Infrastructure Library"/><category term="marketing"/><category term="project management"/><category term="Twitter"/><category term="strategy"/><category term="business analysis"/><category term="sales"/><category term="service management"/><category term="Social Networking"/><category term="process"/><category term="social media"/><category term="value"/><category term="Economics"/><category term="JavaScript"/><category term="Management"/><category term="Software development process"/><category term="analysis"/><category term="business goals"/><category term="jQuery"/><category term="programming"/><category term="web"/><category term="Agile"/><category term="Google"/><category term="user story"/><category term="Chris Brogan"/><category term="Facebook"/><category term="HTML5"/><category term="Social network"/><category term="internet"/><category term="jQuery Mobile"/><category term="methodologies"/><category term="public relations"/><category term="requirements"/><category term="software testing"/><category term="use case"/><category term="AngularJS"/><category term="Blog"/><category term="Bootstrap"/><category term="Business process"/><category term="CSS3"/><category term="IT"/><category term="Information technology"/><category term="SASS"/><category term="SCSS"/><category term="WebAssembly"/><category term="blogging"/><category term="documentation"/><category term="governance"/><category term="standards"/><category term="value-driven"/><category term="Adobe"/><category term="AngularJS 2"/><category term="Darren Rowse"/><category term="ERP"/><category term="Kansas City"/><category term="LESS"/><category term="Microsoft"/><category term="Peter Drucker"/><category term="SPA"/><category term="Small business"/><category term="Trust Agents"/><category term="TweetDeck"/><category term="TypeScript"/><category term="XP"/><category term="business modeling"/><category term="business rules"/><category term="design"/><category term="employment"/><category term="iPhone"/><category term="quality"/><category term="software"/><category term="systems management"/><category term="test driven development"/><category term="testing"/><category term="website"/><category term="AJAX"/><category term="AOL"/><category term="Abrams"/><category term="Alistair Cockburn"/><category term="Amazon"/><category term="Apple"/><category term="Argentina"/><category term="Brian Solis"/><category term="CEO"/><category term="CIO"/><category term="CMMI"/><category term="CSS"/><category term="Carly Fiorina"/><category term="Centriq"/><category term="D3"/><category term="DOS"/><category term="Dale Carnegie"/><category term="Data visualization"/><category term="Elance"/><category term="Elinor Ostrom"/><category term="Elizabeth Keogh"/><category term="Express"/><category term="Extreme Programming"/><category term="Fifth Discipline"/><category term="GitHub"/><category term="Global warming"/><category term="Grunt"/><category term="HTTP"/><category term="Handlebars"/><category term="HootSuite"/><category term="Hugh MacLeod"/><category term="JSP"/><category term="John Sterman"/><category term="Julien Smith"/><category term="Kent Beck"/><category term="Knockout"/><category term="LinkedIn"/><category term="Marketing and Advertising"/><category term="Martin Fowler"/><category term="Mike Cohn"/><category term="Mobile First"/><category term="Mongo"/><category term="NoSQL"/><category term="Oliver E. Williamson"/><category term="Panini"/><category term="Paul Graham"/><category term="PhoneGap"/><category term="React"/><category term="RentACoder"/><category term="Ronald Coase"/><category term="RxJS"/><category term="Scott Ambler"/><category term="Semantic UI"/><category term="Service Oriented Architecture"/><category term="Seth Godin"/><category term="Six Sigma"/><category term="Steve Case"/><category term="Technology Radar"/><category term="Time Warner"/><category term="Tom Peters"/><category term="Total Quality Management"/><category term="TwitPic"/><category term="TwitterAnalyzer"/><category term="UML"/><category term="UX"/><category term="Venture capital"/><category term="William Arthur Ward"/><category term="YAML"/><category term="YQL"/><category term="Zepto"/><category term="Zurb Foundation"/><category term="administration"/><category term="architecture"/><category term="assertions"/><category term="assumptions"/><category term="broadband"/><category term="browser"/><category term="career"/><category term="chance"/><category term="completeness"/><category term="confidence"/><category term="cryptanalysis"/><category term="culture"/><category term="data dictionary"/><category term="debugger"/><category term="distributed processes"/><category term="education"/><category term="enterprise architecture"/><category term="entreprenuership"/><category term="execution environments"/><category term="fiber"/><category term="flat file generator"/><category term="future"/><category term="goal-driven"/><category term="golden pony"/><category term="graphics"/><category term="influence"/><category term="international"/><category term="journalism"/><category term="kitten"/><category term="lawsuits"/><category term="magazines"/><category term="maturity"/><category term="metrics"/><category term="microservices"/><category term="mobile"/><category term="modeling"/><category term="monitoring"/><category term="newspapers"/><category term="node.js"/><category term="oDesk"/><category term="php"/><category term="post-conditions"/><category term="preconditions"/><category term="priority"/><category term="probability"/><category term="puzzles"/><category term="risk"/><category term="seesmic"/><category term="static site generator"/><category term="systems theory"/><category term="templates"/><category term="testability"/><category term="think tank"/><category term="web 2.0"/><category term="web development"/><category term="wired"/><title type='text'>Social IT outbursts</title><subtitle type='html'>Business, sales &amp;amp; marketing, ITIL, and web development.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://www.socialitoutbursts.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7580188453882133873/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://www.socialitoutbursts.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/7580188453882133873/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Doug Hoff</name><uri>http://www.blogger.com/profile/13575254944704650271</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>62</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7580188453882133873.post-5124266124324089954</id><published>2018-02-21T16:18:00.000-08:00</published><updated>2018-03-02T15:41:13.255-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Agile"/><category scheme="http://www.blogger.com/atom/ns#" term="business analysis"/><category scheme="http://www.blogger.com/atom/ns#" term="business modeling"/><category scheme="http://www.blogger.com/atom/ns#" term="Business process"/><category scheme="http://www.blogger.com/atom/ns#" term="project management"/><category scheme="http://www.blogger.com/atom/ns#" term="requirements"/><category scheme="http://www.blogger.com/atom/ns#" term="Software development process"/><category scheme="http://www.blogger.com/atom/ns#" term="user story"/><title type='text'>Writing requirements: assembly manual or design manual? Don&#39;t do both, it just confuses me.</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://upload.wikimedia.org/wikipedia/commons/3/37/Soap_Box_Derby_Racer.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;600&quot; data-original-width=&quot;800&quot; height=&quot;240&quot; src=&quot;https://upload.wikimedia.org/wikipedia/commons/3/37/Soap_Box_Derby_Racer.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;

Requirements should be written &lt;b&gt;two different ways&lt;/b&gt;. Of course, some people try to get away with not writing them at all. And some people try to write them both ways at the same time. But, let&#39;s focus.
&lt;br /&gt;
You can write requirements for&amp;nbsp;&lt;b&gt;project management completion&lt;/b&gt; or &lt;b&gt;business process value creation&lt;/b&gt;. This is the difference between an assembly manual and a design manual. Just because you can build a soap box derby car doesn&#39;t mean you know how the brake works let alone how to make a better one.&lt;br /&gt;
&lt;br /&gt;
My main complaint these days is that projects manage &quot;requirements&quot; but are really just collecting expectations users have. Here&#39;s a few random wants, needs, or expectations, but not requirements.&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Joey wants parts that optimize speed like Z-glas wheels.&lt;/li&gt;
&lt;li&gt;Phil likes rear ballast weights for steering control and speed. The result of the combination of the wheels and weights is not known.&lt;/li&gt;
&lt;li&gt;Mom is worried the brakes could fail.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Dad wants to make sure we win at least one race.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
Now go build that.&lt;br /&gt;
&lt;h2&gt;
Soap box derby management&lt;/h2&gt;
Agile project management styles promote project requirement writing in &lt;b&gt;user stories&lt;/b&gt;. The stories remind us of what people want. Joey&#39;s story says &quot;As a racer, I want to go really fast so that I can become the state champ.&quot; To translate that into something useful, projects need a map of activities and tasks to organize the moving parts so the stories provide useful input:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Car assembly (activity)&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;Put fast wheels on the body spindles (Joey).&lt;/li&gt;
&lt;li&gt;Stabilize steering with weights in rear of the body (Phil).&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
The other stories get put somewhere and maybe in a new category. Nobody has a standard process. Nobody really defines them well. Somebody will likely want to have the wheels in the shape of a kitten, etc.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Programmers and especially software testers want scenarios&lt;/b&gt; that describe the process well. They abstract out the system and sub-systems and provide details in a use case that describe the steps of the process.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://1.bp.blogspot.com/-baBBKauj4zo/Wo3rcdsn7nI/AAAAAAAAWRk/YA31ASln-04j0cQuqUhEGzHwoDOCR2hgACLcBGAs/s1600/soap%2Bbox%2Bderby%2BUML.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;229&quot; data-original-width=&quot;565&quot; height=&quot;161&quot; src=&quot;https://1.bp.blogspot.com/-baBBKauj4zo/Wo3rcdsn7nI/AAAAAAAAWRk/YA31ASln-04j0cQuqUhEGzHwoDOCR2hgACLcBGAs/s400/soap%2Bbox%2Bderby%2BUML.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
You can&#39;t assemble a car from a use case diagram but you can test it after you figure out what the design should be. And you see that the brake system is probably separate from the steering system. And you know how to add to the functions if you want.&lt;br /&gt;
&lt;br /&gt;
Both types of requirements should be done so that the project is implemented successfully and the operation of that process continues to show good results. But with pressure to deliver quickly, the project style is always a bright light that management moths are attracted to. The old-school requirements document that instructed the software developers how to organize and build the software has become more and more the responsibility of the software developer due to increasing complexity.&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;
Project requirements&lt;/h2&gt;
From the project schedules in a Gantt or PERT format to the process maps today, we still just want to keep our work progress under control. Requirements prepared for project management include:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;chunks of project activity &lt;b&gt;ordered by completion time and priority&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;associated documents with that chunk that help to create it&lt;/li&gt;
&lt;li&gt;and are in the context of project building only&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
The target audience of these requirements are the project managers those interested in project progress. So the document creators will write these documents to provide&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;good &lt;b&gt;metrics &lt;/b&gt;and&lt;/li&gt;
&lt;li&gt;progress &lt;b&gt;summaries&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div&gt;
In an Agile project, elicitation happens at the user level with the stakeholders providing their user stories from their point of view. &lt;b&gt;The user story is a marker&lt;/b&gt; for the project manager to take care of their request and for more conversation later when appropriate. The user provides the priority and the value as they see it.&amp;nbsp; The user story provides the raw materials for the chunks of project activities and tasks (or goals and journeys) that are then mapped to show project progress.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Because there&#39;s no real unit for measuring the scope of the sticky note task for what to do, the application of different names and styles are not easily understood. Sometimes there&#39;s a goal that seems like a higher level activity but it could be a feature. Maybe there&#39;s a theme but that could be just a descriptor to group various chunks. Even &lt;a href=&quot;https://www.thoughtworks.com/insights/blog/story-mapping-visual-way-building-product-backlog&quot;&gt;user stories are re-purposed to a minimal viable sentence style&lt;/a&gt; to fit on a sticky note that just look like a smaller activity.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
The mapping style process that generates &lt;b&gt;hundreds of sticky notes&lt;/b&gt; is not mapping a project as much as it&#39;s trying to outline the entire process for development. It looks impressive but misses the goal of providing good metrics and summaries and documenting too many of the details. Mapping should be about understanding how to deliver simple and important features so you get feedback quickly. Remember &lt;a href=&quot;http://agilemanifesto.org/principles.html&quot;&gt;the Agile principles&lt;/a&gt;! Here I agree with &lt;a href=&quot;https://www.mountaingoatsoftware.com/books/user-stories-applied&quot;&gt;Mike Cohn&#39;s point about the story as a conversation point&lt;/a&gt;.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Projects are about people that get stuff done. Short-term successes of project oriented requirements documentation can be measured by&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;end products for completing one or a group of chunks&lt;/li&gt;
&lt;li&gt;satisfying the person the activity was elicited from&lt;/li&gt;
&lt;/ul&gt;
At the end of the project, you take a breath, see if you did a good job, and then go on to the next project. Goals for project requirements are to&lt;br /&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;complete the project under budget and on-time&lt;/li&gt;
&lt;li&gt;minimize risk during implementation&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;h2&gt;
Process requirements&lt;/h2&gt;
&lt;div&gt;
Requirements for software development or any process decomposition that seeks to uncover better value involves&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;chunks of process descriptions &lt;b&gt;ordered by size and trigger&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;descriptions of data, rules, and process qualities&lt;/li&gt;
&lt;li&gt;context of system&#39;s SLA, other systems, and management systems&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
Here the target audience for the requirements are the developers or implementers of the process. Notes about how the system might print a report or the way that it should work with other systems are useful. The documentation provides a high level of&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;communication&lt;/b&gt; and&lt;/li&gt;
&lt;li&gt;&lt;b&gt;understanding &lt;/b&gt;as a result&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
In a more traditional project, the elicitation starts at the user level with the stakeholders providing what they expect from their point of view. That&#39;s not too much different from the Agile style.&amp;nbsp; User expectations are collected through workshops, interviews, and document inspection. Analysts create testable requirement statements from these.&lt;br /&gt;
&lt;br /&gt;
What should happen next is that &lt;b&gt;the project should be decomposed by use case processes to provide visibility to the business&lt;/b&gt; for what processes are requested and how they function. Often this is skipped and the code and its class diagrams provide enough functional visibility to technical people because of excellent tools. The unfortunate result of passing the buck here is to let the technical staff make business decisions. This also removes quick decision making from the management because it&#39;s been encased in code.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
At the end of the requirements structuring, you can test whether you have done a decent job or not. Short-term successes of process requirements are measured by&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;verifying all requirements are testable&lt;/li&gt;
&lt;li&gt;grouping process chunks to the same granularity&lt;/li&gt;
&lt;li&gt;having one chunk size end with business value being realized&lt;/li&gt;
&lt;li&gt;separating functional from non-functional requirement types&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div&gt;
When you complete the development process, you end up with a product you hope will last for many years through many changes. Goals for process requirements are to maximize&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;adaptation to change through structures with low coupling and high cohesion&lt;/li&gt;
&lt;li&gt;realized business value&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
Combinations&lt;/h2&gt;
&lt;/div&gt;
&lt;div&gt;
If you try to merge the two types of documents or skip either one, you&#39;ll end up creating less quality in your software and less value in your results. The purposes of each type of document should be clear. Project documents tell you when and how much you can build at one time. Process documents tell you where the value is and let you understand how to manage the automated decisions.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Keep the roles and documents focused so you &lt;b&gt;don&#39;t confuse me&lt;/b&gt;. If you need to, the process document can be split up into project friendly pieces so it can be used like a work breakdown structure. I&#39;m of the belief that a goal-driven use case is equivalent to a work package myself. Arrange pieces into iterations with IDs from the use cases based on priority and size or complexity. Track the user stories back to the functional or non-functional pieces.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
If you want to win a soap box derby, ask what the requirements are. Then build your process documents to deliver that value from the high level on down to the design level if you need it. The last step is to build your project document to get your soap box car out the door. Now, go win that race.&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://www.socialitoutbursts.com/feeds/5124266124324089954/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.socialitoutbursts.com/2018/02/writing-requirements-assembly-manual-or.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7580188453882133873/posts/default/5124266124324089954'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7580188453882133873/posts/default/5124266124324089954'/><link rel='alternate' type='text/html' href='http://www.socialitoutbursts.com/2018/02/writing-requirements-assembly-manual-or.html' title='Writing requirements: assembly manual or design manual? Don&#39;t do both, it just confuses me.'/><author><name>Doug Hoff</name><uri>http://www.blogger.com/profile/13575254944704650271</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://1.bp.blogspot.com/-baBBKauj4zo/Wo3rcdsn7nI/AAAAAAAAWRk/YA31ASln-04j0cQuqUhEGzHwoDOCR2hgACLcBGAs/s72-c/soap%2Bbox%2Bderby%2BUML.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7580188453882133873.post-3840766567199831143</id><published>2017-11-26T12:48:00.003-08:00</published><updated>2018-01-31T11:26:57.016-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="business analysis"/><category scheme="http://www.blogger.com/atom/ns#" term="business modeling"/><category scheme="http://www.blogger.com/atom/ns#" term="Business process"/><category scheme="http://www.blogger.com/atom/ns#" term="distributed processes"/><category scheme="http://www.blogger.com/atom/ns#" term="modeling"/><category scheme="http://www.blogger.com/atom/ns#" term="templates"/><category scheme="http://www.blogger.com/atom/ns#" term="UML"/><category scheme="http://www.blogger.com/atom/ns#" term="use case"/><title type='text'>Understanding three use case types in process modeling - not just system or business</title><content type='html'>&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em; text-align: center;&quot;&gt;
&lt;img border=&quot;0&quot; data-original-height=&quot;240&quot; data-original-width=&quot;320&quot; src=&quot;https://1.bp.blogspot.com/-KDcP7ClVS1Q/WnIYGDurnaI/AAAAAAAAWL4/6Wezal2l4kE0fw2BXZz3EhZTMwyZ_G7UgCLcBGAs/s1600/three-devils.jpg&quot; /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;
Use cases give us &lt;b&gt;a detailed understanding of a process&lt;/b&gt; to optimize or build into software. When use cases go bad, and they do, they take up space and no one uses them. I&#39;ve been finding out as I teach them more and more, the main reason people don&#39;t use use cases is for lack of detail. So I&#39;ve built more and more useful detail into the templates that I use for my classes.&lt;/div&gt;
&lt;h2&gt;
Details, details&lt;/h2&gt;
Let&#39;s take just one small entry in the metadata of the use case template: the type of the use case. &lt;b&gt;The type should tell you about&amp;nbsp;the context of the use case. &lt;/b&gt;If your analysts understand the context, there&#39;s no need to include this in the documentation. But analysts are usually given the context of a software system to be built and the context of the project that will be driving that software to be delivered and requirements come from all angles.&lt;br /&gt;
&lt;br /&gt;
I was told there were two types of use cases:&amp;nbsp;&lt;b&gt;system and business&lt;/b&gt;. (I think there&#39;s a different set but that&#39;s coming.) Not enough examples of detailed business use cases with sequential tasks listed in the course of events are being produced. Maybe it&#39;s because we don&#39;t understand how to do it.&lt;br /&gt;
&lt;br /&gt;
One solution to making your job more tolerable and eliminating those confusing and bothersome requirements is to ignore the complex non-system use cases. Another simplifying solution is to just grab the large scope names of the business use cases and not worry about the details. Then there&#39;s the solution that says if it&#39;s important enough to know the details of the software workflow, the business process we&#39;re planning to automate, &lt;b&gt;why isn&#39;t it important to know the details of the business workflows&lt;/b&gt; also? Let&#39;s do that. The devil is in the details.&lt;br /&gt;
&lt;h2&gt;
Two traditional types&lt;/h2&gt;
The first and major type of use case traditionally is&amp;nbsp;&lt;b&gt;the system type &lt;/b&gt;when we design interactions around software. The trigger to the process is when someone or something chooses something from the main menu or a system hits our API. Sometimes, that main menu is a log-in part of the process that protects the value of the use case by keeping unwanted people out and those that we give access to the rights to initiate the use case.&lt;br /&gt;
&lt;br /&gt;
Then there&#39;s &lt;b&gt;the business type&lt;/b&gt;, which from a lack of detailed examples, no one does. I think the best work on doing enterprise analysis to show how UML can be used to draw diagrams that the business doesn&#39;t want to use is Eriksson and Penker&#39;s &lt;a href=&quot;https://www.amazon.com/Business-Modeling-UML-Patterns-Work/dp/0471295515&quot;&gt;Business Modeling with UML - Business Patterns at Work&lt;/a&gt; (2000). These Swedes have a beautiful system that technical people can admire for completeness, details, and symbols that look just like software diagrams. But it&#39;s the business people that need to be drawing, updating, and using these diagrams and they sure don&#39;t want to spend time with UML to do that.&lt;br /&gt;
&lt;br /&gt;
One of my pet peeves is the UML way to draw a business use case. The use case symbol is the ellipse, also known as an oval for the non-technical crew out there. You put the name of the use case in there leaving little space for anything else. Then you draw a diagonal line inside the oval making it look like you had a masking problem with another symbol. And if you followed UML to put the extension points in there as well, you&#39;d have an unreadable ellipse. Let&#39;s just use a stereotype to say &amp;lt;&amp;lt;business&amp;gt;&amp;gt; so that the category is clear when there&#39;s no system boundary box in sight.&lt;br /&gt;
&lt;br /&gt;
Even Erikkson and Penker don&#39;t get down to the level of detail that is important to start with on a business process. But they do &lt;b&gt;a bang up job on high-level structures&lt;/b&gt;. The level of detail that is necessary for a system use case to be useful to build for the developer is fine-grained down to a task level that needs no other explanation.&lt;br /&gt;
&lt;br /&gt;
Maybe we don&#39;t think like Swedes here in America and don&#39;t take the time at a high-level to plan our goals. We think the market is moving much too fast for that and like to do shorter-term planning. Do we see the Swedes competing well in any American market other than build-it-yourself furniture? Like how many people do you know that own a Volvo?&lt;br /&gt;
&lt;h2&gt;
A pure start&lt;/h2&gt;
&lt;div&gt;
Moving on to how I see the process types being divided up, they start with a set of tasks performed by a human. That is what I would call&amp;nbsp;&lt;b&gt;a pure business use case&lt;/b&gt;. This business use case&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;starts when a trigger sets it off,&amp;nbsp;&lt;/li&gt;
&lt;li&gt;moves through a set of sequential tasks,&lt;/li&gt;
&lt;li&gt;&lt;b&gt;ends with significant value&lt;/b&gt; for the business and&amp;nbsp;&lt;/li&gt;
&lt;li&gt;probably has documents created to support it.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div&gt;
There&#39;s value in promoting merchandise, there&#39;s value in making a sale, there&#39;s value in fulfilling a sale, and there&#39;s value in getting payment for a sale. There&#39;s even value in accepting a return for a purchased item.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
There&#39;s &lt;b&gt;no talk of automation&lt;/b&gt; in the pure business use case and if someone wants to use a tool, then that is part of the design for fulfilling the process tasks. That&#39;s what increases efficiency. The task sequence described in the pure business use case is what increases effectiveness. Both can increase value for the business.&lt;br /&gt;
&lt;h2&gt;
System use cases made easy&lt;/h2&gt;
&lt;/div&gt;
&lt;div&gt;
I encourage my students to &lt;b&gt;write their system use cases as pure business use cases&lt;/b&gt; that will be automated by the programmers. That clarifies what types of assumptions they have made about what they will be building. What if we eliminated the design constraints and changed all those &quot;system displays a main menu&quot; types of tasks into a business pure &quot;system prompts for what to do&quot;? Then the system use case turns into a pure business use case and the system role becomes a business role of some sort. I think it&#39;s better to think about how a person might handle the system functionality when writing use cases.&lt;br /&gt;
&lt;br /&gt;
But this next type of use case pops up from every single student that I&#39;ve ever taught and one that lets design elements creep into the use case tasks. It&#39;s expected in many industries because of what they already have accepted before the project began or in other words, elicited as a constraint. So this is called a &lt;b&gt;system with constraints&lt;/b&gt; type.&lt;br /&gt;
&lt;br /&gt;
Students always want to &quot;submit&quot; the data that is collected. They also want to use buttons, keyboards, mice, screens, menus and every other standard GUI option they think is normal. But in doing so, the tasks are now explicitly describing a design that must be used. When a web site is being designed, the design constraint of using a set of web languages and a web server has already been decided. Why should we follow that architecture if the requirements don&#39;t really point us in that direction?&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
So, not to fight the common usage of this type of use case in business, it&#39;s &lt;b&gt;just easier to put a field at the top of the form to capture what the design constraints are&lt;/b&gt; that have already been decided to use before we capture the requirements. The requirements then have the freedom to talk about all those clicks and hovers they want. But let&#39;s call it a system process with constraints.&lt;/div&gt;
&lt;div&gt;
&lt;h2&gt;
Distributed tasks&lt;/h2&gt;
&lt;/div&gt;
&lt;div&gt;
The last type of use case is &lt;b&gt;the distributed use case&lt;/b&gt;, a mix of business and system tasks or different systems, and one that I&#39;ve seen no documentation on. There&#39;s no UML approved designs for it and no discussion about it that I know of. But as soon as I started to do business use cases for a real scenario, it stuck its oddly shaped head up and stopped me from using the other two. I could have changed the business process to manage, but the sequence of activity is so common, it has to be dealt with by changing the way we do the use case.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Another use for the distributed use case is when you have &lt;b&gt;real distributed processes&lt;/b&gt; that are seen as a complete goal and within the scope of&amp;nbsp;development. An example might be when microservices or API calls provide less than a goal value but are integrated in working with a web page to deliver the end result. I do have a problem with creating a use case just to validate an address on the server because that is less than a business goal that a use case should end with.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
The distributed&amp;nbsp;use case &lt;b&gt;does a step or two in one system&lt;/b&gt;, existing or to be developed, and &lt;b&gt;then does a business activity or a different system&#39;s task&lt;/b&gt;, like talking to a person to acquire information. Then it cycles. The process is distributed over two activity flows. Think of ordering at a fast-food restaurant. There the actor initiates the food order and uses an automated system for the customer as an agent or proxy because it is too complex. The process goes like this: the actor-agent&lt;/div&gt;
&lt;div&gt;
&lt;ol&gt;
&lt;li&gt;greets the customer (business task)&lt;/li&gt;
&lt;li&gt;opens a new order (system task)&lt;/li&gt;
&lt;li&gt;asks the customer for their item to order (business task)&lt;/li&gt;
&lt;li&gt;selects the item, enters the quantity, checks for additional questions or restrictions (system task)&lt;/li&gt;
&lt;li&gt;gets needed data from the customer (business task)&lt;/li&gt;
&lt;li&gt;enters extra information (system task)&lt;/li&gt;
&lt;li&gt;informs the customer of information (business task)&lt;/li&gt;
&lt;li&gt;confirms end of order with customer (business task)&lt;/li&gt;
&lt;li&gt;sends order to be processed (system task)&lt;/li&gt;
&lt;li&gt;tells customer the total of the order, how to pick up their order and says goodbye&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
An extension point for optional multiple item order which is clumsily handled by trying to show a loop is better handled by adding the extension point at #8 and sending them back to #3 as an option for the extension &quot;Add another item to order.&quot;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Now the problem is how to diagram that. I propose using two ellipses with&amp;nbsp; &amp;lt;&amp;lt;system&amp;gt;&amp;gt; and &amp;lt;&amp;lt;business&amp;gt;&amp;gt; stereotypes and showing the dependency of the system to the business use case with an &amp;lt;&amp;lt;include&amp;gt;&amp;gt;. The business use case with acknowledge its dependency with a use case name that has a system usage in it. Here&#39;s how it would look:&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://4.bp.blogspot.com/-KQN6-rZ-3-o/WhnhnHD0KSI/AAAAAAAAV5k/541w2cWKSUcXzo7c6w12BCmqGVseVNy3QCLcBGAs/s1600/business-system.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;331&quot; data-original-width=&quot;631&quot; height=&quot;332&quot; src=&quot;https://4.bp.blogspot.com/-KQN6-rZ-3-o/WhnhnHD0KSI/AAAAAAAAV5k/541w2cWKSUcXzo7c6w12BCmqGVseVNy3QCLcBGAs/s640/business-system.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
The diagram also shows that it is possible to do an entirely business use case to take an order and then later, do an entirely system use case to create the order.&lt;/div&gt;
&lt;h2&gt;
Course of events layout&lt;/h2&gt;
&lt;div&gt;
You might think this distribution would cause &lt;b&gt;some confusion in the course of events&lt;/b&gt;. There are some issues. But the first thing to do is to label the actor correctly, the one whose only job is to initiate the use case, and then add those other supporting roles, aka &quot;supporting actors&quot;, as the customer and the system.&lt;br /&gt;
&lt;br /&gt;
Maybe a two column layout would be better to separate what the business use case has different from the steps in the system use case. That way you wouldn&#39;t have to duplicate the system use case as a distinct use case when it copies the steps from the business use case. Or just make sure you put what use cases are included at the top in the metadata and manually keep them in sync.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
But for now, this reorganization of use case types massively helps my ability to model real life business use cases and I hope helps those who would like to document their business processes. Having an understanding that the use case &lt;b&gt;starts with pure business functionality&lt;/b&gt; clarifies what a basic use case is about. Then as we automate some portions or all of it, the type of the use case changes and clarifies how to model it.&lt;/div&gt;
&lt;div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://www.socialitoutbursts.com/feeds/3840766567199831143/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.socialitoutbursts.com/2017/11/understanding-three-use-case-types-in.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7580188453882133873/posts/default/3840766567199831143'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7580188453882133873/posts/default/3840766567199831143'/><link rel='alternate' type='text/html' href='http://www.socialitoutbursts.com/2017/11/understanding-three-use-case-types-in.html' title='Understanding three use case types in process modeling - not just system or business'/><author><name>Doug Hoff</name><uri>http://www.blogger.com/profile/13575254944704650271</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://1.bp.blogspot.com/-KDcP7ClVS1Q/WnIYGDurnaI/AAAAAAAAWL4/6Wezal2l4kE0fw2BXZz3EhZTMwyZ_G7UgCLcBGAs/s72-c/three-devils.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7580188453882133873.post-4969044636681793580</id><published>2017-05-25T15:11:00.000-07:00</published><updated>2017-05-26T07:55:05.555-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Bootstrap"/><category scheme="http://www.blogger.com/atom/ns#" term="CSS"/><category scheme="http://www.blogger.com/atom/ns#" term="flat file generator"/><category scheme="http://www.blogger.com/atom/ns#" term="Handlebars"/><category scheme="http://www.blogger.com/atom/ns#" term="JavaScript"/><category scheme="http://www.blogger.com/atom/ns#" term="JSP"/><category scheme="http://www.blogger.com/atom/ns#" term="Panini"/><category scheme="http://www.blogger.com/atom/ns#" term="php"/><category scheme="http://www.blogger.com/atom/ns#" term="SCSS"/><category scheme="http://www.blogger.com/atom/ns#" term="Semantic UI"/><category scheme="http://www.blogger.com/atom/ns#" term="static site generator"/><category scheme="http://www.blogger.com/atom/ns#" term="WebAssembly"/><category scheme="http://www.blogger.com/atom/ns#" term="YAML"/><category scheme="http://www.blogger.com/atom/ns#" term="Zurb Foundation"/><title type='text'>A static new web site - Zurb&#39;s Foundation with Panini</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://1.bp.blogspot.com/-LRkA5REMrQQ/WSdXTXEQkBI/AAAAAAAAUP8/zwOyI06J66INFq7n1h-36NLcPI-sPHSYACLcB/s1600/yeti.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;249&quot; data-original-width=&quot;262&quot; src=&quot;https://1.bp.blogspot.com/-LRkA5REMrQQ/WSdXTXEQkBI/AAAAAAAAUP8/zwOyI06J66INFq7n1h-36NLcPI-sPHSYACLcB/s1600/yeti.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
I&#39;ve been meaning to update &lt;a href=&quot;http://doughoff.com/&quot;&gt;my personal web site&lt;/a&gt; over the last ten years but just never got around to it. The web evolved. My site has been through basic html, custom php, custom JSP and Java filters, and one attempt at using a CSS framework called &lt;a href=&quot;https://semantic-ui.com/&quot;&gt;Semantic UI&lt;/a&gt;. The defining moment of need for change was when my web host was attacked by hackers in a DDOS attack lasting over a week.&lt;br /&gt;
&lt;h3&gt;
Analysis&lt;/h3&gt;
It wasn&#39;t something I could spend a lot of time maintaining so spinning up Spring, WordPress or another unreasonably complex framework that I didn&#39;t need wasn&#39;t the answer. I had &lt;b&gt;several basic requirements&lt;/b&gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;Very low and easy maintenance&lt;/li&gt;
&lt;li&gt;High data use for link pages&lt;/li&gt;
&lt;li&gt;Cutting edge technology I can teach&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;CSS transpiler&lt;/li&gt;
&lt;li&gt;JavaScript transpiler if possible&lt;/li&gt;
&lt;li&gt;CSS/JS framework&lt;/li&gt;
&lt;/ul&gt;
&lt;/ol&gt;
&lt;div&gt;
A few requirements were worth noting as &lt;b&gt;negative requirements&lt;/b&gt;:&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;No need for security&lt;/li&gt;
&lt;li&gt;No need for tracking state&lt;/li&gt;
&lt;li&gt;No need to collect data&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
Design&lt;/h3&gt;
&lt;div&gt;
The client-side frameworks getting all the buzz like &lt;a href=&quot;https://angular.io/&quot;&gt;Google&#39;s Angular&lt;/a&gt; and &lt;a href=&quot;https://facebook.github.io/react/&quot;&gt;Facebook&#39;s React &lt;/a&gt;were slanted towards developing mobile sites and that was not where I was going since it adds so much complexity to the site. I had thought more along the lines of a &lt;a href=&quot;https://martinfowler.com/articles/serverless.html&quot;&gt;serverless architecture&lt;/a&gt;&amp;nbsp;but it looks like that is more bleeding edge. But it was simple. Or it will be at least in a few years.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
I love that the &lt;a href=&quot;http://webassembly.org/&quot;&gt;WebAssembly&lt;/a&gt; team is moving along with a&lt;a href=&quot;http://webassembly.org/demo/&quot;&gt; new game demo&lt;/a&gt;&amp;nbsp;and no need to use Google Canary, but&amp;nbsp;will have to face committees and meetings for probably another five to fifty years. But the end product will be a compiled client for browsers based on client-side frameworks just beginning to explore that territory.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
The other framework style I decided to investigate was the static site generator. I could have static data files, static pages in template form and generate the pages as I had updates. No server side language. It&#39;s the perfect development workflow when you have no need for complex forms which is typical of a marketing site or a blog.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;a href=&quot;https://jekyllrb.com/&quot;&gt;Jekyll &lt;/a&gt;was the big contender but I didn&#39;t want to deal with Ruby. Hexo seemed like a possibility but it uses &lt;a href=&quot;http://www.embeddedjs.com/&quot;&gt;ejs templating&lt;/a&gt; which seems so dated. I liked&amp;nbsp;&lt;a href=&quot;https://mustache.github.io/&quot;&gt;mustache styled templates&lt;/a&gt; after teaching and trying all sorts of templating styles. But I was running in circles investigating the various popular frameworks at &lt;a href=&quot;https://www.staticgen.com/&quot;&gt;StaticGen &lt;/a&gt;which ranks them and allows me to compare them easily, No solution yet.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
So the next strategy was to ignore that and look at my CSS framework. It was going to be either &lt;a href=&quot;http://getbootstrap.com/&quot;&gt;Twitter Bootstrap&lt;/a&gt; or &lt;a href=&quot;http://foundation.zurb.com/&quot;&gt;Zurb Foundation&lt;/a&gt;. I&#39;ve had enough problems in class with getting around Bootstrap&#39;s site and using a simple template that it wasn&#39;t my first choice. And the fact that it&#39;s harder to read and has fewer JavaScript components than Foundation was why I decided on Zurb.&lt;/div&gt;
&lt;h3&gt;
Development&lt;/h3&gt;
&lt;div&gt;
The thing I never noticed was that Zurb&#39;s developers use their own static site generator (they say flat file generator) called &lt;a href=&quot;http://foundation.zurb.com/sites/docs/panini.html&quot;&gt;Panini &lt;/a&gt;with Foundation to build all their web sites. I like anyone who &lt;a href=&quot;https://en.wikipedia.org/wiki/Eating_your_own_dog_food&quot;&gt;eats their own dog food&lt;/a&gt;. It&#39;s simple and uses &lt;a href=&quot;http://handlebarsjs.com/&quot;&gt;Handlebars&lt;/a&gt;&amp;nbsp;templating, &lt;a href=&quot;http://sass-lang.com/&quot;&gt;SCSS&lt;/a&gt;, and either JSON or &lt;a href=&quot;https://en.wikipedia.org/wiki/YAML&quot;&gt;YAML &lt;/a&gt;formats for data. I installed it with &lt;a href=&quot;https://github.com/zurb/foundation-cli&quot;&gt;Foundation&#39;s CLI&lt;/a&gt; and after two days of learning Handlebars and YAML, I was hooked. The Foundation CSS and JavaScript isn&#39;t that important to structure the site and will be added more in the future.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://2.bp.blogspot.com/-HKb3KC-mll8/WSdHcUFLTHI/AAAAAAAAUPI/E5aw05wIr2kkbv1lDuH9B0KkFckn2JvxQCEw/s1600/card.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;421&quot; data-original-width=&quot;586&quot; height=&quot;285&quot; src=&quot;https://2.bp.blogspot.com/-HKb3KC-mll8/WSdHcUFLTHI/AAAAAAAAUPI/E5aw05wIr2kkbv1lDuH9B0KkFckn2JvxQCEw/s400/card.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
My pages are just simple combinations of cards for now. On a partial (included) page component, I have two Handlebars&amp;nbsp;loops producing multiple cards with multiple links on them. Logic in Handlebars lets me work with data optionally.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
The responsive flow of the HTML5 &lt;a href=&quot;https://www.w3schools.com/css/css3_multiple_columns.asp&quot;&gt;multiple columns&lt;/a&gt;&amp;nbsp;is simple and not based on any grid. I&#39;ll be refactoring the style attributes out of there eventually so I can use better SCSS style management and using much more of the CSS from Foundation but for now the default styling is adequate.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://2.bp.blogspot.com/-4P0jrHJN35A/WSdTAiuF_sI/AAAAAAAAUPw/gAmiaXd21885XrM7Ex9NtckcBuRLXuyQACLcB/s1600/page.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;61&quot; data-original-width=&quot;172&quot; src=&quot;https://2.bp.blogspot.com/-4P0jrHJN35A/WSdTAiuF_sI/AAAAAAAAUPw/gAmiaXd21885XrM7Ex9NtckcBuRLXuyQACLcB/s1600/page.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
The partial page that holds the card component is only just a shell that declares the right data file and itself is included in a basic page layout template. The data is inserted when I build the file. Panini spins up a development server with &lt;a href=&quot;https://www.browsersync.io/&quot;&gt;BrowserSync &lt;/a&gt;to update the pages as I change the html (but not the data so far, I think I can tweak that though. &lt;i&gt;Update - Kevin Ball of Zurb made the change to the Gulp file which takes care of this. Thanks for being very responsive!)&lt;/i&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://1.bp.blogspot.com/-ikAag8P7fJQ/WSdLM1A22KI/AAAAAAAAUPg/iaXnxZW6eFwSwNyFhFsy17w8gDmOntkhgCLcB/s1600/data.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;233&quot; data-original-width=&quot;473&quot; height=&quot;157&quot; src=&quot;https://1.bp.blogspot.com/-ikAag8P7fJQ/WSdLM1A22KI/AAAAAAAAUPg/iaXnxZW6eFwSwNyFhFsy17w8gDmOntkhgCLcB/s320/data.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
And the YAML data is easily understood, updated, and the schema customized just like a NoSQL style database. It has minimal delimiters and uses indentation for nesting. If you are off by one space, though, you will get some odd error messages when you try to view the page.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
The final Gulp build combines all the CSS in one file, and all the JavaScript in one file so there will be minimal downloads and also does image compression.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
It&#39;s a slick set of tools made as easy as possible for the flexibility that you get. I might be tacking on some JavaScript code to log sites that don&#39;t respond or collect other data especially from forms. I&#39;d have to combine this with my local site and regenerate it again. But for now, it&#39;s fun again. Hopefully, this will last another ten years.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://www.socialitoutbursts.com/feeds/4969044636681793580/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.socialitoutbursts.com/2017/05/a-static-new-web-site-zurbs-foundation.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7580188453882133873/posts/default/4969044636681793580'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7580188453882133873/posts/default/4969044636681793580'/><link rel='alternate' type='text/html' href='http://www.socialitoutbursts.com/2017/05/a-static-new-web-site-zurbs-foundation.html' title='A static new web site - Zurb&#39;s Foundation with Panini'/><author><name>Doug Hoff</name><uri>http://www.blogger.com/profile/13575254944704650271</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://1.bp.blogspot.com/-LRkA5REMrQQ/WSdXTXEQkBI/AAAAAAAAUP8/zwOyI06J66INFq7n1h-36NLcPI-sPHSYACLcB/s72-c/yeti.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7580188453882133873.post-6234173836195011021</id><published>2016-10-31T11:39:00.002-07:00</published><updated>2016-10-31T11:39:31.644-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="AngularJS"/><category scheme="http://www.blogger.com/atom/ns#" term="WebAssembly"/><title type='text'>Lunch Seminar: Thu Nov 3 - Is Angular the future of web development? WebAssembly is coming.</title><content type='html'>&lt;a href=&quot;https://3.bp.blogspot.com/-Cq96VILJros/WBePlvZwQCI/AAAAAAAAShc/3ZbuyFPg3hQBCPXk5VAqv056xiBk1H_aQCLcB/s1600/angular.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; src=&quot;https://3.bp.blogspot.com/-Cq96VILJros/WBePlvZwQCI/AAAAAAAAShc/3ZbuyFPg3hQBCPXk5VAqv056xiBk1H_aQCLcB/s200/angular.png&quot; width=&quot;196&quot; /&gt;&lt;/a&gt;If you are interested in my last blog, &lt;a href=&quot;http://www.socialitoutbursts.com/2016/09/is-angular-future-of-web-development.html&quot;&gt;Is Angular the future of web development? WebAssembly is coming&lt;/a&gt;, then you might be interested in my presentation of the architectural topic with more detail at my school here in Kansas City, Centriq Training.&amp;nbsp;&lt;a href=&quot;https://www.eventbrite.com/e/angularweb-assembly-lunch-and-learn-at-centriq-tickets-28260687477&quot;&gt;Sign up at the event site.&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
The talk lasts about 2 hours and a free lunch is provided. I think strategic technical planners will get lots of value out of the overview.</content><link rel='replies' type='application/atom+xml' href='http://www.socialitoutbursts.com/feeds/6234173836195011021/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.socialitoutbursts.com/2016/10/lunch-seminar-thu-nov-3-is-angular.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7580188453882133873/posts/default/6234173836195011021'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7580188453882133873/posts/default/6234173836195011021'/><link rel='alternate' type='text/html' href='http://www.socialitoutbursts.com/2016/10/lunch-seminar-thu-nov-3-is-angular.html' title='Lunch Seminar: Thu Nov 3 - Is Angular the future of web development? WebAssembly is coming.'/><author><name>Doug Hoff</name><uri>http://www.blogger.com/profile/13575254944704650271</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://3.bp.blogspot.com/-Cq96VILJros/WBePlvZwQCI/AAAAAAAAShc/3ZbuyFPg3hQBCPXk5VAqv056xiBk1H_aQCLcB/s72-c/angular.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7580188453882133873.post-5734421761090048449</id><published>2016-09-23T10:52:00.002-07:00</published><updated>2016-09-25T12:07:52.222-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="AngularJS"/><category scheme="http://www.blogger.com/atom/ns#" term="AngularJS 2"/><category scheme="http://www.blogger.com/atom/ns#" term="enterprise architecture"/><category scheme="http://www.blogger.com/atom/ns#" term="execution environments"/><category scheme="http://www.blogger.com/atom/ns#" term="future"/><category scheme="http://www.blogger.com/atom/ns#" term="jQuery"/><category scheme="http://www.blogger.com/atom/ns#" term="LESS"/><category scheme="http://www.blogger.com/atom/ns#" term="maturity"/><category scheme="http://www.blogger.com/atom/ns#" term="process"/><category scheme="http://www.blogger.com/atom/ns#" term="SASS"/><category scheme="http://www.blogger.com/atom/ns#" term="SCSS"/><category scheme="http://www.blogger.com/atom/ns#" term="Software development process"/><category scheme="http://www.blogger.com/atom/ns#" term="SPA"/><category scheme="http://www.blogger.com/atom/ns#" term="TypeScript"/><category scheme="http://www.blogger.com/atom/ns#" term="web development"/><category scheme="http://www.blogger.com/atom/ns#" term="WebAssembly"/><title type='text'>Is Angular the future of web development? WebAssembly is coming.</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://4.bp.blogspot.com/-L692SXlr0gg/V-VTK3p9jXI/AAAAAAAARm0/rYvwWKrhkXQpBFNHOayReWU_VUpCspprwCLcB/s1600/samsung-fridge.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://4.bp.blogspot.com/-L692SXlr0gg/V-VTK3p9jXI/AAAAAAAARm0/rYvwWKrhkXQpBFNHOayReWU_VUpCspprwCLcB/s320/samsung-fridge.png&quot; width=&quot;196&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
Web development has passed through three major architecture patterns. And a fourth is on the way which will add more choices for designers and keep developers busy as they blend the types both by design and confusion.&lt;br /&gt;
&lt;br /&gt;
Google&#39;s Angular framework is an example of the latest style of architecture and with the release of &lt;a href=&quot;https://angular.io/&quot;&gt;Angular 2.0 &lt;/a&gt;has demonstrated that the &lt;a href=&quot;https://en.wikipedia.org/wiki/Single-page_application&quot;&gt;Single Page Application&lt;/a&gt; is getting easier to develop. But it&#39;s not just another framework. It&#39;s on the architectural path that the web is taking in general. The question I want to address is whether or not Angular will be a long-term solution for the web. In doing so, the choices will become clearer how other styles are appropriate or not based on business needs.&lt;br /&gt;
&lt;h3&gt;
The early server side web site&lt;/h3&gt;
&lt;div&gt;
The 1.0 web, a term used after the web had evolved some, was the basic setup where the developer created pages in a text editor, loaded them on the web server, and a browser requested them for viewing. That&#39;s it at a high level. There were millions of documents that were available but no search engine like we have today. Directories indexed files like librarians cataloged books. Most of the cutting edge activity occurred through the 1990&#39;s but business and other people learned how to make static web pages well into the 2000&#39;s.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://2.bp.blogspot.com/-VkYFZga49No/V-VNOzpFgqI/AAAAAAAARmI/nh-mi__FBuojjr3l0FxHV78Q-itz95NpwCLcB/s1600/web1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;112&quot; src=&quot;https://2.bp.blogspot.com/-VkYFZga49No/V-VNOzpFgqI/AAAAAAAARmI/nh-mi__FBuojjr3l0FxHV78Q-itz95NpwCLcB/s400/web1.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;caption&quot;&gt;
Web 1.0 - Development workflow for static web pages&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
As web servers evolved to handle more and more processing besides just delivering pages to viewers, form processing, state management, and templating systems increased in complexity. Eventually, the server became the point where pages were built using a favored language injecting data stored in a data base. .NET, Java, and especially php were the dominant processing languages for creating a dynamic web site refreshing the page for every viewer and every request.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://2.bp.blogspot.com/-Ih6nSXK3MVE/V-VNdy8g2UI/AAAAAAAARmM/VwKhpYpdC5IbCoVBd5qLkYJ1gfd94goTQCLcB/s1600/web2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;231&quot; src=&quot;https://2.bp.blogspot.com/-Ih6nSXK3MVE/V-VNdy8g2UI/AAAAAAAARmM/VwKhpYpdC5IbCoVBd5qLkYJ1gfd94goTQCLcB/s400/web2.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;caption&quot;&gt;
Web 2.0 - Dynamic web site with server side page generation and client side JavaScript UI
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
This style I associate with the &lt;a href=&quot;https://en.wikipedia.org/wiki/Web_2.0&quot;&gt;Web 2.0&lt;/a&gt; name, has been the driving enterprise architecture since the 2000&#39;s and continues to dominate page generation for most corporate web sites. The web server has enlarged its scope of functionality to add features that caused the name change from web server to application server on the Java side. The Microsoft side just adds features. And now &lt;a href=&quot;https://www.nginx.com/&quot;&gt;nginx&lt;/a&gt; is becoming the dominant web server, taking over Apache&#39;s httpd server lead as the top dog for handling web requests, due to its speed and low or no cost.&lt;/div&gt;
&lt;h3&gt;
The web 1.0 returns&lt;/h3&gt;
&lt;div&gt;
The architecture where the web server does no web page processing may seem like a historical starting point of design but it&#39;s really a better solution for achieving the fastest possible speed for a page request. Other use cases emerged in the last few years that put typical Web 2.0 server processing operations in the development workflow instead of the on-request process occurring during the page request.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
For instance, if you have no or little updating to do on your web site, say once a month like many blogs need to do, you don&#39;t need to provide an up to the minute current state of the web page provided by processing out the page on every request. The hack that added complexity to the design to overcome that problem was caching but it has issues, so much so, that the recent &lt;a href=&quot;https://en.wikipedia.org/wiki/Cache_manifest_in_HTML5&quot;&gt;HTML5 caching&lt;/a&gt; proposal has been shelved.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
The easier solution is to create the pages in the development phase once or as needed by the business, upload them to the server and not do any page building on the server. This is called &lt;a href=&quot;https://www.staticgen.com/&quot;&gt;static site generation&lt;/a&gt; and can be achieved will any language. Templates, JavaScript, CSS, and any kind of technology can be used and the user will only get the fastest possible delivery.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;caption&quot;&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://3.bp.blogspot.com/-9A4QpTh8UDY/V-VlV6bvIbI/AAAAAAAARnE/8ApDxgH9AQM7GYfrdJT-WckrByNRlpIbQCLcB/s1600/web1static.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;148&quot; src=&quot;https://3.bp.blogspot.com/-9A4QpTh8UDY/V-VlV6bvIbI/AAAAAAAARnE/8ApDxgH9AQM7GYfrdJT-WckrByNRlpIbQCLcB/s320/web1static.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
Web 1.0 - Development workflow for static site generation&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Other types of non-server processing workflows in the development cycle can be cobbled together with tools to advance the poor state of affairs with the old technologies of CSS and JavaScript. Recent advances to help build better, faster, more scalable code have resulted in multiple languages to transpile, or convert into another language, new languages like &lt;a href=&quot;http://coffeescript.org/&quot;&gt;CoffeeScript&lt;/a&gt;, &lt;a href=&quot;https://babeljs.io/&quot;&gt;Babel&lt;/a&gt;, and especially &lt;a href=&quot;http://www.typescriptlang.org/&quot;&gt;TypeScript &lt;/a&gt;to JavaScript. &lt;a href=&quot;http://lesscss.org/&quot;&gt;LESS&lt;/a&gt;, &lt;a href=&quot;http://sass-lang.com/&quot;&gt;SCSS and SASS&lt;/a&gt; are the leading languages to transpile into CSS providing an easier set of style rules to update and manage.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://1.bp.blogspot.com/-IwR0lYpOgHI/V-VN2OWQltI/AAAAAAAARmU/gknQ6UlHG1Ukp5UHuq1L635RhGuxOhbHQCLcB/s1600/web1css.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;168&quot; src=&quot;https://1.bp.blogspot.com/-IwR0lYpOgHI/V-VN2OWQltI/AAAAAAAARmU/gknQ6UlHG1Ukp5UHuq1L635RhGuxOhbHQCLcB/s400/web1css.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;caption&quot;&gt;
Web 1.0 - Development workflow for CSS
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://3.bp.blogspot.com/-hQWof2ZNybQ/V-VN9DfcZVI/AAAAAAAARmc/rCFFGFN0Ha89F8NSrH5gXs-DIcf5CSNBgCLcB/s1600/web1js.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;181&quot; src=&quot;https://3.bp.blogspot.com/-hQWof2ZNybQ/V-VN9DfcZVI/AAAAAAAARmc/rCFFGFN0Ha89F8NSrH5gXs-DIcf5CSNBgCLcB/s400/web1js.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;caption&quot;&gt;
Web 1.0 - Development workflow for JavaScript
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
My personal favorite tool I use in my development classes for these types of enhancements is Microsoft&#39;s &lt;a href=&quot;https://code.visualstudio.com/&quot;&gt;Visual Studio Code&lt;/a&gt; due to its great support for TypeScript and extensions that keep me from making a patchwork of grunt script calls to JavaScript packages. But JetBrains&#39; &lt;a href=&quot;https://www.jetbrains.com/webstorm/&quot;&gt;WebStorm &lt;/a&gt;might be my pick if I were a paid programmer because of the amazing feature set it has.&lt;/div&gt;
&lt;h3&gt;
The mobile 3.0 web app&lt;/h3&gt;
&lt;div&gt;
So as the browser expanded to handle the needs of providing the user with a better experience, the renderer sped up, and the JavaScript engine sped up immensely, making game developers much happier. JavaScript&#39;s ability to process so much so fast enabled the UI of a web site to support a full application and add more features like the web server did. Mobile phones and tablets were trying to provide the same experience but with less bandwidth so the round trip to the server to pick up resources was not a good idea.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://3.bp.blogspot.com/-X9kvzi9I8YY/V-VONPqnCrI/AAAAAAAARmg/uGM1qAzTsOwOnu4EjtmJ-dISrGuCOpOWwCLcB/s1600/web3.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;190&quot; src=&quot;https://3.bp.blogspot.com/-X9kvzi9I8YY/V-VONPqnCrI/AAAAAAAARmg/uGM1qAzTsOwOnu4EjtmJ-dISrGuCOpOWwCLcB/s400/web3.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;caption&quot;&gt;
Web 3.0 - Web app with client side execution using scripts
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
The transfer of resources and the processing of them on the browser was the ideal and then managing all the operations of an application except for supplemental data access and security became the goal. Even those services are outsourced leaving the application with the ability to be wrapped in a hybrid application shell like &lt;a href=&quot;http://ionicframework.com/&quot;&gt;Ionic&lt;/a&gt;&amp;nbsp;so it could be deployed using a marketplace service from Apple or Google. Google recognized the need for outsourcing the basic non-client services and has been putting a lot of effort into their &lt;a href=&quot;https://firebase.google.com/&quot;&gt;Firebase &lt;/a&gt;project.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
The UI operations handled previously by a proprietary technology like a Java applet, Silverlight, or Flash, now with the demise of &amp;nbsp;those non-stardard add-ons, have to be managed with the only possible solution on the browser of JavaScript. But our ability to do full fledged client-based applications is increasing as we are able to produce better code for application building libraries.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Angular is that new kind of application framework that has finally figured out a blended solution for how to take bundled resources of HTML, CSS, and JavaScript and manage the user interaction on the browser so that no server side page building needs to occur. It uses a library of components to interact with for the app that you build into a browser&#39;s web page. Now it&#39;s a web app and not a web site. The routing, controller logic, data binding, and templating are all features of its client side framework that creates the single page application.&lt;/div&gt;
&lt;h3&gt;
Execution environment maturity&lt;/h3&gt;
&lt;div&gt;
An execution environment is anywhere where code runs under a controlled context. for example, the database server has stored procedures, the mainframe has COBOL apps, the midrange computers have RPG programs, PCs have Windows and Macintosh apps, and phones and tablets have proprietary apps. Even embedded systems are under the control of a type of small to large chassis that takes care of the computing such as an ATM machine, a cash register, or a flight recorder. We&#39;re seeing the flourishing of familiar development environments Linux and Windows for&amp;nbsp;&lt;a href=&quot;https://en.wikipedia.org/wiki/Arduino&quot;&gt;Arduino&lt;/a&gt; and &lt;a href=&quot;https://www.raspberrypi.org/&quot;&gt;Raspberry Pi&lt;/a&gt; single board processors.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
But the systems evolved as did other execution environments. Code structures all started with a basic script. Then the code became structured with reusable functions. And then libraries evolved to package up groups of cohesive operations. And then those scripts became faster by compiling and building the code into a machine readable format. This is the maturity cycle that has happened and is happening with web languages.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
The browser is an embedded execution environment. It runs under another execution environment but by a set of standards that allows for the same results to be expected from any OS and any brand of browser. The standards allow us to see the browser as a viable execution environment to code to. It&#39;s even possible to provide the browser execution environment without an OS as we&#39;ve seen with the introduction of the &lt;a href=&quot;https://www.google.com/chromebook/&quot;&gt;Chromebook&lt;/a&gt;.&lt;/div&gt;
&lt;h3&gt;
The final stage of web programming&lt;/h3&gt;
&lt;div&gt;
So with the emergence of client side programming on the web, we have begun the full acceptance of the web browser as an execution environment which supports the mobile crowd well. We will see the maturity of the &lt;a href=&quot;http://webcomponents.org/&quot;&gt;Web Components&lt;/a&gt; ideas both supported by and combined with JavaScript frameworks for many years to come. &lt;a href=&quot;https://www.polymer-project.org/1.0/&quot;&gt;Polymer&lt;/a&gt; is an excellent example of this. The Angular framework now looks like a jQuery UI plug in framework for browser apps and will continue to grow with more &quot;plug-in&quot; libraries like the current &lt;a href=&quot;https://material.angularjs.org/latest/&quot;&gt;Angular Material&lt;/a&gt; project.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
But the final 4.0 step will be when we convert our JavaScript code into compiled code. This is now on the blackboard. It&#39;s called &lt;a href=&quot;https://webassembly.github.io/&quot;&gt;WebAssembly&lt;/a&gt;. We will keep our browser JavaScript APIs only they will be available to us in every major language like C#, Java, VB, php, and of course, JavaScript. Then we will compile our code down to the WebAssembly format and load it on the browser. All major browsers have committed to supporting this standard so they will add an engine to execute the code replacing the JavaScript engine&#39;s functionality increasing the speed of our apps around 10 times.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://3.bp.blogspot.com/-r5kUx4lcuB0/V-VOXNkrWgI/AAAAAAAARmk/jq0ETtsYZsIn_7ShAN5LJ1nE6E3CjRd4gCLcB/s1600/web4.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;192&quot; src=&quot;https://3.bp.blogspot.com/-r5kUx4lcuB0/V-VOXNkrWgI/AAAAAAAARmk/jq0ETtsYZsIn_7ShAN5LJ1nE6E3CjRd4gCLcB/s400/web4.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;caption&quot;&gt;
Web 4.0 - Web app with client side execution using compiled code&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
The structures of client-side development that we are designing will all be stable and useful but the code will be done in Visual Studio or Eclipse and new IDEs. I am guessing that the ability to start doing this kind of work will be in another four years or about 2020.&lt;br /&gt;
&lt;div&gt;
&lt;h3&gt;
Angular&#39;s future&lt;/h3&gt;
So, does this mean that Angular will fade away? Not likely since it&#39;s been the trailblazer for a successful framework in JavaScript. I expect to see clones in most languages for WebAssembly like Jangular and Nangular as they might be called. But the dominance of JavaScript as a primary language, the need for TypeScript, and the requirement to know the JavaScript set of development tools are all going to be less important in the near future.&lt;br /&gt;
&lt;br /&gt;
I&#39;m excited for the future of the web. It&#39;s not the web as we knew it. It&#39;s a new development environment that will influence other environments such as television and other places where we might see an embedded browser execution environment. Maybe we&#39;ll see new types of hardware environments emerging that tailor to VR instead of just putting the browser to poor use on our &lt;a href=&quot;http://www.samsung.com/us/explore/family-hub-refrigerator/&quot;&gt;web-enabled refrigerator&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Whatever it is going to be, we can be assured that the browser has blossomed fully as a development environment and the rate of design change and churn of projects related to that will slow considerably. The design choices are stable, the languages are looking stable and it&#39;s time to mature our processes surrounding the use of the web.&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://www.socialitoutbursts.com/feeds/5734421761090048449/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.socialitoutbursts.com/2016/09/is-angular-future-of-web-development.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7580188453882133873/posts/default/5734421761090048449'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7580188453882133873/posts/default/5734421761090048449'/><link rel='alternate' type='text/html' href='http://www.socialitoutbursts.com/2016/09/is-angular-future-of-web-development.html' title='Is Angular the future of web development? WebAssembly is coming.'/><author><name>Doug Hoff</name><uri>http://www.blogger.com/profile/13575254944704650271</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://4.bp.blogspot.com/-L692SXlr0gg/V-VTK3p9jXI/AAAAAAAARm0/rYvwWKrhkXQpBFNHOayReWU_VUpCspprwCLcB/s72-c/samsung-fridge.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7580188453882133873.post-9058412411356323618</id><published>2016-08-29T14:53:00.002-07:00</published><updated>2016-08-29T14:55:28.941-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="business analysis"/><category scheme="http://www.blogger.com/atom/ns#" term="completeness"/><category scheme="http://www.blogger.com/atom/ns#" term="project management"/><category scheme="http://www.blogger.com/atom/ns#" term="software testing"/><category scheme="http://www.blogger.com/atom/ns#" term="test driven development"/><category scheme="http://www.blogger.com/atom/ns#" term="testability"/><title type='text'>Complete testability - analysis quality essentials for the confused</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://upload.wikimedia.org/wikipedia/en/2/2b/E8_roots_zome.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://upload.wikimedia.org/wikipedia/en/2/2b/E8_roots_zome.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
Requirements are usually described as having an intertwined bunch of qualities we aspire to have. In reality, it ends up like a person admonishing you to &lt;b&gt;lead a good life&lt;/b&gt;. Engineers took a lot of time listing these qualities out in documents like the IEEE Standard 830-1998 superseded by the more impressive &lt;a href=&quot;https://standards.ieee.org/findstds/standard/29148-2011.html&quot;&gt;29148-2011&lt;/a&gt;&amp;nbsp;defining qualities like&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;measurable&lt;/li&gt;
&lt;li&gt;testable&lt;/li&gt;
&lt;li&gt;consistent&lt;/li&gt;
&lt;li&gt;correct&lt;/li&gt;
&lt;li&gt;complete&lt;/li&gt;
&lt;li&gt;unambiguous&lt;/li&gt;
&lt;li&gt;ranked&lt;/li&gt;
&lt;li&gt;modifiable&lt;/li&gt;
&lt;li&gt;traceable&lt;/li&gt;
&lt;li&gt;feasible&lt;/li&gt;
&lt;li&gt;independent&lt;/li&gt;
&lt;li&gt;necessary&lt;/li&gt;
&lt;li&gt;non-redundant&lt;/li&gt;
&lt;li&gt;terse&lt;/li&gt;
&lt;li&gt;understandable&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
Most people don&#39;t want to take the time to assess a list of qualities like those on a set of a thousand requirement statements, nor do they think it has any value. They&#39;re right but they probably don&#39;t know why. They want their requirements to lead a good life, but there&#39;s so many options it&#39;s hard to focus. Here&#39;s some advice to help people focus.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
The two most important qualities of requirements that are useful to keep in your head as you write documents for projects are easy. All the others are dependent most likely when these two are followed. All the important documents for modeling requirements are covered when these two are followed. The ability for the documents to be understandable and communicate well will be enforced when the two qualities are paid attention to.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
The qualities we seek to promote to the top of our analysis minds are testability and completeness. Let&#39;s call it &lt;b&gt;complete testability&lt;/b&gt; for short. They have the most value for peer reviews because they are easily remembered. And they handle the different levels of granularity well addressing the needs of the single requirement task as well as the larger requirements in scenarios and entire projects.&lt;/div&gt;
&lt;h3&gt;
Testability per requirement&lt;/h3&gt;
&lt;div&gt;
To be testable &lt;b&gt;we must be able to write a test&lt;/b&gt; for a requirement. If we say we are going to arrive at work, we can&#39;t test that because we don&#39;t have a metric to measure by. Business people have seen that kind of task irresponsibility led by vague promises and the need for follow-up at a specific time or day. An assigned task requires a test to see if it was completed. &amp;nbsp;Those metrics have to be known ahead of time.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
If we say we are going to arrive at work and our only metric is that of time we have to give some sort of unit and measurement to the test. That unit is in minutes and that measurement will be at 8 am. Now I can send someone to my office and have them check to see if within one minute I show up at the office at 8 am. Test done.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Tests can not be formed from a requirement that is negative unless there is a constraint involved. If you said you will not be at work today, you have a negative requirement to test but limited by a time constraint. Still, a person would have to spend the entire day waiting for the event to happen from 8 am to 5 pm just in case you showed up for one minute to invalidate the test. There would be no end to the test if there were no constraint so no final test result would occur.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
So a test requires both a positive event and a way to measure it with a metric. The metric involves measuring something with a unit. Writing the requirement this way creates a formal approach that eliminates most bad requirement writing.&lt;/div&gt;
&lt;h3&gt;
Completeness per project&lt;/h3&gt;
&lt;div&gt;
The other type of requirement quality that works to create great requirements is really not about the individual requirement. The completeness check is about &lt;b&gt;traceability and dependencies&lt;/b&gt; throughout the project. If you know you have to be at work today, you might want to think about all the other days you want to be at work. This is looking at the requirement as a specific and making a generality out of it. You can find more requirements for days you should be at work this way.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
The other type of completeness check involves the going from generality to specific. In this case of going to work, when you go to work, should you stay at work all day? Can you leave for lunch? How long should you be gone before it&#39;s not seen as being at work a full day? If you drill down into just the lunch period for more detail, then you can ask if taking a longer lunch but talking about work counts as working?&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Another type of completeness check might involve switching the role or actor of that scenario or looking for alternate scenarios. Is the work day the same for all job titles? How about if we talk about a different type of work activity like being on the road? Now being at work today takes on a different approach. Also in the scenario of a use case, we can ask if we captured all of the sequential tasks of achieving our goal.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Even looking at one specific quality for completeness can be rolled up into asking whether we have captured all the qualities that should be checked for all of our requirements. Now we are asking as an analyst about what we have forgotten. Sometimes, it an implicit requirement that no one has said but everyone expects. Or maybe it was just forgotten. Don&#39;t let this lack of completeness analysis turn into scope creep you blame on the users.&lt;/div&gt;
&lt;h3&gt;
Complete testability&lt;/h3&gt;
&lt;div&gt;
I do like completely understanding and testing the requirements so much that the documents I write can be used in their entirety of content and structure as test documents for successful test cases. It&#39;s also in my mind the reason that programmers have taken to &lt;a href=&quot;http://agiledata.org/essays/tdd.html&quot;&gt;Test Driven Development&lt;/a&gt; which is just making requirements testable in code editors because they didn&#39;t get good requirements in the first place and feeling that a giant methodology is an administrative waste of time.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
If the developers can change how they write code, surely the analysts can change to a more structured approach that keeps emphasizing the testability and completeness of the requirements document. It does mean that an analyst now can&#39;t just document what they hear. They will have to apply a judgment using some rules about what is complete and testable for their environment.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
But the end result will be that the business or individual will end up with a better and cleaner implementation in code or business process, that will be easily tested and create more feedback to improve the quality of the end product.&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://www.socialitoutbursts.com/feeds/9058412411356323618/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.socialitoutbursts.com/2016/08/complete-testability-analysis-quality.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7580188453882133873/posts/default/9058412411356323618'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7580188453882133873/posts/default/9058412411356323618'/><link rel='alternate' type='text/html' href='http://www.socialitoutbursts.com/2016/08/complete-testability-analysis-quality.html' title='Complete testability - analysis quality essentials for the confused'/><author><name>Doug Hoff</name><uri>http://www.blogger.com/profile/13575254944704650271</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total><georss:featurename>Missouri, USA</georss:featurename><georss:point>39.113013651499749 -94.59228515625</georss:point><georss:box>37.534746651499752 -97.17407215625 40.691280651499746 -92.01049815625</georss:box></entry><entry><id>tag:blogger.com,1999:blog-7580188453882133873.post-2586241086450754101</id><published>2016-07-28T18:57:00.002-07:00</published><updated>2016-07-28T19:00:24.705-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="business analysis"/><category scheme="http://www.blogger.com/atom/ns#" term="chance"/><category scheme="http://www.blogger.com/atom/ns#" term="confidence"/><category scheme="http://www.blogger.com/atom/ns#" term="ITIL"/><category scheme="http://www.blogger.com/atom/ns#" term="priority"/><category scheme="http://www.blogger.com/atom/ns#" term="probability"/><category scheme="http://www.blogger.com/atom/ns#" term="project management"/><category scheme="http://www.blogger.com/atom/ns#" term="risk"/><category scheme="http://www.blogger.com/atom/ns#" term="strategy"/><category scheme="http://www.blogger.com/atom/ns#" term="testing"/><category scheme="http://www.blogger.com/atom/ns#" term="value"/><title type='text'>Ranking rain and risky business events with confidence in strategy and testing</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://upload.wikimedia.org/wikipedia/commons/3/3e/Spring2016FloodRisk.jpeg&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;180&quot; src=&quot;https://upload.wikimedia.org/wikipedia/commons/3/3e/Spring2016FloodRisk.jpeg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
Risk isn&#39;t measured easily. It&#39;s better viewed as a personal understanding of probability applied to avoiding unpleasant situations. It can also measure positive chances but we&#39;d rather know what the chance of rain is instead of the chance of sunshine. The point of risk management is to find out where risks are and how to mitigate them if possible. Why are we obsessed with measuring it when it&#39;s really a useless number?&lt;br /&gt;
&lt;br /&gt;
I am amused by meteorologists who say they measure the probability of rain by saying they measure the area that will get rain as a percentage of the total area and multiply that by their confidence. Nobody really understands what 40% means but that&#39;s math. We like percentages for rain and risk because in repeated forecasts, we have something to compare whether it really rains or not for that one time. But the weather guys spend more time than project managers do on that so we&#39;ll go with their best guess on risk measurement.&lt;br /&gt;
&lt;h3&gt;
Probability of events&lt;/h3&gt;
Probability, and therefore risk, starts with measuring outcomes of similar events. To measure anything in a business metric so you can compare results, you need a quantity of a standard unit. Math is funny. When you divide the number of useful past events by the total past events you lose your units of measurement. So you don&#39;t have any probability units. There is nothing that assigns an IT project to have 4 RUs (risk units) and another 15 RUs. So &lt;b&gt;probabilities of different kinds of events can&#39;t be compared&lt;/b&gt;. That&#39;s our first problem.&lt;br /&gt;
&lt;br /&gt;
Risk has to be related to a concrete event. Rain forecasts assume a probability of occurrence from a large number of the same types of events and as a stand-in we use similar historical events. A 50% chance of getting heads on a coin toss doesn&#39;t mean anything after one coin toss because it&#39;s one event. Your only two outcomes are heads and tails. There&#39;s no 50% tails. But a history of &amp;nbsp;500 tosses shows that heads is 50.3%. Now we have some confidence.&lt;br /&gt;
&lt;h3&gt;
Confidence in chance&lt;/h3&gt;
Confidence is what gets degraded though when we don&#39;t have similar events. In projects, we never have the same events so, like the thousands of influences on a storm system, if more of them are about the same, the confidence level of the forecast increases, which increases the chance of rain. Confidence is easier to do when the events are less reality based and can be easily counted. Coin tosses dominate the probability world but even &lt;a href=&quot;http://statweb.stanford.edu/~cgates/PERSI/papers/thinking.pdf&quot;&gt;tossing a coin has been shown to be not that easy&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Most business people don&#39;t have a backlog of 50 similar sized projects of the same type run by the same project manager with the same budget. The more events with the same influences, the better the confidence value. So confidence is easily eroded making our probability of an event less likely making our calculations less helpful. That&#39;s our second problem. We can make an educated guess of how likely the event is based on past events of the same type but &lt;b&gt;the necessary confidence reality check will destroy a risk result.&lt;/b&gt;&lt;br /&gt;
&lt;h3&gt;
How priority affects risk&lt;/h3&gt;
Priority is not risk. Priorities are best assigned to scope units called work packages or use cases that estimate that total value. I like&amp;nbsp;&lt;b&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/ITIL&quot;&gt;ITIL&lt;/a&gt;&#39;s breakdown of priority&lt;/b&gt; into impact and urgency and adapt it from the incident or trouble ticket to a use case. ITIL puts the value in terms of numbers of people that are affected (impact) and the value perceived (urgency). . For internal projects it might be expressed as a high, medium or low number of employees and high to low level of visibility to executives or high-level managers. For external projects it might be expressed as a high to low market share, and a high to low price point compared to competitive products.&lt;br /&gt;
&lt;br /&gt;
In fact, priority does not influence risk at all. Risk can be multiplied times a priority ranking to show how value is reduced but the end result of a subjective number times another subjective number isn&#39;t useful except to compare to each other. Priority is good for ranking order of development of use cases. It&#39;s also good for ranking test case execution effort and thoroughness after factoring in development complexity and unfamiliarity of the unit under test.&lt;br /&gt;
&lt;h3&gt;
Project risk&lt;/h3&gt;
There are two easily confused types of risk in a project. There is project risk which occurs during the project. And there&#39;s organizational risk which is taken as a bet when the project is chartered and realized when the value is gained.&lt;br /&gt;
&lt;br /&gt;
PMI defines&amp;nbsp;&lt;a href=&quot;https://en.wikipedia.org/wiki/Project_risk_management&quot;&gt;project risk&amp;nbsp;&lt;/a&gt;as &quot;an uncertain event or condition that, if it occurs, has a positive or negative effect on a project’s objectives.&quot; But using that definition, since all future events are uncertain, means that all project activities are risks. Even if we declare risk to be the measure of the likelihood of a project failing to meet objectives, we&#39;re still in the same boat because any event could conspire to reduce the full obtainment of the objectives.&lt;br /&gt;
&lt;br /&gt;
Project risk bets are taken mostly in design. The bet on the scope to be delivered starts when you spend money towards a design and ends when the product/code is delivered using that design. Strategy and analysis phases can influence design but design commits you to a path. These are all known risks and estimated up front. But there&#39;s always a component of unknown risks like developers changing jobs or emergencies but that&#39;s what project managers have &#39;flex time&#39; for.&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;
I have seen risk associated with failure to do adequate analysis called scope definition risk. That&#39;s the same baloney as when people call bad requirements gathering down the line, scope creep. This isn&#39;t project risk, it&#39;s systemic and therefore organizational risk. Check your process maturity and start there with a project constraint. Since you know you don&#39;t have good enough requirements management, you should expect some sort of decay around the elicited scope. It&#39;s a given, not a risk.&lt;/div&gt;
&lt;h3&gt;
Organizational risk&lt;/h3&gt;
The estimated value or dollars associated with the project which guides the project manager are broken up into three critical success factors. These three things that make a project succeed are&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;finishing on &lt;b&gt;time&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;coming in on &lt;b&gt;budget&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;delivering total decided &lt;b&gt;scope&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
The value measurement units that we can use for each of these are standardized into&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;number of days&lt;/li&gt;
&lt;li&gt;amount of dollars&lt;/li&gt;
&lt;li&gt;use cases&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div&gt;
The first two can be reduced to similar units of dollars. Days is just a measure of cost of overhead, labor, and other consumed resources. Scope is harder. If you are using good requirements estimation units as recommended in my blogs, you should choose a scope measurement unit that delivers those units of value known as use cases and user stories in the analysis world or work packages in the project management world.&lt;br /&gt;
&lt;br /&gt;
Then you can use a standard conversion of like sized use cases to the approximation of PMI for work packages of up to ten days depending on complexity. So, input from the developers who gauge the difficulty of a use case is critical. Scope estimation is a similar process to test case effort estimation. It might break down to&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;low - 2-4 days&lt;/li&gt;
&lt;li&gt;medium - 5-7 days&lt;/li&gt;
&lt;li&gt;high - 8-10 days&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div&gt;
The budget component should be constrained at the point at which the value can be assessed before the decision for approval is made. At that point, if the time component is constrained, that creates no flexibility on the scope component and it means that only a certain unknown amount of value can be delivered creating high anxiety for the project manager who hopes that the scope is minimal, the complexity is low, or the developers are wizards. Once the requirements have been analyzed, it may be the that the solution to the project is too big and the scope can&#39;t be delivered successfully leading only to a project cancellation and sanity preservation for the enterprise.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
If the time component is flexible, then there&#39;s still some angst about the outcome but now with some adjustment ability. Using employees over time will still accumulate project cost so knowing the amount of time necessary to deliver a solution may push the expenditures over what the project value is. So where&#39;s the risk here if the value is estimated, the time is estimated and the scope determines whether the project is green lighted or not?&lt;br /&gt;
&lt;br /&gt;
The bet on known risks is taken at chartering and cashed in when in production. But unknown risk is in the changing influences on the solution which is a strategy responsibility. A Pokemon Go clone is only good if the market has not produced any other competitors or people feel like they have found enough&amp;nbsp;&lt;span style=&quot;background-color: white; color: #777777; font-family: &amp;quot;arial&amp;quot; , sans-serif; font-size: x-small; line-height: 18px;&quot;&gt;‎&lt;/span&gt;Bulbasaurs or Meowths.&lt;br /&gt;
&lt;br /&gt;
Strategic constraints subject to influence now become sources of risk. Events expected to happen that influence the planned time for the project or the budget must be listed. How do you judge a probability of occurrence of a one-time future event? You don&#39;t. You just put a number on it and rank the items by that. It&#39;s all subjective. And the next person puts a different rank on it and then you compromise. Instead of risk, let&#39;s call it a proposed ranking of possible scenarios that affect value.&lt;br /&gt;
&lt;h3&gt;
It&#39;s all a guess&lt;/h3&gt;
&lt;/div&gt;
&lt;div&gt;
But because the infinite number of influences can never be known, it&#39;s not going to be that useful to collect historical information on what is recorded since the past may not accurately reflect the future. And it takes quite a bit of time to collect, enter, write up those reports, and present. Maybe it&#39;s better to just go with your gut when you need to rank risky events. Or see if your arthritis pain is flaring up like it does for weather changes.&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://www.socialitoutbursts.com/feeds/2586241086450754101/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.socialitoutbursts.com/2016/07/ranking-rain-and-risky-business-events.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7580188453882133873/posts/default/2586241086450754101'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7580188453882133873/posts/default/2586241086450754101'/><link rel='alternate' type='text/html' href='http://www.socialitoutbursts.com/2016/07/ranking-rain-and-risky-business-events.html' title='Ranking rain and risky business events with confidence in strategy and testing'/><author><name>Doug Hoff</name><uri>http://www.blogger.com/profile/13575254944704650271</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7580188453882133873.post-4777146427754473247</id><published>2016-04-25T18:42:00.000-07:00</published><updated>2016-04-25T18:44:55.003-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="AngularJS"/><category scheme="http://www.blogger.com/atom/ns#" term="AngularJS 2"/><category scheme="http://www.blogger.com/atom/ns#" term="architecture"/><category scheme="http://www.blogger.com/atom/ns#" term="Google"/><category scheme="http://www.blogger.com/atom/ns#" term="JavaScript"/><category scheme="http://www.blogger.com/atom/ns#" term="microservices"/><category scheme="http://www.blogger.com/atom/ns#" term="Microsoft"/><category scheme="http://www.blogger.com/atom/ns#" term="React"/><category scheme="http://www.blogger.com/atom/ns#" term="RxJS"/><category scheme="http://www.blogger.com/atom/ns#" term="SPA"/><category scheme="http://www.blogger.com/atom/ns#" term="TypeScript"/><category scheme="http://www.blogger.com/atom/ns#" term="UX"/><category scheme="http://www.blogger.com/atom/ns#" term="web"/><title type='text'>The new web with AngularJS 2 &amp; TypeScript - a browser marriage, not a date</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://upload.wikimedia.org/wikipedia/commons/a/a9/Ring_ceremony,_Indian_Hindu_wedding.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://upload.wikimedia.org/wikipedia/commons/a/a9/Ring_ceremony,_Indian_Hindu_wedding.jpg&quot; width=&quot;212&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
The world of web architecture is undergoing its &lt;b&gt;third major overhaul&lt;/b&gt; and there’s still &lt;a href=&quot;https://webassembly.github.io/&quot;&gt;more to come&lt;/a&gt;. This third version of the web development architecture is centered on the browser as a stand-alone engine so that mobile apps and desktop apps have little differences, developers can write an app and then easily use it on a desktop or mobile device or even embed it in a proprietary mobile app. This is what folks are calling a &lt;a href=&quot;http://singlepageappbook.com/goal.html&quot;&gt;Single Page Application&lt;/a&gt;&amp;nbsp;(SPA).&lt;br /&gt;
&lt;br /&gt;
As web developers, we&#39;ve discovered the benefits of having static pages, then having our entire web site be pre-processed by the server, and now, since &lt;a href=&quot;http://jquery.com/&quot;&gt;jQuery &lt;/a&gt;gave us the confidence to move some of that &lt;a href=&quot;https://en.wikipedia.org/wiki/User_experience_design&quot;&gt;UX &lt;/a&gt;processing to the browser, we’ve been slowly moving more and more to the client. But a client-side web app is &lt;b&gt;a marriage to the browser&lt;/b&gt; and not just a date.&lt;br /&gt;
&lt;h3&gt;
Angular&#39;s popularity&lt;/h3&gt;
In the last few years, the client-side processing world has matured, although you may think it’s still in its adolescent phase, but it’s showing enough promise and enthusiasm to garner attention from the big players out there. The buzz is concentrated around &lt;b&gt;Google’s &lt;a href=&quot;https://angularjs.org/&quot;&gt;AngularJS &lt;/a&gt;web framework&lt;/b&gt; which manages a client-side set of views and handles some I/O. Microsoft thought well enough of it partner with Google to provide a much needed improvement for JavaScript called &lt;a href=&quot;http://www.typescriptlang.org/&quot;&gt;TypeScript&lt;/a&gt;.&amp;nbsp;Google dropped development of a similar language and supported TypeScript as a primary language for &lt;a href=&quot;https://angular.io/&quot;&gt;AngularJS 2,&lt;/a&gt;&amp;nbsp;just released in beta as of this January.&lt;br /&gt;
&lt;br /&gt;
Angular&amp;nbsp;also&amp;nbsp;matured through five years of work to find a way to &lt;b&gt;reuse web components&lt;/b&gt; like they do in other types of software. But the web is stuck with an amalgam of HTML, CSS, and JavaScript that requires the assistance of the browser to make it all work. And contending with the offline nature of mobile apps put a real wrench into traditional coding. We have to have our own database storage, routing features between pages, and communication with other servers. And we can’t hide behind those protective walls of the secure server.&lt;br /&gt;
&lt;br /&gt;
Google has done &lt;b&gt;a masterful job&lt;/b&gt; of keeping a framework both powerful enough to satisfy hungry developers for lots of complexity and customization but making it simple enough to be used by both designers and jQuery level developers. It’s got all the magic of &lt;a href=&quot;http://reactivex.io/rxjs/&quot;&gt;RxJS &lt;/a&gt;observables (really? you’re still working on Promises?) but we see patterns to help us code easily with AJAX. AngularJS 1 had this problem of too much high-level architecture and a brick wall that kept them from adding some great features that we now get to have in Angular 2.&lt;br /&gt;
&lt;br /&gt;
The only other &lt;b&gt;major competition to Angular&lt;/b&gt; has come out of Facebook’s &lt;a href=&quot;https://facebook.github.io/react/&quot;&gt;React &lt;/a&gt;framework. It has&amp;nbsp;&lt;b&gt;less buzz and more complexity&lt;/b&gt; than most developers need. Unless of course, you’re developing large systems like Facebook. But it looks like it&#39;s still morphing into better versions and a few years will give us a better understanding of how to use it.&lt;br /&gt;
&lt;h3&gt;
Working with status quo and my class&lt;/h3&gt;
In business, there’s a need to keep moving ahead but still use the resources that have been paid for. The frameworks of&lt;b&gt; .NET and Java still rule&lt;/b&gt; the enterprise web sites and in order to make Angular play well with these guys, it will take some thoughtful redesign. Remember that these server side frameworks do all the rendering of the web page before the page is sent to the browser. There on the browser is where Angular expects to do its stuff but it makes more sense to do secure data access back on the server and generate a page there for the most part. What we are looking for in a client-side application is to improve that and find the best of both worlds.&lt;br /&gt;
&lt;br /&gt;
The improvements that we are able to get from Angular include the ability to improve the user experience through a &lt;b&gt;faster page rendering&lt;/b&gt;. We also make gains when we are able to design a great reusable library of &lt;b&gt;web components&lt;/b&gt; that designers just drop in to pages. Those can be excellent advantages if we learn how to trim back the features we&#39;ve been using on the server and now concentrate on the asynchronous data access and &lt;a href=&quot;http://martinfowler.com/articles/microservices.html&quot;&gt;microservices &lt;/a&gt;challenges before us.&lt;br /&gt;
&lt;br /&gt;
For the last four months, I’ve been developing a class for my employer, &lt;a href=&quot;http://centriq.com/&quot;&gt;Centriq Training&lt;/a&gt;, in &lt;a href=&quot;http://centriq.com/corporate/class-schedule/?q=angular&quot;&gt;AngularJS 2&lt;/a&gt; and &lt;a href=&quot;http://centriq.com/corporate/class-schedule/?q=typescript&quot;&gt;TypeScript &lt;/a&gt;that I think will meet the need of the business user from the component developer on desktop and mobile to the designer who thinks about the future of web components possibly using Google’s &lt;a href=&quot;https://material.angularjs.org/latest/&quot;&gt;Angular Material&lt;/a&gt;. It&#39;s been the most difficult course I&#39;ve written.&lt;br /&gt;
&lt;br /&gt;
It&#39;s been a challenge since minimal documentation was available to start, other published material was poor except from the Angular developer community (God love you &lt;a href=&quot;https://twitter.com/PascalPrecht&quot;&gt;Pascal Precht&lt;/a&gt;&amp;nbsp;and &lt;a href=&quot;https://twitter.com/victorsavkin&quot;&gt;Victor Savkin&lt;/a&gt;), and documentation continues to be updated by the user community. The &lt;a href=&quot;https://angular.io/docs/ts/latest/api/&quot;&gt;AngularJS 2 API docs&lt;/a&gt; have&amp;nbsp;a lot of &quot;WHAT IT DOES - Not yet documented&quot;in them. But, hey&amp;nbsp;&lt;b&gt;it&#39;s still&amp;nbsp;beta&lt;/b&gt;. For the most part, it&#39;s midway between the massive headaches of the patchwork packages without a framework I see with JavaScript solutions and the tried and true .NET frameworks.&lt;br /&gt;
&lt;br /&gt;
I&#39;m always seeing improvements and industry support which indicates that TypeScript/AngularJS 2 is &lt;b&gt;going to be a leader&lt;/b&gt; for years to come. The editors I use are a delight. For free use and my class, it&#39;s &lt;a href=&quot;https://code.visualstudio.com/&quot;&gt;Microsoft Visual Studio Code&lt;/a&gt;, which has nothing to do with the Visual Studio editors for C# and other languages. (Do they know they are following in the footsteps of confusing &lt;a href=&quot;http://stackoverflow.com/questions/2018731/why-is-javascript-called-javascript-since-it-has-nothing-to-do-with-java&quot;&gt;Java and JavaScript&lt;/a&gt;?). That and &lt;a href=&quot;https://www.jetbrains.com/webstorm/&quot;&gt;JetBrains&#39; WebStorm&lt;/a&gt; are the best tools available so far.&lt;br /&gt;
&lt;br /&gt;
If the transition to responsive design and mobile apps didn&#39;t overwhelm you and you want to see how the next wave is going to improve things, it&#39;s definitely worth a look to look at these mature products that will continue to have an effect on the web architecture for the next five years easily. Hope to see you in class!&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://www.socialitoutbursts.com/feeds/4777146427754473247/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.socialitoutbursts.com/2016/04/the-new-web-with-typescript-angularjs-2.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7580188453882133873/posts/default/4777146427754473247'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7580188453882133873/posts/default/4777146427754473247'/><link rel='alternate' type='text/html' href='http://www.socialitoutbursts.com/2016/04/the-new-web-with-typescript-angularjs-2.html' title='The new web with AngularJS 2 &amp; TypeScript - a browser marriage, not a date'/><author><name>Doug Hoff</name><uri>http://www.blogger.com/profile/13575254944704650271</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7580188453882133873.post-8519355440339856803</id><published>2016-01-05T18:28:00.001-08:00</published><updated>2016-01-05T18:28:37.265-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="assertions"/><category scheme="http://www.blogger.com/atom/ns#" term="assumptions"/><category scheme="http://www.blogger.com/atom/ns#" term="business analysis"/><category scheme="http://www.blogger.com/atom/ns#" term="business rules"/><category scheme="http://www.blogger.com/atom/ns#" term="documentation"/><category scheme="http://www.blogger.com/atom/ns#" term="post-conditions"/><category scheme="http://www.blogger.com/atom/ns#" term="preconditions"/><category scheme="http://www.blogger.com/atom/ns#" term="project management"/><category scheme="http://www.blogger.com/atom/ns#" term="software"/><category scheme="http://www.blogger.com/atom/ns#" term="user story"/><category scheme="http://www.blogger.com/atom/ns#" term="value-driven"/><title type='text'>Assertions &amp; assumptions, eels &amp; heels - Clear terms create understanding in analysis</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://upload.wikimedia.org/wikipedia/commons/a/a4/White_eyed_moray_eel.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;251&quot; src=&quot;https://upload.wikimedia.org/wikipedia/commons/a/a4/White_eyed_moray_eel.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;
There&#39;s several terms that cause confusion in analysis and sometimes they come in pairs. The two are preconditions / post-conditions
and assertions / assumptions.&lt;br /&gt;
&lt;br /&gt;
It&#39;s not that people get them mixed up, it &#39;s just that they use them however they like. It&#39;s
so much better when you know what you are saying and know why you are using the term appropriately. A clear term used properly
is the beginning of analysis understanding.
&lt;br /&gt;
&lt;br /&gt;
It&#39;s not that I blame any particular reason for not using terms well because I know I had no clue when I was suppose to write up a project document
and the people I was learning from had bad habits. It&#39;s like when my wife regretting doing something said she &quot;felt like
an eel.&quot; It&#39;s an obvious thing if you know the real use of the term but can cause confusion in those that don&#39;t have that experience.&lt;br /&gt;
&lt;h3&gt;
Preconditions prevent functionality&lt;/h3&gt;
&lt;div&gt;
In a use case, there is a particular section of &lt;b&gt;preconditions&lt;/b&gt; which never is fully explained and ends
    up being a convenient way to start a use case from the middle of the scenario. My favorite example of this is when a
    use case requires the credentials of a user to be checked as part of the process. A log-on process is always part of
    a secure use case. It should be modeled as a part of a goal-driven use case.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
Many people shortcut writing the full scenario by avoiding the repetitious log-in tasks and declaring that &lt;b&gt;the user must
    be logged in as their precondition&lt;/b&gt;. So if logging on has changed the state of the system to a different state, that use case
    must be a complete use case that leads to value for that changed state. The log-in, no matter how many people log in, will not provide the business
    any value whatsoever. It&#39;s not a separate value-driven use case. Ever.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
The precondition is &lt;b&gt;a state of the system that must be true in order for the use case to progress to the first step&lt;/b&gt; that
    is unique to this use case. In the classic ATM use case example, you are prevented from doing a Withdraw Cash use case
    when the machine has no money and the menu option for withdrawing cash is disabled. That means that the precondition
    for the Withdraw Cash use case is that the ATM can pass the rule of allowing a user to withdraw up to their maximum daily
    limit or some other rule. The state was changed by a previous Withdraw Cash use case which did have value.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
In a business use case where the user first drives to the bank&#39;s outside ATM to get cash, the precondition has to change some.
    The scope of the business system must include the full bank property and building. The system precondition is that of the machine
    having enough cash but business way to prevent a person from using the ATM is to put a traffic cone in the ATM lane or
    turn the system off. It&#39;s anything a manager would do that doesn&#39;t involve the software itself.&lt;/div&gt;
&lt;h3&gt;
Post-conditions repeat important tasks&lt;/h3&gt;
&lt;div&gt;
Use case &lt;b&gt;post-conditions&lt;/b&gt; are usually defined as important things that need to be affirmed at the end of the use case tasks. That usually means repeating the important changes noted in the use case
    narrative. For instance, in the classic ATM example, a post-condition will be to make sure that the bank got the message
    of a withdrawal transaction at the end. But it doesn&#39;t have to be a state change. In fact, the state of the machine should
    return back to the way it was before the use case started if we are to follow the rule of being able to run a use case
    multiple times.&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;
The post-condition of the bank transaction is that a message was confirmed to be sent to the bank by some means. In the design
    stage, this could be a callback function to the ATM or a log provided by the bank. Either way, it should be a task that
    could be audited.
&lt;/div&gt;
&lt;h3&gt;
Assertions are conditions too&lt;/h3&gt;
Assertions are more of &lt;b&gt;a programmatic style of pre or post-condition&lt;/b&gt; when the condition involves only that code. You assert that inputs matched your data rules, a technical precondition. You assert that outputs match your data rules or the state of something changes, a technical post-condition. The code for assertions is removed when deployed.&lt;br /&gt;
&lt;h3&gt;
Assumptions occur after analysis&lt;/h3&gt;
Assumptions however are &lt;b&gt;not preconditions&lt;/b&gt;. You don&#39;t get to assume that your users are logged in. They are important decisions taken at design time when we need to guess and take a bet on the chances that something
will occur. You assume that a health care system you manage will be affected by a&amp;nbsp;&lt;a href=&quot;http://www.foxnews.com/politics/2016/01/04/gop-led-congress-set-for-first-time-to-vote-pass-bill-to-replace-obamacare-not-just-repeal.html&quot;&gt;possible repeal or replacement of ObamaCare&lt;/a&gt;.
&lt;br /&gt;
&lt;br /&gt;
You can understand what your stakeholders want in a sign-up site for your insurance and you know that they want something
that follows and takes advantage of the current laws. But there&#39;s an uncertainty that is measured through a risk assessment
process of whether or not the bill will pass. The project manager will be the one to assess the risk and make that bet on the value that could
be gained or lost.
&lt;br /&gt;
&lt;br /&gt;
If the choice to take the risk is a good one, then the design team starts working on the system and while they are designing
screens and systems, the assumption must be made that there will be a replacement for ObamaCare. Not all the risks that you
assume in your design will happen but the choices you make may allow for you to reduce your time to market increasing the
value of the system on the ones that do pan out.&lt;br /&gt;
&lt;h3&gt;
Create understanding through clear terms&lt;/h3&gt;
Terms, although deposited squarely in your beloved template, do not mean that they are correct. The best way to gain some understanding is to start questioning what the value of each piece of information is in your template. Corroborate that with the other team members. Update it, move it, refactor it, or delete it. Make it useful. Add an appendix if you have to. Then it will start being more understandable.</content><link rel='replies' type='application/atom+xml' href='http://www.socialitoutbursts.com/feeds/8519355440339856803/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.socialitoutbursts.com/2016/01/assertions-assumptions-eels-heels-clear.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7580188453882133873/posts/default/8519355440339856803'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7580188453882133873/posts/default/8519355440339856803'/><link rel='alternate' type='text/html' href='http://www.socialitoutbursts.com/2016/01/assertions-assumptions-eels-heels-clear.html' title='Assertions &amp; assumptions, eels &amp; heels - Clear terms create understanding in analysis'/><author><name>Doug Hoff</name><uri>http://www.blogger.com/profile/13575254944704650271</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7580188453882133873.post-6970199926865782406</id><published>2015-12-31T09:40:00.000-08:00</published><updated>2016-01-03T13:26:16.615-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="business"/><category scheme="http://www.blogger.com/atom/ns#" term="Business process"/><category scheme="http://www.blogger.com/atom/ns#" term="Information Technology Infrastructure Library"/><category scheme="http://www.blogger.com/atom/ns#" term="Management"/><category scheme="http://www.blogger.com/atom/ns#" term="methodologies"/><category scheme="http://www.blogger.com/atom/ns#" term="programming"/><category scheme="http://www.blogger.com/atom/ns#" term="project management"/><category scheme="http://www.blogger.com/atom/ns#" term="Software development process"/><title type='text'>Friend or foe robot? Designing automated processes for business</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://c1.staticflickr.com/3/2299/1897019528_399921b2d1.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://c1.staticflickr.com/3/2299/1897019528_399921b2d1.jpg&quot; width=&quot;257&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: Verdana; font-size: 13px; margin-bottom: 0px; margin-top: 0px;&quot;&gt;
Programmers are guys who write your business processes with a kind of invisible ink they call code. The better you tell them what your processes are, the better business results you will have. They don&#39;t really model your world because &lt;b&gt;they have no clue how the business works&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: Verdana; font-size: 13px; margin-bottom: 0px; margin-top: 0px;&quot;&gt;
Programmers will come up with a well-engineered version of the reality they perceive if left alone and that will have to be the way you run your business if you don&#39;t tell them how the business works. It will likely more resemble a massive robot rather than a enabling friend.&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;font-family: Verdana; font-size: 13px; margin-bottom: 0px; margin-top: 0px;&quot;&gt;
As a programming instructor, I talk about the declaration and reuse of a set of statements that become methods (or functions or procedures).&lt;br /&gt;
&lt;br /&gt;
As a business instructor, I teach the same thing concerning recognizing a&amp;nbsp;useful&amp;nbsp;process and promoting the larger scale use of it into the business. As your &lt;a href=&quot;https://en.wikipedia.org/wiki/Capability_Maturity_Model&quot;&gt;process maturity&lt;/a&gt; level grows, the process expands from your own use, to people around you, to even more people until it&#39;s a company-wide standard.&lt;/div&gt;
&lt;h3&gt;
Architecture&lt;/h3&gt;
Those same maturity steps are used to develop large scale architectures that provide guidance to the necessary design of the infrastructure that has implemented it. In fact, it&#39;s the principles of good design that produce a workable architecture. Sometimes business doesn&#39;t know which architecture to choose or isn&#39;t able to strategically point the direction and then takes the low road of design by infrastructure. This is the choice to &lt;b&gt;&lt;a href=&quot;https://www.thoughtworks.com/insights/blog/buy-versus-build-shift-part-1&quot;&gt;buy instead of build&lt;/a&gt;&lt;/b&gt; and results are good as long as you stay compatible with the other components that are added on. Again what you end up with is a well-engineered solution without regard to your specific business needs.&lt;br /&gt;
&lt;br /&gt;
The business processes existing within a coordinated automated system or an infrastructure are essentially the executable programs. They have been structured to achieve a specific objective. They take inputs and turn them into outputs. They have a specific trigger. They are layered into automated roles and responsibilities to work well when they have to be maintained. Just as if it were an employee, &lt;b&gt;you can fire an architecture layer and hire another version of that layer&lt;/b&gt; that fits the bill when managing a cohesive set of responsibilities in a business.&lt;br /&gt;
&lt;br /&gt;
As far as I know there&#39;s not as much business writing going on for how to design a job role with few dependencies to other job roles but one of the common axioms of being promoted in business is that you must &lt;b&gt;&lt;a href=&quot;http://www.beleaderly.com/how-to-be-promotable-two-quick-tips/&quot;&gt;make yourself replaceable&lt;/a&gt;&lt;/b&gt; or else you&#39;ll never get out of your job. That&#39;s the same kind of thinking as when programmers say they must make their programming units reusable or maintenance will become more of a headache.&lt;br /&gt;
&lt;h3&gt;
The process&lt;/h3&gt;
&lt;div style=&quot;font-family: Verdana; font-size: 13px; margin-bottom: 0px; margin-top: 0px;&quot;&gt;
If processes equal computer programs then they must have similar features. They can be broken down into smaller processes. They are either ongoing processes or processes that have well defined starts and stops. Processes can update policies, standards, guidelines, activities, other processes, procedures and work instructions if needed just like computer code can generate other code, update rules, and modify data that change how the program operates. A program is made up of activities, procedures, and work instructions or as the programmers know it, the class, the methods, and the program statements.&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;font-family: Verdana; font-size: 13px; margin-bottom: 0px; margin-top: 0px;&quot;&gt;
Metrics for a process are built in from the start and can be injected into computer code or built in to the abstract base of the code. In business, the best place to &lt;b&gt;think about your metrics for success&lt;/b&gt; is during the planning stage so you can always build with them in mind or else you&#39;ll have trouble retrofitting them later. Roles of who should be involved in the process are important. In code, the types of relationships that you maintain with other code is important and successful relationships are spelled out in recipe books called &lt;a class=&quot;zem_slink&quot; href=&quot;http://en.wikipedia.org/wiki/Design_pattern_%28computer_science%29&quot; rel=&quot;wikipedia nofollow&quot; title=&quot;Design pattern (computer science)&quot;&gt;design patterns&lt;/a&gt;. I admire &lt;a href=&quot;http://www.amazon.com/Peter-Coad/e/B000APIAUC&quot;&gt;Peter Coad&lt;/a&gt; who tried to assign roles to classes and discover some reusable patterns for interactivity and not just static recipes.&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;font-family: Verdana; font-size: 13px; margin-bottom: 0px; margin-top: 0px;&quot;&gt;
Process improvements are always a part of all processes and can be found in &lt;b&gt;wrap-up sessions or project post mortems&lt;/b&gt;. In code we get a closed feedback loop from the folks who are using the programs who give us reason to enhance the program and get more financing for the next maintenance project. Feedback comes in the form of new or improved features and it gets added to the system as the value becomes known.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: Verdana; font-size: 13px; margin-bottom: 0px; margin-top: 0px;&quot;&gt;
Processes should also be well defined in understandable text just like we always do to our fellow programmers when recommending comments in their code. And just like the norm in programming, most documentation happens after the fact because people don&#39;t have enough time to document the program until it has stopped changing at the end of the development cycle.&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
&lt;b&gt;Process owners&lt;/b&gt; are the people who understand the process and can help educate others on how to use the process. I help &lt;a href=&quot;https://en.wikipedia.org/wiki/ITIL&quot;&gt;ITIL&lt;/a&gt; students who think &lt;b&gt;process owners are not in charge of&lt;/b&gt;&amp;nbsp;&lt;b&gt;implementing the process&lt;/b&gt;. This always gets me on my soapbox. An implementation of a process, e.g. an ITIL key process, is not going to happen because you read the book. It must be digested, customized by deleting the right parts, and supplemented with all of the current business structure in order to be understood. Then the process activities are noted and people check them off as they need to when they need to encouraged by success and trimmed down by reality.&lt;/div&gt;
&lt;div style=&quot;font-family: Verdana; font-size: 13px; margin-bottom: 0px; margin-top: 0px;&quot;&gt;
&lt;br /&gt;
In programming, it would be the project sponsor who got the ball rolling for the new software and would own the software when complete. They also get new funding when the project is a success and get project funding reductions when the process is too cumbersome.&lt;br /&gt;
&lt;br /&gt;
How and when the process is used is &lt;b&gt;a matter of policy&lt;/b&gt; and the ways that you can use these process steps have limits. Just like a computer program, the steps can be run for certain types of tasks and shouldn&#39;t be run for others. You don&#39;t close the books of an accounting process except for once a month. You don&#39;t ship more inventory than you have in stock. Process objectives are probably determined by what planted the seed in the ground for using this process in the first place. In a software project, the &lt;b&gt;business objectives drive the funding&lt;/b&gt; and usually can be found in a business case document or a sponsor&#39;s mind.&lt;br /&gt;
&lt;br /&gt;
I was reminded of the input and output nature of a process when looking at the method declaration and saw that it defined a general form of a resource just like all the other types of resources. &amp;nbsp;But until &lt;b&gt;functional programming&lt;/b&gt; came along to supplement object oriented programming, we never had a way to send the process information from one place to another internally even though the values of any data could be sent to and fro.&lt;/div&gt;
&lt;h3&gt;
Process testing&lt;/h3&gt;
&lt;div style=&quot;font-family: Verdana; font-size: 13px; margin-bottom: 0px; margin-top: 0px;&quot;&gt;
&lt;b&gt;Software testing&lt;/b&gt; is a way of thinking about your code from the norm or from the original business requirements. This validation is a quality aspect of coding. Test driven design drives home the point that the test is a way of thinking about how your code should be called and used before the implementation is written. ITIL states that&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&quot;Even before starting, it is important to &lt;b&gt;think about what the process outcomes should look like&lt;/b&gt;.&quot; (Service Design, p. 44)&amp;nbsp;&lt;/blockquote&gt;
We also work with requirements in a hierarchical way so that the lower level requirements of the code can roll up to the next level of activity and eventually be mapped to the business goals that drove the project. Then when the system is complete, we have a measurable way to compare what was originally planned and implement improvements if necessary.&lt;br /&gt;
&lt;h3&gt;
Process enablers&lt;/h3&gt;
&lt;div style=&quot;margin-bottom: 0px; margin-top: 0px;&quot;&gt;
The enablers of a process are &lt;b&gt;combined assets&lt;/b&gt; of the resources and the capabilities of the business. These are the raw materials and the smarts of the folks that are getting the job done. On the computer programming side are the programming language capabilities and the hardware and software&#39;s raw power to get a calculation performed or a sequence of code executed. We measure performance here in FLOPS (floating point operations per second) and computers are moving through the petaflop (1,000,000,000,000,000) ranges now.&lt;br /&gt;
&lt;br /&gt;
Business processes depend on the business assets just like code depends on the infrastructure it runs on. Unfortunately, business is both enabled and limited by humans and computers both enable and constrain business.&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0px; margin-top: 0px;&quot;&gt;
&lt;h3&gt;
Get in front and drive&lt;/h3&gt;
Processes are not much different whether you do them manually or if you have a robot do them for you. The &lt;b&gt;programmer acts as a plumber&lt;/b&gt; in a business process. They know the mechanics and apply the right torque to the right nuts and bolts to hold the system together. The &lt;b&gt;business analyst&lt;/b&gt; is going to map out the system so that it works for the business the best.&lt;br /&gt;
&lt;br /&gt;
Sometimes the programmer has no choice but to plan it out and do the best they can. But the business should always&amp;nbsp;&lt;b&gt;get involved at the first to direct the code&lt;/b&gt; so that is best represents the business. That&#39;s always the best strategy to take for any new project. Don&#39;t let the programmer be a back seat driver and transform your software project into something you didn&#39;t expect.&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://www.socialitoutbursts.com/feeds/6970199926865782406/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.socialitoutbursts.com/2015/12/friend-or-foe-robot-designing-automated.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7580188453882133873/posts/default/6970199926865782406'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7580188453882133873/posts/default/6970199926865782406'/><link rel='alternate' type='text/html' href='http://www.socialitoutbursts.com/2015/12/friend-or-foe-robot-designing-automated.html' title='Friend or foe robot? Designing automated processes for business'/><author><name>Doug Hoff</name><uri>http://www.blogger.com/profile/13575254944704650271</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7580188453882133873.post-8549880885400360379</id><published>2015-12-21T09:11:00.000-08:00</published><updated>2016-09-02T14:31:01.018-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="administration"/><category scheme="http://www.blogger.com/atom/ns#" term="design"/><category scheme="http://www.blogger.com/atom/ns#" term="education"/><category scheme="http://www.blogger.com/atom/ns#" term="Software development process"/><category scheme="http://www.blogger.com/atom/ns#" term="website"/><title type='text'>Building your dream home - knowing web site roles and skill sets</title><content type='html'>&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://c2.staticflickr.com/6/5210/5239541973_fabcba2543_b.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;https://c2.staticflickr.com/6/5210/5239541973_fabcba2543_b.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
As a teacher I&#39;m interested in getting the right information to the right student. A major part of my training is web site building and students often want to know what skill sets to learn for their job or career. Building a house is one of my go-to metaphors I use when talking about developing a web site. Getting a home built from the ground up takes skills from&lt;br /&gt;
&lt;div class=&quot;gmail_default&quot;&gt;
&lt;ul&gt;
&lt;li&gt;a &lt;b&gt;general contractor&lt;/b&gt; to get all the people collaborating,&amp;nbsp;&lt;/li&gt;
&lt;li&gt;an &lt;b&gt;architect / designer&lt;/b&gt; to figure out how it should be lived in, and&amp;nbsp;&lt;/li&gt;
&lt;li&gt;the &lt;b&gt;carpenters&lt;/b&gt;, plumbers, electricians, and other specialized contractors to build it.&lt;/li&gt;
&lt;/ul&gt;
You can separate the skill sets of building a web site into those same basic categories or roles:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;admin&lt;/b&gt; people to set, build, and deploy the code&lt;/li&gt;
&lt;li&gt;GUI / UX &lt;b&gt;designers &lt;/b&gt;to understand the work flow and usability and&lt;/li&gt;
&lt;li&gt;the &lt;b&gt;developers &lt;/b&gt;and database people who make it work.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;gmail_default&quot;&gt;
These roles of the web admin, designer, and developer have been implicit in many job titles and much training can be fuzzy about who should be learning what for the best results. Here&#39;s my simple guide to what skills each role could need in a prioritized list:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Web admin&lt;/b&gt; - OS, network, server configuration, server-side language, JavaScript, architecture, HTML, CSS, graphic arts&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Web designer&lt;/b&gt; - graphic arts, CSS, HTML, JavaScript, server-side language, OS, network&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Web developer&lt;/b&gt; - server-side language, JavaScript,&amp;nbsp;database, architecture,&amp;nbsp;OS, network, HTML, CSS, graphic arts&lt;/li&gt;
&lt;/ul&gt;
My classes at &lt;a href=&quot;http://centriq.com/&quot;&gt;Centriq &lt;/a&gt;(including some I no longer teach) and the roles that they target in groups by primary role would then look like:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Admin&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;gmail_default&quot;&gt;
&lt;ul&gt;
&lt;li&gt;WD-519 - &lt;a href=&quot;http://centriq.com/corporate/class-details/2146164253-30-58/javascript-tooling/&quot;&gt;JavaScript tooling&lt;/a&gt; - admin, developer, designer&lt;/li&gt;
&lt;/ul&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;The JavaScript Tooling class is a two day class highlighting the admin skills for JavaScript based web sites and was taught as part of the JavaScript Powered Web Apps but is now offered separately.&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;
&lt;/ul&gt;
&lt;b&gt;Designer&lt;/b&gt;&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;WD- 400 - &lt;a href=&quot;http://centriq.com/corporate/class-details//-2040511688-30-58/intro-to-html-css&quot;&gt;HTML/CSS&lt;/a&gt; - designer, developer&lt;/li&gt;
&lt;li&gt;WD- 500 - &lt;a href=&quot;http://centriq.com/corporate/class-details//2146161926-30-58/html5-and-css3-for-web-designers&quot;&gt;HTML5/CSS3&lt;/a&gt; - designer, developer&lt;/li&gt;
&lt;li&gt;WD- 505 - &lt;a href=&quot;http://centriq.com/corporate/class-details//2146161927-30-58/intro-to-jquery&quot;&gt;Intro to jQuery&lt;/a&gt; - designer, developer&lt;/li&gt;
&lt;li&gt;WD- 510 - &lt;a href=&quot;http://centriq.com/corporate/class-details//2146161928-30-58/mobile-web-app-design&quot;&gt;Mobile Web App Design&lt;/a&gt; - designer&lt;/li&gt;
&lt;li&gt;WD- 515 - &lt;a href=&quot;http://centriq.com/corporate/class-details//2146161929-30-58/mobile-web-app-development&quot;&gt;Mobile Web App Development&lt;/a&gt; - designer, developer&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;/ul&gt;
&lt;b&gt;Developer&lt;/b&gt;&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;xxx - any Java, C#, or php class - developer, admin&lt;/li&gt;
&lt;li&gt;JV-394 - &lt;a href=&quot;http://centriq.com/corporate/class-details/706809619-30-58/intro-to-xml/&quot;&gt;Intro to XML&lt;/a&gt; -  - developer, admin&lt;/li&gt;
&lt;li&gt;WD- 405 - &lt;a href=&quot;http://centriq.com/corporate/class-details//-2116502490-30-58/javascript&quot;&gt;JavaScript &lt;/a&gt;- developer, admin&lt;/li&gt;
&lt;li&gt;WD- 520 - &lt;a href=&quot;http://centriq.com/corporate/class-details//2146162125-30-58/javascript-powered-web-apps&quot;&gt;JavaScript Powered Web Apps&lt;/a&gt; - developer, admin, designer&lt;/li&gt;
&lt;li&gt;WD- 525 - &lt;a href=&quot;http://centriq.com/corporate/class-details/2146164299-30-58/introduction-to-typescript/&quot;&gt;TypeScript &lt;/a&gt;- developer, admin&lt;/li&gt;
&lt;li&gt;WD- 530 - &lt;a href=&quot;http://centriq.com/corporate/class-details/2146164300-30-58/angularjs-2/&quot;&gt;AngularJS 2&lt;/a&gt; - developer, designer&lt;/li&gt;
&lt;li&gt;SOA-102 -&amp;nbsp;&lt;a href=&quot;http://centriq.com/corporate/class-details//2146161480-41-103/service-oriented-architecture-soa-introduction&quot;&gt;SOA Intro&lt;/a&gt;&amp;nbsp;-&amp;nbsp;developer,&amp;nbsp;architect&lt;/li&gt;
&lt;/ul&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;The JavaScript Powered Web Apps doesn&#39;t get you hardly any design because it&#39;s about setting up a web site using nothing but JavaScript. That means that the web site isn&#39;t much to look at but it&#39;s very cool under the covers.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;gmail_default&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;gmail_default&quot;&gt;
I hope that you are better able to guide your educational path towards a team of skills so you can build your own personal dream home with some of these role explanations.&amp;nbsp;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://www.socialitoutbursts.com/feeds/8549880885400360379/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.socialitoutbursts.com/2015/12/building-your-dream-home-knowing-web.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7580188453882133873/posts/default/8549880885400360379'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7580188453882133873/posts/default/8549880885400360379'/><link rel='alternate' type='text/html' href='http://www.socialitoutbursts.com/2015/12/building-your-dream-home-knowing-web.html' title='Building your dream home - knowing web site roles and skill sets'/><author><name>Doug Hoff</name><uri>http://www.blogger.com/profile/13575254944704650271</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7580188453882133873.post-8889760885968740459</id><published>2015-12-13T17:29:00.000-08:00</published><updated>2017-06-14T08:05:39.625-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Agile"/><category scheme="http://www.blogger.com/atom/ns#" term="business analysis"/><category scheme="http://www.blogger.com/atom/ns#" term="business goals"/><category scheme="http://www.blogger.com/atom/ns#" term="business rules"/><category scheme="http://www.blogger.com/atom/ns#" term="data dictionary"/><category scheme="http://www.blogger.com/atom/ns#" term="documentation"/><category scheme="http://www.blogger.com/atom/ns#" term="project management"/><category scheme="http://www.blogger.com/atom/ns#" term="requirements"/><category scheme="http://www.blogger.com/atom/ns#" term="use case"/><category scheme="http://www.blogger.com/atom/ns#" term="user story"/><category scheme="http://www.blogger.com/atom/ns#" term="value"/><category scheme="http://www.blogger.com/atom/ns#" term="value-driven"/><title type='text'>Don&#39;t be a LeBron and write user stories for you. Create team value with these examples.</title><content type='html'>&lt;div style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;
&lt;img alt=&quot;Lebron James by basketlol&quot; class=&quot;dev-content-normal &quot; collect_rid=&quot;1:50490313&quot; data-embed-format=&quot;thumb&quot; data-embed-id=&quot;50490313&quot; data-embed-type=&quot;deviation&quot; src=&quot;http://orig12.deviantart.net/c85d/f/2007/068/b/f/lebron_james_by_basketlol.jpg&quot; height=&quot;308&quot; style=&quot;height: 308px; top: 0px; width: 300px;&quot; width=&quot;300&quot; /&gt; 
&lt;/div&gt;
&lt;div&gt;
I&#39;m still not happy with Agile user stories. The user story should set a goal for the team. Most perspectives of story writing I see follow the &lt;a href=&quot;http://www.scout.com/story/1537571-lebron-james-is-most-selfish-player-in-nba&quot;&gt;LeBron James school of thought&lt;/a&gt;. The typical user story I read finds value in winning for the individual player and then the projects follow those rules running into conflicts. I think it&#39;s time to do some coaching examples from stories I found on the internet.&lt;/div&gt;
&lt;h3&gt;
The easy expected format&lt;/h3&gt;
The traditional user story format:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
As a (&lt;b&gt;role&lt;/b&gt;) I want (&lt;b&gt;something&lt;/b&gt;) so that (&lt;b&gt;benefit&lt;/b&gt;)&lt;/blockquote&gt;
is supposed to benefit the person/business paying for the work. Or at least that&#39;s what I want if I&#39;m in charge. You don&#39;t want to watch the project&amp;nbsp;goals slip away and then everybody and their dog starts wanting something different. Without a guiding set of project value propositions, the user story will look like&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
As a &amp;lt;&lt;b&gt;stakeholder&lt;/b&gt;&amp;gt; I want &amp;lt;&lt;b&gt;something&lt;/b&gt; for me&amp;gt; so that &amp;lt;several excuses&amp;gt;.&lt;/blockquote&gt;
Just making an excuse for a personal need does not make a user story a requirement nor makes it easy for a developer to code it. When it&#39;s in any kind of formatted statement, the analyst can put it neatly into a document and make it passable as a project document. It&#39;s now user stories. Nobody questions it because there are no well understood rules about a good user story.&lt;br /&gt;
&lt;br /&gt;
So stop already. Here&#39;s my rules (I get to make the rules if I&#39;m paying for it):&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;The &lt;b&gt;role/stakeholder&lt;/b&gt; triggers the activity. It&#39;s like a security group description instead of a real type of person at this point. Make it broad.&lt;/li&gt;
&lt;li&gt;The &lt;b&gt;something&lt;/b&gt; is for the business. Make it the focus.&lt;/li&gt;
&lt;li&gt;The &lt;b&gt;benefit&lt;/b&gt; is for the business. Make it have value. No excuses.&lt;/li&gt;
&lt;li&gt;Use testable functional requirement writing. Any kind of limitation of data or process is a rule.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
The hard part&lt;/h3&gt;
&lt;div&gt;
Let&#39;s apply this several different ways to sets of requirements I found. In my style of writing requirements, the &lt;b&gt;business rules&lt;/b&gt; are extracted out and placed under the requirement (they are given an ID if reusable and placed in another document). The information about the data entities are extracted out and placed in a &lt;b&gt;data dictionary&lt;/b&gt; with the business details. The &lt;b&gt;design elements&lt;/b&gt; are noted. And any &lt;b&gt;project information&lt;/b&gt; is noted as well for inclusion in the project plans. Only the rules stay with the requirements while the rest get sorted and filed away in their own documents.&lt;/div&gt;
&lt;h4&gt;
Desktop backup app&lt;/h4&gt;
&lt;div&gt;
Here&#39;s an example of &lt;a href=&quot;https://www.mountaingoatsoftware.com/agile/user-stories&quot;&gt;an epic with two smaller user stories&lt;/a&gt;:&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;As a user, I can backup my entire hard drive.&lt;/li&gt;
&lt;li&gt;As a power user, I can specify files or folders to backup based on file size, date created and date modified.&lt;/li&gt;
&lt;li&gt;As a user, I can indicate folders not to backup so that my backup drive isn&#39;t filled up with things I don&#39;t need saved.&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
It&#39;s interesting to me that this first choice extracted from my Google search didn&#39;t bother with the benefit part. So here&#39;s my take on them collapsed into one story:&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;As a user, I want to backup my hard drive so I can restore files.&lt;/b&gt;&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;RULE&lt;/span&gt;&lt;/b&gt; - select files by size, date created, data modified, user choice.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;RULE&lt;/span&gt;&lt;/b&gt;&amp;nbsp;- select folders by&amp;nbsp;size, date created, data modified&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;b&gt;DATA&amp;nbsp;&lt;/b&gt;&lt;/span&gt;-&amp;nbsp;&lt;b&gt;File&lt;/b&gt;:&amp;nbsp;name, size in Kb, date created, date modified&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;b&gt;DESIGN&lt;/b&gt;&lt;/span&gt;&amp;nbsp;-&amp;nbsp;option to select an entire disk backup is the default?&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;div&gt;
The distinction between the two roles fades away as the trigger is the same for the same result. The ability to use rule-based choices for file selection is what the user story author thinks is important. But the importance might come if there is a functional difference.&amp;nbsp;The distinction between the user and power user will appear as design personas for testing.&lt;br /&gt;
&lt;br /&gt;
Most of the meat of these requirements is in the rules which corresponds to my experience of seeing a document fluff up by including the rules as variations of requirements. It&#39;s just bologna.&lt;/div&gt;
&lt;/div&gt;
&lt;h4&gt;
Agile project management app&lt;/h4&gt;
&lt;div&gt;
Here&#39;s another example of &lt;a href=&quot;https://help.rallydev.com/writing-great-user-story&quot;&gt;four related user stories&lt;/a&gt;&amp;nbsp;with other information included from the three other stories that were deemed too broad (vague) or too detailed (mostly data info):&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;A team member can view the iteration&#39;s stories and their status with main fields.&lt;/li&gt;
&lt;li&gt;A team member can view the current burndown chart on the status page, and can click it for a larger view.&lt;/li&gt;
&lt;li&gt;A team member can view or hide the tasks under the stories.&lt;/li&gt;
&lt;li&gt;A team member can edit a task from the iteration status page.&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
This one was interesting to me because the template for writing a user story looked very promising and included the goal of expressing business value. I just didn&#39;t see it in the stories. Here&#39;s my version:&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;As a team member, I want to view project user stories to be&amp;nbsp;aware of&amp;nbsp;project scope.&lt;/b&gt;&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;RULE&lt;/span&gt;&lt;/b&gt;&amp;nbsp;- select stories by iteration&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;b&gt;DATA&amp;nbsp;&lt;/b&gt;&lt;/span&gt;- &lt;b&gt;User Story&lt;/b&gt;: status, tasks, main fields(?), rank, name, size, package, owner&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;b&gt;DESIGN&lt;/b&gt;&lt;/span&gt; - tasks are able to be hidden and shown under story&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;&lt;b&gt;As a&amp;nbsp;&lt;b&gt;&lt;b&gt;team&amp;nbsp;&lt;/b&gt;member&lt;/b&gt;, I want to view project status to be&amp;nbsp;aware of project&amp;nbsp;management metrics.&lt;/b&gt;&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;font-size: x-small; font-weight: normal;&quot;&gt;&lt;b&gt;DATA&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;-&amp;nbsp;&lt;/span&gt;&lt;b&gt;User Story&lt;/b&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;:&amp;nbsp;is in scope, hours estimated, hours worked&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;b&gt;DESIGN&lt;/b&gt;&lt;/span&gt;&amp;nbsp;- project status is best viewed as a burndown chart&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;b&gt;DESIGN&lt;/b&gt;&lt;/span&gt;&amp;nbsp;- the burndown chart should be able to be viewed larger&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;&lt;b&gt;As an analyst, I want to manage user story tasks so that user stories have details.&lt;/b&gt;&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;b&gt;DESIGN&lt;/b&gt;&lt;/span&gt;&amp;nbsp;- CRUD should start from the iteration status page&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
I know there are four basic operations on entities which occur. When they all occur together, I find it useful to use a higher level requirement using the word &#39;manage.&#39; The two operations mentioned in the original versions, edit and view, would be paired with create and delete in a full set of user stories. Data base people know these &lt;a href=&quot;https://en.wikipedia.org/wiki/Create,_read,_update_and_delete&quot;&gt;basic CRUD functions&lt;/a&gt;. The entity discovered in the requirements is just the User Story. The project status is a report of all in scope project user stories.&lt;br /&gt;
&lt;ul&gt;
&lt;/ul&gt;
&lt;h4&gt;
Credit card payment&lt;/h4&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;a href=&quot;https://help.rallydev.com/writing-great-user-story&quot;&gt;Another story&lt;/a&gt;&amp;nbsp;with additional details from the same Google search result above really did use some value so here&#39;s what it looks like before:&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;As a purchaser on the website, I want the ability to pay with a credit card so that I may immediately confirm my purchase.&lt;/li&gt;
&lt;li&gt;Acceptance criteria&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;accept Discover, Visa, MC&lt;/li&gt;
&lt;li&gt;Validate CC# when entered&lt;/li&gt;
&lt;li&gt;Validate expiration data and CVV&lt;/li&gt;
&lt;li&gt;Validate billing address&lt;/li&gt;
&lt;li&gt;Generate success and failure messages after processing&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;Definition of Done&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;passes all regression tests&lt;/li&gt;
&lt;li&gt;passes testing per acceptance items&lt;/li&gt;
&lt;li&gt;approved by UI team&lt;/li&gt;
&lt;li&gt;able to show feature in company demo&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;mockup.png&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
and after using real world documentation:&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;As a customer, I want to purchase a product with a credit card so that transactions are convenient.&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;RULE&lt;/span&gt;&lt;/b&gt;&amp;nbsp;- credit cards must pass basic local validation before&amp;nbsp;submitting to credit card processor&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;credit card type -&amp;nbsp;Discover, Visa and MC&lt;/li&gt;
&lt;li&gt;number - passes Luhn algorithm&lt;/li&gt;
&lt;li&gt;expiration date - after or equal to date of transaction&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;RULE&lt;/span&gt;&lt;/b&gt;&amp;nbsp;-&amp;nbsp;credit cards submitted to credit card processor must validate with the following information (or create separate DD item)&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;credit card number&lt;/li&gt;
&lt;li&gt;expiration date&lt;/li&gt;
&lt;li&gt;card security code&lt;/li&gt;
&lt;li&gt;billing address&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;RULE&lt;/span&gt;&lt;/b&gt;&amp;nbsp;-&amp;nbsp;credit card validation should be done within 2 seconds&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;b&gt;DATA&amp;nbsp;&lt;/b&gt;&lt;/span&gt;-&amp;nbsp;&lt;b&gt;Credit card&lt;/b&gt;: &amp;nbsp;type, number, card security code (not stored), expiration date&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;b&gt;DATA&amp;nbsp;&lt;/b&gt;&lt;/span&gt;-&amp;nbsp;&lt;b&gt;Message&lt;/b&gt;: body, time/date, ID&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;b&gt;PROJECT&amp;nbsp;&lt;/b&gt;&lt;/span&gt;-&amp;nbsp;&lt;b&gt;Testing, exit criteria&lt;/b&gt;: &amp;nbsp;All regression tests must pass.&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;b&gt;PROJECT&amp;nbsp;&lt;/b&gt;&lt;/span&gt;-&amp;nbsp;&lt;b&gt;Testing, exit criteria&lt;/b&gt;: &amp;nbsp;Entire UI team approves screen forms.&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;b&gt;PROJECT&amp;nbsp;&lt;/b&gt;&lt;/span&gt;-&amp;nbsp;&lt;b&gt;Testing, user acceptance&lt;/b&gt;: prepare mock data for company demo&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;b&gt;PROJECT&lt;/b&gt;&lt;/span&gt; - &lt;b&gt;Project plan&lt;/b&gt;, stakeholders: Credit card processor, customer&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;b&gt;DESIGN&lt;/b&gt;&lt;/span&gt; - suggested screen layout of entry form - mockup.png&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;b&gt;DESIGN&lt;/b&gt;&lt;/span&gt;&amp;nbsp;-&amp;nbsp;self-service&amp;nbsp;customer&amp;nbsp;purchases are best made on a web site&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div&gt;
I really don&#39;t know why I need to confirm my own transaction since I can&#39;t confirm with anything. The confirmations are the validations which should be made quickly. The validations are really in two phases since it&#39;s a system dependent on a credit card processor.&lt;br /&gt;
&lt;h3&gt;
Summary of value driven analysis&lt;/h3&gt;
&lt;/div&gt;
&lt;div&gt;
I believe that people don&#39;t do requirements well. It&#39;s why user stories were advanced as a replacement for bad requirements. In some ways I agree with &lt;a href=&quot;http://www.alexandercowan.com/best-agile-user-story/&quot;&gt;Cowan+&#39;s throwing the baby out with the bathwater statement&lt;/a&gt;,&amp;nbsp;&quot;User stories are not requirements. They were meant to replace requirements, which suck.&quot; But I think that they just help do a better job at &lt;b&gt;user needs &lt;/b&gt;elicitation. And then the rest of the analysis should be about writing the &lt;b&gt;business value user stories/use cases&lt;/b&gt;.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
By following a format of zeroing in on the functional requirement and extracting out all the distracting and fluffing-up text into their own documents, I believe it&#39;s much easier to create usable requirements. The thing that drives the requirements the best is value. But it&#39;s &lt;b&gt;value to the business&lt;/b&gt;, not value to the individual stakeholder. Do it for the team. Don&#39;t be LeBron.&lt;br /&gt;
&lt;h4&gt;
Related blogs&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.socialitoutbursts.com/2015/11/re-inventing-usable-requirements-value.html&quot;&gt;Re-inventing usable requirements: Value-driven projects &amp;amp; the failure of the Agile user story&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.socialitoutbursts.com/2015/10/as-agile-user-story-writer-i-want.html&quot;&gt;As an Agile user story writer, I want a kitten. - Rewriting user stories for business value&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.socialitoutbursts.com/feeds/8889760885968740459/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.socialitoutbursts.com/2015/12/dont-be-lebron-and-write-user-stories.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7580188453882133873/posts/default/8889760885968740459'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7580188453882133873/posts/default/8889760885968740459'/><link rel='alternate' type='text/html' href='http://www.socialitoutbursts.com/2015/12/dont-be-lebron-and-write-user-stories.html' title='Don&#39;t be a LeBron and write user stories for you. Create team value with these examples.'/><author><name>Doug Hoff</name><uri>http://www.blogger.com/profile/13575254944704650271</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7580188453882133873.post-8109601684198335267</id><published>2015-11-04T21:28:00.000-08:00</published><updated>2016-07-29T04:07:25.567-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Agile"/><category scheme="http://www.blogger.com/atom/ns#" term="Alistair Cockburn"/><category scheme="http://www.blogger.com/atom/ns#" term="business analysis"/><category scheme="http://www.blogger.com/atom/ns#" term="Elizabeth Keogh"/><category scheme="http://www.blogger.com/atom/ns#" term="goal-driven"/><category scheme="http://www.blogger.com/atom/ns#" term="Mike Cohn"/><category scheme="http://www.blogger.com/atom/ns#" term="project management"/><category scheme="http://www.blogger.com/atom/ns#" term="requirements"/><category scheme="http://www.blogger.com/atom/ns#" term="Scott Ambler"/><category scheme="http://www.blogger.com/atom/ns#" term="use case"/><category scheme="http://www.blogger.com/atom/ns#" term="user story"/><category scheme="http://www.blogger.com/atom/ns#" term="value-driven"/><category scheme="http://www.blogger.com/atom/ns#" term="XP"/><title type='text'>Re-inventing usable requirements: Value-driven projects &amp; the failure of the Agile user story</title><content type='html'>&lt;div style=&quot;clear: right; float: right;&quot;&gt;
&lt;a data-flickr-embed=&quot;true&quot; href=&quot;https://www.flickr.com/photos/gsfc/15084150039/in/photolist-oYWdhp-hHeTJN-6QLHdF-8TZj6J-8kArcW-6QK3X4-8GGV2G-tJbJf5-bmeT2o-6YuYE7-5VT7uQ-c8VEpo-6Qv6wD-9KgqiH-6rMYtw-9KgjhK-arsndK-gWK58x-85HPW2-dFkuLQ-6QHMZg-njnKGG-7tUwtD-6QJrCc-ek9ntT-aLuVYP-njnKQN-o2b4RL-6acnY7-9KgqhX-6a8gbM-bjTBGb-5mtvas-77rLe-2sEbya-8i5wDy-v2BDTm-8pSW3J-6DpJi5-6zfcDY-dAP2Qf-6Lqa6r-asju2j-95Yds7-6aWvUN-eKKDT9-9bk2LL-g7yCNT-8NdhL8-aXHTdn&quot; style=&quot;margin-bottom: 1em; margin-left: 1em;&quot; title=&quot;Hubble Helps Find Smallest Known Galaxy Containing a Supermassive Black Hole&quot;&gt;&lt;img alt=&quot;Hubble Helps Find Smallest Known Galaxy Containing a Supermassive Black Hole&quot; height=&quot;240&quot; src=&quot;https://farm4.staticflickr.com/3919/15084150039_b1bed17210_n.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;script async=&quot;&quot; charset=&quot;utf-8&quot; src=&quot;//embedr.flickr.com/assets/client-code.js&quot;&gt;&lt;/script&gt;
&lt;/div&gt;
&lt;div&gt;
I&#39;m fascinated by the attraction of the &lt;a href=&quot;http://guide.agilealliance.org/guide/user-stories.html&quot;&gt;Agile user story&lt;/a&gt; with requirements writers and the effort to make it be a final usable requirement. &lt;b&gt;Stakeholders format their needs from their view using&amp;nbsp;the simplistic Agile user story&lt;/b&gt;. But they shouldn&#39;t. That list of stories then becomes the requirements document or backlog with little analysis. It can reel in any amount of confusing scope easily much like a black hole will attract anything it gets close to.&lt;/div&gt;
&lt;br /&gt;
I wrote about rewriting user stories into business&#39; goal targeted requirements in &lt;a href=&quot;http://www.socialitoutbursts.com/2015/10/as-agile-user-story-writer-i-want.html&quot;&gt;my last blog&lt;/a&gt; and my best words to describe it is as &lt;b&gt;a value-driven approach&lt;/b&gt;. After writing that I found that &lt;a href=&quot;http://sirenian.livejournal.com/&quot;&gt;Elizabeth Keogh&lt;/a&gt;&amp;nbsp;(&lt;a href=&quot;https://twitter.com/lunivore&quot;&gt;@lunivore&lt;/a&gt;)&amp;nbsp;suggested that &lt;a href=&quot;http://sirenian.livejournal.com/47679.html&quot;&gt;business value is more important&lt;/a&gt; than the user role back in 2008. But I want to go deeper. I find that the detail level of the user story is unusable as a coder except to start making informed guesses.&lt;br /&gt;
&lt;div&gt;
&lt;h2&gt;
&lt;b&gt;Project value&lt;/b&gt;&lt;/h2&gt;
&lt;b&gt;Needs elicitation&lt;/b&gt; is the common starting point of a project. This is normal. Needs are selfish. But needs can&#39;t be met until everyone decides what the business goal is that the needs address. The goal should be to solve a business problem. The agreement on the &lt;b&gt;problem statement&lt;/b&gt; becomes the starting point for gathering focused needs.&lt;br /&gt;
&lt;br /&gt;
Once there is a&amp;nbsp;problem statement, the needs can be framed in that context instead of the individual project stakeholder&amp;nbsp;or customer. I don&#39;t think the stakeholder is going to give you any amount of money to write your code so why tailor the project to each one of them? &lt;b&gt;It&#39;s the business that gains the value&lt;/b&gt;; it&#39;s the business that pays the bills; it&#39;s the business that should be the context of the requirements.&lt;br /&gt;
&lt;h2&gt;
User story versions&lt;/h2&gt;
&lt;a href=&quot;http://www.ambysoft.com/scottAmbler.html&quot;&gt;Scott Ambler&lt;/a&gt;, a prolific Agile writer and process thinker, outlines the user story on his&amp;nbsp;&lt;a href=&quot;http://www.agilemodeling.com/artifacts/userStory.htm&quot;&gt;Agile Modeling site&lt;/a&gt;:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;pre-2008&lt;/b&gt;: user story begins as an informal simple &quot;I want a ...&quot; kind of statement&lt;/li&gt;
&lt;li&gt;&lt;b&gt;2008+&lt;/b&gt;: &lt;a href=&quot;https://www.mountaingoatsoftware.com/company/about-mike-cohn&quot;&gt;Mike Cohn&lt;/a&gt; adds the party benefiting from the value In&amp;nbsp;&lt;a href=&quot;http://www.amazon.com/exec/obidos/ASIN/0321205685/ambysoftinc/&quot;&gt;User Stories Applied&lt;/a&gt;&amp;nbsp;with the format of &quot;As a (role) I want (something) so that (benefit).&quot;&lt;/li&gt;
&lt;/ul&gt;
Scott has a list of user stories on his site in the informal style that include:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Students can purchase monthly parking passes online.&lt;/li&gt;
&lt;li&gt;Parking passes can be paid via credit cards.&lt;/li&gt;
&lt;li&gt;Parking passes can be paid via PayPal.&lt;/li&gt;
&lt;/ul&gt;
The Mike Cohn user story of the first bullet point above according to Scott would be:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
As a Student I want to purchase a parking pass so that I can drive to school.&lt;/blockquote&gt;
&lt;div&gt;
The Elizabeth Keogh user story of the same story would probably look like&lt;/div&gt;
&lt;div&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
In order to drive to school, as a Student, I want to purchase a parking pass.&lt;/blockquote&gt;
&lt;ul&gt;
&lt;/ul&gt;
&lt;div&gt;
Both of those examples have the Student getting the value. If I&#39;m the starving student, I want to park free. Did you people ask me? None of those are real benefits. After I get done changing this need into a value-driven requirement it will look completely different:&lt;/div&gt;
&lt;/div&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
The school sells permits to park vehicles on school property.&lt;/blockquote&gt;
&lt;div&gt;
You&#39;ll see the benefit as a large scope requirement that traces down (is a parent item) to this requirement. The user story is a needs elicitation tool but with a process flaw. The user stories are passed on the the programmer who think they have structure. The reductionist user story rearranges the words of the &quot;requirements&quot; you find in an Excel spreadsheets and passes them on to development.&lt;br /&gt;
&lt;h2&gt;
Needs vs requirements&lt;/h2&gt;
&lt;div&gt;
A need is a statement of any scope granularity, any priority, with or without a responsible party, and either functional or not. It could even be a design as envisioned by the stakeholder trying to grasp how to convey what they think will get the job done.&amp;nbsp;&lt;b&gt;Needs have so many shapes and forms that they can&#39;t be processed easily.&lt;/b&gt;&amp;nbsp;They have no structure which is why &quot;requirements&quot; meetings last so long. They are really needs elicitation brainstorming sessions.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Needs have to be rewritten into organized requirements.&amp;nbsp;&lt;b&gt;A good requirement has structure&lt;/b&gt;. That structure is testable. &lt;b&gt;A good set of requirements is complete. &lt;/b&gt;That completeness is validated by a model and the stakeholders. Structure and models take training and time to do well. Stakeholders don&#39;t have that time. Analysts do.&lt;br /&gt;
&lt;br /&gt;
The biggest problem for my students in my Business Analysis class seems to be stopping at a good enough stage where the needs are all lined up neatly with enough words so it looks passable. The critical thinking skills should kick in to test the requirements but the tests are not well understood about what the goal is for a good requirement. Programmers don&#39;t communicate and use their tool-driven BDD/TDD/XDD style processes to wrangle the statements into some code.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;h2&gt;
Value-driven requirements&lt;/h2&gt;
My value-driven approach for the first parking pass requirement would be much more detailed and focused on the school that is paying for the project. &lt;b&gt;A goal accomplishes business value&lt;/b&gt;&amp;nbsp;in a functional requirement statement and can be rolled up to a goal group. &lt;b&gt;A&amp;nbsp;goal group expresses larger scoped business values&lt;/b&gt;. For the goal, &lt;b&gt;rules express how &lt;/b&gt;the functional requirement is to be executed.&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Goal group&lt;/b&gt;: The school&amp;nbsp;offsets direct costs for parking.&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Goal&lt;/b&gt;: The school sells&amp;nbsp;permission&amp;nbsp;to park&amp;nbsp;vehicles&amp;nbsp;on school property.&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;b&gt;RULE&lt;/b&gt;&lt;/span&gt;: parking permissions are valid in one month increments&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;b&gt;RULE&lt;/b&gt;&lt;/span&gt;:&amp;nbsp;permissions&amp;nbsp;are only offered online&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;b&gt;RULE&lt;/b&gt;&lt;/span&gt;:&amp;nbsp;permissions&amp;nbsp;can be paid for with credit cards (Visa, MasterCard, AmEx) or PayPal.&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;li&gt;&lt;b&gt;Goal group&lt;/b&gt;:&amp;nbsp;The school provides a secure environment.&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Goal&lt;/b&gt;:&amp;nbsp;The school controls vehicular access to school property.&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;b&gt;RULE&lt;/b&gt;&lt;/span&gt;:&amp;nbsp;Drivers access school parking lots through entrances requiring&amp;nbsp;permission.&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;li&gt;&lt;b&gt;Design recommendation&lt;/b&gt;: parking passes should be used as&amp;nbsp;permission evidence.&lt;/li&gt;
&lt;ul&gt;&lt;ul&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;div&gt;
The &lt;b&gt;Student&lt;/b&gt; of the user story is a valuable piece of requirements information but not for the requirements statements. It should become a &lt;a href=&quot;http://www.steptwo.com.au/papers/kmc_personas&quot;&gt;persona &lt;/a&gt;as long as descriptive details are added to make them more real. Personas should be used as a design step in the project and for testing but not for requirements. You&#39;ll also need an Instructor or Employee persona.&lt;br /&gt;
&lt;br /&gt;
A &lt;b&gt;parking pass&lt;/b&gt; is a permission mechanism that can be replaced with another solution and not affect the requirements. That makes it a design choice and unless there is a constraint on the project for doing it, it is not worded in the requirements statements. It should be captured as a stakeholder idea for a solution in a category of design recommendations.&lt;br /&gt;
&lt;br /&gt;
My&lt;b&gt; goal &lt;/b&gt;follows a similar structure as Alistair Cockburn&#39;s&amp;nbsp;&lt;a href=&quot;http://alistair.cockburn.us/Structuring+use+cases+with+goals&quot;&gt;goal driven use case&lt;/a&gt; except for adding the rules directly into that scenario if the rules are not reusable in other use cases. Many goals should be able to be found that roll up to a goal group. And goal groups can be drilled down into to find other goals. Business value becomes more strategic as you roll up your goals.&lt;br /&gt;
&lt;br /&gt;
It&#39;s the focus on solving our own needs as we see them instead of creating value out of solving a business problem that has us creating confusion in requirements. Encourage the stakeholders to start thinking as a team from the business viewpoint and find the value that is in your project.&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://www.socialitoutbursts.com/feeds/8109601684198335267/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.socialitoutbursts.com/2015/11/re-inventing-usable-requirements-value.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7580188453882133873/posts/default/8109601684198335267'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7580188453882133873/posts/default/8109601684198335267'/><link rel='alternate' type='text/html' href='http://www.socialitoutbursts.com/2015/11/re-inventing-usable-requirements-value.html' title='Re-inventing usable requirements: Value-driven projects &amp; the failure of the Agile user story'/><author><name>Doug Hoff</name><uri>http://www.blogger.com/profile/13575254944704650271</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7580188453882133873.post-8948966393772856426</id><published>2015-10-22T11:04:00.000-07:00</published><updated>2017-06-14T08:07:56.048-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Agile"/><category scheme="http://www.blogger.com/atom/ns#" term="business analysis"/><category scheme="http://www.blogger.com/atom/ns#" term="kitten"/><category scheme="http://www.blogger.com/atom/ns#" term="project management"/><category scheme="http://www.blogger.com/atom/ns#" term="requirements"/><category scheme="http://www.blogger.com/atom/ns#" term="use case"/><category scheme="http://www.blogger.com/atom/ns#" term="user story"/><category scheme="http://www.blogger.com/atom/ns#" term="XP"/><title type='text'>As an Agile user story writer, I want a kitten -  Rewriting user stories for business value.</title><content type='html'>&lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;float: right; margin-left: 1em; text-align: right;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://4.bp.blogspot.com/-ewlL8jO843c/Vikky084scI/AAAAAAAAQVE/ajagoKKp0fM/s1600/6288800559_43946256a0_m.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto; text-align: right;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;286&quot; src=&quot;https://4.bp.blogspot.com/-ewlL8jO843c/Vikky084scI/AAAAAAAAQVE/ajagoKKp0fM/s400/6288800559_43946256a0_m.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;div style=&quot;text-align: right;&quot;&gt;
source: &lt;a href=&quot;https://www.flickr.com/photos/jillsawyer-phypers/6288800559/in/photolist-apM4Yw-azHKiR-oyDJ8q-7DiyC5-4CrKxc-opdCW9-eVcUS7-7iJWXw-i9dPAs-4FZu2b-a8hYYV-fMvNDb-TuxNZ-egDjP-fG2fC-4eYyin-4EHLTB-rNbo7-6xBn9M-ds9jUc-9DCBdz-brJc3U-f7EqW2-e66Wok-anoStQ-cnRcK3-pjbCx4-4GqRwT-9zytdZ-oreiSu-idgu5J-nyajBF-53sRK4-4SR675-a85zR7-pk4CRi-e56GpR-diEHCN-9zytcz-33qyj6-pVda31-sXNzTV-bpV16j-cJoZbf-mLPPT1-6jYkLc-oGxgC1-pkTkL1-4Mgqiv-8nwLkk/&quot;&gt;Flickr&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
Teaching yet another iteration of &lt;a href=&quot;http://centriq.com/corporate/class-details/2146161316-41-104/business-analysis-for-the-it-professional/&quot;&gt;my Business Analysis class&lt;/a&gt; here in Kansas City, I was struck by the two versions of Agile &lt;a href=&quot;https://en.wikipedia.org/wiki/User_story&quot;&gt;user story&lt;/a&gt; techniques I had somehow collected over the years. They were different and would yield two different results. And I didn&#39;t like that.&lt;br /&gt;
&lt;h2&gt;
Project phases&lt;/h2&gt;
There&#39;s a basic flow to managing a project:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Figure out the problem (strategy)&lt;/li&gt;
&lt;li&gt;Break the problem down into chunks (analysis)&lt;/li&gt;
&lt;li&gt;Plan what we have to do (design)&lt;/li&gt;
&lt;li&gt;Do/build each of the chunks (development)&lt;/li&gt;
&lt;li&gt;Make sure we did it right (testing)&lt;/li&gt;
&lt;li&gt;Use the solution (production)&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
But I think we should add a step that will influence how we write our documentation. It&#39;s the step where someone pays for the project. That someone is the project sponsor and they want to see some sort of value returned for the investment of time and money on the project.&lt;br /&gt;
&lt;h2&gt;
The User&#39;s Story&lt;/h2&gt;
&lt;/div&gt;
&lt;div&gt;
The &lt;a href=&quot;https://www.mountaingoatsoftware.com/agile/user-stories&quot;&gt;common form of a user story&lt;/a&gt; in the Agile world goes something like this:&lt;/div&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
As a &amp;lt;type of user&amp;gt;, I want &amp;lt;some goal&amp;gt; so that &amp;lt;some reason&amp;gt;&lt;/blockquote&gt;
The &amp;lt;&lt;b&gt;type of user&amp;gt;&lt;/b&gt; is important so that we can wrap our security access controls around them in the design stage. And the type is also useful when we are eliciting other types of user stories during a brainstorming session of some sort so that we can come up with related user stories from the same sort of user. A use case would combine similar types of users into one actor so that the interface is simplified when moving into design.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;&lt;b&gt;some goal&amp;gt;&lt;/b&gt; is important because it provides a similar sized chunk of scope that allows a project manager to create a work breakdown structure with work packages. I also find it useful to provide an architectural sized component based on the goal in software.&lt;br /&gt;
&lt;br /&gt;
But there is trouble here. We can ask for the goal from the perspective of the user or from the business. It&#39;s been my inflexible rule that you never ask a stakeholder the priority of a requirement. The expected answer from any manager worth their salt is that they gotta have it. Ask a room full of managers what the priority is and you&#39;ll make your meeting much longer than you wanted to.&lt;br /&gt;
&lt;br /&gt;
One of the lessons I learned from Incident Management in &lt;a href=&quot;http://wiki.en.it-processmaps.com/index.php/ITIL_2011&quot;&gt;ITIL &lt;/a&gt;is that you measure &lt;a href=&quot;http://wiki.en.it-processmaps.com/index.php/Checklist_Incident_Priority&quot;&gt;priority of incidents&lt;/a&gt; as a combination of impact and urgency giving you some hard numbers to work with. &lt;b&gt;Impact &lt;/b&gt;is the number of people affected or marketplace and &lt;b&gt;urgency &lt;/b&gt;focuses on the perceived value often backed up by a level of management to manage that process or measured by how much you want that new 4k monitor.&lt;br /&gt;
&lt;br /&gt;
But this priority should be from the view of the business and not from the user of the product or service. If we asked the user what they wanted (akin to asking a 7-year old what college they want to attend) they will tell us all sorts of useless goals. Maybe it really is an important goal of that stakeholder to own a kitten or &lt;a href=&quot;https://www.youtube.com/watch?v=BKorP55Aqvg&quot;&gt;draw seven red perpendicular lines&lt;/a&gt;&amp;nbsp;but the business is not going to find value in it.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;&lt;b&gt;some reason&amp;gt;&lt;/b&gt; then expands on the trouble that started with the user&#39;s goal. They&#39;ll tell you a wonderful reason why it&#39;s important to them. But we&#39;re looking for business justification here and in my mind, I&#39;d want that justification to be in the form of a higher level business goal. When things go right, the business goal is in mind, but it&#39;s not a constraint of the format.&lt;br /&gt;
&lt;br /&gt;
I know that in &lt;a href=&quot;http://www.extremeprogramming.org/&quot;&gt;Extreme Programming&lt;/a&gt;, where the user story came from, &lt;a href=&quot;http://www.extremeprogramming.org/rules/userstories.html&quot;&gt;user stories were seen as an estimation tool&lt;/a&gt;. They also were written from the perspective of the system. That makes sense to me. I need a metric to measure my project where all the units are of the same size. That way I can make that PERT chart make sense in terms of scope.&lt;br /&gt;
&lt;h2&gt;
The System&#39;s Story&lt;/h2&gt;
And why is a basic functional requirements statement written from the perspective of the system? Because the requirements have to be executed by the system and tests confirm that. So we write it that way. But why not write from the perspective of the user? Let&#39;s try a test. A user story to run a report for monthly sales goes like this:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
As a sales manager, I want to see a sales report, so I can identify the sales reps who are under-performing.&lt;/blockquote&gt;
What&#39;s the value there? Aren&#39;t the under-performing sales reps making money for the business? Is this a personal agenda or a goal that isn&#39;t well thought out? How about we try the story from a business perspective?&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
As a sales manager, the system shall create a sales report, so that sales trends can predicted.&lt;/blockquote&gt;
Or another version from a different user might be:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
As a marketing manager, the system shall create a sales report, so that marketing can budget for advertising.&amp;nbsp;&lt;/blockquote&gt;
I can see the business value in sales forecasting and marketing budgeting. What I see in the other story is a sales manager who creates churn in their sales division which is not value to the business. The requirement is the same.&lt;br /&gt;
&lt;h2&gt;
User story to requirements&lt;/h2&gt;
&lt;div&gt;
So I&#39;m not going to try and change the user story because it&#39;s a good elicitation tool. It does not have enough detail to be a good way to deliver requirements to anyone downstream in design or programming. But I did want to raise the issue of the two-faced nature of the statement. In the statement, we can direct the value to the stakeholder or better, we should direct the value to the business.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
My recommendation is when using user stories, that we take those stories as a user&#39;s statement of what they want and then rewrite them as a good requirements statement. In a use case format we would have&lt;/div&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;b&gt;Stakeholders&lt;/b&gt; (interests):&amp;nbsp;sales manager (wants forecasting), marketing manager (wants budgeting)&lt;br /&gt;
&lt;b&gt;Actor&lt;/b&gt;: report reader&lt;br /&gt;
&lt;b&gt;Use case&lt;/b&gt;: create sales report&lt;/blockquote&gt;
As it was, I figured out that all the business value reinforcement I had been getting from other sources over the years caused me to rewrite the user story in a different format when adding it to my lecture. So in the end, I made a mistake about the real format of the user story and learned from my mistakes. No, I didn&#39;t get a kitten.&lt;br /&gt;
&lt;h4&gt;
Related blogs&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.socialitoutbursts.com/2015/11/re-inventing-usable-requirements-value.html&quot;&gt;Re-inventing usable requirements: Value-driven projects &amp;amp; the failure of the Agile user story&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.socialitoutbursts.com/2015/12/dont-be-lebron-and-write-user-stories.html&quot;&gt;Don&#39;t be a LeBron and write user stories for you. Create team value with these examples.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.socialitoutbursts.com/feeds/8948966393772856426/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.socialitoutbursts.com/2015/10/as-agile-user-story-writer-i-want.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7580188453882133873/posts/default/8948966393772856426'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7580188453882133873/posts/default/8948966393772856426'/><link rel='alternate' type='text/html' href='http://www.socialitoutbursts.com/2015/10/as-agile-user-story-writer-i-want.html' title='As an Agile user story writer, I want a kitten -  Rewriting user stories for business value.'/><author><name>Doug Hoff</name><uri>http://www.blogger.com/profile/13575254944704650271</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://4.bp.blogspot.com/-ewlL8jO843c/Vikky084scI/AAAAAAAAQVE/ajagoKKp0fM/s72-c/6288800559_43946256a0_m.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7580188453882133873.post-8930354134730112787</id><published>2015-05-15T08:28:00.000-07:00</published><updated>2015-05-15T08:28:41.171-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="analysis"/><category scheme="http://www.blogger.com/atom/ns#" term="design"/><category scheme="http://www.blogger.com/atom/ns#" term="ITIL"/><category scheme="http://www.blogger.com/atom/ns#" term="methodologies"/><category scheme="http://www.blogger.com/atom/ns#" term="programming"/><category scheme="http://www.blogger.com/atom/ns#" term="project management"/><category scheme="http://www.blogger.com/atom/ns#" term="Software development process"/><category scheme="http://www.blogger.com/atom/ns#" term="strategy"/><category scheme="http://www.blogger.com/atom/ns#" term="testing"/><category scheme="http://www.blogger.com/atom/ns#" term="value"/><title type='text'>Blame chain or value chain? Value drives a project from strategy to test.</title><content type='html'>&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;i style=&quot;font-weight: normal;&quot;&gt;This series of blogs is based on a talk entitled &quot;&lt;/i&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;Is Your Programmer a Better Business Analyst Than You Are&lt;/span&gt;&lt;i style=&quot;font-weight: normal;&quot;&gt;&quot; given by the author to the Kansas City IIBA user group meeting in April of 2015.&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;i style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/i&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://www.arulmanigoldsg.com/img/Chain/9.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://www.arulmanigoldsg.com/img/Chain/9.png&quot; height=&quot;273&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
It&#39;s always been a problem for me that programming students have no clue about working with existing project requirements. I&#39;ve never seen any teaching nor any methodology come from the Agile movement let alone any other technical cultural phenomenon. If no one is concerned that the project moves from the business analyst role to the programming role, that must mean that &lt;b&gt;the project really starts with the programmer&lt;/b&gt; because that&#39;s where the project deliverables really begin. And so, programmers have reverse-engineered analysis and design skill sets to cope by themselves,&lt;br /&gt;
&lt;br /&gt;
Of course, real world projects are the practical training ground for understanding how to work with project teams, but couldn&#39;t we make this a part of the skill set for a programmer before they get thrown into the war room?&lt;br /&gt;
&lt;br /&gt;
Web programmers are used to this. They are a department of one. They gather information on understanding customers&#39; needs, write copy, design layouts, put the code together, and deploy and maintain a site. As the web application world expands, this puts immense pressure on the technical web employee to know about any new development and keep up their own skills tied to the legacy apps they maintain.&lt;br /&gt;
&lt;br /&gt;
Programmers I talk to have &lt;b&gt;an implicit distrust of the project&lt;/b&gt;. They find a purpose but &lt;b&gt;no real detail&lt;/b&gt; in it and muddle through the development as best as they can. In fact, most businesses without a solid project management process don&#39;t have much to work with. The management will throw stuff out into the market and claim that the market is crazy. The analysts are documenting whatever anyone says and then complaining that the users don&#39;t know what they want. Coders code whatever they think is right and try to make the project manager&#39;s deadlines.&lt;br /&gt;
&lt;br /&gt;
And testers. Standing at the end of the line with a deadline rapidly approaching doesn&#39;t make anyone try to establish any standards knowing that they are holding up the deployment. They just try to find as many bugs as possible in the time they have.&lt;br /&gt;
&lt;br /&gt;
The programming students I see have not been trained in business so it&#39;s reasonable they don&#39;t know how &lt;b&gt;good goals can drive their behavior&lt;/b&gt;. A couple of questions have always intrigued me when working with a software project:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;What if all the people on the project have the same goal?&amp;nbsp;&lt;/li&gt;
&lt;li&gt;What if they all had documents that built on the previous documents and were traceable back to the original value-driven goals?&amp;nbsp;&lt;/li&gt;
&lt;li&gt;What if the project was measured on how it realized that goal?&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
A project proposal should be estimated on value. Not only just a return on investment but understanding what the priority is for the enterprise. Value for &lt;b&gt;internal projects&lt;/b&gt; can be seen as basically two parts but more can be added if justified:&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;The &lt;b&gt;number of people&lt;/b&gt; in the company that will use the project in their processes&lt;/li&gt;
&lt;li&gt;The &lt;b&gt;visibility of that project&lt;/b&gt; in the organizational chart of the business so that if that project fails, the level of management involved determines the severity ticket level.&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
Value for &lt;b&gt;external projects&lt;/b&gt; is estimated the same way. There are the same two metrics involved:&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;The &lt;b&gt;number of people&lt;/b&gt; in the market that will find value in using the product/service.&lt;/li&gt;
&lt;li&gt;The &lt;b&gt;amount of money&lt;/b&gt; that the market is willing to spend to get that product/service&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
The two measures are both based on &lt;b&gt;quantity of value&lt;/b&gt;. The project then can look back to this value of opportunity and see how to organize the project pieces. For instance, business goals, the basic business driven goals that begin the requirements process, are based on what value the business gets. Requirements meetings should never ask the question &quot;What do you want the project to do for you?&quot; because it&#39;s not about the person. The better question is &quot;What should the project do to produce the best value for the business?&quot;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Then, the business can see that the customers have needs where they should adapt their product/service to achieve the best solution to a large market segment. The question for the &lt;b&gt;strategists &lt;/b&gt;and &lt;b&gt;enterprise analysts&lt;/b&gt; would be &quot;What can I do to help our customers/employees solve their problems?&quot;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;Business analysts&lt;/b&gt; would then understand that the value perceived at the strategy level should be communicated downstream to the programmers clearly. That communication should be able to move directly into testing of that code because the target of the project development effort is to communicate business value to the technical staff. The analysts&#39; question then is &quot;How does what the customer/staff do right now help them get tasks done?&quot;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
The &lt;b&gt;designers &lt;/b&gt;have the task of taking the current processes and possible new processes and shoehorning them into a fit with the business assets so that it improves the value. They have to think about improving life in general. The question for them is &quot;How can we translate the requirements into code/real life? The trick is to make it look like it&#39;s simple.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
The final stage in the value transition from idea to final service/product is that someone double-checks that the value has actually arrived. That&#39;s the job of the tester who assures that the quality will be there though &lt;b&gt;verifying &lt;/b&gt;minor things throughout the project and &lt;b&gt;validating&lt;/b&gt;&amp;nbsp;that the expectations were met at the end. Their questions are &quot;How can I guarantee quality?&quot;and &quot;How can I let everyone know how well they did?&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
In making the move to measuring by value, the chain of &lt;a href=&quot;http://en.wikipedia.org/wiki/Fear,_uncertainty_and_doubt&quot;&gt;FUD&lt;/a&gt;&amp;nbsp;will change to the chain of quality. But there are lots more questions that I&#39;ve asked and I&#39;ll continue this series by taking on those questions. Here&#39;s a sample of some:&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;How should scope be measured by value?&lt;/li&gt;
&lt;li&gt;How should scope be organized by value?&lt;/li&gt;
&lt;li&gt;What is the role of analysis?&lt;/li&gt;
&lt;li&gt;What does a programmer need requirements to look like?&lt;/li&gt;
&lt;li&gt;What are good business quality metrics for code?&lt;/li&gt;
&lt;li&gt;Is TDD dead or alive?&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://www.socialitoutbursts.com/feeds/8930354134730112787/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.socialitoutbursts.com/2015/05/blame-chain-or-value-chain-value-drives.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7580188453882133873/posts/default/8930354134730112787'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7580188453882133873/posts/default/8930354134730112787'/><link rel='alternate' type='text/html' href='http://www.socialitoutbursts.com/2015/05/blame-chain-or-value-chain-value-drives.html' title='Blame chain or value chain? Value drives a project from strategy to test.'/><author><name>Doug Hoff</name><uri>http://www.blogger.com/profile/13575254944704650271</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7580188453882133873.post-2654874735513336177</id><published>2014-07-08T06:11:00.004-07:00</published><updated>2015-06-03T07:26:49.345-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="JavaScript"/><category scheme="http://www.blogger.com/atom/ns#" term="web"/><title type='text'>New ThoughtWorks Technology Radar out today</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://www.thoughtworks.com/imgs/tw-logo.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://www.thoughtworks.com/imgs/tw-logo.png&quot; height=&quot;49&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;color: #333333; font-family: Arial, sans-serif; font-size: 15px; line-height: 20px; margin-bottom: 1em; margin-top: 1em;&quot;&gt;
Four trends are identified in the Thoughtworks strategic IT report called&amp;nbsp;&lt;a data-mce-href=&quot;http://www.thoughtworks.com/radar/#/&quot; href=&quot;http://www.thoughtworks.com/radar/#/&quot; rel=&quot;nofollow&quot; style=&quot;color: #006699; outline: medium;&quot;&gt;Technology Radar&lt;/a&gt;&amp;nbsp;published twice a year. The most important one for me is the one concerning JavaScript technologies and the challenge it brings for understanding. That is the reason that I&#39;m developing my new course,&amp;nbsp;&lt;a data-mce-href=&quot;http://centriq.com/Courses/WD-520.aspx?tID=2146162125&quot; href=&quot;http://centriq.com/Courses/WD-520.aspx?tID=2146162125&quot; rel=&quot;nofollow&quot; style=&quot;color: #006699; outline: medium;&quot;&gt;JavaScript Powered Web Apps&lt;/a&gt;&amp;nbsp;focusing on the language&#39;s application to building client-side logic for web pages and developing more with the browser. And it&#39;s been challenging without the guidance of book authors and coordinating corporations.&lt;/div&gt;
&lt;div style=&quot;color: #333333; font-family: Arial, sans-serif; font-size: 15px; line-height: 20px; margin-bottom: 1em; margin-top: 1em;&quot;&gt;
Here&#39;s the full excerpt on JavaScript:&lt;/div&gt;
&lt;blockquote style=&quot;color: #333333; font-family: Georgia, serif; font-size: 17px; line-height: 24px; margin-left: 30px; margin-top: 20px; padding-right: 50px; position: relative;&quot;&gt;
&lt;div style=&quot;margin-bottom: 1em; margin-top: 1em;&quot;&gt;
Churn in the JavaScript World&amp;nbsp;— We thought the rate of change in the Ruby open source space was rapid until the full rush of JavaScript frameworks arrived. JavaScript used to be a condiment technology, always used to augment other technologies. It has kept that role but expanded into its own platform with a staggering rate of change. Trying to understand the breadth of this space is daunting, and innovation is rampant. Like the Java and Ruby open source spaces, we hope it will eventually calm to at least a deluge.&lt;/div&gt;
&lt;/blockquote&gt;
&lt;div style=&quot;color: #333333; font-family: Arial, sans-serif; font-size: 15px; line-height: 20px; margin-bottom: 1em; margin-top: 1em;&quot;&gt;
The other three trends were&amp;nbsp;&lt;/div&gt;
&lt;ul class=&quot;ng-scope&quot; style=&quot;color: #333333; font-family: Arial, sans-serif; font-size: 15px; line-height: 20px; list-style-image: initial; list-style-position: initial; margin: 1em 0px; padding-left: 3em;&quot;&gt;
&lt;li&gt;&lt;strong&gt;Microservices and the Rise of the API&lt;/strong&gt;&amp;nbsp;(also somewhat aligned with the JavaScript trends),&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Conway&#39;s Law&lt;/strong&gt;&amp;nbsp;(&quot;organizations which design systems ... are constrained to produce designs which are copies of the communication structures of these organizations&quot;) and&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Re-decentralization&lt;/strong&gt;&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
</content><link rel='replies' type='application/atom+xml' href='http://www.socialitoutbursts.com/feeds/2654874735513336177/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.socialitoutbursts.com/2014/07/new-thoughworks-technology-radar-out.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7580188453882133873/posts/default/2654874735513336177'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7580188453882133873/posts/default/2654874735513336177'/><link rel='alternate' type='text/html' href='http://www.socialitoutbursts.com/2014/07/new-thoughworks-technology-radar-out.html' title='New ThoughtWorks Technology Radar out today'/><author><name>Doug Hoff</name><uri>http://www.blogger.com/profile/13575254944704650271</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7580188453882133873.post-1469150130027960832</id><published>2014-04-21T13:37:00.000-07:00</published><updated>2014-05-19T12:09:45.193-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Adobe"/><category scheme="http://www.blogger.com/atom/ns#" term="Bootstrap"/><category scheme="http://www.blogger.com/atom/ns#" term="CSS3"/><category scheme="http://www.blogger.com/atom/ns#" term="Express"/><category scheme="http://www.blogger.com/atom/ns#" term="GitHub"/><category scheme="http://www.blogger.com/atom/ns#" term="Google"/><category scheme="http://www.blogger.com/atom/ns#" term="Grunt"/><category scheme="http://www.blogger.com/atom/ns#" term="HTML5"/><category scheme="http://www.blogger.com/atom/ns#" term="JavaScript"/><category scheme="http://www.blogger.com/atom/ns#" term="jQuery"/><category scheme="http://www.blogger.com/atom/ns#" term="jQuery Mobile"/><category scheme="http://www.blogger.com/atom/ns#" term="Knockout"/><category scheme="http://www.blogger.com/atom/ns#" term="Mongo"/><category scheme="http://www.blogger.com/atom/ns#" term="node.js"/><category scheme="http://www.blogger.com/atom/ns#" term="SASS"/><category scheme="http://www.blogger.com/atom/ns#" term="web"/><title type='text'>JavaScript Powered Web Apps - new programming course</title><content type='html'>&lt;div&gt;
&lt;a href=&quot;http://upload.wikimedia.org/wikipedia/commons/f/f4/20060513_toolbox.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://upload.wikimedia.org/wikipedia/commons/f/f4/20060513_toolbox.jpg&quot; height=&quot;240&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;The world of web programming is moving ahead into what should be called Web 3.0 (the semantic web is just a pipe dream). It&#39;s using &lt;b&gt;JavaScript as a unifying layer&lt;/b&gt; and re-imagining how the web can do what it does without the benefit of large back end frameworks. Web 1 was delivering files to a client. Web 2.0 was letting clients think they were in control by faking a desktop application over HTTP. And now we can have a true application that has been enhanced with networking to services in 3.0.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
For the next several months I will be developing &lt;b&gt;a new course&amp;nbsp;&lt;/b&gt;to complement the classes that I wrote a few years back on HTML5, CSS, jQuery, jQuery Mobile, and JavaScript that bring these components together. I see tooling on web applications starting to mature and it is the right time to start to promote a new style of web application development. Except that there&#39;s no one way to do anything yet. Adobe is getting close to providing another great IDE with &lt;a href=&quot;http://html.adobe.com/edge/code/&quot;&gt;Edge Code&lt;/a&gt; but I think we&#39;re a ways off yet. Even Google might become a player here with their IDE code named &lt;a href=&quot;https://github.com/dart-lang/spark&quot;&gt;Spark&lt;/a&gt;&amp;nbsp;built with &lt;a href=&quot;https://www.dartlang.org/&quot;&gt;Dart &lt;/a&gt;and &lt;a href=&quot;http://www.polymer-project.org/&quot;&gt;Polymer&lt;/a&gt;.&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
The new course, &lt;b&gt;JavaScript Powered Web Apps&lt;/b&gt;, will walk students through building a &quot;site&quot; using combinations of node.js, nginx, SASS, Mongo, Bootstrap, Github, jQuery, jQuery Mobile, Grunt, AngularJS, Knockout, Express, etc. I&#39;ll probably do four days of sample sites and then show a &lt;b&gt;web work flow&lt;/b&gt; and let students choose their own tools.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
The course will assume some programming or design experience with a web site but most of the exercises will be scripted so that anyone can follow them. The students that likely will be most interested are those that don&#39;t have the back end skill set and see a tremendous advantage in learning only one language to do both front and back end coding. That means that anyone from high school that has learned the basics of HTML and CSS can enroll.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
A lot of the training is on the administration and workflow of the tools which is harder to learn from books. I&#39;ll try to capture what I can for the exercises but if anyone has suggestions, I&#39;m willing to listen. And as always, the class will continually be updated as the tools rev and newer tools emerge.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
For instance, I&#39;m still waiting to see how &lt;a href=&quot;http://famo.us/&quot;&gt;Famo.us&lt;/a&gt; is going to impact the animation tools. It looks incredible but won&#39;t be completely public until May 19th&amp;nbsp;when &lt;a href=&quot;http://html5devconf.com/&quot;&gt;HTML5 Dev Conference&lt;/a&gt;&amp;nbsp;in San Francisco starts. And I want to spin up a &lt;a href=&quot;http://partial.js/&quot;&gt;partial.js&lt;/a&gt; site as well I think. But I&#39;ll never know until it&#39;s finished. After all, a project&#39;s requirements are never finished until the project is over.&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://www.socialitoutbursts.com/feeds/1469150130027960832/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.socialitoutbursts.com/2014/04/javascript-web-tools-new-programming.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7580188453882133873/posts/default/1469150130027960832'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7580188453882133873/posts/default/1469150130027960832'/><link rel='alternate' type='text/html' href='http://www.socialitoutbursts.com/2014/04/javascript-web-tools-new-programming.html' title='JavaScript Powered Web Apps - new programming course'/><author><name>Doug Hoff</name><uri>http://www.blogger.com/profile/13575254944704650271</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7580188453882133873.post-2359351164034637631</id><published>2014-01-23T09:10:00.000-08:00</published><updated>2015-10-22T20:11:46.683-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Agile"/><category scheme="http://www.blogger.com/atom/ns#" term="analysis"/><category scheme="http://www.blogger.com/atom/ns#" term="documentation"/><category scheme="http://www.blogger.com/atom/ns#" term="project management"/><category scheme="http://www.blogger.com/atom/ns#" term="test driven development"/><title type='text'>Documentation as a control mechanism - not! Think communication.</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://2.bp.blogspot.com/-pY4rnApmwbM/TnhOfzNgwuI/AAAAAAAAAZY/YL7JzpgTfSI/Documentcontrol_01.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://2.bp.blogspot.com/-pY4rnApmwbM/TnhOfzNgwuI/AAAAAAAAAZY/YL7JzpgTfSI/Documentcontrol_01.jpg&quot; height=&quot;287&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
People associate documentation in Agile with waste. In fact, the &lt;a href=&quot;http://agilemanifesto.org/&quot;&gt;Agile Manifesto&lt;/a&gt; prefers &quot;working software over comprehensive documentation&quot; but does that mean that the purpose of documentation is secondary to the output of the project? Agile set us up with a poor dichotomy. I mean I prefer getting a paycheck over driving to work. Maybe we&#39;re asking the wrong question.&lt;br /&gt;
&lt;br /&gt;
I don&#39;t see documentation as an optional part of the project. It&#39;s definitely an output and can be measured and that is the allure of the artifact. The traditional usage of documentation in a project is as a control mechanism when I look at the process outputs. It&#39;s often managers and specifically project managers who finalize a phase with the documentation. It&#39;s what they do. They design their work package by understanding the scope of the effort and if there is something measurable at the end it becomes a good work package.&lt;br /&gt;
&lt;br /&gt;
Back in the darker ages of procedural coding, there was a movement to measure code by what it did. That entailed putting an estimate on the smallest granular operations of the computer in the code itself. That worked for awhile when the code was consistent in its granularity. But code has changed and what we can hide in a line of code has become enormous. The &lt;a href=&quot;http://en.wikipedia.org/wiki/Function_point&quot;&gt;function point&lt;/a&gt; estimation methods died.&lt;br /&gt;
&lt;br /&gt;
Now we estimate, if at all, with a measurement of work package time completion and complexity (from the programmer&#39;s perspective) or confidence (from the project manager&#39;s perspective). The dependency is on the work package design. If we don&#39;t have a good description of what it is we&#39;re going to do, we can&#39;t plan it. Many projects flounder from a lack of analytic description.&lt;br /&gt;
&lt;br /&gt;
So where does this good description come from? Well, your requirements are the place to find these descriptions. Of course, the best requirements are ideally the needs and wants of the stakeholders massaged in to testable work packages detailed down to repeatable tasks so that no business questions have to be asked constrained by project limitations. But in reality, they are more of a garbage dump of what people said in excruciating long meetings.&lt;br /&gt;
&lt;br /&gt;
The requirement document gets written and then we&#39;re on to the next phase. Follow along on your Gantt chart please. As a programmer, my input should be the output of the analyst. But with all the hubbub in programming circles about how to organize and manage testability, it looks like the analyst isn&#39;t doing a very good job. I don&#39;t see much evidence of usable requirements from my point of view either.&lt;br /&gt;
&lt;br /&gt;
So, the Agile people are right. Processes without consumers are pure waste. Let&#39;s right-size this documentation by eliminating it. No one used it anyway. But what are we losing? We&#39;re losing the ability to record a decision and the to think about the design of the business. Of course, if it wasn&#39;t good for the programmer, then it &lt;b&gt;was &lt;/b&gt;useless.&lt;br /&gt;
&lt;br /&gt;
But let&#39;s consider that the analyst can benefit the programmer. Then the documentation becomes a stepping stone to better code. Then there is communication of the needs of the business. Then there is less thinking on the role of the programmer who gets to focus on writing well-structured and reusable code.&lt;br /&gt;
&lt;br /&gt;
The role of the documentation is really that of communication when the project scales. If you are the sole stakeholder and programmer, you probably have all the requirements circling in your head at any one time. No documentation is necessary. If two people know exactly what has to be done after a good agreeable meeting, no documentation has to be created. But if there is a memory loss, a sick day, a new member to the team, you will need some documentation. The need for documentation increases as the need to communicate increases.&lt;br /&gt;
&lt;br /&gt;
The management of documentation needs a metric instead of lazily setting the goal to that of creating a greater return on investment (ROI). Just how do you measure that? My standards for measuring are in the more subjective realm whereby you produce the documentation, ask the user of that documentation if they understand, and then see if they are able to do their tasks without any further questions. The quality score descends as the need for answers or the amount of perceivable confusion increases. Get feedback.&lt;br /&gt;
&lt;br /&gt;
Documentation is not a gate to the next phase and to be signed off. I&#39;ll take the stance a little further than the traditional &quot;living document&quot; style of writing. Since it is to be a communication mechanism, it has to always communicate the current understanding of what the project is about. Anyone and everyone can be a contributor but the use cases / user stories / work packages should be maintained by the analyst / technical writer role so that they achieve the best level of testability and detail. Wikis are good.&lt;br /&gt;
&lt;br /&gt;
The trend of &quot;&lt;a href=&quot;http://www.agilemodeling.com/essays/barelyGoodEnough.html&quot;&gt;barely good enough&lt;/a&gt;&quot; documentation, I think, is allowing the programmer to use their analytic skills in place of poor business analysis skills in the workplace, which is sad but the best workable solution to getting the job done. Stop producing unusable business documents and let the programmer get on with the code. Why are programmers strongly in favor of commenting their code and following Test Driven Development? Because those are the tools that get the documentation done a better way.&lt;br /&gt;
&lt;br /&gt;
So, lets eschew the notion of controlling the project by requiring the project members to produce a result that isn&#39;t used in the next phase. Control the project by understanding the work package completions. The artifact that completes the work package is the code or the pseudo-code (the use case) in some form or another, not a project document.&lt;br /&gt;
&lt;br /&gt;
So, is documentation is secondary to the output of the project? Getting a paycheck over driving to work is comparing the result with a task for getting that result. It depends whether you have to go to the office or not. Documentation is not secondary. It&#39;s just a question of whether you need to communicate more or not.&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://www.socialitoutbursts.com/feeds/2359351164034637631/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.socialitoutbursts.com/2014/01/documentation-as-control-mechanism-not.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7580188453882133873/posts/default/2359351164034637631'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7580188453882133873/posts/default/2359351164034637631'/><link rel='alternate' type='text/html' href='http://www.socialitoutbursts.com/2014/01/documentation-as-control-mechanism-not.html' title='Documentation as a control mechanism - not! Think communication.'/><author><name>Doug Hoff</name><uri>http://www.blogger.com/profile/13575254944704650271</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-pY4rnApmwbM/TnhOfzNgwuI/AAAAAAAAAZY/YL7JzpgTfSI/s72-c/Documentcontrol_01.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7580188453882133873.post-4564996901738172087</id><published>2013-05-22T09:13:00.001-07:00</published><updated>2016-05-03T05:01:31.072-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Bootstrap"/><category scheme="http://www.blogger.com/atom/ns#" term="D3"/><category scheme="http://www.blogger.com/atom/ns#" term="HTML5"/><category scheme="http://www.blogger.com/atom/ns#" term="jQuery"/><category scheme="http://www.blogger.com/atom/ns#" term="Martin Fowler"/><category scheme="http://www.blogger.com/atom/ns#" term="Mobile First"/><category scheme="http://www.blogger.com/atom/ns#" term="NoSQL"/><category scheme="http://www.blogger.com/atom/ns#" term="PhoneGap"/><category scheme="http://www.blogger.com/atom/ns#" term="SASS"/><category scheme="http://www.blogger.com/atom/ns#" term="SCSS"/><category scheme="http://www.blogger.com/atom/ns#" term="Technology Radar"/><category scheme="http://www.blogger.com/atom/ns#" term="think tank"/><category scheme="http://www.blogger.com/atom/ns#" term="Zepto"/><title type='text'>Thoughtworks Technology Radar</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://pixabay.com/static/uploads/photo/2013/07/12/15/59/proximity-150698_960_720.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://pixabay.com/static/uploads/photo/2013/07/12/15/59/proximity-150698_960_720.png&quot; width=&quot;316&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;span id=&quot;goog_1909330922&quot;&gt;&lt;/span&gt;&lt;span id=&quot;goog_1909330923&quot;&gt;&lt;/span&gt;&lt;a href=&quot;https://www.blogger.com/&quot;&gt;&lt;/a&gt;Free software, free books and &lt;a href=&quot;http://thoughtworks.fileburst.com/assets/technology-radar-may-2013.pdf&quot;&gt;Technology Radar&lt;/a&gt;. If you&#39;ve sat any of my classes, you&#39;ve heard me talk about those three things every time. &lt;br /&gt;
&lt;br /&gt;
I have been reading &lt;a href=&quot;http://martinfowler.com/&quot;&gt;Martin Fowler&lt;/a&gt;&#39;s writing for most of my IT training career and have found him practical, in-depth, and current. He also satisfies that craving for a little higher level analysis thinking that developer blogs don&#39;t always cover well enough exposing their lack of experience with other technologies and limiting their authority on changing my opinion.&lt;br /&gt;
&lt;br /&gt;
The new edition of TR is out today. It&#39;s taken me years to work through some of the recommendations that they&#39;ve put together in their think tank, &lt;a href=&quot;http://www.thoughtworks.com/&quot;&gt;ThoughtWorks&lt;/a&gt;, that are considered to be the cutting edge worth keeping abreast on. They also don&#39;t mind telling you when a technology is not worth your time. Both are worth my time to read and understand.&lt;br /&gt;
&lt;br /&gt;
The trends highlighted in this issue are:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Falling boundaries - cloud development, co-location, perimeterless enterprise&lt;/li&gt;
&lt;li&gt;Proven practices to areas that missed them - CSS frameworks, database migrations for NoSQL, etc.&lt;/li&gt;
&lt;li&gt;Lightweight analytics&lt;/li&gt;
&lt;li&gt;Infrastructure as code&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
The four major areas that are reviewed are&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;Techniques&lt;/li&gt;
&lt;li&gt;Platforms&lt;/li&gt;
&lt;li&gt;Tools&lt;/li&gt;
&lt;li&gt;Languages &amp;amp; Frameworks&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;h3&gt;
Techniques&lt;/h3&gt;
&lt;div&gt;
For me, being mostly a web developer, I was happy to see that the Adopt recommendations in the Techniques section were for mobile testing on mobile networks moving away from the fake simulators as well as using promises for&amp;nbsp;asynchronous&amp;nbsp;programming, giving assurance of feedback for us JavaScript/AJAX coders.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
The next level of recommendation down from the Adopt level is the Trial level which should be approached with a little more thought. You see &lt;a href=&quot;http://www.html5rocks.com/en/features/storage&quot;&gt;HTML5 storage&lt;/a&gt; replacing cookies and &lt;a href=&quot;http://www.copyblogger.com/mobile-first/&quot;&gt;Mobile First&lt;/a&gt; here as well as &lt;a href=&quot;http://en.wikipedia.org/wiki/Responsive_web_design&quot;&gt;responsive web design&lt;/a&gt;. I agree with all those because they&#39;re not total solutions to a problem. What&#39;s interesting is their lack of concern for exhaustive browser based testing in the Hold level which means don&#39;t worry about it.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
For Windows and Powershell people, you&#39;ll be glad to know that Chef, Puppet and Octopus (automated deployment of ASP.NET apps without PowerShell) &amp;nbsp;to support infrastructure tasks has made Windows automation a much better choice.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3&gt;
Platforms&lt;/h3&gt;
&lt;div&gt;
Martin is following the NoSQL movement very closely and has put &lt;a href=&quot;http://www.mongodb.org/&quot;&gt;MongoDB &lt;/a&gt;as the choice for his Adopt level. &lt;a href=&quot;http://www.couchbase.com/&quot;&gt;CouchBase&lt;/a&gt;, &lt;a href=&quot;http://hadoop.apache.org/&quot;&gt;Hadoop &lt;/a&gt;and &lt;a href=&quot;https://developers.google.com/bigquery/&quot;&gt;BigQuery&lt;/a&gt; are down one level in Trial. &lt;a href=&quot;http://nodejs.org/&quot;&gt;Node.js&lt;/a&gt; is down there too probably as a technology too green to make it worth our while yet. But I&#39;m waiting for their take on &lt;a href=&quot;http://polymer-project.appspot.com/&quot;&gt;Polymer&lt;/a&gt;&amp;nbsp;and &lt;a href=&quot;http://meteor.com/&quot;&gt;Meteor&lt;/a&gt;. Also interesting in the next level up from the basement, Assess, is &lt;a href=&quot;http://phonegap.com/&quot;&gt;PhoneGap&lt;/a&gt; (Apache Cordova) and &lt;a href=&quot;http://zeptojs.com/&quot;&gt;Zepto.js&lt;/a&gt;, the smaller relative to jQuery.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
I wasn&#39;t surprised to see WS-* holding the bottom place in the platforms with REST taking over web services slowly but surely.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3&gt;
Tools&lt;/h3&gt;
&lt;div&gt;
I&#39;m using &lt;a href=&quot;http://nuget.org/&quot;&gt;NuGet &lt;/a&gt;for .NET development and was happy to see it in the top level. Check out &lt;a href=&quot;http://chocolatey.org/&quot;&gt;Chocolatey NuGet&lt;/a&gt; as well if you do Windows administration. Maven is on Hold.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
I&#39;ve been searching for that right observer component that Google&#39;s &lt;a href=&quot;http://angularjs.org/&quot;&gt;Angular.js&lt;/a&gt;, &lt;a href=&quot;http://knockoutjs.com/&quot;&gt;Knockout.js&lt;/a&gt;&amp;nbsp;&amp;nbsp;or &lt;a href=&quot;http://emberjs.com/&quot;&gt;Ember.js&lt;/a&gt;&amp;nbsp;cover but also includes the whole MV* framework thing which I have covered with either a Java or .NET web framework.&amp;nbsp;&lt;a href=&quot;http://reactive-extensions.github.io/RxJS/&quot;&gt;Reactive extensions for .NET&lt;/a&gt; (RxJS) didn&#39;t fare too well in the Assess level. My choice here for a solution to the observer pattern could be&amp;nbsp;&lt;a href=&quot;http://www.reactjs.com/&quot;&gt;ReactJS&lt;/a&gt;&amp;nbsp;or RxJS.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
The one tool that surprised me was &lt;a href=&quot;http://d3js.org/&quot;&gt;D3&lt;/a&gt;. I have been recommending &lt;a href=&quot;http://raphaeljs.com/&quot;&gt;Raphael&lt;/a&gt; for JavaScript charting and watching D3 some but it shows up now in the Adopt level due to better complementary libraries such as &lt;a href=&quot;http://code.shutterstock.com/rickshaw/&quot;&gt;Rickshaw &lt;/a&gt;and &lt;a href=&quot;http://square.github.io/crossfilter/&quot;&gt;Crossfilter&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3&gt;
Languages and Frameworks&lt;/h3&gt;
&lt;div&gt;
CSS frameworks like &lt;a href=&quot;http://sass-lang.com/&quot;&gt;SASS/SCSS &lt;/a&gt;and &lt;a href=&quot;http://compass-style.org/&quot;&gt;Compass&lt;/a&gt;&amp;nbsp;were staying in the Adopt level. The web apps that are moving away from traditional client/server architecture have much to learn yet but many frameworks are beginning to have business value so that they show up on the Trial level. These are HTML5 for offline applications, JavaScript as a platform and JavaScript MV* frameworks. Twitter &lt;a href=&quot;http://twitter.github.io/bootstrap/&quot;&gt;Bootstrap &lt;/a&gt;also shows up as an Assess. But&amp;nbsp;&lt;a href=&quot;http://backbonejs.org/&quot;&gt;Backbone.js&lt;/a&gt;&amp;nbsp;&amp;nbsp;and handwritten CSS are as good as last year in the Hold level.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
A surprising observation was that Team Foundation Server caused productivity problems as a version control system. ThoughtWorks recommends Git, Perforce, or Subversion instead. It&#39;s a good thing that &lt;a href=&quot;http://visualstudiogallery.msdn.microsoft.com/abafc7d6-dcaa-40f4-8a5e-d6724bdb980c&quot;&gt;Visual Studio works with Git&lt;/a&gt;.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
And just when you thought analytics couldn&#39;t get any better than Google Analytics, they see great promise in the data set aggregation and AWS/Hadoop management of your billions of web hits with &lt;a href=&quot;http://snowplowanalytics.com/&quot;&gt;Snowplow Analytics&lt;/a&gt;.&lt;/div&gt;
&lt;br /&gt;
I&#39;m sure I&#39;ve missed some recommendations and packages people are using such as that new fangled language Mel Tillis and Kenny Rogers started about a paralyzed vet&#39;s wife going in to town for the evening without him. But read through the assessment and mine the results for some great improvements to your technology stack.</content><link rel='replies' type='application/atom+xml' href='http://www.socialitoutbursts.com/feeds/4564996901738172087/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.socialitoutbursts.com/2013/05/thoughtworks-technology-radar.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7580188453882133873/posts/default/4564996901738172087'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7580188453882133873/posts/default/4564996901738172087'/><link rel='alternate' type='text/html' href='http://www.socialitoutbursts.com/2013/05/thoughtworks-technology-radar.html' title='Thoughtworks Technology Radar'/><author><name>Doug Hoff</name><uri>http://www.blogger.com/profile/13575254944704650271</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7580188453882133873.post-8852716292785143154</id><published>2012-07-10T06:16:00.000-07:00</published><updated>2012-07-10T06:26:28.123-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="AJAX"/><category scheme="http://www.blogger.com/atom/ns#" term="CSS3"/><category scheme="http://www.blogger.com/atom/ns#" term="HTML5"/><category scheme="http://www.blogger.com/atom/ns#" term="HTTP"/><category scheme="http://www.blogger.com/atom/ns#" term="internet"/><category scheme="http://www.blogger.com/atom/ns#" term="jQuery"/><category scheme="http://www.blogger.com/atom/ns#" term="jQuery Mobile"/><category scheme="http://www.blogger.com/atom/ns#" term="LESS"/><category scheme="http://www.blogger.com/atom/ns#" term="programming"/><category scheme="http://www.blogger.com/atom/ns#" term="web"/><category scheme="http://www.blogger.com/atom/ns#" term="YQL"/><title type='text'>HTML5 and future of the universe</title><content type='html'>&lt;a href=&quot;http://www.flickr.com/photos/andyi/482006549/&quot; title=&quot;Nesting Dolls by andyi, on Flickr&quot;&gt;&lt;img alt=&quot;Nesting Dolls&quot; src=&quot;http://farm1.staticflickr.com/222/482006549_5fd6a94d97.jpg&quot; style=&quot;float: right; height: 300px; margin: 0 0 5px 5px;&quot; /&gt;&lt;/a&gt;
Web site people are always catching up. You get involved in an extended project and by the time you&#39;re done, they&#39;ve changed the rules again and it&#39;s time to learn a new technology. I used to think this was a problem. Now I see it as a responsibility to manage the information of an ever expanding set of hardware devices that are becoming digital.&lt;br /&gt;
&lt;br /&gt;
As these digital devices become of age, they mature into a web access point because of the value it adds to the device. Some devices like tablets are born with the ability to talk to the web at birth. Others, like DVD players, had to wait until they grew up.&lt;br /&gt;
&lt;br /&gt;
HTML5 and CSS3 are expanding to fill the needs of the digital appetites of these new devices. As we innovate to market test a device at every screen size possible from phone to tablet to TV, the older development technologies will continually be updated until they break. So far, HTML and CSS are holding their own. CSS not so much. Even the old dog, JavaScript, is doing well but has some sturdy &lt;a href=&quot;http://jquery.com/&quot;&gt;jQuery &lt;/a&gt;and &lt;a href=&quot;http://coffeescript.org/&quot;&gt;CoffeeScript &lt;/a&gt;crutches.&lt;br /&gt;
&lt;br /&gt;
The raft of &lt;b&gt;programming languages&lt;/b&gt; not originally focused on the web that try to manage that environment push the simple text retrieval process to be more app like. In their desire to improve the unique asynchronous request-response communication model, they, in my mind, will eventually destroy it. Face it, it&#39;s slow. You can do faster communication with AJAX which is why you see Google using so much of it on their web apps. It&#39;s why &lt;a href=&quot;http://jquerymobile.com/&quot;&gt;jQuery Mobile&lt;/a&gt; designed their GUI library for speed with AJAX so much that it&#39;s the primary communication model that tolerates the web request model.
&lt;br /&gt;
&lt;br /&gt;
Now a newer model of finer grained I/O control in JavaScript is starting to appear called the &lt;a href=&quot;http://www.html5rocks.com/en/tutorials/websockets/basics/&quot;&gt;WebSocket&lt;/a&gt; API. Did you not see this coming? It&#39;s not the end until each language has a way to use a simple library of functions/methods to talk to any device of your choice.&lt;br /&gt;
&lt;br /&gt;
Languages are shifting little in popularity. A &lt;a href=&quot;http://techcrunch.com/2012/07/05/index-shows-ios-programming-language-now-in-top-3-as-mobile-development-booms/&quot;&gt;recent TIOBE trend announcement&lt;/a&gt; showing that the iOS platform language of choice, Objective-C, has been the faster gainer over the last two years to take the #3 spot on the chart, is the only major change. With Java trending downward and losing the lead to C, a venerable&amp;nbsp;stalwart, I&#39;m not seeing where anybody is picking up the slack. C# is on a slow trend upwards but not that much. Even php is losing ground.&lt;br /&gt;
&lt;br /&gt;
My guess is that &lt;b&gt;JavaScript &lt;/b&gt;is picking up the slack from reading &lt;a href=&quot;http://www.readwriteweb.com/hack/2012/06/5-ways-to-tell-which-programming-lanugages-are-most-popular.php&quot;&gt;language popularity articles&lt;/a&gt;. You can run a survey of projects on &lt;a href=&quot;http://stackexchange.com/&quot;&gt;StackExchange &lt;/a&gt;and &lt;a href=&quot;https://github.com/&quot;&gt;Github &lt;/a&gt;and find out that JavaScript has the top ranking there. &lt;a href=&quot;http://news.ycombinator.com/&quot;&gt;&lt;span id=&quot;goog_2113233974&quot;&gt;&lt;/span&gt;Hacker News&lt;span id=&quot;goog_2113233975&quot;&gt;&lt;/span&gt;&lt;/a&gt; put JavaScript in the top three as well with Python and Ruby taking the top spots. Even job rankings on &lt;a href=&quot;http://dice.com/&quot;&gt;Dice.com&lt;/a&gt; show JavaScript in the top three to get a better sense of real world usage. Book sales from O&#39;Reilly put JavaScript at #2 showing a mix of business and hobby use.&lt;br /&gt;
&lt;br /&gt;
The next step for JavaScript would be to revive the server side version of the language and make it as available as php is for Apache. Then the major languages would write APIs to talk to JavaScript and we would have a programming interface for the web. Oh, yeah, and somebody do something in JavaScript to make CSS easier to work with. &lt;a href=&quot;http://lesscss.org/&quot;&gt;LESS&lt;/a&gt; is a good start.&lt;br /&gt;
&lt;br /&gt;
So, if you are a web person, the future of the web looks like it centers on &lt;b&gt;web application development&lt;/b&gt; and JavaScript is taking center stage. APIs will be promulgating and JavaScript/jQuery/minor language support plug-ins will be promoted. One of the APIs that is next on my bucket list is &lt;a href=&quot;http://developer.yahoo.com/yql/&quot;&gt;YQL&lt;/a&gt;. I think with &lt;a href=&quot;http://shop.oreilly.com/product/0636920014263.do&quot;&gt;the first book out on YQL in a few months from O&#39;Reilly&lt;/a&gt;, we&#39;ll see an interest in mining the data of the web from JavaScript languages.&lt;br /&gt;
&lt;br /&gt;
Excuse me now, I have to get back to the future and read about what&#39;s coming so when I start working again I won&#39;t be too far behind.</content><link rel='replies' type='application/atom+xml' href='http://www.socialitoutbursts.com/feeds/8852716292785143154/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.socialitoutbursts.com/2012/07/html5-and-future-of-universe.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7580188453882133873/posts/default/8852716292785143154'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7580188453882133873/posts/default/8852716292785143154'/><link rel='alternate' type='text/html' href='http://www.socialitoutbursts.com/2012/07/html5-and-future-of-universe.html' title='HTML5 and future of the universe'/><author><name>Doug Hoff</name><uri>http://www.blogger.com/profile/13575254944704650271</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7580188453882133873.post-6282789762656252323</id><published>2012-03-09T12:47:00.001-08:00</published><updated>2016-06-08T06:26:37.940-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Adobe"/><category scheme="http://www.blogger.com/atom/ns#" term="Centriq"/><category scheme="http://www.blogger.com/atom/ns#" term="debugger"/><category scheme="http://www.blogger.com/atom/ns#" term="internet"/><category scheme="http://www.blogger.com/atom/ns#" term="jQuery Mobile"/><category scheme="http://www.blogger.com/atom/ns#" term="mobile"/><category scheme="http://www.blogger.com/atom/ns#" term="software testing"/><title type='text'>Impressive Shadow debuts at SXSW</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; float: right; text-align: center;&quot;&gt;
&lt;a href=&quot;http://2.bp.blogspot.com/-XZKjLiKTAYI/T1psBR6gxvI/AAAAAAAAAfc/8gyHYv7KPLE/s1600/shadowtest.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; src=&quot;https://2.bp.blogspot.com/-XZKjLiKTAYI/T1psBR6gxvI/AAAAAAAAAfc/8gyHYv7KPLE/s200/shadowtest.png&quot; width=&quot;145&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
Adobe is showing off a great new product for mobile developers at the &lt;a href=&quot;http://sxsw.com/&quot;&gt;SXSW conference&lt;/a&gt; in Austin this weekend. I caught the announcement and have been using it to achieve a better workflow. It seems the more devices you need to test, the better it works. But I&#39;m just working with an iPad and and Android phone. It&#39;s great to sit back and watch all the screens update in real time all at once. and it&#39;s still a 1.0 product with many features to come in the future.&lt;br /&gt;
&lt;br /&gt;
Some of the things you start realizing when you leave Shadow open while you browse are that some sites don&#39;t do a good mobile design, some require constant authentication, some use AJAX to fake a new page request and which ones have a great sense of adaptive design.&lt;br /&gt;
&lt;br /&gt;
The main feature is a Chrome plug-in that talks to your iOS or Android app so that when you launch your Windows or Mac Shadow application with the apps talking to your local network, the apps will &quot;shadow&quot; what you do on your desktop. The more you like Developer Tools in Chrome the more you will like the product because it shows a webkit Developer Tools based window for your remote device.&lt;br /&gt;
&lt;br /&gt;
The product was a very well timed conjunction of talent from the &lt;a href=&quot;http://phonegap.github.com/weinre/&quot;&gt;weinre open source code&lt;/a&gt;&amp;nbsp;that was acquired through Adobe&#39;s purchase of Nitobi, the maker of PhoneGap and &lt;a href=&quot;https://browserlab.adobe.com/en-us/index.html&quot;&gt;Adobe&#39;s BrowserLab&lt;/a&gt;. Adobe Shadow is free also and looks to get only better as they add support for Firefox and localhost development environments.&lt;br /&gt;
&lt;br /&gt;
The 1.0 version is posted at the &lt;a href=&quot;http://labs.adobe.com/downloads/shadow.html&quot;&gt;Adobe Labs&lt;/a&gt;.This will definitely a product to work with in my new Mobile Web Application Development using jQuery Mobile course here at &lt;a href=&quot;http://centriq.com/&quot;&gt;Centriq&lt;/a&gt;.</content><link rel='replies' type='application/atom+xml' href='http://www.socialitoutbursts.com/feeds/6282789762656252323/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.socialitoutbursts.com/2012/03/impressive-shadow-debuts-at-sxsw.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7580188453882133873/posts/default/6282789762656252323'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7580188453882133873/posts/default/6282789762656252323'/><link rel='alternate' type='text/html' href='http://www.socialitoutbursts.com/2012/03/impressive-shadow-debuts-at-sxsw.html' title='Impressive Shadow debuts at SXSW'/><author><name>Doug Hoff</name><uri>http://www.blogger.com/profile/13575254944704650271</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://2.bp.blogspot.com/-XZKjLiKTAYI/T1psBR6gxvI/AAAAAAAAAfc/8gyHYv7KPLE/s72-c/shadowtest.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7580188453882133873.post-2725834628763628297</id><published>2011-09-28T17:38:00.000-07:00</published><updated>2011-09-29T06:33:32.923-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Amazon"/><category scheme="http://www.blogger.com/atom/ns#" term="Apple"/><category scheme="http://www.blogger.com/atom/ns#" term="CSS3"/><category scheme="http://www.blogger.com/atom/ns#" term="Facebook"/><category scheme="http://www.blogger.com/atom/ns#" term="Google"/><category scheme="http://www.blogger.com/atom/ns#" term="graphics"/><category scheme="http://www.blogger.com/atom/ns#" term="HTML5"/><category scheme="http://www.blogger.com/atom/ns#" term="jQuery"/><category scheme="http://www.blogger.com/atom/ns#" term="jQuery Mobile"/><category scheme="http://www.blogger.com/atom/ns#" term="programming"/><category scheme="http://www.blogger.com/atom/ns#" term="standards"/><category scheme="http://www.blogger.com/atom/ns#" term="strategy"/><title type='text'>The web’s four hats &amp; an overview of HTML5</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://www.childtherapytoys.com/store/media/LargeImages2/FourHats.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;http://www.childtherapytoys.com/store/media/LargeImages2/FourHats.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
I recently returned from speaking at a conference in Kentucky where I ended up putting on four hats and seeing HTML5 and the future of mobile computing differently each time. I was struggling with trying to figure out &lt;b&gt;why standards committees take so long&lt;/b&gt; to come to an agreement. After all, the vision of the web is clear, right?&lt;br /&gt;
&lt;br /&gt;
Why did we get off the XHTML superhighway and jump on the scenic route where we ignore the bumps and potholes of bad syntax and limited metadata? What kind of folks are driving the bus right now and are they really going the right direction? Should we stay on the bus while we head into Mobileville? I&#39;ve decided that the questions you pose are at least if not more important than the answers you think are right. Because that tells you what your vision is and if you&#39;ve followed a little of this blog, you know that &lt;b&gt;strategic vision is important&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
The four hats are:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;The Engineer&lt;/b&gt; - who likes all of the functionality logically thought out&lt;/li&gt;
&lt;li&gt;&lt;b&gt;The DBA&lt;/b&gt; - who likes the the data well defined and stored&lt;/li&gt;
&lt;li&gt;&lt;b&gt;The Designer&lt;/b&gt; - who likes to deliver an emotional message to the customer&lt;/li&gt;
&lt;li&gt;&lt;b&gt;The Businessman&lt;/b&gt; - who makes sure the customer is happy and they make a profit&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
Those four hats have led me to not watch the standards groups as much as watch Google and Amazon for what to use in the future that people want. The real vision of the web is to make money by giving computer users what they want. Waiting for standards groups won&#39;t get you there. After all, the current prediction is that&amp;nbsp;&lt;a href=&quot;http://www.techrepublic.com/blog/programming-and-development/html-5-editor-ian-hickson-discusses-features-pain-points-adoption-rate-and-more/718&quot;&gt;CSS3 will be completely standardized by 2022&lt;/a&gt;. &amp;nbsp;Here&#39;s a rundown on the thinking under each hat:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: large;&quot;&gt;Engineer&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
As a software engineer and instructor of many students who become programmers, I know that the web has become populated with these folks that want to turn it into &lt;b&gt;an application environment&lt;/b&gt;. That way they can program for it and make it do their will. The back end servers are full of Java, C#, and php and that same force is heading to the browser with JavaScript.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
I see the HTML world being altered so that these variable manipulators can have better code and read each other&#39;s functions easier. The push in HTML5 towards meaningful &lt;b&gt;naming of the loosely typed datatypes&lt;/b&gt; that were divs and spans is going to give programmers a better handle on what it is they are talking to. The code will become less dependent on ids and more dependent on setting up the HTML with the proper element names like &amp;lt;mark&amp;gt;, &amp;lt;time&amp;gt;, &amp;lt;progress&amp;gt;, &amp;lt;meter&amp;gt;, &amp;lt;details&amp;gt; and some of the more argued over names like &amp;lt;style scoped&amp;gt;.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
I can see where the types of activities previously handled by &lt;b&gt;JavaScript are being pushed into HTML&lt;/b&gt;. This reduces the language down to one, slightly more complex, language. Do we want a merger here of interests? Is the MVC principle being corrupted and should we really mix our text markup with programatic data validation in the same code module? The data and its validation are View Model pieces that are tightly coupled and should be handled together in my mind.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
So the future lies with the ultimate &lt;b&gt;merger of HTML and JavaScript&lt;/b&gt; and we&#39;ll have a &lt;a href=&quot;http://weblogs.asp.net/scottgu/archive/2010/07/02/introducing-razor.aspx&quot;&gt;Razor &lt;/a&gt;style view engine in all browsers eventually. My opinion is not to follow the same syntax and find a better way to merge the two. But the merger will eventually come. Simplified syntax for CSS3 and JavaScript have started to reinvent these stuffy languages and if jQuery can simplify CSS with a replacement like &lt;a href=&quot;http://www.ez-css.org/&quot;&gt;EZ-CSS&lt;/a&gt;, &lt;a href=&quot;http://sass-lang.com/&quot;&gt;sass&lt;/a&gt;, or &lt;a href=&quot;http://lesscss.org/&quot;&gt;less&lt;/a&gt;, then we&#39;re on our way. I&#39;m hoping it&#39;s not like &lt;a href=&quot;http://nodejs.org/&quot;&gt;node.js&lt;/a&gt; and &lt;a href=&quot;http://learnboost.github.com/stylus/&quot;&gt;stylus&lt;/a&gt;, but I need to try those more.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: large;&quot;&gt;DBA&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
I also love to understand data and its meaningful use. Having the right field name and the right multiplicity gives me a warm glow. But I also know that too much data analysis can torture those poor programming souls who have to recombine the data for the page they work on.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
Here we&#39;re not talking about the fields where programmers hand over their data after the output is available but where the data can be semantically meaningful as text. These are the domain entities and at a high level they are represented by &amp;lt;header&amp;gt;, &amp;lt;nav&amp;gt;, &amp;lt;footer&amp;gt;, &amp;lt;section&amp;gt;, &amp;lt;aside&amp;gt; and &amp;lt;article&amp;gt;.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
My biggest hurdle here is knowing that the &lt;b&gt;data already comes from a semantically proper framework&lt;/b&gt; called the database. If all the work has been done there, then who benefits by rethinking the meaningful structure one more time for the web? The only answer is that the DBA traditionally send the data to the programmers who use that &quot;data markup&quot; for their benefit. The field names become bundled together and as I put back on my Engineer hat, I am happy to create complex View Model types for my View, the web page.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
But it&#39;s reinventing the wheel when there&#39;s a database and it&#39;s better for team coding experiences to have more readable code. But wait, is there a web service that might be looking for my article elements? Not yet in the HTML5 way. If you are looking for a current semantic framework of entities, you have to &lt;b&gt;look no further than Google&#39;s recommendations&lt;/b&gt;. The &lt;a href=&quot;http://schema.org/&quot;&gt;microformats&lt;/a&gt;&amp;nbsp;they recommend carry much more weight for reasons to mark up with them than just a standards board. People are using the schemas for reviews, events, organizations, places, restaurants, recipes, etc. without even knowing about it but you are losing out on having Google process your data and provide search results with it if you don&#39;t.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
The XHTML push that we unceremoniously dumped was a DBA&#39;s dream for a perfect interface language between data source and data consumer. The problem was that &lt;b&gt;it&#39;s not a homogenous set of data&lt;/b&gt;. Our web DBA&#39;s don&#39;t work under the same domain and the complexity made it uncomfortable to work with so many needs and choices that we found had already been solved with another data model. Or two (relational and objects). We didn&#39;t need a third (XML).&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: large;&quot;&gt;Designer&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://www.photosot.com/wp-content/uploads/2011/07/1825-freddy-vs-jason-wallpaper.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;150&quot; src=&quot;http://www.photosot.com/wp-content/uploads/2011/07/1825-freddy-vs-jason-wallpaper.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
The designer in me wants to have my great user interface so well integrated into the data and processes that you don&#39;t notice. And I want it to be beautiful. That hat wasn&#39;t the one the standards committees were wearing when they proposed the gradients and transforms. Misguided blink spans and easy marquees have been put to death as many times as Freddie and Jason but keep coming back for more. Now we have them again, only this time a little more well dressed. I really don&#39;t even like the drop shadows but some of these will look much better to the high-res tablet crowd.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
I am &lt;b&gt;happy with SVG support&lt;/b&gt; and the graphics we can do, but where is my visual SVG graphics designer integrated with HTML and CSS? Android was the last to jump on the SVG graphics bus and most of the rest of the cheesy effects have partial support so I know I will be trying out &lt;a href=&quot;http://inkscape.org/&quot;&gt;Inkscape &lt;/a&gt;and &lt;a href=&quot;http://code.google.com/p/svg-edit/&quot;&gt;SVG Edit&lt;/a&gt; when I need. &amp;nbsp;Or I&#39;ll just sit back and let the widgets take over for me like the SVG based Chart control in Visual Studio and jQuery plugins.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
I find the most pleasure with &lt;b&gt;web fonts&lt;/b&gt;, especially &lt;a href=&quot;http://www.google.com/webfonts&quot;&gt;Google&#39;s public accessible fonts &lt;/a&gt;and having &lt;a href=&quot;http://www.fontsquirrel.com/fontface&quot;&gt;Web Squirrel&lt;/a&gt; give me everything I need to do it on my server. I can talk to the device to get info I need to deliver a pleasing layout with the @media queries. And when I need that old-timey newspaper look, there&#39;s multi-columns, but I fear it&#39;s a retro feature that will be better left alone due to the complexity it creates for the layout.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Surprisingly, I think &lt;b&gt;the designer ended up with some of the best improvements&lt;/b&gt;. Colors are better defined both with more names and flexible&amp;nbsp;opacity. The video and audio elements will have to wait for the patents to become less profitable while we find a common standard to work with. The dominance of the iPad will force me to encode a different way but I don&#39;t like it.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: large;&quot;&gt;Businessman&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
If you want to know who is going to win the HTML5 battle, you just have to &lt;b&gt;follow the money&lt;/b&gt;. And the hat in charge of the money is the businessman. This hat is the hardest to wear since it requires you to&amp;nbsp;not&amp;nbsp;think technically and focus on the customer. Does the customer really want what we think is geeky cool warez? Probably not.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
I liked the idea of doing a survey of the currently used names for divs and classes in the wild in order to understand how people used HTML. But what were we supposed to do with that? Did I really want a better element because I was really happy with just calling my div a wrapper in the id and not a section. You want me to recode it? When?&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;What helps me make money&lt;/b&gt;? Coding faster. Reusing other people&#39;s code. If all you do is rename things, then it&#39;s going to get in my way. Now if you make it easier to find elements in CSS by adding better selectors, I&#39;m not going to complain but it is looking more and more like a &lt;b&gt;grep or regex&lt;/b&gt; language these days.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
I can reuse other people&#39;s code if they&#39;ve marked up what I want to use and now we&#39;re back to microformats because what I want is not generic text groupings that are or aren&#39;t related. What I want are finer granulation on the most common business entities which is exactly what the microformats do.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Other types of useful abstraction that will be faster or give me critical information are the &lt;b&gt;new communcations APIs&lt;/b&gt; like Web Workers or Web Sockets and the&amp;nbsp;ability&amp;nbsp;to let me work offline with session or local storage when paired with the page caching. &lt;b&gt;Geolocation &lt;/b&gt;is just a one-trick pony but had to happen when you start moving yourself around instead of sitting at the same IP day after day. And the database storage on the client will improve the user experience for offline as well.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: large;&quot;&gt;Conclusion&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;People want a desktop application experience&lt;/b&gt; on the web and want it whenever they want it there. People have to have it easy and that means the developers as well as the users. So will I use the semantic markup? Probably. It will help me as a programmer. Will I use the &amp;lt;canvas&amp;gt; and other graphic elements? Probably not. I like SVG and JavaScript generated graphics as long as I don&#39;t have to write it. I can use &lt;a href=&quot;http://labs.adobe.com/technologies/edge/&quot;&gt;Adobe Edge&lt;/a&gt; or other visual programs for that. Will I use the features that aren&#39;t well supported like drag &amp;amp; drop and datepickers where I can use jQuery and jQuery mobile to get standardization now? Obviously not.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
The 2-D and 3-D graphics are incredible and not in my realm as a web developer but &lt;b&gt;if you are a game developer &lt;/b&gt;that wants to leverage the e-commerce platforms of the future like the Apple App Store, Android Marketplace or possibly the Amazon juggernaut commerce system, then you must develop using &amp;lt;canvas&amp;gt; because it&#39;s the fastest and standardized.&lt;br /&gt;
&lt;br /&gt;
As to why standards groups like the W3C and WHATWG don&#39;t move too fast, it&#39;s because you have four different groups of people all lobbying for their view. The DBA had the upper hand in the last version and now the designer and the engineer seem to be dominating. But like a real business, it&#39;s the dialog that is important to crafting a best solution for the whole. Let one company or one hat take over and it would be an impending fail.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
The businessman is going to take you to that application experience that you so want. And he will charge you for it and pay you to develop great apps for it. The standards committees don&#39;t think like businessmen so you&#39;ll need to see what people are really using, really need, and get paid for. My best bet is to &lt;b&gt;watch Google&lt;/b&gt; for how they use search data and to &lt;b&gt;watch Amazon&lt;/b&gt; for how they will use their e-commerce platform. Of course, you&#39;ll also be watching Apple and Facebook as app delivery leaders. Then code for it and enjoy.&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://www.socialitoutbursts.com/feeds/2725834628763628297/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.socialitoutbursts.com/2011/09/web-four-hats-overview-of-html5.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7580188453882133873/posts/default/2725834628763628297'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7580188453882133873/posts/default/2725834628763628297'/><link rel='alternate' type='text/html' href='http://www.socialitoutbursts.com/2011/09/web-four-hats-overview-of-html5.html' title='The web&amp;rsquo;s four hats &amp; an overview of HTML5'/><author><name>Doug Hoff</name><uri>http://www.blogger.com/profile/13575254944704650271</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7580188453882133873.post-5143237157788477306</id><published>2011-05-17T16:40:00.000-07:00</published><updated>2011-09-29T05:54:19.882-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="broadband"/><category scheme="http://www.blogger.com/atom/ns#" term="fiber"/><category scheme="http://www.blogger.com/atom/ns#" term="Google"/><category scheme="http://www.blogger.com/atom/ns#" term="Kansas City"/><title type='text'>KCMO is added to Google fiber network project!</title><content type='html'>&lt;div class=&quot;stream-item&quot; data-item-id=&quot;70550207703691264&quot; data-item-type=&quot;tweet&quot; media=&quot;true&quot; style=&quot;border-bottom-color: rgb(235, 235, 235); border-bottom-style: solid; border-bottom-width: 1px; clear: both; display: block; font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, &#39;Liberation Sans&#39;, FreeSans, sans-serif; font-size: 13px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-height: 60px; outline-color: initial; outline-style: none; outline-width: initial; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; position: relative;&quot;&gt;
&lt;div class=&quot;stream-item-content tweet stream-tweet &quot; data-item-id=&quot;70550207703691264&quot; data-retweet-id=&quot;70554203071856640&quot; data-screen-name=&quot;google&quot; data-tweet-id=&quot;70550207703691264&quot; data-user-id=&quot;20536157&quot; style=&quot;font-size: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 20px; padding-right: 20px; padding-top: 10px; position: relative; zoom: 1;&quot;&gt;
&lt;div class=&quot;tweet-image&quot; style=&quot;color: #444444; float: left; height: 48px; line-height: 19px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 3px; overflow-x: hidden; overflow-y: hidden; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; width: 48px;&quot;&gt;
&lt;img alt=&quot;A Googler&quot; class=&quot;user-profile-link&quot; data-user-id=&quot;20536157&quot; height=&quot;48&quot; src=&quot;http://a1.twimg.com/profile_images/77186109/favicon_normal.png&quot; style=&quot;border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; cursor: pointer; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot; width=&quot;48&quot; /&gt;&lt;/div&gt;
&lt;div class=&quot;tweet-content&quot; style=&quot;color: #444444; line-height: 19px; margin-bottom: 0px; margin-left: 58px; margin-right: 0px; margin-top: 0px; min-height: 48px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;
&lt;div class=&quot;tweet-row&quot; style=&quot;display: block; line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; position: relative;&quot;&gt;
&lt;span class=&quot;tweet-user-name&quot; style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;a class=&quot;tweet-screen-name user-profile-link&quot; data-user-id=&quot;20536157&quot; href=&quot;http://twitter.com/#!/google&quot; style=&quot;color: #0084b4; cursor: pointer; font-weight: bold; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none;&quot; title=&quot;A Googler&quot;&gt;google&lt;/a&gt;&amp;nbsp;&lt;span class=&quot;tweet-full-name&quot; style=&quot;color: #999999; font-size: 12px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;A Googler&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;tweet-corner&quot; style=&quot;display: inline-block; margin-bottom: 0px; margin-left: 0px; margin-right: 10px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;
&lt;div class=&quot;tweet-meta&quot; style=&quot;color: #999999; font-size: 11px; font-style: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;
&lt;span class=&quot;icons&quot; style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;span class=&quot;retweet-icon&quot; style=&quot;background-attachment: initial; background-clip: initial; background-color: transparent; background-image: url(http://a2.twimg.com/a/1305667400/phoenix/img/sprite-icons.png); background-origin: initial; background-position: -192px 0px; background-repeat: no-repeat no-repeat; display: inline-block; height: 14px; margin-bottom: -2px !important; margin-left: 2px; margin-right: 2px; margin-top: 0px; outline-color: initial; outline-style: none; outline-width: initial; overflow-x: hidden; overflow-y: hidden; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-indent: -99999px; width: 15px;&quot;&gt;&lt;/span&gt;&amp;nbsp;&lt;em style=&quot;font-style: normal; margin-bottom: 0px; margin-left: 2px; margin-right: 2px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;by KC_next&lt;/em&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;extra-icons&quot; style=&quot;margin-bottom: 0px; margin-left: 2px; margin-right: 2px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; position: absolute; right: 5px; top: 0px;&quot;&gt;
&lt;span class=&quot;icons&quot; style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;span class=&quot;inlinemedia-icons&quot; style=&quot;display: inline-block; margin-bottom: 0px; margin-left: 2px; margin-right: 2px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;tweet-row&quot; style=&quot;display: block; line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; position: relative;&quot;&gt;
&lt;div class=&quot;tweet-text pretty-link&quot; style=&quot;font-family: Arial, &#39;Helvetica Neue&#39;, sans-serif; line-height: 19px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; word-wrap: break-word;&quot;&gt;
Crossing the river from Kansas City, KS to Kansas City, MO: ultra high-speed broadband available in both KCs in 2012&lt;a class=&quot;twitter-timeline-link&quot; data-expanded-url=&quot;http://googlefiberblog.blogspot.com/2011/05/everythings-up-to-date-in-kansas-city.html/&quot; href=&quot;http://goo.gl/hCyYR&quot; rel=&quot;nofollow&quot; style=&quot;color: #0084b4; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none;&quot; target=&quot;_blank&quot; title=&quot;http://googlefiberblog.blogspot.com/2011/05/everythings-up-to-date-in-kansas-city.html/&quot;&gt;http://goo.gl/hCyYR&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;tweet-row&quot; style=&quot;display: block; line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; position: relative;&quot;&gt;
&lt;a class=&quot;tweet-timestamp&quot; href=&quot;http://twitter.com/#!/google/status/70550207703691264&quot; style=&quot;color: #0084b4; font-size: 11px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none;&quot; title=&quot;1:04 PM May 17th&quot;&gt;&lt;span class=&quot;_timestamp&quot; data-long-form=&quot;true&quot; data-time=&quot;1305655454000&quot; style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;5 hours ago&lt;/span&gt;&lt;/a&gt;&amp;nbsp;&lt;span class=&quot;tweet-actions&quot; data-tweet-id=&quot;70550207703691264&quot; style=&quot;font-size: 11px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; visibility: hidden;&quot;&gt;&lt;a class=&quot;favorite-action&quot; href=&quot;http://twitter.com/#&quot; style=&quot;color: #0084b4; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial !important; outline-style: none !important; outline-width: initial !important; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none;&quot; title=&quot;Favorite&quot;&gt;&lt;span style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;i style=&quot;background-attachment: initial; background-clip: initial; background-color: transparent; background-image: url(http://a2.twimg.com/a/1305667400/phoenix/img/sprite-icons.png); background-origin: initial; background-position: -32px 0px; background-repeat: no-repeat no-repeat; display: inline-block; height: 15px; margin-bottom: -3px; margin-left: 2px; margin-right: 3px; margin-top: 0px; outline-color: initial; outline-style: none; outline-width: initial; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; position: relative; text-indent: -99999px; vertical-align: baseline; width: 15px;&quot;&gt;&lt;/i&gt;&lt;b style=&quot;font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;/b&gt;&lt;/span&gt;&lt;/a&gt;&lt;a class=&quot;retweet-action&quot; href=&quot;http://twitter.com/#&quot; style=&quot;color: #0084b4; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial !important; outline-style: none !important; outline-width: initial !important; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none;&quot; title=&quot;Retweet&quot;&gt;&lt;span style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;i style=&quot;background-attachment: initial; background-clip: initial; background-color: transparent; background-image: url(http://a2.twimg.com/a/1305667400/phoenix/img/sprite-icons.png); background-origin: initial; background-position: -176px 0px; background-repeat: no-repeat no-repeat; display: inline-block; height: 15px; margin-bottom: -3px; margin-left: 2px; margin-right: 3px; margin-top: 0px; outline-color: initial; outline-style: none; outline-width: initial; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; position: relative; text-indent: -99999px; vertical-align: baseline; width: 15px;&quot;&gt;&lt;/i&gt;&lt;b style=&quot;font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;/b&gt;&lt;/span&gt;&lt;/a&gt;&lt;a class=&quot;reply-action&quot; data-screen-name=&quot;google&quot; href=&quot;http://twitter.com/#&quot; style=&quot;color: #0084b4; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial !important; outline-style: none !important; outline-width: initial !important; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none;&quot; title=&quot;Reply&quot;&gt;&lt;span style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;i style=&quot;background-attachment: initial; background-clip: initial; background-color: transparent; background-image: url(http://a2.twimg.com/a/1305667400/phoenix/img/sprite-icons.png); background-origin: initial; background-position: 0px 0px; background-repeat: no-repeat no-repeat; display: inline-block; height: 15px; margin-bottom: -3px; margin-left: 3px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: none; outline-width: initial; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; position: relative; text-indent: -99999px; vertical-align: baseline; width: 15px;&quot;&gt;&lt;/i&gt;&lt;b style=&quot;font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;/b&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;stream-item&quot; data-item-id=&quot;70534010165657602&quot; data-item-type=&quot;tweet&quot; media=&quot;true&quot; style=&quot;border-bottom-color: rgb(235, 235, 235); border-bottom-style: solid; border-bottom-width: 1px; clear: both; color: #444444; display: block; font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, &#39;Liberation Sans&#39;, FreeSans, sans-serif; font-size: 13px; line-height: 19px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-height: 60px; outline-color: initial; outline-style: none; outline-width: initial; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; position: relative;&quot;&gt;
&lt;div class=&quot;stream-item-content tweet stream-tweet &quot; data-item-id=&quot;70534010165657602&quot; data-screen-name=&quot;KC_next&quot; data-tweet-id=&quot;70534010165657602&quot; data-user-id=&quot;271407243&quot; style=&quot;font-size: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 20px; padding-right: 20px; padding-top: 10px; position: relative; zoom: 1;&quot;&gt;
&lt;div class=&quot;tweet-dogear &quot; style=&quot;background-attachment: initial; background-clip: initial; background-color: initial; background-image: url(http://a2.twimg.com/a/1305667400/phoenix/img/tweet-dogear.png); background-origin: initial; background-position: 24px 25px; background-repeat: no-repeat no-repeat; height: 25px; left: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; position: absolute; top: 0px; width: 24px;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;tweet-image&quot; style=&quot;float: left; height: 48px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 3px; overflow-x: hidden; overflow-y: hidden; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; width: 48px;&quot;&gt;
&lt;img alt=&quot;KCnext&quot; class=&quot;user-profile-link&quot; data-user-id=&quot;271407243&quot; height=&quot;48&quot; src=&quot;http://a0.twimg.com/profile_images/1285606441/kcnext_normal.png&quot; style=&quot;border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; cursor: pointer; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot; width=&quot;48&quot; /&gt;&lt;/div&gt;
&lt;div class=&quot;tweet-content&quot; style=&quot;margin-bottom: 0px; margin-left: 58px; margin-right: 0px; margin-top: 0px; min-height: 48px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;
&lt;div class=&quot;tweet-row&quot; style=&quot;display: block; line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; position: relative;&quot;&gt;
&lt;span class=&quot;tweet-user-name&quot; style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;a class=&quot;tweet-screen-name user-profile-link&quot; data-user-id=&quot;271407243&quot; href=&quot;http://twitter.com/#!/KC_next&quot; style=&quot;color: #0084b4; cursor: pointer; font-weight: bold; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none;&quot; title=&quot;KCnext&quot;&gt;KC_next&lt;/a&gt;&amp;nbsp;&lt;span class=&quot;tweet-full-name&quot; style=&quot;color: #999999; font-size: 12px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;KCnext&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;tweet-corner&quot; style=&quot;display: inline-block; margin-bottom: 0px; margin-left: 0px; margin-right: 10px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;
&lt;div class=&quot;tweet-meta&quot; style=&quot;color: #999999; font-size: 11px; font-style: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;
&lt;span class=&quot;icons&quot; style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;extra-icons&quot; style=&quot;margin-bottom: 0px; margin-left: 2px; margin-right: 2px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; position: absolute; right: 5px; top: 0px;&quot;&gt;
&lt;span class=&quot;icons&quot; style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;span class=&quot;inlinemedia-icons&quot; style=&quot;display: inline-block; margin-bottom: 0px; margin-left: 2px; margin-right: 2px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;tweet-row&quot; style=&quot;display: block; line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; position: relative;&quot;&gt;
&lt;div class=&quot;tweet-text pretty-link&quot; style=&quot;font-family: Arial, &#39;Helvetica Neue&#39;, sans-serif; line-height: 19px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; word-wrap: break-word;&quot;&gt;
Google will extend ultra-fast Internet project to Kansas City, Mo.&lt;a class=&quot;twitter-timeline-link&quot; data-expanded-url=&quot;http://www.bizjournals.com/kansascity/news/2011/05/17/sources-google-will-extend-ultra-fast.html/?ana=twt&quot; href=&quot;http://t.co/aiWPbIM&quot; rel=&quot;nofollow&quot; style=&quot;color: #0084b4; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none;&quot; target=&quot;_blank&quot; title=&quot;http://www.bizjournals.com/kansascity/news/2011/05/17/sources-google-will-extend-ultra-fast.html/?ana=twt&quot;&gt;bizjournals.com/kansascity/new…&lt;/a&gt;&amp;nbsp;via&amp;nbsp;&lt;a class=&quot;  twitter-atreply&quot; data-screen-name=&quot;KCBizjournal&quot; href=&quot;http://twitter.com/KCBizjournal&quot; rel=&quot;nofollow&quot; style=&quot;color: #0084b4; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none; white-space: nowrap;&quot;&gt;&lt;span class=&quot;at&quot; style=&quot;display: inline-block; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; opacity: 0.5; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;@&lt;/span&gt;&lt;span class=&quot;at-text&quot; style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;KCBizjournal&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;tweet-row&quot; style=&quot;display: block; line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; position: relative;&quot;&gt;
&lt;a class=&quot;tweet-timestamp&quot; href=&quot;http://twitter.com/#!/KC_next/status/70534010165657602&quot; style=&quot;color: #0084b4; font-size: 11px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none;&quot; title=&quot;11:59 AM May 17th&quot;&gt;&lt;span class=&quot;_timestamp&quot; data-long-form=&quot;true&quot; data-time=&quot;1305651593000&quot; style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;6 hours ago&lt;/span&gt;&lt;/a&gt;&amp;nbsp;&lt;span class=&quot;tweet-actions&quot; data-tweet-id=&quot;70534010165657602&quot; style=&quot;font-size: 11px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; visibility: hidden;&quot;&gt;&lt;a class=&quot;favorite-action&quot; href=&quot;http://twitter.com/#&quot; style=&quot;color: #0084b4; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial !important; outline-style: none !important; outline-width: initial !important; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none;&quot; title=&quot;Favorite&quot;&gt;&lt;span style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;i style=&quot;background-attachment: initial; background-clip: initial; background-color: transparent; background-image: url(http://a2.twimg.com/a/1305667400/phoenix/img/sprite-icons.png); background-origin: initial; background-position: -32px 0px; background-repeat: no-repeat no-repeat; display: inline-block; height: 15px; margin-bottom: -3px; margin-left: 2px; margin-right: 3px; margin-top: 0px; outline-color: initial; outline-style: none; outline-width: initial; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; position: relative; text-indent: -99999px; vertical-align: baseline; width: 15px;&quot;&gt;&lt;/i&gt;&lt;b style=&quot;font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;/b&gt;&lt;/span&gt;&lt;/a&gt;&lt;a class=&quot;retweet-action&quot; href=&quot;http://twitter.com/#&quot; style=&quot;color: #0084b4; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial !important; outline-style: none !important; outline-width: initial !important; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none;&quot; title=&quot;Retweet&quot;&gt;&lt;span style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;i style=&quot;background-attachment: initial; background-clip: initial; background-color: transparent; background-image: url(http://a2.twimg.com/a/1305667400/phoenix/img/sprite-icons.png); background-origin: initial; background-position: -176px 0px; background-repeat: no-repeat no-repeat; display: inline-block; height: 15px; margin-bottom: -3px; margin-left: 2px; margin-right: 3px; margin-top: 0px; outline-color: initial; outline-style: none; outline-width: initial; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; position: relative; text-indent: -99999px; vertical-align: baseline; width: 15px;&quot;&gt;&lt;/i&gt;&lt;b style=&quot;font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;/b&gt;&lt;/span&gt;&lt;/a&gt;&lt;a class=&quot;reply-action&quot; data-screen-name=&quot;KC_next&quot; href=&quot;http://twitter.com/#&quot; style=&quot;color: #0084b4; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial !important; outline-style: none !important; outline-width: initial !important; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none;&quot; title=&quot;Reply&quot;&gt;&lt;span style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;i style=&quot;background-attachment: initial; background-clip: initial; background-color: transparent; background-image: url(http://a2.twimg.com/a/1305667400/phoenix/img/sprite-icons.png); background-origin: initial; background-position: 0px 0px; background-repeat: no-repeat no-repeat; display: inline-block; height: 15px; margin-bottom: -3px; margin-left: 3px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: none; outline-width: initial; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; position: relative; text-indent: -99999px; vertical-align: baseline; width: 15px;&quot;&gt;&lt;/i&gt;&lt;b style=&quot;font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;/b&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;stream-item  focused-stream-item&quot; data-item-id=&quot;70532499054395392&quot; data-item-type=&quot;tweet&quot; media=&quot;true&quot; style=&quot;background-attachment: initial; background-clip: initial; background-color: #eeeeee; background-image: initial; background-origin: initial; border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; clear: both; color: #444444; cursor: pointer; display: block; font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, &#39;Liberation Sans&#39;, FreeSans, sans-serif; font-size: 13px; line-height: 19px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: -1px; min-height: 60px; outline-color: initial; outline-style: none; outline-width: initial; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; position: relative;&quot;&gt;
&lt;div class=&quot;stream-item-content tweet stream-tweet &quot; data-item-id=&quot;70532499054395392&quot; data-screen-name=&quot;KC_next&quot; data-tweet-id=&quot;70532499054395392&quot; data-user-id=&quot;271407243&quot; style=&quot;font-size: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 20px; padding-right: 20px; padding-top: 10px; position: relative; zoom: 1;&quot;&gt;
&lt;div class=&quot;tweet-dogear &quot; style=&quot;background-attachment: initial; background-clip: initial; background-color: initial; background-image: url(http://a2.twimg.com/a/1305667400/phoenix/img/tweet-dogear.png); background-origin: initial; background-position: 24px 25px; background-repeat: no-repeat no-repeat; height: 25px; left: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; position: absolute; top: 0px; width: 24px;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;tweet-image&quot; style=&quot;float: left; height: 48px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 3px; overflow-x: hidden; overflow-y: hidden; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; width: 48px;&quot;&gt;
&lt;img alt=&quot;KCnext&quot; class=&quot;user-profile-link&quot; data-user-id=&quot;271407243&quot; height=&quot;48&quot; src=&quot;http://a0.twimg.com/profile_images/1285606441/kcnext_normal.png&quot; style=&quot;border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; cursor: pointer; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot; width=&quot;48&quot; /&gt;&lt;/div&gt;
&lt;div class=&quot;tweet-content&quot; style=&quot;margin-bottom: 0px; margin-left: 58px; margin-right: 0px; margin-top: 0px; min-height: 48px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;
&lt;div class=&quot;tweet-row&quot; style=&quot;display: block; line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; position: relative;&quot;&gt;
&lt;span class=&quot;tweet-user-name&quot; style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;a class=&quot;tweet-screen-name user-profile-link&quot; data-user-id=&quot;271407243&quot; href=&quot;http://twitter.com/#!/KC_next&quot; style=&quot;color: #0084b4; cursor: pointer; font-weight: bold; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none;&quot; title=&quot;KCnext&quot;&gt;KC_next&lt;/a&gt;&amp;nbsp;&lt;span class=&quot;tweet-full-name&quot; style=&quot;color: #999999; font-size: 12px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;KCnext&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;tweet-corner&quot; style=&quot;display: inline-block; margin-bottom: 0px; margin-left: 0px; margin-right: 10px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;
&lt;div class=&quot;tweet-meta&quot; style=&quot;color: #999999; font-size: 11px; font-style: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;
&lt;span class=&quot;icons&quot; style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;extra-icons&quot; style=&quot;margin-bottom: 0px; margin-left: 2px; margin-right: 2px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; position: absolute; right: 5px; top: 0px;&quot;&gt;
&lt;span class=&quot;icons&quot; style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;span class=&quot;inlinemedia-icons&quot; style=&quot;display: inline-block; margin-bottom: 0px; margin-left: 2px; margin-right: 2px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;span class=&quot;media video&quot; data-media-class=&quot;video&quot; data-media-type=&quot;youtube&quot; style=&quot;background-attachment: initial; background-clip: initial; background-color: initial; background-image: url(http://a2.twimg.com/a/1305667400/phoenix/img/sprite-icons.png); background-origin: initial; background-position: -16px -96px; background-repeat: no-repeat no-repeat; display: inline-block; height: 14px; margin-bottom: 0px; margin-left: 2px; margin-right: 2px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; position: relative; top: 1px; vertical-align: top; width: 16px;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;tweet-row&quot; style=&quot;display: block; line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; position: relative;&quot;&gt;
&lt;div class=&quot;tweet-text pretty-link&quot; style=&quot;font-family: Arial, &#39;Helvetica Neue&#39;, sans-serif; line-height: 19px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; word-wrap: break-word;&quot;&gt;
The official video on today&#39;s exciting news that Google Fiber is expanding into Kansas City, Missorui&amp;nbsp;&lt;a class=&quot;twitter-timeline-link&quot; href=&quot;http://youtu.be/TmSuNyOpsXU&quot; rel=&quot;nofollow&quot; style=&quot;color: #0084b4; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none;&quot; target=&quot;_blank&quot;&gt;http://youtu.be/TmSuNyOpsXU&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;tweet-row&quot; style=&quot;display: block; line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; position: relative;&quot;&gt;
&lt;a class=&quot;tweet-timestamp&quot; href=&quot;http://twitter.com/#!/KC_next/status/70532499054395392&quot; style=&quot;color: #0084b4; font-size: 11px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none;&quot; title=&quot;11:53 AM May 17th&quot;&gt;&lt;span class=&quot;_timestamp&quot; data-long-form=&quot;true&quot; data-time=&quot;1305651232000&quot; style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;6 hours ago&lt;/span&gt;&lt;/a&gt;&amp;nbsp;&lt;span class=&quot;tweet-actions&quot; data-tweet-id=&quot;70532499054395392&quot; style=&quot;font-size: 11px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; visibility: visible;&quot;&gt;&lt;a class=&quot;favorite-action&quot; href=&quot;http://twitter.com/#&quot; style=&quot;color: #0084b4; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial !important; outline-style: none !important; outline-width: initial !important; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none;&quot; title=&quot;Favorite&quot;&gt;&lt;span style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;i style=&quot;background-attachment: initial; background-clip: initial; background-color: transparent; background-image: url(http://a2.twimg.com/a/1305667400/phoenix/img/sprite-icons.png); background-origin: initial; background-position: -32px 0px; background-repeat: no-repeat no-repeat; display: inline-block; height: 15px; margin-bottom: -3px; margin-left: 2px; margin-right: 3px; margin-top: 0px; outline-color: initial; outline-style: none; outline-width: initial; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; position: relative; text-indent: -99999px; vertical-align: baseline; width: 15px;&quot;&gt;&lt;/i&gt;&lt;b style=&quot;font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;Favorite&lt;/b&gt;&lt;/span&gt;&lt;/a&gt;&amp;nbsp;&lt;a class=&quot;retweet-action&quot; href=&quot;http://twitter.com/#&quot; style=&quot;color: #0084b4; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial !important; outline-style: none !important; outline-width: initial !important; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none;&quot; title=&quot;Retweet&quot;&gt;&lt;span style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;i style=&quot;background-attachment: initial; background-clip: initial; background-color: transparent; background-image: url(http://a2.twimg.com/a/1305667400/phoenix/img/sprite-icons.png); background-origin: initial; background-position: -176px 0px; background-repeat: no-repeat no-repeat; display: inline-block; height: 15px; margin-bottom: -3px; margin-left: 2px; margin-right: 3px; margin-top: 0px; outline-color: initial; outline-style: none; outline-width: initial; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; position: relative; text-indent: -99999px; vertical-align: baseline; width: 15px;&quot;&gt;&lt;/i&gt;&lt;b style=&quot;font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;Retweet&lt;/b&gt;&lt;/span&gt;&lt;/a&gt;&amp;nbsp;&lt;a class=&quot;reply-action&quot; data-screen-name=&quot;KC_next&quot; href=&quot;http://twitter.com/#&quot; style=&quot;color: #0084b4; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial !important; outline-style: none !important; outline-width: initial !important; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none;&quot; title=&quot;Reply&quot;&gt;&lt;span style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;i style=&quot;background-attachment: initial; background-clip: initial; background-color: transparent; background-image: url(http://a2.twimg.com/a/1305667400/phoenix/img/sprite-icons.png); background-origin: initial; background-position: 0px 0px; background-repeat: no-repeat no-repeat; display: inline-block; height: 15px; margin-bottom: -3px; margin-left: 3px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: none; outline-width: initial; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; position: relative; text-indent: -99999px; vertical-align: baseline; width: 15px;&quot;&gt;&lt;/i&gt;&lt;b style=&quot;font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;Reply&lt;/b&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://www.socialitoutbursts.com/feeds/5143237157788477306/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.socialitoutbursts.com/2011/05/kcmo-is-added-to-google-fiber-network.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7580188453882133873/posts/default/5143237157788477306'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7580188453882133873/posts/default/5143237157788477306'/><link rel='alternate' type='text/html' href='http://www.socialitoutbursts.com/2011/05/kcmo-is-added-to-google-fiber-network.html' title='KCMO is added to Google fiber network project!'/><author><name>Doug Hoff</name><uri>http://www.blogger.com/profile/13575254944704650271</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7580188453882133873.post-3090676446364618425</id><published>2011-03-31T08:26:00.000-07:00</published><updated>2011-03-31T08:34:49.354-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="business"/><category scheme="http://www.blogger.com/atom/ns#" term="employment"/><category scheme="http://www.blogger.com/atom/ns#" term="entreprenuership"/><category scheme="http://www.blogger.com/atom/ns#" term="Information technology"/><category scheme="http://www.blogger.com/atom/ns#" term="internet"/><category scheme="http://www.blogger.com/atom/ns#" term="Kansas City"/><category scheme="http://www.blogger.com/atom/ns#" term="Small business"/><title type='text'>Kansas City gets a gigabit heart from Google. The Wizard is back.</title><content type='html'>&lt;div class=&quot;zemanta-img separator&quot; style=&quot;clear: right;&quot;&gt;&lt;a href=&quot;http://commons.wikipedia.org/wiki/File:Wizard_of_Oz.png&quot; style=&quot;clear: right; display: block; float: right; margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;The Wizard of Oz as pictured in The Wonderful ...&quot; height=&quot;656&quot; src=&quot;http://upload.wikimedia.org/wikipedia/commons/thumb/e/e5/Wizard_of_Oz.png/300px-Wizard_of_Oz.png&quot; style=&quot;border: none; font-size: 0.8em;&quot; width=&quot;300&quot; /&gt;&lt;/a&gt;&lt;span class=&quot;zemanta-img-attribution&quot; style=&quot;clear: both; float: right; margin-left: 1em; margin-right: 1em; width: 300px;&quot;&gt;Image via &lt;a href=&quot;http://commons.wikipedia.org/wiki/File:Wizard_of_Oz.png&quot;&gt;Wikipedia&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;Yesterday, &lt;a href=&quot;http://googleblog.blogspot.com/2011/03/ultra-high-speed-broadband-is-coming-to.html&quot;&gt;Google announced that Kansas City, Kansas was the winner&lt;/a&gt; of the high speed fiber network deployment that took a year to decide. It&#39;s as if the Wizard of Oz came to town and got a job as CIO with the KCK government. Certainly Topeka was a noisy contender getting Google&#39;s attention last April 1st with a &lt;a href=&quot;http://www.google.com/logos/logos10-2.html&quot;&gt;Google Doodle&lt;/a&gt; to suit the occasion. But it was the solid community behind Mayor Joe Reardon and the business support groups that swayed Google to bring gigabit speed to our prairie town.&lt;br /&gt;
&lt;br /&gt;
Some of the groups that have participated in the decision, I&#39;m sure have been the &lt;a href=&quot;http://www.kauffman.org/&quot;&gt;Marion Ewing Kauffman Foundation&lt;/a&gt;, &lt;a href=&quot;http://www.kcnext.com/&quot;&gt;KCNext&lt;/a&gt;, and the &lt;a href=&quot;http://www.kumc.edu/&quot;&gt;KU Med Center&lt;/a&gt;. The Kauffman Foundation in particular has been the leading supporter nationally for the education of entrepreneurs and now gets to take their passion for community building into the grey streets of KCK.&lt;br /&gt;
&lt;br /&gt;
Google is also interested in supporting the Kansas City, KS community through non-profit groups. It&#39;s important to raise your awareness if you are helping to benefit our area through technology to get on their list by &lt;a href=&quot;http://www.google.com/nonprofits/&quot;&gt;registering &lt;/a&gt;with them on their site.&lt;br /&gt;
&lt;br /&gt;
The first thing that KCK will benefit from will be the build out of the network where local folks will get jobs &amp;nbsp;necessary for running cable and building infrastructure. It will take some time before the users of the network get to benefit from any kind of high speed surfing. But it won&#39;t be the browser and texting users that will see an increase in speed as much as we&#39;ll see other benefits. Sure we can knock on the doors faster asking for web pages but most of the world can&#39;t respond at the same speed so most of the responses will be just as fast.&lt;br /&gt;
&lt;br /&gt;
There are large consumers and producers of internet information here around Kansas City and for the people that access that information, they will be seeing a better response time. Maybe the people like &lt;a href=&quot;http://infegy.com/&quot;&gt;Infegy&lt;/a&gt;, a social monitoring service,&amp;nbsp;or &lt;a href=&quot;http://www.adknowledge.com/&quot;&gt;AdKnowledge&lt;/a&gt;, the largest privately owned advertising network, will move some of their operations over to KCK to take advantage of the speed and produce better and advanced services.&lt;br /&gt;
&lt;br /&gt;
One thing I have to answer for myself is just how the fastest fiber network that is currently available in the area will play into Google&#39;s plans. The &lt;a class=&quot;zem_slink&quot; href=&quot;http://sprint.com/&quot; rel=&quot;homepage&quot; title=&quot;Sprint Nextel&quot;&gt;Sprint&lt;/a&gt; backbone of fiber supports telephone communication and for personal use, hardly anyone gets to benefit except for those that pay to use it to support their phone systems. The military certainly is a major consumer of the fiber backbone with Ft. Leavenworth being a quiet powerhouse on the digital frontier. Sprint has been longing for a partner which they might just have found in Google. They were ignored as a suitor once more for the &lt;a href=&quot;http://gigaom.com/2011/03/20/in-att-t-mobile-merger-everybody-loses/&quot;&gt;merger of T-Mobile&lt;/a&gt; recently. This could have big implications for the future of Sprint.&lt;br /&gt;
&lt;br /&gt;
I&#39;m certainly excited about all the future possibilities that Google has honored our area with. We&#39;re a great community that was waiting for that perfect storm which I think is finally here. The parts we needed were the technological know-how that Sprint attracted in the last decade, the entrepreneurial impetus that the Kauffman Foundation is continuing to supply, and now finally the infrastructure from Google that will generate decades more business energy to a community that deserves the best.&lt;br /&gt;
&lt;div class=&quot;zemanta-related&quot;&gt;&lt;h6 class=&quot;zemanta-related-title&quot; style=&quot;font-size: 1em; margin: 1em 0 0 0;&quot;&gt;Related articles&lt;/h6&gt;&lt;ul class=&quot;zemanta-article-ul&quot;&gt;&lt;li class=&quot;zemanta-article-ul-li&quot;&gt;&lt;a href=&quot;http://www.circleid.com/posts/google_starts_experimental_fiber_network_rollout_with_kansas_city/&quot;&gt;Google Starts Experimental Fiber Network Rollout With Kansas City&lt;/a&gt; (circleid.com)&lt;/li&gt;
&lt;li class=&quot;zemanta-article-ul-li&quot;&gt;&lt;a href=&quot;http://arstechnica.com/tech-policy/news/2011/03/google-bestows-1gbps-fiber-network-on-kansas-city-kansas.ars&quot;&gt;Google bestows 1Gbps fiber network on Kansas City, Kansas&lt;/a&gt; (arstechnica.com)&lt;/li&gt;
&lt;li class=&quot;zemanta-article-ul-li&quot;&gt;&lt;a href=&quot;http://mashable.com/2011/03/30/google-fiber-kansas-city/&quot;&gt;And the Winner of Google&#39;s Ultra High-Speed Internet Is ...&lt;/a&gt; (mashable.com)&lt;/li&gt;
&lt;li class=&quot;zemanta-article-ul-li&quot;&gt;&lt;a href=&quot;http://www.geek.com/articles/chips/kansas-city-first-to-get-googles-1gbps-internet-20110330/&quot;&gt;Kansas City first to get Google&#39;s 1Gbps Internet&lt;/a&gt; (geek.com)&lt;/li&gt;
&lt;li class=&quot;zemanta-article-ul-li&quot;&gt;&lt;a href=&quot;http://www.blogherald.com/2011/03/30/googles-1-gbps-fiber-service-coming-to-kansas-city-community-nowhere-else/&quot;&gt;Google&#39;s 1 Gbps Fiber Service Coming To Kansas City &amp;amp; Community, Nowhere Else&lt;/a&gt; (blogherald.com)&lt;/li&gt;
&lt;li class=&quot;zemanta-article-ul-li&quot;&gt;&lt;a href=&quot;http://tech.fortune.cnn.com/2011/03/30/google-gives-kansas-city-gigabit-internet/&quot;&gt;Google gives Kansas City Gigabit Internet&lt;/a&gt; (tech.fortune.cnn.com)&lt;/li&gt;
&lt;li class=&quot;zemanta-article-ul-li&quot;&gt;&lt;a href=&quot;http://news.cnet.com/8301-13577_3-20048836-36.html?part=rss&amp;amp;subj=news&quot;&gt;Kansas City, Kan., to be Google&#39;s broadband test bed&lt;/a&gt; (news.cnet.com)&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;&lt;div class=&quot;zemanta-pixie&quot; style=&quot;height: 15px; margin-top: 10px;&quot;&gt;&lt;a class=&quot;zemanta-pixie-a&quot; href=&quot;http://www.zemanta.com/&quot; title=&quot;Enhanced by Zemanta&quot;&gt;&lt;img alt=&quot;Enhanced by Zemanta&quot; class=&quot;zemanta-pixie-img&quot; src=&quot;http://img.zemanta.com/zemified_e.png?x-id=58803bd3-2054-4c63-9af1-815119591a74&quot; style=&quot;border: none; float: right;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.socialitoutbursts.com/feeds/3090676446364618425/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.socialitoutbursts.com/2011/03/kansas-city-gets-gigabit-heart-from.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7580188453882133873/posts/default/3090676446364618425'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7580188453882133873/posts/default/3090676446364618425'/><link rel='alternate' type='text/html' href='http://www.socialitoutbursts.com/2011/03/kansas-city-gets-gigabit-heart-from.html' title='Kansas City gets a gigabit heart from Google. The Wizard is back.'/><author><name>Doug Hoff</name><uri>http://www.blogger.com/profile/13575254944704650271</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7580188453882133873.post-6151067529936090964</id><published>2010-11-17T15:03:00.000-08:00</published><updated>2010-11-17T15:03:07.311-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="analysis"/><category scheme="http://www.blogger.com/atom/ns#" term="Kent Beck"/><category scheme="http://www.blogger.com/atom/ns#" term="programming"/><category scheme="http://www.blogger.com/atom/ns#" term="project management"/><category scheme="http://www.blogger.com/atom/ns#" term="Software development process"/><category scheme="http://www.blogger.com/atom/ns#" term="software testing"/><title type='text'>Test first – don’t hire an analyst? Project management reorged.</title><content type='html'>&lt;span class=&quot;zemanta-img separator zemanta-action-dragged&quot;&gt;&lt;a href=&quot;http://commons.wikipedia.org/wiki/File:Grumman_E-2C_Hawkeye.jpg&quot; style=&quot;clear: right; display: block; float: right; margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&amp;quot;Grumman E-2C Hawkeye&amp;quot; which is a fl...&quot; height=&quot;200&quot; src=&quot;http://upload.wikimedia.org/wikipedia/commons/thumb/d/d6/Grumman_E-2C_Hawkeye.jpg/300px-Grumman_E-2C_Hawkeye.jpg&quot; style=&quot;border: medium none; font-size: 0.8em;&quot; width=&quot;300&quot; /&gt;&lt;/a&gt;&lt;span class=&quot;zemanta-img-attribution&quot; style=&quot;clear: right; float: right; margin-left: 1em; margin-right: 1em; width: 300px;&quot;&gt;&lt;/span&gt;&lt;/span&gt;Coders are being asked to write tests before coding. Testing first sounds cutting edge. But let&#39;s get real. &lt;b&gt;You don&#39;t have anything to test so it&#39;s not testing. &lt;/b&gt;It has to be something else.&lt;br /&gt;
&lt;br /&gt;
I’m not objecting to the practice, just the naming. That’s because I’m thinking like an analyst instead of a programmer. &lt;b&gt;Naming determines the direction &lt;/b&gt;of the thoughts from that point on. We shouldn’t tell people to test something they don’t have because it’s not right.&lt;br /&gt;
&lt;br /&gt;
Ask any Denver bound passenger on a plane to navigate where they are going. The chances of getting to Denver are about as good as having a project complete successfully without analysis. The &lt;b&gt;analysis is your plan&lt;/b&gt;, your map, and your radar. The destination is your business goal.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Testing in project workflow&lt;/b&gt;&lt;br /&gt;
There are several &lt;b&gt;concurrent workflows &lt;/b&gt;during a project. Each basic workflow takes up a majority of the current activity during the project at some point can occur concurrently with most other workflows. Here’s my version of the project workflow without any particular allegiance to another methodology. It’s what I’ve found to be a cohesive set of activities that require unique skill sets.&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;strategy - coming up with a good business idea&lt;/li&gt;
&lt;li&gt;project initiation – committing assets to making the idea real&amp;nbsp;&lt;/li&gt;
&lt;li&gt;needs – talking to folks about what they want based on that idea&amp;nbsp;&lt;/li&gt;
&lt;li&gt;requirements – understanding and communicating those needs in testable terms&amp;nbsp;&lt;/li&gt;
&lt;li&gt;analysis - organizing business data and workflows based on those requirements&amp;nbsp;&lt;/li&gt;
&lt;li&gt;design - figuring out how it&#39;s all going to work with what we have for the technical folks&amp;nbsp;&lt;/li&gt;
&lt;li&gt;implementation - the construction&amp;nbsp;&lt;/li&gt;
&lt;li&gt;testing - the double check of validation and verification&amp;nbsp;&lt;/li&gt;
&lt;li&gt;deployment - getting it launched&amp;nbsp;&lt;/li&gt;
&lt;li&gt;maintenance - keeping it working and updating it&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;&lt;b&gt;What do you do when you test?&lt;/b&gt;&lt;br /&gt;
Testing is about two things. It&#39;s about validation and verification. &lt;b&gt;Validation&lt;/b&gt; is checking stuff that has been planned and making sure that the plan was carried out. &lt;b&gt;Verification&lt;/b&gt; is about seeing happy faces on your stakeholders no matter what they said and what you wrote down in your plan. &lt;b&gt;Valid product + verified happiness = project success&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
Testing can start as early as the requirements phase. Since the project is being expressed as testable statements, it follows that testing can start early. The information that is extracted at that point is useful for planning and setup. Then more planning is done throughout analysis and design for the large scale types of tests that match up with the large granular data definitions and workflows.&lt;br /&gt;
&lt;br /&gt;
When the granularity of design comes down to chunks of code and individual statements, you still have testing that goes on. It is this drill down into the finer details of design that the test first advocates are talking about. Here the design is put forth as a supposition and as it gets implemented it is pushed back into the validity loop of testing. Hopefully, there’s enough high-level analysis and design to make this low level design and testing stress free for the coder.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Test-Driven Development in isolation&lt;/b&gt;&lt;br /&gt;
Testing is not what is done before you write code. It doesn&#39;t matter how much you like &lt;a class=&quot;zem_slink&quot; href=&quot;http://en.wikipedia.org/wiki/Kent_Beck&quot; rel=&quot;wikipedia&quot; title=&quot;Kent Beck&quot;&gt;Kent Beck&lt;/a&gt;. Kent says that &lt;a href=&quot;http://www.amazon.com/Test-Driven-Development-Kent-Beck/dp/0321146530&quot;&gt;Test Driven Development&lt;/a&gt; (TDD) is a style of development. So, it&#39;s not a style of testing? What&#39;s the first step? It&#39;s assert. &lt;b&gt;What do you assert? &lt;/b&gt;Now you have to go to your data and workflow models to figure that out. What? No analysis and design models? &amp;nbsp;But if you did have some analysis, then you could do technical design and get the rough sketch of the code.&lt;br /&gt;
&lt;br /&gt;
The TDD coder is supposed to come up with types of tests to run (analysis level testing), rename identifiers (analysis), assert first (analysis), test data (design level testing), and practice this iteratively. If the analysis and design work had been done previously, the coder could use it.&lt;br /&gt;
&lt;br /&gt;
And if you don’t have any of that, you do the best you can and try to figure it out. Some programmers use &lt;b&gt;pseudocode and activity models &lt;/b&gt;called flowcharts for their technical design. They were trained to take exercises in programming class and wrangle them into code without any supporting analysis or design. Management got trained into thinking that the real world was the same and programmers could pseudocode the entire business project given enough bright students.&lt;br /&gt;
&lt;br /&gt;
So, as an analyst, I was interested to figure out what programmers were being told to do if they &lt;b&gt;only had a listing of needs &lt;/b&gt;from the stakeholders.&amp;nbsp; That list is usually so hard to understand that without proper editing and rewriting, the resulting code is flying without radar. Testing first in that case could be about several things including&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;line-height: 18px;&quot;&gt;testing stuff that you make up on the fly&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;line-height: 18px;&quot;&gt;doing something else and calling it testing&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;Most of the principles used in TDD are based on doing what hasn&#39;t been done before which leads to higher stress in the programmer because they have a greater responsibility. With the TDD process in a less than perfect design world, &lt;b&gt;the programmer has a way to manage this chaotic development cycle &lt;/b&gt;from their chair. Management is more satisfied when the coder does the analysis and design on the computer because a business analyst position would cost money. Productive work on computer is good, work on paper – not so good.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Make it work first, then make it better. &lt;/b&gt;&lt;br /&gt;
The mantra of TDD is &lt;b&gt;red/green/refactor&lt;/b&gt;. When I personally use it in practice it turns out to be, guess/make it work/make it better. I was told to do that by senior programmers. &amp;nbsp;I&#39;ve been doing that as a programmer for too many years as a way to manage when the analysis wasn&#39;t done. Guess what the stakeholders want and try to get it into words that you can manage. Then turn that best guess into workable code that won&#39;t break. And if you have any time after that, give it some thought on how to reduce the code or make it more reusable.&lt;br /&gt;
&lt;br /&gt;
I know that Beck is more interested in getting the gap controlled between decision (design) and feedback (test) so any thinking is good when it shortcuts the path to better code. But analysis isn&#39;t good at giving feedback so to a programmer, it&#39;s better to have some concrete metric of success rather than a bunch of papers. Write another automated test. One more green light.&lt;br /&gt;
&lt;br /&gt;
Maybe that&#39;s partially the fault of &lt;b&gt;revamping our programming curriculum &lt;/b&gt;in school and leaving out structured programming. The dearth of analysis after object oriented programming took over had the programmers clamoring for some sort of control that worked.&lt;br /&gt;
&lt;br /&gt;
What&#39;s the most important quality of a requirement? It&#39;s &lt;b&gt;testability&lt;/b&gt;. So if you gather some related needs and can conceive of a test for them, then it usually becomes a good requirement. The remaining tests are easy to extrude from the requirement.&lt;br /&gt;
&lt;br /&gt;
I think coders flipped this on its head. They say that they should be able to conceive of a test and see if it fits the requirement. From their perspective, it makes sense because they have to see the linkage back into the stakeholders&#39; requirements from where they sit in their 8x8&#39; cube. Without guidance they have to draw the map.&lt;br /&gt;
&lt;br /&gt;
But coders aren&#39;t looking at the big picture so &lt;b&gt;I&#39;m against TDD being a stand-in for analysis&lt;/b&gt;. It works for low-level design though. And it makes sense. So as long as the analysis is sufficient, TDD works well as a design phase validation of the requirements in analysis to the working code put to the fire by automated tests. If activity is anything before the unit tests, the lowest level test possible, then it&#39;s not about the test, it&#39;s about the requirements.&lt;br /&gt;
&lt;div class=&quot;zemanta-related&quot;&gt;&lt;h6 class=&quot;zemanta-related-title&quot; style=&quot;font-size: 1em; margin: 1em 0pt 0pt;&quot;&gt;Related articles&lt;/h6&gt;&lt;ul class=&quot;zemanta-article-ul&quot;&gt;&lt;li class=&quot;zemanta-article-ul-li&quot;&gt;&lt;a href=&quot;http://www.se-radio.net/2010/09/episode-167-the-history-of-junit-and-the-future-of-testing-with-kent-beck/&quot;&gt;The History of JUnit and the Future of Testing with Kent Beck&lt;/a&gt; (se-radio.net)&lt;/li&gt;
&lt;li class=&quot;zemanta-article-ul-li&quot;&gt;&lt;a href=&quot;http://debuggable.com/posts/test-driven-development-at-transloadit:4cc892a7-b9fc-4d65-bb0c-1b27cbdd56cb&quot;&gt;Test driven development at Transloadit &quot; Debuggable Ltd&lt;/a&gt; (debuggable.com)&lt;/li&gt;
&lt;li class=&quot;zemanta-article-ul-li&quot;&gt;&lt;a href=&quot;http://weblog.madebymonsieur.com/be-professional-do-tdd/&quot;&gt;Be professional, do TDD&lt;/a&gt; (weblog.madebymonsieur.com)&lt;/li&gt;
&lt;li class=&quot;zemanta-article-ul-li&quot;&gt;&lt;a href=&quot;http://www.scrollinondubs.com/2010/10/27/tdd-for-business/&quot;&gt;TDD for product dev: Where we&#39;re going we don&#39;t need... roads&lt;/a&gt; (scrollinondubs.com)&lt;/li&gt;
&lt;li class=&quot;zemanta-article-ul-li&quot;&gt;&lt;a href=&quot;http://computinged.wordpress.com/2010/11/01/making-software-tdd-doesnt-work-architecting-is-mixed-scripting-is-great/&quot;&gt;Making Software: TDD doesn&#39;t work; Architecting is mixed; scripting is great&lt;/a&gt; (computinged.wordpress.com)&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;&lt;div class=&quot;zemanta-pixie&quot; style=&quot;height: 15px; margin-top: 10px;&quot;&gt;&lt;a class=&quot;zemanta-pixie-a&quot; href=&quot;http://www.zemanta.com/&quot; title=&quot;Enhanced by Zemanta&quot;&gt;&lt;img alt=&quot;Enhanced by Zemanta&quot; class=&quot;zemanta-pixie-img&quot; src=&quot;http://img.zemanta.com/zemified_e.png?x-id=7291d6e8-cd90-4fc2-94c3-77307adf00b5&quot; style=&quot;border: medium none; float: right;&quot; /&gt;&lt;/a&gt;&lt;span class=&quot;zem-script pretty-attribution paragraph-reblog&quot;&gt;&lt;script defer=&quot;defer&quot; src=&quot;http://static.zemanta.com/readside/loader.js&quot; type=&quot;text/javascript&quot;&gt;
&lt;/script&gt;&lt;/span&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.socialitoutbursts.com/feeds/6151067529936090964/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.socialitoutbursts.com/2010/11/test-first-dont-hire-analyst-project.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7580188453882133873/posts/default/6151067529936090964'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7580188453882133873/posts/default/6151067529936090964'/><link rel='alternate' type='text/html' href='http://www.socialitoutbursts.com/2010/11/test-first-dont-hire-analyst-project.html' title='Test first – don’t hire an analyst? Project management reorged.'/><author><name>Doug Hoff</name><uri>http://www.blogger.com/profile/13575254944704650271</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>