tag:blogger.com,1999:blog-91078941882935300742024-03-12T16:31:40.255-07:00Carpetbagger ManagementManaging from the MiddleDarren Pulsipherhttp://www.blogger.com/profile/04546097789000371133noreply@blogger.comBlogger17125tag:blogger.com,1999:blog-9107894188293530074.post-22732100689510463062016-11-11T12:16:00.001-08:002017-04-02T18:44:40.629-07:00Managing Multiple Environments in a Hybrid Cloud<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="background-color: white; border: 0px; color: #53565a; font-family: "helvetica neue", helvetica, arial, "lucida grande", sans-serif; font-size: 14px; padding: 0px; vertical-align: baseline;">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUu5eRW3LMBOv_0ZiwZ5JnxS60v8bXEW6Uecn6HFqLB-VDqUqIqIq2Pj0BCEGi7aG4WOFEu1N83BfKf8mWILk5hrUQM92D6cgUgtRoQALWfilcQ1OrUt6rRcm1kvGB93zHuMnKc3mBtP4/s1600/DeveloperDay.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" height="138" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUu5eRW3LMBOv_0ZiwZ5JnxS60v8bXEW6Uecn6HFqLB-VDqUqIqIq2Pj0BCEGi7aG4WOFEu1N83BfKf8mWILk5hrUQM92D6cgUgtRoQALWfilcQ1OrUt6rRcm1kvGB93zHuMnKc3mBtP4/s320/DeveloperDay.png" width="320" /></a></div>
With the shift from traditional Client Server Application Software to Cloud Aware Application many Software Engineers have found themselves dusting off old System Administration Books from college. With multiple services running on multiple machine or containers software engineers have to be able to manage their applications across more and more complex environments. As I have been talking to some of my customers I have found common pain points in managing these complex applications: </div>
<ul style="background-color: white; border: 0px; color: #53565a; font-family: "helvetica neue", helvetica, arial, "lucida grande", sans-serif; font-size: 14px; margin: 0px; padding: 0px 0px 0px 30px; vertical-align: baseline;">
<li style="border: 0px; font-family: inherit; font-style: inherit; font-weight: inherit; list-style-type: inherit; margin: 0.5ex 0px; padding: 0px; vertical-align: baseline;">Consistency between environments</li>
<li style="border: 0px; font-family: inherit; font-style: inherit; font-weight: inherit; list-style-type: inherit; margin: 0.5ex 0px; padding: 0px; vertical-align: baseline;">Single point of failure services</li>
<li style="border: 0px; font-family: inherit; font-style: inherit; font-weight: inherit; list-style-type: inherit; margin: 0.5ex 0px; padding: 0px; vertical-align: baseline;">Differing environment requirements (Not all environments are created equal)</li>
<li style="border: 0px; font-family: inherit; font-style: inherit; font-weight: inherit; list-style-type: inherit; margin: 0.5ex 0px; padding: 0px; vertical-align: baseline;">Managing multiple environments across multiple clouds</li>
</ul>
<div style="background-color: white; border: 0px; color: #53565a; font-family: "helvetica neue", helvetica, arial, "lucida grande", sans-serif; font-size: 14px; padding: 0px; vertical-align: baseline;">
All of these factors and many more can lead to time wasted, applications being released into production before their time, or worst of all unhappy software engineers.</div>
<div style="background-color: white; border: 0px; color: #53565a; font-family: "helvetica neue", helvetica, arial, "lucida grande", sans-serif; font-size: 14px; min-height: 8pt; padding: 0px; vertical-align: baseline;">
<br /></div>
<h2 style="background-color: white; border: 0px; color: #53565a; font-family: "helvetica neue", helvetica, arial, "lucida grande", sans-serif; font-size: 20px; margin: 0px; padding: 0px; vertical-align: baseline;">
DevOps to the rescue?</h2>
<div style="background-color: white; border: 0px; color: #53565a; font-family: "helvetica neue", helvetica, arial, "lucida grande", sans-serif; font-size: 14px; padding: 0px; vertical-align: baseline;">
Wouldn't it be nice if the software engineer just worried about their application and its code, instead of all of the environments that it has to run on? In some places that is exactly what happens. Developers develop on their local laptops or in a development cloud and then check in their code and it moves to production. DevOps cleans up any problems with applications using single instance bottle-necked services, out of sync versions of centralized services, or adding load balancing services to the front end or back end of the application. The App developers have no clue what mess they have caused with their code changes, or a new version of service that they are using. Somehow we need to make sure that the application developer is still connected to the application architecture but disconnected from the complexity of managing multiple environments.</div>
<div style="background-color: white; border: 0px; color: #53565a; font-family: "helvetica neue", helvetica, arial, "lucida grande", sans-serif; font-size: 14px; min-height: 8pt; padding: 0px; vertical-align: baseline;">
<br /></div>
<h2 style="background-color: white; border: 0px; color: #53565a; font-family: "helvetica neue", helvetica, arial, "lucida grande", sans-serif; font-size: 20px; margin: 0px; padding: 0px; vertical-align: baseline;">
Single Definition Multiple Environments</h2>
<h3 style="background-color: white; border: 0px; color: #53565a; font-family: "helvetica neue", helvetica, arial, "lucida grande", sans-serif; font-size: 16px; margin: 0px; padding: 0px; vertical-align: baseline;">
Working on my Local machine</h3>
<div style="background-color: white; border: 0px; color: #53565a; font-family: "helvetica neue", helvetica, arial, "lucida grande", sans-serif; font-size: 14px; padding: 0px; vertical-align: baseline;">
One approach that I have been looking at is having the ability to define my application as a set of service templates. In this simple example I have a simple Node JS application that uses Redis and MongoDB. If I use a yaml format. It might look something like this.</div>
<div style="background-color: white; border: 0px; color: #53565a; font-family: "helvetica neue", helvetica, arial, "lucida grande", sans-serif; font-size: 14px; padding: 0px; vertical-align: baseline;">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiC9U4Co3epKGSNy2eR6Yyi22-WoyzUEaHw8Ghr5O19MWtp864I_SplS_3Hpx1KUd8hRm1hkyGRV5NqXWAZSX_n95pY91lO_HinnJZ__gSbnoR4GlMwiTh0qvtYAnZ8cEidM-VYPqGU80/s1600/Local.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiC9U4Co3epKGSNy2eR6Yyi22-WoyzUEaHw8Ghr5O19MWtp864I_SplS_3Hpx1KUd8hRm1hkyGRV5NqXWAZSX_n95pY91lO_HinnJZ__gSbnoR4GlMwiTh0qvtYAnZ8cEidM-VYPqGU80/s320/Local.png" width="263" /></a></div>
<br /></div>
<pre style="background-color: white; border: 0px; color: #53565a; font-size: 14px; overflow-x: auto; padding: 0px; vertical-align: baseline;"><div class="dp-highlighter" style="background-color: #e7e5dc; border: 0px; font-family: consolas, "courier new", courier, mono, serif; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; overflow: visible; padding: 1px 0px 0px; vertical-align: baseline; width: auto;">
<div class="bar" style="border: 0px; font-family: inherit; font-style: inherit; font-weight: inherit; margin: 0px; padding: 0px 0px 0px 45px; vertical-align: baseline;">
<div style="border: 0px; font-family: inherit; font-style: inherit; font-weight: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">
</div>
</div>
<ol class="dp-c" start="1" style="background-color: white; border: none; color: #5c5c5c; font-family: inherit; font-style: inherit; font-weight: inherit; margin: 0px 0px 1px 45px; padding: 0px; vertical-align: baseline;">
<li class="alt" style="border-bottom: none; border-image: initial; border-left: 3px solid rgb(108, 226, 108); border-right: none; border-top: none; color: inherit; font-family: inherit; font-style: inherit; font-weight: inherit; height: 12pt; line-height: 12pt; list-style-image: initial; list-style-position: outside !important; list-style-type: decimal-leading-zero; margin: 0px !important; padding: 0px 3px 0px 10px !important; position: relative; vertical-align: baseline; white-space: nowrap;"><span style="background-color: inherit; border: 0px; color: black; font-size: 9pt; font-style: inherit; font-weight: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">MyApp: </span></li>
<li class="" style="background-color: #f6f6f6; border-bottom: none; border-left: 3px solid rgb(108, 226, 108); border-right: none; border-top: none; font-family: inherit; font-style: inherit; font-weight: inherit; height: 12pt; line-height: 12pt; list-style-position: outside; list-style-type: decimal-leading-zero; margin: 0px; padding: 0px 3px 0px 10px; position: relative; vertical-align: baseline; white-space: nowrap;"><span style="background-color: inherit; border: 0px; color: black; font-size: 9pt; font-style: inherit; font-weight: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"> Services: </span></li>
<li class="alt" style="border-bottom: none; border-image: initial; border-left: 3px solid rgb(108, 226, 108); border-right: none; border-top: none; color: inherit; font-family: inherit; font-style: inherit; font-weight: inherit; height: 12pt; line-height: 12pt; list-style-image: initial; list-style-position: outside !important; list-style-type: decimal-leading-zero; margin: 0px !important; padding: 0px 3px 0px 10px !important; position: relative; vertical-align: baseline; white-space: nowrap;"><span style="background-color: inherit; border: 0px; color: black; font-size: 9pt; font-style: inherit; font-weight: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"> web: NodeJS </span></li>
<li class="" style="background-color: #f6f6f6; border-bottom: none; border-left: 3px solid rgb(108, 226, 108); border-right: none; border-top: none; font-family: inherit; font-style: inherit; font-weight: inherit; height: 12pt; line-height: 12pt; list-style-position: outside; list-style-type: decimal-leading-zero; margin: 0px; padding: 0px 3px 0px 10px; position: relative; vertical-align: baseline; white-space: nowrap;"><span style="background-color: inherit; border: 0px; color: black; font-size: 9pt; font-style: inherit; font-weight: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"> ports: 80 </span></li>
<li class="alt" style="border-bottom: none; border-image: initial; border-left: 3px solid rgb(108, 226, 108); border-right: none; border-top: none; color: inherit; font-family: inherit; font-style: inherit; font-weight: inherit; height: 12pt; line-height: 12pt; list-style-image: initial; list-style-position: outside !important; list-style-type: decimal-leading-zero; margin: 0px !important; padding: 0px 3px 0px 10px !important; position: relative; vertical-align: baseline; white-space: nowrap;"><span style="background-color: inherit; border: 0px; color: black; font-size: 9pt; font-style: inherit; font-weight: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"> links: mqueue, database </span></li>
<li class="" style="background-color: #f6f6f6; border-bottom: none; border-left: 3px solid rgb(108, 226, 108); border-right: none; border-top: none; font-family: inherit; font-style: inherit; font-weight: inherit; height: 12pt; line-height: 12pt; list-style-position: outside; list-style-type: decimal-leading-zero; margin: 0px; padding: 0px 3px 0px 10px; position: relative; vertical-align: baseline; white-space: nowrap;"><span style="background-color: inherit; border: 0px; color: black; font-size: 9pt; font-style: inherit; font-weight: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"> mqueue: Redis </span></li>
<li class="alt" style="border-bottom: none; border-image: initial; border-left: 3px solid rgb(108, 226, 108); border-right: none; border-top: none; color: inherit; font-family: inherit; font-style: inherit; font-weight: inherit; height: 12pt; line-height: 12pt; list-style-image: initial; list-style-position: outside !important; list-style-type: decimal-leading-zero; margin: 0px !important; padding: 0px 3px 0px 10px !important; position: relative; vertical-align: baseline; white-space: nowrap;"><span style="background-color: inherit; border: 0px; color: black; font-size: 9pt; font-style: inherit; font-weight: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"> ports: 6789 </span></li>
<li class="" style="background-color: #f6f6f6; border-bottom: none; border-left: 3px solid rgb(108, 226, 108); border-right: none; border-top: none; font-family: inherit; font-style: inherit; font-weight: inherit; height: 12pt; line-height: 12pt; list-style-position: outside; list-style-type: decimal-leading-zero; margin: 0px; padding: 0px 3px 0px 10px; position: relative; vertical-align: baseline; white-space: nowrap;"><span style="background-color: inherit; border: 0px; color: black; font-size: 9pt; font-style: inherit; font-weight: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"> database: MongoDB </span></li>
<li class="alt" style="border-bottom: none; border-image: initial; border-left: 3px solid rgb(108, 226, 108); border-right: none; border-top: none; color: inherit; font-family: inherit; font-style: inherit; font-weight: inherit; height: 12pt; line-height: 12pt; list-style-image: initial; list-style-position: outside !important; list-style-type: decimal-leading-zero; margin: 0px !important; padding: 0px 3px 0px 10px !important; position: relative; vertical-align: baseline; white-space: nowrap;"><span style="background-color: inherit; border: 0px; color: black; font-size: 9pt; font-style: inherit; font-weight: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"> ports: 25678, 31502 </span></li>
</ol>
</div>
</pre>
<div style="background-color: white; border: 0px; color: #53565a; font-family: "helvetica neue", helvetica, arial, "lucida grande", sans-serif; font-size: 14px; min-height: 8pt; padding: 0px; vertical-align: baseline;">
<br /></div>
<div style="background-color: white; border: 0px; color: #53565a; font-family: "helvetica neue", helvetica, arial, "lucida grande", sans-serif; font-size: 14px; min-height: 8pt; padding: 0px; vertical-align: baseline;">
<br /></div>
<div style="background-color: white; border: 0px; color: #53565a; font-family: "helvetica neue", helvetica, arial, "lucida grande", sans-serif; font-size: 14px; padding: 0px; vertical-align: baseline;">
So with this definition I would like to deploy my application on my local box, using Virtual Box. I put this yaml file in my home directory of the application. This should be very familiar to those of you that have used docker-compose. Now I should be able to launch my application on my local machine using a command similar to docker-compose.</div>
<blockquote class="jive-quote" style="background: rgb(246, 246, 246); border-left-color: rgb(204, 204, 204); border-left-style: solid; border-width: 0px 0px 0px 2px; color: #53565a; font-family: "helvetica neue", helvetica, arial, "lucida grande", sans-serif; font-size: 14px; margin: 10px 0px; overflow-x: auto; padding: 10px 20px; quotes: "" ""; vertical-align: baseline;">
<div style="border: 0px; font-family: inherit; font-style: inherit; font-weight: inherit; padding: 0px; vertical-align: baseline;">
$ caade up</div>
</blockquote>
<div style="background-color: white; border: 0px; color: #53565a; font-family: "helvetica neue", helvetica, arial, "lucida grande", sans-serif; font-size: 14px; padding: 0px; vertical-align: baseline;">
After a couple of minutes my multi-service application is running on my local laptop.</div>
<div style="background-color: white; border: 0px; color: #53565a; font-family: "helvetica neue", helvetica, arial, "lucida grande", sans-serif; font-size: 14px; padding: 0px; vertical-align: baseline;">
I can change the application code and even make changes to the services that I need to work with.</div>
<div style="background-color: white; border: 0px; color: #53565a; font-family: "helvetica neue", helvetica, arial, "lucida grande", sans-serif; font-size: 14px; min-height: 8pt; padding: 0px; vertical-align: baseline;">
<br /></div>
<h3 style="background-color: white; border: 0px; color: #53565a; font-family: "helvetica neue", helvetica, arial, "lucida grande", sans-serif; font-size: 16px; margin: 0px; padding: 0px; vertical-align: baseline;">
Working in a Development Cloud<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3odnthdRtPb-0QmfaWDWq0IwX0MCXb-F1ohgaGZWfGHGzoCQOSVXW86QVFgadXnYMjNzzEIbbMjYexqIE648ME9MdWWHNFkjd5TaSuEFnsMAGIVJf4FufPYScYyKPfD0I04ksx0SC36I/s1600/Development.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3odnthdRtPb-0QmfaWDWq0IwX0MCXb-F1ohgaGZWfGHGzoCQOSVXW86QVFgadXnYMjNzzEIbbMjYexqIE648ME9MdWWHNFkjd5TaSuEFnsMAGIVJf4FufPYScYyKPfD0I04ksx0SC36I/s320/Development.png" width="282" /></a></div>
</h3>
<div style="background-color: white; border: 0px; color: #53565a; font-family: "helvetica neue", helvetica, arial, "lucida grande", sans-serif; font-size: 14px; padding: 0px; vertical-align: baseline;">
Now that I have it running on my laptop I want to make sure that I can run it in a cloud. Most organizations work with development clouds. Typically development clouds are not as big as production and test clouds but give the developer a good place to try out new code and debug problems found in production and test environments. Ideally the developer should use the same application definition and just point to another environment to launch the application.</div>
<blockquote class="jive-quote" style="background: rgb(246, 246, 246); border-left-color: rgb(204, 204, 204); border-left-style: solid; border-width: 0px 0px 0px 2px; color: #53565a; font-family: "helvetica neue", helvetica, arial, "lucida grande", sans-serif; font-size: 14px; margin: 10px 0px; overflow-x: auto; padding: 10px 20px; quotes: "" ""; vertical-align: baseline;">
<div style="border: 0px; font-family: inherit; font-style: inherit; font-weight: inherit; padding: 0px; vertical-align: baseline;">
$ caade up --env=Dev</div>
</blockquote>
<div style="background-color: white; border: 0px; color: #53565a; font-family: "helvetica neue", helvetica, arial, "lucida grande", sans-serif; font-size: 14px; padding: 0px; vertical-align: baseline;">
This launches the same application in the development environment. Which could be a OpenStack, VMWare or Kubernetes based SDI solution. The developer really does not care about how the infrastructure gets provisioned, just that it is done quickly and reliably. On quick inspection we see a slight difference in the services that are running in the development cloud. There is another instance of the NodeJS service running. This comes from the service definition of the NodeJS service. The NodeJS service is defined to have multiple instance in the development cloud and only one instance in the local environment.</div>
<div style="background-color: white; border: 0px; color: #53565a; font-family: "helvetica neue", helvetica, arial, "lucida grande", sans-serif; font-size: 14px; min-height: 8pt; padding: 0px; vertical-align: baseline;">
<br /></div>
<div style="background-color: white; border: 0px; color: #53565a; font-family: "helvetica neue", helvetica, arial, "lucida grande", sans-serif; font-size: 14px; padding: 0px; vertical-align: baseline;">
NodeJS.yml - Service Definition</div>
<div class="dp-highlighter" style="background-color: #e7e5dc; border: 0px; color: #53565a; font-family: consolas, "courier new", courier, mono, serif; font-size: 12px; margin: 0px; overflow: visible; padding: 1px 0px 0px; vertical-align: baseline; width: auto;">
<div class="bar" style="border: 0px; font-family: inherit; font-style: inherit; font-weight: inherit; margin: 0px; padding: 0px 0px 0px 45px; vertical-align: baseline;">
<div style="border: 0px; font-family: inherit; font-style: inherit; font-weight: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">
</div>
</div>
<ol class="dp-c" start="1" style="background-color: white; border: none; color: #5c5c5c; font-family: inherit; font-style: inherit; font-weight: inherit; margin: 0px 0px 1px 45px; padding: 0px; vertical-align: baseline;">
<li class="alt" style="border-bottom: none; border-image: initial; border-left: 3px solid rgb(108, 226, 108); border-right: none; border-top: none; color: inherit; font-family: inherit; font-style: inherit; font-weight: inherit; height: 12pt; line-height: 12pt; list-style-image: initial; list-style-position: outside !important; list-style-type: decimal-leading-zero; margin: 0px !important; padding: 0px 3px 0px 10px !important; position: relative; vertical-align: baseline; white-space: nowrap;"><span style="background-color: inherit; border: 0px; color: black; font-size: 9pt; font-style: inherit; font-weight: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">NodeJS: </span></li>
<li class="" style="background-color: #f6f6f6; border-bottom: none; border-left: 3px solid rgb(108, 226, 108); border-right: none; border-top: none; font-family: inherit; font-style: inherit; font-weight: inherit; height: 12pt; line-height: 12pt; list-style-position: outside; list-style-type: decimal-leading-zero; margin: 0px; padding: 0px 3px 0px 10px; position: relative; vertical-align: baseline; white-space: nowrap;"><span style="background-color: inherit; border: 0px; color: black; font-size: 9pt; font-style: inherit; font-weight: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"> Local: </span></li>
<li class="alt" style="border-bottom: none; border-image: initial; border-left: 3px solid rgb(108, 226, 108); border-right: none; border-top: none; color: inherit; font-family: inherit; font-style: inherit; font-weight: inherit; height: 12pt; line-height: 12pt; list-style-image: initial; list-style-position: outside !important; list-style-type: decimal-leading-zero; margin: 0px !important; padding: 0px 3px 0px 10px !important; position: relative; vertical-align: baseline; white-space: nowrap;"><span style="background-color: inherit; border: 0px; color: black; font-size: 9pt; font-style: inherit; font-weight: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"> web: </span></li>
<li class="" style="background-color: #f6f6f6; border-bottom: none; border-left: 3px solid rgb(108, 226, 108); border-right: none; border-top: none; font-family: inherit; font-style: inherit; font-weight: inherit; height: 12pt; line-height: 12pt; list-style-position: outside; list-style-type: decimal-leading-zero; margin: 0px; padding: 0px 3px 0px 10px; position: relative; vertical-align: baseline; white-space: nowrap;"><span style="background-color: inherit; border: 0px; color: black; font-size: 9pt; font-style: inherit; font-weight: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"> image: node-3.0.2 </span></li>
<li class="alt" style="border-bottom: none; border-image: initial; border-left: 3px solid rgb(108, 226, 108); border-right: none; border-top: none; color: inherit; font-family: inherit; font-style: inherit; font-weight: inherit; height: 12pt; line-height: 12pt; list-style-image: initial; list-style-position: outside !important; list-style-type: decimal-leading-zero; margin: 0px !important; padding: 0px 3px 0px 10px !important; position: relative; vertical-align: baseline; white-space: nowrap;"><span style="background-color: inherit; border: 0px; color: black; font-size: 9pt; font-style: inherit; font-weight: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"> port: 1337 </span></li>
<li class="" style="background-color: #f6f6f6; border-bottom: none; border-left: 3px solid rgb(108, 226, 108); border-right: none; border-top: none; font-family: inherit; font-style: inherit; font-weight: inherit; height: 12pt; line-height: 12pt; list-style-position: outside; list-style-type: decimal-leading-zero; margin: 0px; padding: 0px 3px 0px 10px; position: relative; vertical-align: baseline; white-space: nowrap;"><span style="background-color: inherit; border: 0px; color: black; font-size: 9pt; font-style: inherit; font-weight: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"> Dev: </span></li>
<li class="alt" style="border-bottom: none; border-image: initial; border-left: 3px solid rgb(108, 226, 108); border-right: none; border-top: none; color: inherit; font-family: inherit; font-style: inherit; font-weight: inherit; height: 12pt; line-height: 12pt; list-style-image: initial; list-style-position: outside !important; list-style-type: decimal-leading-zero; margin: 0px !important; padding: 0px 3px 0px 10px !important; position: relative; vertical-align: baseline; white-space: nowrap;"><span style="background-color: inherit; border: 0px; color: black; font-size: 9pt; font-style: inherit; font-weight: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"> web: </span></li>
<li class="" style="background-color: #f6f6f6; border-bottom: none; border-left: 3px solid rgb(108, 226, 108); border-right: none; border-top: none; font-family: inherit; font-style: inherit; font-weight: inherit; height: 12pt; line-height: 12pt; list-style-position: outside; list-style-type: decimal-leading-zero; margin: 0px; padding: 0px 3px 0px 10px; position: relative; vertical-align: baseline; white-space: nowrap;"><span style="background-color: inherit; border: 0px; color: black; font-size: 9pt; font-style: inherit; font-weight: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"> image: node-3.0.2 </span></li>
<li class="alt" style="border-bottom: none; border-image: initial; border-left: 3px solid rgb(108, 226, 108); border-right: none; border-top: none; color: inherit; font-family: inherit; font-style: inherit; font-weight: inherit; height: 12pt; line-height: 12pt; list-style-image: initial; list-style-position: outside !important; list-style-type: decimal-leading-zero; margin: 0px !important; padding: 0px 3px 0px 10px !important; position: relative; vertical-align: baseline; white-space: nowrap;"><span style="background-color: inherit; border: 0px; color: black; font-size: 9pt; font-style: inherit; font-weight: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"> port: 1337 </span></li>
<li class="" style="background-color: #f6f6f6; border-bottom: none; border-left: 3px solid rgb(108, 226, 108); border-right: none; border-top: none; font-family: inherit; font-style: inherit; font-weight: inherit; height: 12pt; line-height: 12pt; list-style-position: outside; list-style-type: decimal-leading-zero; margin: 0px; padding: 0px 3px 0px 10px; position: relative; vertical-align: baseline; white-space: nowrap;"><span style="background-color: inherit; border: 0px; color: black; font-size: 9pt; font-style: inherit; font-weight: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"> worker: </span></li>
<li class="alt" style="border-bottom: none; border-image: initial; border-left: 3px solid rgb(108, 226, 108); border-right: none; border-top: none; color: inherit; font-family: inherit; font-style: inherit; font-weight: inherit; height: 12pt; line-height: 12pt; list-style-image: initial; list-style-position: outside !important; list-style-type: decimal-leading-zero; margin: 0px !important; padding: 0px 3px 0px 10px !important; position: relative; vertical-align: baseline; white-space: nowrap;"><span style="background-color: inherit; border: 0px; color: black; font-size: 9pt; font-style: inherit; font-weight: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"> image: node-3.0.2 </span></li>
<li class="" style="background-color: #f6f6f6; border-bottom: none; border-left: 3px solid rgb(108, 226, 108); border-right: none; border-top: none; font-family: inherit; font-style: inherit; font-weight: inherit; height: 12pt; line-height: 12pt; list-style-position: outside; list-style-type: decimal-leading-zero; margin: 0px; padding: 0px 3px 0px 10px; position: relative; vertical-align: baseline; white-space: nowrap;"><span style="background-color: inherit; border: 0px; color: black; font-size: 9pt; font-style: inherit; font-weight: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"> port:1338 </span></li>
<li class="alt" style="border-bottom: none; border-image: initial; border-left: 3px solid rgb(108, 226, 108); border-right: none; border-top: none; color: inherit; font-family: inherit; font-style: inherit; font-weight: inherit; height: 12pt; line-height: 12pt; list-style-image: initial; list-style-position: outside !important; list-style-type: decimal-leading-zero; margin: 0px !important; padding: 0px 3px 0px 10px !important; position: relative; vertical-align: baseline; white-space: nowrap;"><span style="background-color: inherit; border: 0px; color: black; font-size: 9pt; font-style: inherit; font-weight: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"> cardinality: 3 </span></li>
<li class="" style="background-color: #f6f6f6; border-bottom: none; border-left: 3px solid rgb(108, 226, 108); border-right: none; border-top: none; font-family: inherit; font-style: inherit; font-weight: inherit; height: 12pt; line-height: 12pt; list-style-position: outside; list-style-type: decimal-leading-zero; margin: 0px; padding: 0px 3px 0px 10px; position: relative; vertical-align: baseline; white-space: nowrap;"><span style="background-color: inherit; border: 0px; color: black; font-size: 9pt; font-style: inherit; font-weight: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"> Test: … </span></li>
<li class="alt" style="border-bottom: none; border-image: initial; border-left: 3px solid rgb(108, 226, 108); border-right: none; border-top: none; color: inherit; font-family: inherit; font-style: inherit; font-weight: inherit; height: 12pt; line-height: 12pt; list-style-image: initial; list-style-position: outside !important; list-style-type: decimal-leading-zero; margin: 0px !important; padding: 0px 3px 0px 10px !important; position: relative; vertical-align: baseline; white-space: nowrap;"><span style="background-color: inherit; border: 0px; color: black; font-size: 9pt; font-style: inherit; font-weight: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"> Prod: … </span></li>
</ol>
</div>
<div style="background-color: white; border: 0px; color: #53565a; font-family: "helvetica neue", helvetica, arial, "lucida grande", sans-serif; font-size: 14px; padding: 0px; vertical-align: baseline;">
This definition is produced by the service and stack developer not the application developer. So the service can be reused by several developers and can be defined for different environments (Local, Dev, Test, & Production). This ensures that services are defined for the different requirements of the environments. For example Production NodeJS might have a NGNX load balancer on the front end of it for serving up NodeJS web services for each user logged in. The key is that this is defined for the Service</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgEw3jT78mLigINh3RyQL-Z4GgmBC5nT8kbQt4iIDn99qEXJyWxfu8Kok-7M81JeDRwNGCh6T_RNoyEJCDhpAB6vFqNJWXrgToyYUagDwL0E94aFiYssSHdlDmvVK36se4xUwiTqB9RFUY/s1600/Test.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" height="304" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgEw3jT78mLigINh3RyQL-Z4GgmBC5nT8kbQt4iIDn99qEXJyWxfu8Kok-7M81JeDRwNGCh6T_RNoyEJCDhpAB6vFqNJWXrgToyYUagDwL0E94aFiYssSHdlDmvVK36se4xUwiTqB9RFUY/s320/Test.png" width="320" /></a></div>
<h3 style="background-color: white; border: 0px; color: #53565a; font-family: "helvetica neue", helvetica, arial, "lucida grande", sans-serif; font-size: 16px; margin: 0px; padding: 0px; vertical-align: baseline;">
</h3>
<div style="background-color: white; border: 0px; color: #53565a; font-family: "helvetica neue", helvetica, arial, "lucida grande", sans-serif; font-size: 14px; padding: 0px; vertical-align: baseline;">
that is reused. This increases reusability and quality at the same time.</div>
<div style="background-color: white; border: 0px; color: #53565a; font-family: "helvetica neue", helvetica, arial, "lucida grande", sans-serif; font-size: 14px; min-height: 8pt; padding: 0px; vertical-align: baseline;">
<br /></div>
<h3 style="background-color: white; border: 0px; color: #53565a; font-family: "helvetica neue", helvetica, arial, "lucida grande", sans-serif; font-size: 16px; margin: 0px; padding: 0px; vertical-align: baseline;">
Working in the Test Cloud</h3>
<div style="background-color: white; border: 0px; color: #53565a; font-family: "helvetica neue", helvetica, arial, "lucida grande", sans-serif; font-size: 14px; padding: 0px; vertical-align: baseline;">
Now that I have tried my application in the development cloud. It is time to run it through a series of tests before it gets pushed to production. This is just as easy for the developer as working in the development cloud.</div>
<blockquote class="jive-quote" style="background: rgb(246, 246, 246); border-left-color: rgb(204, 204, 204); border-left-style: solid; border-width: 0px 0px 0px 2px; color: #53565a; font-family: "helvetica neue", helvetica, arial, "lucida grande", sans-serif; font-size: 14px; margin: 10px 0px; overflow-x: auto; padding: 10px 20px; quotes: "" ""; vertical-align: baseline;">
<div style="border: 0px; font-family: inherit; font-style: inherit; font-weight: inherit; padding: 0px; vertical-align: baseline;">
$ caade up --env=Test</div>
<div style="border: 0px; font-family: inherit; font-style: inherit; font-weight: inherit; padding: 0px; vertical-align: baseline;">
$ caade run --env=Test --exec runTestSuites</div>
</blockquote>
<div style="background-color: white; border: 0px; color: #53565a; font-family: "helvetica neue", helvetica, arial, "lucida grande", sans-serif; font-size: 14px; padding: 0px; vertical-align: baseline;">
We launched the environment and then run the test suites in that environment. When the environment launches you can see additional instances of the same services we have seen before in the development cloud. Additionally, there is a new service running in the environment. The Perf Monitor Service is also running. It is monitoring the performance of the services while the tests are running. Where did the definition of this service come from? It came from the application stack definition. This definition just like the service definition can show that the application can have a different service landscape for each environment. But the software developer still sees them as the same. That is to say, code should not change based on the environment that is running the application. This decouples the application from the environment and frees up the software developer to focus on code and not environments.</div>
<div style="background-color: white; border: 0px; color: #53565a; font-family: "helvetica neue", helvetica, arial, "lucida grande", sans-serif; font-size: 14px; min-height: 8pt; padding: 0px; vertical-align: baseline;">
<br /></div>
<h3 style="background-color: white; border: 0px; color: #53565a; font-family: "helvetica neue", helvetica, arial, "lucida grande", sans-serif; font-size: 16px; margin: 0px; padding: 0px; vertical-align: baseline;">
What about Production <div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJS_WCjEtH4K4rUNdj7msm4B1TetNk-FTNs71qLZz7qmZqevZTJuK8BOPHgzNaYtDorCkcVSSqBV-ZEX13D1iMRB_cYyG6vDDVr3W0HuQGVOGCV3vs1nuvmwxAk-P6K30dHbzBU3bz8dU/s1600/Production.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" height="194" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJS_WCjEtH4K4rUNdj7msm4B1TetNk-FTNs71qLZz7qmZqevZTJuK8BOPHgzNaYtDorCkcVSSqBV-ZEX13D1iMRB_cYyG6vDDVr3W0HuQGVOGCV3vs1nuvmwxAk-P6K30dHbzBU3bz8dU/s320/Production.png" width="320" /></a></div>
</h3>
<div style="background-color: white; border: 0px; color: #53565a; font-family: "helvetica neue", helvetica, arial, "lucida grande", sans-serif; font-size: 14px; padding: 0px; vertical-align: baseline;">
The ultimate goal of course is to get the application into production. Some organizations, the smart ones, don't let developers publish directly into production without some gates to pass thru. So instead of just calling "Caade up --env=Prod" we have a publish mechanism that versions the application, its configurations and supporting services.</div>
<blockquote class="jive-quote" style="background: rgb(246, 246, 246); border-left-color: rgb(204, 204, 204); border-left-style: solid; border-width: 0px 0px 0px 2px; color: #53565a; font-family: "helvetica neue", helvetica, arial, "lucida grande", sans-serif; font-size: 14px; margin: 10px 0px; overflow-x: auto; padding: 10px 20px; quotes: "" ""; vertical-align: baseline;">
<div style="border: 0px; font-family: inherit; font-style: inherit; font-weight: inherit; padding: 0px; vertical-align: baseline;">
$ caade publish --version=1.0.2</div>
</blockquote>
<div style="background-color: white; border: 0px; color: #53565a; font-family: "helvetica neue", helvetica, arial, "lucida grande", sans-serif; font-size: 14px; padding: 0px; vertical-align: baseline;">
In this case the application is published and tagged with version 1.0.2. Once the application is published, it will then launch the environment if it is not currently running. If it is running then it will "upgrade the service" to the new version. The upgrade process will be covered in another blog. Needless to say it allows for rolling updates with minimum or no downtime. As you can see additional services have been added and some taken away from the test environment.</div>
<div style="background-color: white; border: 0px; color: #53565a; font-family: "helvetica neue", helvetica, arial, "lucida grande", sans-serif; font-size: 14px; min-height: 8pt; padding: 0px; vertical-align: baseline;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2AN2Q_0eqdRDy7SmPwtNjeJmRK-TycJv9c_lfMkz4rosBbM-ZeJXxhD84l9GY5_k_0DW-IyVkeTRUg7QksI62rzjd-0a44taz8ZgSJVIugg80z_zGpf289DFSwBwqv4gnENNBORTN96Q/s1600/Happy.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="120" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2AN2Q_0eqdRDy7SmPwtNjeJmRK-TycJv9c_lfMkz4rosBbM-ZeJXxhD84l9GY5_k_0DW-IyVkeTRUg7QksI62rzjd-0a44taz8ZgSJVIugg80z_zGpf289DFSwBwqv4gnENNBORTN96Q/s320/Happy.png" width="320" /></a></div>
<h1 style="background-color: white; border: 0px; color: #53565a; font-family: "helvetica neue", helvetica, arial, "lucida grande", sans-serif; font-size: 24px; margin: 0px; padding: 0px; vertical-align: baseline;">
Happy "Coder" Happy Company</h1>
<div style="background-color: white; border: 0px; color: #53565a; font-family: "helvetica neue", helvetica, arial, "lucida grande", sans-serif; font-size: 14px; padding: 0px; vertical-align: baseline;">
The software engineer in this story focuses on writing software not on the environment. Services are being reused from application to application. Environment requirements are being met with service and application definitions. Stack and service developers are focusing on writing services for reuse instead of fixing application developers code. Now your company can run fast and deploy quality products into production,</div>
</div>
Darren Pulsipherhttp://www.blogger.com/profile/04546097789000371133noreply@blogger.com0Folsom, CA, USA38.6779591 -121.1760583000000238.4795336 -121.49878180000002 38.8763846 -120.85333480000003tag:blogger.com,1999:blog-9107894188293530074.post-85300430511783862632012-11-15T10:38:00.003-08:002012-11-15T10:38:40.595-08:00What's in a name - Utopian Development Ecosystem<div dir="ltr" style="text-align: left;" trbidi="on">
<br />
<div style="font-family: Arial, Helvetica, sans-serif; font-size: 12px;">
<a data-mce-href="/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-02-16-81/5444.utopia.jpg" href="http://planetblue.ith.intel.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-02-16-81/5444.utopia.jpg"><img alt="Utopia" data-mce-src="/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-02-16-81/5444.utopia.jpg" data-mce-style="float: left; margin: 10px;" src="http://planetblue.ith.intel.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-02-16-81/5444.utopia.jpg" style="border: 0px; float: left; margin: 10px;" /></a></div>
<div style="font-family: Arial, Helvetica, sans-serif; font-size: 12px;">
We are in the process of changing our way of working in our group. Many times when you are trying to effect large change you need a new perspective. You need something new to get people excited about the change; a new name. Companies do this all of the time. They spend millions of dollars coming up with new names for new product launches. So in an effort to give my team a fresh look at things, we came up with a new name for our development environment. The <strong>Utopian Development Ecosystem</strong>, UDE for short. Of course, we are engineers and need three letter acronyms for everything. This is a change from the standard “Development Environment” that we constantly talk about.</div>
<div style="font-family: Arial, Helvetica, sans-serif; font-size: 12px;">
<br /></div>
<div style="font-family: Arial, Helvetica, sans-serif; font-size: 12px;">
Let’s breakdown the new name, first Utopia. Thanks to Sir Thomas Moore we have the word Utopia from his book, “Utopia” (1516). He describes a perfect idealized society possessing highly desirable or perfect qualities. Everything in Utopia is in balance. Sounds like exactly what we were aiming for, perfection. If we are going to name something let’s pick the best.</div>
<div style="font-family: Arial, Helvetica, sans-serif; font-size: 12px;">
Next let’s look at the word ecosystem. Wikipedia defines ecosystem as:</div>
<div style="font-family: Arial, Helvetica, sans-serif; font-size: 12px; margin-left: 30px;">
<em>A community of living organisms (plants, animals and microbes) in conjunction with the nonliving components of their environment (things like air, water and mineral soil), interacting as a system. These components are regarded as linked together through nutrient cycles and energy flows.</em></div>
<div style="font-family: Arial, Helvetica, sans-serif; font-size: 12px; margin-left: 30px;">
<em><br /></em></div>
<div style="font-family: Arial, Helvetica, sans-serif; font-size: 12px;">
What does this have to do with developing and delivering a product? It sounds more like a description of the ecosystem that is growing in my refrigerator, than a team of software engineers trying to deliver a product. If we are focusing on delivering a product let’s make some changes to some words that fit our situation.</div>
<ul style="font-family: Arial, Helvetica, sans-serif; font-size: 12px;">
<li>living organisms → People</li>
<li>non-living components → Tools</li>
<li>nutrient cycles → Guiding Principles</li>
<li>energy flows → Processes</li>
</ul>
<div style="font-family: Arial, Helvetica, sans-serif; font-size: 12px;">
With these substitutions we get a new definition of ecosystem that fits our situation much better.</div>
<div style="font-family: Arial, Helvetica, sans-serif; font-size: 12px; margin-left: 30px;">
<em>An Ecosystem is a community of people, (Developers, Validators, Architects, and Managers), in conjunction with the tools of their environment, (things like computers, storage, labs and cubes), interacting as a system. These components are regarded as linked together through guiding principles and processes.</em></div>
<div style="font-family: Arial, Helvetica, sans-serif; font-size: 12px; margin-left: 30px;">
<em><br /></em></div>
<div style="font-family: Arial, Helvetica, sans-serif; font-size: 12px;">
Therefore, our perfect development ecosystem is all about people and tools and how they interact and are linked together through guiding principles and processes. This fits well with what we want to accomplish with our new development environment. It broadens the scope of the typical development environment to include guiding principles and people. Things that easily get overlooked.</div>
<div style="font-family: Arial, Helvetica, sans-serif; font-size: 12px;">
<br /></div>
<div style="font-family: Arial, Helvetica, sans-serif; font-size: 12px;">
Our Utopian Development Ecosystem defines everything we want to help our team deliver products. This has deep meaning and invokes strong feelings, but is simple enough for us to get the team to rally behind it.</div>
<div style="font-family: Arial, Helvetica, sans-serif; font-size: 12px;">
DWP</div>
</div>
Darren Pulsipherhttp://www.blogger.com/profile/04546097789000371133noreply@blogger.com0tag:blogger.com,1999:blog-9107894188293530074.post-8052565573024196362012-10-26T10:22:00.002-07:002012-10-26T10:22:49.505-07:00Strawberries, Chocolate and Tomatoes<div dir="ltr" style="text-align: left;" trbidi="on">
<b id="internal-source-marker_0.06962606078013778" style="font-weight: normal;"><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">Recently my wife and I decided to try an experiment with 7 of our children. Each child got to pick out their favorite ingredient for dinner. It could be anything they wanted, but it had to be a single ingredient. They were all told their favorite ingredient would be put into dinner that evening. They all wrote their ideas on a piece of paper. No one knew what the other person wrote down. The challenge for my wife and I was to use all the ingredients to make something for dinner.</span><br /><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"></span><br /><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">So here's a list of ingredients, starting from youngest to oldest child.</span></b><br />
<b id="internal-source-marker_0.06962606078013778" style="clear: left; float: left; font-weight: normal; margin-bottom: 1em; margin-right: 1em;"><img height="209px;" src="https://lh6.googleusercontent.com/jShPiOP6meeiHGK26r2nHnOvzqujd2ruvM5YuUQjwSjvwgP7cOO3ZVZQxGeDNdnIxPjMeDDEQS77KPKt91BFdqFjYEl7fqyEr5KZxxnyK1tHISG0Gl0" width="156px;" /></b><b style="font-weight: normal;"><span style="font-family: Arial;"><span style="font-size: 15px; white-space: pre-wrap;"><br /></span></span></b><br />
<ul style="margin-bottom: 0pt; margin-top: 0pt;">
<li style="font-family: Arial; font-size: 15px; list-style-type: disc; vertical-align: baseline;"><b style="font-weight: normal;"><span style="vertical-align: baseline; white-space: pre-wrap;">strawberries - very good choice</span></b></li>
<li style="font-family: Arial; font-size: 15px; list-style-type: disc; vertical-align: baseline;"><b style="font-weight: normal;"><span style="vertical-align: baseline; white-space: pre-wrap;"> maple syrup - another great choice </span></b></li>
<li style="font-family: Arial; font-size: 15px; list-style-type: disc; vertical-align: baseline;"><b style="font-weight: normal;"><span style="vertical-align: baseline; white-space: pre-wrap;"> chocolate chips - sounds like a yummy dessert</span></b></li>
<li style="font-family: Arial; font-size: 15px; list-style-type: disc; vertical-align: baseline;"><b style="font-weight: normal;"><span style="vertical-align: baseline; white-space: pre-wrap;"> coconut milk - again a great combination</span></b></li>
<li style="font-family: Arial; font-size: 15px; list-style-type: disc; vertical-align: baseline;"><b style="font-weight: normal;"><span style="vertical-align: baseline; white-space: pre-wrap;"> olive oil - this is no longer dessert, it’s something else</span></b></li>
<li style="font-family: Arial; font-size: 15px; list-style-type: disc; vertical-align: baseline;"><b style="font-weight: normal;"><span style="vertical-align: baseline; white-space: pre-wrap;"> tomatoes -fits well with the olive oil</span></b></li>
<li style="font-family: Arial; font-size: 15px; list-style-type: disc; vertical-align: baseline;"><b style="font-weight: normal;"><span style="vertical-align: baseline; white-space: pre-wrap;"> parmesan cheese - the finishing touch</span></b></li>
</ul>
<b style="font-weight: normal;"><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"></span><br /><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">We had bow tie pasta planned for that night so we made 2 batches. One batch with chicken alfredo, the other with the concoction of favorite ingredients. The results were amazing....amazingly gross. All of these individual ingredients were great, but together a gastronomical disaster.</span><br /><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"></span><br /><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">At work I have noticed the same sort of thing with development tools. If we don't spend time looking at the big picture, we can sometimes end up with great point solutions that combined together make a less than desirable system. A great build tool combined with a great configuration management tool adding in a requirements management tool can be great as long as they can all talk to each other and use a common systematic data model. If not, then you end up with a Frankenstein system that is hard to manage and not too pretty to look at. Some simple planning upfront with goals and objectives for each of the ingredients, can quickly change disaster into a utopian system. </span><br /><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"></span><br /><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">First, focus on a common data model. This does not mean a single database, just a common data model. That means that when I say the word Defect, it means the same in all of the tools, has common fields and if possible resides in one place. </span><br /><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"></span><br /><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">Second, focus on integration of tools not through replication of data. Replicating and translation of data always leads to problems. It is far better to link data across tools with as little data manipulation as possible. If a tool already has a notion of defect that does not match your primary tool for defects, then you can have a problem. Where is the real defect?</span><br /><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"></span><br /><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">Third, remember the “best of breed” tool that does not fit into the system well, does not belong in the system. No matter how good the chocolate was that went into our family’s dinner, it tasted horrible with tomatoes and olive oil. The same is true with point tools that cannot effectively talk with other tools.</span><br /><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"></span><br /><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">Last, look for the low touch integration. Just like in a well designed system you do not want to have a highly coupled tool integration suite. It causes problems when tools are upgraded. Look for loose coupling and high cohesion in the tools that you integrate together.</span><br /><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"></span><br /><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">Good luck with the tool soup you are creating, remember that not all great things thrown together are necessarily a good combination.</span><br /><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"></span><br /><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">DWP</span></b></div>
Darren Pulsipherhttp://www.blogger.com/profile/04546097789000371133noreply@blogger.com0tag:blogger.com,1999:blog-9107894188293530074.post-1592890737508456312012-10-18T09:38:00.000-07:002012-10-18T09:38:02.071-07:00Change Escape Velocity for an Organization<div dir="ltr" style="text-align: left;" trbidi="on">
<b style="color: black; font: medium 'Times New Roman'; letter-spacing: normal; text-indent: 0px; text-transform: none; white-space: normal;"><b style="color: black; font: medium 'Times New Roman'; letter-spacing: normal; text-indent: 0px; text-transform: none; white-space: normal;"><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">I was recently measuring how long it took for an idea to move through our organization. I compared several ideas over the last 3 years. I Looked at why some seemed to hit some critical mass and then just take off, while others required constant care and feeding and took a long time to be adopted. Reviewing the changes with my boss, he said there seems to be some escape velocity for ideas in the organization. Of course this made me want to investigate this more. At the suggestion of my boss Bradley Mitchell, I opened up wikipedia and took a look at the definition of escape velocity. This is what I found out:</span><br /><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span></b></b><br />
<ol style="margin-bottom: 0pt; margin-top: 0pt;">
<li style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-weight: normal; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Escape velocity changes depending how far away from the surface you are.</span></li>
<li style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-weight: normal; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Escape velocity decreases with altitude.</span></li>
<li style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-weight: normal; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">It is the speed at which an object will not fall back to earth.</span></li>
<li style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-weight: normal; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">An object at any speed as long as it has propulsion, can escape the earth’s gravity.</span></li>
<li style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-weight: normal; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">If propulsion is removed on an object that is below escape velocity it will fall back to earth.</span></li>
<li style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-weight: normal; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">If an object is at or above escape velocity it has enough kinetic energy to “escape.”</span></li>
</ol>
<b style="color: black; font: medium 'Times New Roman'; letter-spacing: normal; text-indent: 0px; text-transform: none; white-space: normal;"><b style="color: black; font: medium 'Times New Roman'; letter-spacing: normal; text-indent: 0px; text-transform: none; white-space: normal;"><b style="color: black; font: medium 'Times New Roman'; letter-spacing: normal; text-indent: 0px; text-transform: none; white-space: normal;"><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span></b></b></b><br />
<br /><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">There is also a formula that allows us to measure the escape velocity of any object.</span><br />
<b style="color: black; font: medium 'Times New Roman'; letter-spacing: normal; text-indent: 0px; text-transform: none; white-space: normal;"><b style="color: black; font: medium 'Times New Roman'; letter-spacing: normal; text-indent: 0px; text-transform: none; white-space: normal;"><b style="color: black; font: medium 'Times New Roman'; letter-spacing: normal; text-indent: 0px; text-transform: none; white-space: normal;"></b></b></b><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><img alt=" " height="51" src="https://lh4.googleusercontent.com/FtIu-0Ycn477wiGRqL0mPfl83AnXB4DfWAqDXesfUKLuge9MQiBk1hvJbSz9qYv5XtV1AKkdU39GUw6UePA1fH_BNNZe0WfNia-3-ciYDYrGmNA7Ric" width="114" /><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><br /><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: italic; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">G = gravitational constant</span><br /><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: italic; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">M = the mass of the planet or star</span><br /><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: italic; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">r = the distance from center of gravity.</span><br /><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><br /><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">So if we apply this to organizational change we get some interesting observations that seem to be true.</span><br /><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">G = Change Constant</span><br /><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">M = the size of the organization</span><br /><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">r = how close to core values that change are.</span><br /><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><br /><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">So if the organization is large (large M) it will take more velocity to get the organization to change. If the change is far from the changing fundamentally core values of the organization then the escape velocity is smaller than if it profoundly affects core values. This seems to make some sense. I also think we can play with the Change Constant and say that it is not constant but corresponds to how old the organization is. The older an organization the harder it is to change and therefore the escape change velocity is higher.</span><br /><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><br /><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Let’s look at these principles and see how they might apply to change in an organization. So how can I use escape velocity observations for escape change velocity?</span><br />
<b style="color: black; font: medium 'Times New Roman'; letter-spacing: normal; text-indent: 0px; text-transform: none; white-space: normal;"><b style="color: black; font: medium 'Times New Roman'; letter-spacing: normal; text-indent: 0px; text-transform: none; white-space: normal;"></b></b><br />
<ol style="margin-bottom: 0pt; margin-top: 0pt;">
<li style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-weight: normal; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">The further you are from a profound change to core values the easier the change.</span></li>
<li style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-weight: normal; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Change is easier for smaller changes.</span></li>
<li style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-weight: normal; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">To make a change permanent you must achieve the escape change velocity or it will fall back to earth.</span></li>
<li style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-weight: normal; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Adding constant pressure to a change, will eventually make it stick.</span></li>
<li style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-weight: normal; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">If a change is launched without enough velocity to escape, it will revert back to its current situation.</span></li>
<li style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-weight: normal; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">If a change has enough velocity at launch, it will not need constant pressure to succeed.</span></li>
</ol>
<b id="internal-source-marker_0.3320318339392543" style="color: black; font: medium 'Times New Roman'; letter-spacing: normal; text-indent: 0px; text-transform: none; white-space: normal;"><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><br /><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">As you can see the engineering side of me wants to put an equation to describe how I can help an organization change. But it is never that easy. Human beings are unpredictable and in a large organization with hundreds of individuals it is closer to chaos. The key is to try and determine what things can help control the chaos during the change. Finding the perfect velocity of change for the organization is a combination of the amount of change and the size of the organization. </span><br /><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><br /><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">DWP</span></b></div>
Darren Pulsipherhttp://www.blogger.com/profile/04546097789000371133noreply@blogger.com0tag:blogger.com,1999:blog-9107894188293530074.post-34756247941434370502012-09-19T17:12:00.001-07:002012-09-19T17:12:31.018-07:00Someone to Watch Over Me<div dir="ltr" style="text-align: left;" trbidi="on">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyMqfGAUkXlLc_5JEJJiL2VLaLbLcbUO0FkjdBITgOdi1u19Ef-vOLpv6vA0QPaV34yNZ_KSb5-VnzKRWat7VYKQlf5Z-a_dl-Ru7wfh8U0hzkWeIGpGc6s3jzvFPQ2nQMJNAb0oTl1Hk/s1600/download.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyMqfGAUkXlLc_5JEJJiL2VLaLbLcbUO0FkjdBITgOdi1u19Ef-vOLpv6vA0QPaV34yNZ_KSb5-VnzKRWat7VYKQlf5Z-a_dl-Ru7wfh8U0hzkWeIGpGc6s3jzvFPQ2nQMJNAb0oTl1Hk/s200/download.jpg" width="192" /></a><b id="internal-source-marker_0.7350023270118982" style="font-weight: normal;"><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">In my work as well as at home it is always nice to have someone help me get my todo list done. Whether it is a honey do list or a work breakdown structured list from work, it is nice when I have the chance to have another set of eyes to make sure I did everything. Of course I didn’t think this applied to my honey do list, but my 6 year old son taught me something interesting this last week. I have been trying to fix our trash compactor for the last month or so. The problem is it is just hard to open the door. First thing I did was pull all of the garbage that fell behind the trash bin. That seemed to help some, but it was still really hard to open the door. Next I took the bin out and made sure all of the tracks were working fine. Then I started taking apart the wheel assembly. Putting it back together and tightening all of the screws. It was better but still hard. I was very frustrated and out of patience with this appliance from the underworld. Then my 6 year old son flipped the red switch that said, “locked” to “unlocked,” and everything worked fine.</span><br /><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"></span><br /><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">So, like a typical engineer I was looking for a hard problem to solve instead of looking for something obvious. This tends to be the case not just at home with household appliances, but at work as well. This could not just be for us engineers either. In the software engineering world there is a big movement to perform something called Pair Programming. Basically two people sit down to one computer and write code together. One person typing the other making sure the program is working, typed in correctly ,etc... </span><br /><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"></span><br /><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">Can you imagine someone looking over your shoulder making sure you are typing correctly? Sounds annoying and it can be at first. But the results are huge according to some research that there can be up to 50% decrease in the number of mistakes (bugs) made in the code. Two people tend to consider more design alternatives, find bugs faster, and fix problems right the first time. I have used pair programming a couple of times in my career and in every case I have seen great improvement in hitting timelines, with higher quality. </span><br /><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"></span><br /><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">However, I have also seen engineers not wanting to work nicely together. Maybe it goes back to elementary school when we are graded individually. Not as a group or team often. It is kind of funny. We teach kids in kindergarten to play together. By 3rd grade you are not allowed to share answers with your classmates, that is cheating. In fact one of the largest complaints about pair programming is who gets the credit. Especially when annual reviews come around. Somehow we have to overcome the social barriers that have been ingrained in us to not share or work together.</span><br /><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"></span><br /><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">As I learned with my trash compactor, pair programming helps find solutions that would be otherwise overlooked. Even a 6 year old can see the obvious things that years of my domestic appliance repair was overlooking.</span></b></div>
Darren Pulsipherhttp://www.blogger.com/profile/04546097789000371133noreply@blogger.com0tag:blogger.com,1999:blog-9107894188293530074.post-82986610223917890572012-09-01T16:45:00.002-07:002012-09-01T16:46:22.336-07:00Patience and Patents<div dir="ltr" style="text-align: left;" trbidi="on">
<br />
<span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">About 7 years ago I went through a patent harvesting exercise with my employer. It was 2005 and there was a big push in the software industry to patent everything they could. So they could be leveraged in licensing technologies between companies. The lawyer and my team submitted 14 patent applications and the waiting process began. About a year later I left the company and pretty much forgot about the patents. One day about 2 years later I got an email from one of the members of my former team. To my surprise, we had been award 4 patents. Over the next year 2 more patents were approved. Not notice from my former employer. I found out thanks to “Google Scholar” monitor (very cool tool that monitors your name and publications you have). Then silence; Nothing happen for 4 years and all of a sudden in the last 3 months 3 more patents were awarded.</span><br />
<span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"></span><br />
<span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">I have lots of questions about the patent process. Maybe someone that has experience in this can give me some ideas.</span><br />
<span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"></span><br />
<ul style="margin-bottom: 0pt; margin-top: 0pt;">
<li style="font-family: Arial; font-size: 15px; list-style-type: disc; vertical-align: baseline;"><span style="vertical-align: baseline; white-space: pre-wrap;">Why has it taken so long?</span></li>
<li style="font-family: Arial; font-size: 15px; list-style-type: disc; vertical-align: baseline;"><span style="vertical-align: baseline; white-space: pre-wrap;">Why does there seem to be some renewed interest in 7 year old patents.</span></li>
<li style="font-family: Arial; font-size: 15px; list-style-type: disc; vertical-align: baseline;"><span style="vertical-align: baseline; white-space: pre-wrap;">Do patent applications expire sometime?</span></li>
<li style="font-family: Arial; font-size: 15px; list-style-type: disc; vertical-align: baseline;"><span style="vertical-align: baseline; white-space: pre-wrap;">Is the high tech sue happy atmosphere today affecting number of patents filed and the time it takes to be reviewed? (Samsung and Apple for example)</span></li>
</ul>
<span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"></span><br />
<span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">With all of the renewed interest in my old patent applications, it reminds me of the old team I worked with, the cool technology we created, and the fun we had. So I guess the benefit of a long patent process might be nostalgia. I have lots of questions</span><br />
<span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"></span><br />
<span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">DWP</span></div>
Darren Pulsipherhttp://www.blogger.com/profile/04546097789000371133noreply@blogger.com0tag:blogger.com,1999:blog-9107894188293530074.post-9438189081744418522012-08-23T06:44:00.002-07:002012-08-23T06:48:02.546-07:00Water Glasses and the Cost of Reuse<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="separator" style="clear: both; text-align: center;">
</div>
<div style="text-align: left;">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEieUWxYJMlvdgJwH4xok5Jzjc5KDxW9qLmAgUe6-ClF8EXlwgfiEPfdEqf_Iv5kv4cqgrKIIGZIPMe9GUZNmkEw5vBWG_BkoHI-wudlxFfPGsDyjhroudSHASVlkJSR2lVNc1P9n5xv4wo/s1600/waterglasses.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="167" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEieUWxYJMlvdgJwH4xok5Jzjc5KDxW9qLmAgUe6-ClF8EXlwgfiEPfdEqf_Iv5kv4cqgrKIIGZIPMe9GUZNmkEw5vBWG_BkoHI-wudlxFfPGsDyjhroudSHASVlkJSR2lVNc1P9n5xv4wo/s200/waterglasses.jpg" width="200" /></a></div>
<b id="internal-source-marker_0.7213371503166854" style="font-weight: normal;"><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">This summer my wife and I had a huge dilemma in our house. With kids home from school and the hot weather, our family of 9 ( 7 kids at home) was going through all of our glasses in our cupboards. We actually have more than 9 glasses, in fact we have plenty of glasses. But for some reason our glass cupboard was empty and our sink was full of glasses all summer long. Something about teenagers not being able to reuse the same cup more than once. In some respects I don’t blame the older kids. The younger kids, especially our 5 year old, just grabs any cup they can reach and gets himself a glass of water. If my 5 year old was not a walking magnet dirt, grime and everything sticky, I am sure the older kids wouldn’t mind to reusing the glasses sitting by the sink. So there is the dilemma, I have a limited number of glasses (supply), a fixed number of kids, at least right now (demand), and an unlimited demand for drinks of water. What a better reason to show the benefits of reuse.</span><br /><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"></span><br /><span style="font-family: Arial; font-size: 15px; font-style: italic; vertical-align: baseline; white-space: pre-wrap;">Warning software geekiness alert!!!!</span><br /><span style="font-family: Arial; font-size: 15px; font-style: italic; vertical-align: baseline; white-space: pre-wrap;"></span><br /><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">The costs of not reusing the glasses is very measurable. If I have to buy more glasses that costs money, more glasses probably means more cupboard space as well. Not to mention more cycles of the dishwasher running. Another option is to limit the number of drinks of water per child per day. So reuse most definitely has a benefit. A measurable benefit. Money in my pocket. This is great. More money for my vacation fund or more than likely kids college fund. </span><br /><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"></span><br /><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">Being the engineer that I am I started looking to see if there was a cost to re-use as well. It didn’t take long to find one of the costs of re-using glasses on the counter. All I had to do is open a bill from the doctor’s office. Little kids tend to be petri dishes for germs and virus and anything else they pick up at school, the playground or a friend’s house. And many of these little bugs spread like wildfire when we have reuse model of sharing glasses. Ok a bit of a stretch, but sharing is not always a good thing.</span><br /><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"></span><br /><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">So what does that have to do with software engineering? Code reuse has been touted as the holy grail of software engineering. We always look at the benefit of reusing a component or code in a product. The benefits are great. Development team reduction, maintaining one component instead of multiple components, validation cycle reduction, etc... But what is the cost of re-use? Is there a cost? Just like the water glass situation in my house it depends on the design and architecture of the solution. The costs could be high or it could be low based on the what you value most. </span><br /><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">There are different levels of re-use that should be explored. </span><a href="http://www.flashline.com/docs/WPAMBLER03.pdf"><span style="color: #1155cc; font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">An article by Amber</span></a><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"> shows the different areas of reuse.</span><br /><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"></span></b></div>
<div dir="ltr">
<table style="border-collapse: collapse; border: none;"><colgroup><col width="172"></col><col width="420"></col></colgroup><tbody>
<tr style="height: 0px;"><td style="border: 1px solid rgb(0, 0, 0); padding: 7px; vertical-align: top;"><div dir="ltr" style="margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="background-color: white; font-family: Arial; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;">Architecture-Driven Reuse</span></div>
</td><td style="border: 1px solid rgb(0, 0, 0); padding: 7px; vertical-align: top;"><div dir="ltr" style="margin-bottom: 0pt; margin-left: 13pt; margin-top: 0pt; text-align: center; text-indent: -13pt;">
<span style="background-color: white; font-size: 8px; vertical-align: baseline; white-space: pre-wrap;">·</span><span style="background-color: white; font-size: 9px; vertical-align: baseline; white-space: pre-wrap;"> </span><span style="background-color: white; font-family: Arial; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;">The reuse and/or development of reusable technical and business components and services described by your enterprise architecture models</span></div>
<div dir="ltr" style="margin-bottom: 0pt; margin-left: 13pt; margin-top: 0pt; text-align: center; text-indent: -13pt;">
<span style="background-color: white; font-size: 8px; vertical-align: baseline; white-space: pre-wrap;">·</span><span style="background-color: white; font-size: 9px; vertical-align: baseline; white-space: pre-wrap;"> </span><span style="background-color: white; font-family: Arial; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;">Sometimes referred to as </span><span style="background-color: white; font-family: Arial; font-size: 12px; font-style: italic; vertical-align: baseline; white-space: pre-wrap;">domain-component reuse</span></div>
</td></tr>
<tr style="height: 0px;"><td style="border: 1px solid rgb(0, 0, 0); padding: 7px; vertical-align: top;"><div dir="ltr" style="margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="background-color: white; font-family: Arial; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;">Artifact Reuse</span></div>
</td><td style="border: 1px solid rgb(0, 0, 0); padding: 7px; vertical-align: top;"><div dir="ltr" style="margin-bottom: 0pt; margin-left: 13pt; margin-top: 0pt; text-align: center; text-indent: -13pt;">
<span style="background-color: white; font-size: 8px; vertical-align: baseline; white-space: pre-wrap;">·</span><span style="background-color: white; font-size: 9px; vertical-align: baseline; white-space: pre-wrap;"> </span><span style="background-color: white; font-family: Arial; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;">The reuse of previously created development artifacts: use cases; standards documents; domain-specific models procedures and guidelines; and other applications</span></div>
</td></tr>
<tr style="height: 0px;"><td style="border: 1px solid rgb(0, 0, 0); padding: 7px; vertical-align: top;"><div dir="ltr" style="margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="background-color: white; font-family: Arial; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;">Code Reuse</span></div>
</td><td style="border: 1px solid rgb(0, 0, 0); padding: 7px; vertical-align: top;"><div dir="ltr" style="margin-bottom: 0pt; margin-left: 13pt; margin-top: 0pt; text-align: center; text-indent: -13pt;">
<span style="background-color: white; font-size: 8px; vertical-align: baseline; white-space: pre-wrap;">·</span><span style="background-color: white; font-size: 9px; vertical-align: baseline; white-space: pre-wrap;"> </span><span style="background-color: white; font-family: Arial; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;">The reuse of source code within sections of an application and potentially across multiple applications</span></div>
<div dir="ltr" style="margin-bottom: 0pt; margin-left: 13pt; margin-top: 0pt; text-align: center; text-indent: -13pt;">
<span style="background-color: white; font-size: 8px; vertical-align: baseline; white-space: pre-wrap;">·</span><span style="background-color: white; font-size: 9px; vertical-align: baseline; white-space: pre-wrap;"> </span><span style="background-color: white; font-family: Arial; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;">Includes use of Web services</span></div>
</td></tr>
<tr style="height: 0px;"><td style="border: 1px solid rgb(0, 0, 0); padding: 7px; vertical-align: top;"><div dir="ltr" style="margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="background-color: white; font-family: Arial; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;">Component Reuse</span></div>
</td><td style="border: 1px solid rgb(0, 0, 0); padding: 7px; vertical-align: top;"><div dir="ltr" style="margin-bottom: 0pt; margin-left: 13pt; margin-top: 0pt; text-align: center; text-indent: -13pt;">
<span style="background-color: white; font-size: 8px; vertical-align: baseline; white-space: pre-wrap;">·</span><span style="background-color: white; font-size: 9px; vertical-align: baseline; white-space: pre-wrap;"> </span><span style="background-color: white; font-family: Arial; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;">The reuse of pre-built, fully-encapsulated components in the development of your application</span></div>
</td></tr>
<tr style="height: 0px;"><td style="border: 1px solid rgb(0, 0, 0); padding: 7px; vertical-align: top;"><div dir="ltr" style="margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="background-color: white; font-family: Arial; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;">Framework Reuse</span></div>
</td><td style="border: 1px solid rgb(0, 0, 0); padding: 7px; vertical-align: top;"><div dir="ltr" style="margin-bottom: 0pt; margin-left: 13pt; margin-top: 0pt; text-align: center; text-indent: -13pt;">
<span style="background-color: white; font-size: 8px; vertical-align: baseline; white-space: pre-wrap;">·</span><span style="background-color: white; font-size: 9px; vertical-align: baseline; white-space: pre-wrap;"> </span><span style="background-color: white; font-family: Arial; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;">The reuse of collections of classes that, together, implement the basic functionality of a common technical or business domain</span></div>
</td></tr>
<tr style="height: 0px;"><td style="border: 1px solid rgb(0, 0, 0); padding: 7px; vertical-align: top;"><div dir="ltr" style="margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="background-color: white; font-family: Arial; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;">Inheritance Reuse</span></div>
</td><td style="border: 1px solid rgb(0, 0, 0); padding: 7px; vertical-align: top;"><div dir="ltr" style="margin-bottom: 0pt; margin-left: 13pt; margin-top: 0pt; text-align: center; text-indent: -13pt;">
<span style="background-color: white; font-size: 8px; vertical-align: baseline; white-space: pre-wrap;">·</span><span style="background-color: white; font-size: 9px; vertical-align: baseline; white-space: pre-wrap;"> </span><span style="background-color: white; font-family: Arial; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;">The use of inheritance in your application to take advantage of behavior implemented in existing classes</span></div>
</td></tr>
<tr style="height: 0px;"><td style="border: 1px solid rgb(0, 0, 0); padding: 7px; vertical-align: top;"><div dir="ltr" style="margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="background-color: white; font-family: Arial; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;">Pattern Reuse</span></div>
</td><td style="border: 1px solid rgb(0, 0, 0); padding: 7px; vertical-align: top;"><div dir="ltr" style="margin-bottom: 0pt; margin-left: 13pt; margin-top: 0pt; text-align: center; text-indent: -13pt;">
<span style="background-color: white; font-size: 8px; vertical-align: baseline; white-space: pre-wrap;">·</span><span style="background-color: white; font-size: 9px; vertical-align: baseline; white-space: pre-wrap;"> </span><span style="background-color: white; font-family: Arial; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;">The reuse of publicly documented approaches, called patterns, to solving common problems</span></div>
</td></tr>
<tr style="height: 0px;"><td style="border: 1px solid rgb(0, 0, 0); padding: 7px; vertical-align: top;"><div dir="ltr" style="margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="background-color: white; font-family: Arial; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;">Template Reuse</span></div>
</td><td style="border: 1px solid rgb(0, 0, 0); padding: 7px; vertical-align: top;"><div dir="ltr" style="margin-bottom: 0pt; margin-left: 13pt; margin-top: 0pt; text-align: center; text-indent: -13pt;">
<span style="background-color: white; font-size: 8px; vertical-align: baseline; white-space: pre-wrap;">·</span><span style="background-color: white; font-size: 9px; vertical-align: baseline; white-space: pre-wrap;"> </span><span style="background-color: white; font-family: Arial; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;">The reuse of a common set of layouts for key development artifacts – documents, models and source code – within your organization</span></div>
</td></tr>
</tbody></table>
</div>
<b id="internal-source-marker_0.7213371503166854" style="font-weight: normal;"><br />
</b><br />
<div class="separator" style="clear: both; text-align: center;">
<b id="internal-source-marker_0.7213371503166854" style="font-weight: normal;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitOxNrlFzw-LCYc0fDdpPdXIPxoN9I7AWDtWaiyLGAAkV3B0xnofTVk-M-krHPmi9thAU_0jq55AZEU_0yEbusxRAIv4cYo9EkCi7coeHWPBy69lQ4uBQDRq-mGIfPjUVWLSI4a2rf0Cc/s1600/drinkingf.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="225" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitOxNrlFzw-LCYc0fDdpPdXIPxoN9I7AWDtWaiyLGAAkV3B0xnofTVk-M-krHPmi9thAU_0jq55AZEU_0yEbusxRAIv4cYo9EkCi7coeHWPBy69lQ4uBQDRq-mGIfPjUVWLSI4a2rf0Cc/s320/drinkingf.jpg" width="225" /></a></b></div>
<b id="internal-source-marker_0.7213371503166854" style="font-weight: normal;">
<span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"></span><br /><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">Many times we just focus on the code reuse without considering the other areas of reuse. Ignoring these other areas can lead to increased costs. It may not always be the best thing to re-use product artifacts. I think we need to spend more time analyzing the benefits and costs before just jumping into something.</span><br /><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"></span><br /><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">By the way, my wise parents (6 kids) had a solution to the water glass problem. No reuse at all. They put a water faucet in the kitchen. No more water glasses in the sink. Reuse was just too costly and messy. </span><br /><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"></span><br /><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"></span><br /><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">DWP</span></b>
</div>
Darren Pulsipherhttp://www.blogger.com/profile/04546097789000371133noreply@blogger.com0tag:blogger.com,1999:blog-9107894188293530074.post-20501492940909536502012-06-15T09:09:00.001-07:002012-06-15T09:09:06.255-07:00Learning to Ride a Bike (for the eighth, ninth and tenth time)<b id="internal-source-marker_0.9131992757320404" style="font-weight: normal;"><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">Three of my kids are learning how to ride a bike right now. Since my wife and I have already done this 7 times, we thought it would be easy. It has been 7 years since we have done it, but teaching someone to ride a bike should be the same as riding a bike. Once you do it, you never forget. So we lined our 5, 6 and 7 year olds up with their hand me down bikes from their older siblings and started their journey from little kids to big kids. We knew that these kids all have different personalities with some less coordinated than others, some are more fearful than others, and some are more stubborn than others. But we had years of experience teaching kids to ride bikes. We knew the routine, an hour of tears, some crashing, scrapes and bruises with Toy Story band-aids. My wife and I both played our roles. I would say, “Stop crying and get back on the bike.” “Everyone falls you just need to do it again.” And my wife with the, “I know it hurts, let me kiss it better”, “You did so good”, “You're ok, lets try again.” Both of us taking turns with the video camera and running behind them on their bikes.</span><br /><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"></span><br /><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">You get the picture. We noticed a couple of things that were impeding my kids from just picking up the bike and riding it. They are what I call “barriers to riding.” </span><span style="font-family: Arial; font-size: 15px; font-style: italic; vertical-align: baseline; white-space: pre-wrap;">Being the software engineer with an MBA, I need to have a buzz word or phrase to explain things</span><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">. </span><span style="font-family: Arial; font-size: 15px; font-style: italic; vertical-align: baseline; white-space: pre-wrap;">I will show a graph later with success in the upper right hand corner of the page. </span><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">Funny thing is that I see similar things when it comes to engineers and teams evaluating and using new tools. In previous blogs, I have mentioned to find out what motivates people and how to play to those motivators. I have been reminded that we also have to look at “de-motivators” or “dissuadors”. Here are some of the things that dissuade trying out new tools or learning to ride a bike: fear, complexity and complacency.</span><br /><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"></span><br /><span style="font-family: Arial; font-size: 15px; font-weight: bold; vertical-align: baseline; white-space: pre-wrap;">Fear</span><br /><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">Fear is one of the most powerful, “barriers to entry”, there are. Our society does not seem to help the situation. Look at kids learning to ride a bike. We completely cover them in helmets, knee pads, elbow pads, etc... We basically scare our kids and teach them to be afraid to ride a bike. We predisposition them that falling is going to hurt and may kill you. No wonder they are very scared to try and ride. We do the same thing in business. I don’t think if the new build system fails to build, will kill you, but we put the fear of trying and failing into annual performance reviews, development metrics, and tight release schedules. </span><br /><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"></span><br /><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">After my kids all fell once or twice, they found out that it only hurts a little bit. They weren’t going to die. They got the comfort they needed from their mom, the motivation from their dad and they kept trying. We did not reward them for trying and quitting. We encouraged and adjusted our approach based on the results we had before. The key was showing them that it was safe to fall and encouragement to keep trying.</span><br /><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"></span><br /><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">We need to foster the same kind of atmosphere in our work environments. Encourage people to try new things, learn new techniques and use tools. We need to be okay with failing and learning to eventually succeed. We need to make sure that we don’t reward failure. We cannot remove the natural consequences of failure. Like my kids, they had to fall a couple of times before they could figure out how to balance. When we fail we still need the sting of hitting the pavement and skinning our knee, or we won’t know we are headed in the wrong direction and we cannot correct the path we are on.</span><br /><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"></span><br /><span style="font-family: Arial; font-size: 15px; font-weight: bold; vertical-align: baseline; white-space: pre-wrap;">Complexity</span><br /><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">Everyone that rides a bike knows that it is easy. It is not that complex. Tell that to a 5 year old, or an engineer that has only used vi or emacs and cannot see moving to a windows based IDE where they have to use their mouse to get things done. (</span><span style="font-family: Arial; font-size: 15px; font-style: italic; vertical-align: baseline; white-space: pre-wrap;">I fit into that category</span><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">). To ride a bike it requires balance, hand eye coordination to move the handle bars, strength to push the pedals, coordination to move your legs in a new motion, etc.... For a 5 or 6 year old this can be very hard to figure out. Throw fear in there and you have something monumental to overcome.</span><br /><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"></span><br /><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">One of the tricks we learned was to break down complexity, remove some of the factors that make it complex. Whether it is holding on to the back of their seat, (removing balance), or removing the pedals, (removing the leg motion and strength requirements). This worked like a charm, and as they built up their confidence and coordination, they have progressed to riding their bikes all of the time. It has become second nature to them.</span><br /><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"></span><br /><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">Same thing applies to adopting a new tool or process. Don’t do everything at once if it is too complex. It could be very difficult for an individual or organization to swallow all of the complexity at once. But remember, the end goal is to have the complete system in place. You need to put the pedals back on the bike to actually ride the bike. If you don’t, you can’t go as fast as everyone else riding their bike.</span><br /><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"></span><br /><span style="font-family: Arial; font-size: 15px; font-weight: bold; vertical-align: baseline; white-space: pre-wrap;">Complacency</span><br /><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">My 5 year old told my wife and I that he can walk and that he does not need to ride a bike. Ok, this is actually true, but we had to show him the benefits or riding a bike compared to walking everywhere. First, so we can have fun with our friends; his response, “I can ride my scooter.” Second, we can get to places faster; his answer was to drive a car. Third, we can go places on our bikes that our cars cannot go; his creative juices were flowing now, “We can use super hero powers and fly there.”</span><br /><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"></span><br /><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">We run into the same problem in our organizations that don’t want to change. It is comfortable and familiar in a world that seems to always change. Most people want something that is always the same. So what do you do? Fight complacency with a plan and develop a sense of urgency. In the case of my 5 year old, our plan was to ride a bike and show him all of the steps we were going to take to teach him. Then, we had to give him a sense of urgency. So we planned some family bike trips to the park. One of his favorite parks. The urgency was there and the plan was in place.</span><br /><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"></span><br /><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">Organizations need the same kind of strategic plan and urgency that my 5 year old needed. Without an end goal and a timeline to meet the goal with some kind of consequence, the people on your team might wonder why they are making the change. “Change for change’s sake” will be the mantra for the week, and the effort will be undermined by complacency. </span><br /><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"></span><br /><span style="font-family: Arial; font-size: 15px; font-weight: bold; vertical-align: baseline; white-space: pre-wrap;">Results</span><br /><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">When a substantial change is made in an organization, you need to celebrate. There needs to be a reward for the change. Many times we forget to point out to our teams the benefits that have been realized from making the change. Don’t forget to point out the natural consequences of the changes. Many people need to be reminded. A celebratory pizza party helps sometimes as well.</span><br /><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"></span><br /><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">As of this date we have 2 new bike riders in our family. My 5 year old is still holding out, but this next week may be the week for him. Like I said. We learn from our failures not our successes. Anyway it may give me more ideas for another blog.</span><br /><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"></span><br /><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"></span><br /><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">DWP</span></b>Darren Pulsipherhttp://www.blogger.com/profile/04546097789000371133noreply@blogger.com0tag:blogger.com,1999:blog-9107894188293530074.post-57565959065445613182012-05-31T14:56:00.003-07:002012-05-31T14:57:28.636-07:00Saggy Pants and Pointy hair: Motivating Teenagers and Bosses<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzQfaK0P7mmFmulcP6pPeYbxMteQCqmGo7C4JngUuLcVjsJToSrWqUdcdIcgrVdenUPF6WvmdubsQKIp9x4WUhRcj9Bb57hH5zcRTrWemSx6WWl54GT4b4FS8p22XT4biXzfDPVF4b2yg/s1600/saggyPants.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="150" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzQfaK0P7mmFmulcP6pPeYbxMteQCqmGo7C4JngUuLcVjsJToSrWqUdcdIcgrVdenUPF6WvmdubsQKIp9x4WUhRcj9Bb57hH5zcRTrWemSx6WWl54GT4b4FS8p22XT4biXzfDPVF4b2yg/s200/saggyPants.jpg" width="200" /></a><b id="internal-source-marker_0.7999776063952595" style="font-weight: normal;"><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">I have a very unique situation. I have been climbing the executive ladder for years and finally reached the executive level. Recently, I moved into an individual contributor role where I try and influence an organization for change from the side of the organization, instead of from the boss position. It is a very challenging, role but at the same time very fun. Trying to figure out how the organization operates, how it changes and what motivates it to change. I also have another unique situation in that I have 10 kids. That is not binary for 2. That is the number TEN, and having a blended family with that many kids feels much like my job. Influencing the children with different ages from 5 to 23 years old, is just as challenging as helping an organization through change. I have found some interesting comparisons:</span></b><br />
<b style="font-weight: normal;"><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"><br /></span></b><br />
<div dir="ltr">
<b id="internal-source-marker_0.7999776063952595" style="font-weight: normal;"></b><br />
<table style="border-collapse: collapse; border: none;"><colgroup><col width="271"></col><col width="278"></col></colgroup><tbody>
<tr style="height: 0px;"><td style="border: 1px solid rgb(0, 0, 0); padding: 7px; vertical-align: top;"><div dir="ltr" style="margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="font-family: Arial; font-size: 15px; font-weight: bold; vertical-align: baseline; white-space: pre-wrap;">Family</span></div>
</td><td style="border: 1px solid rgb(0, 0, 0); padding: 7px; vertical-align: top;"><div dir="ltr" style="margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="font-family: Arial; font-size: 15px; font-weight: bold; vertical-align: baseline; white-space: pre-wrap;">Work</span></div>
</td></tr>
<tr style="height: 0px;"><td style="border: 1px solid rgb(0, 0, 0); padding: 7px; vertical-align: top;"><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">One child can make an 8 hour road trip to grandma’s house completely miserable for everyone.</span><br />
<span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"> </span></td><td style="border: 1px solid rgb(0, 0, 0); padding: 7px; vertical-align: top;"><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">One person can torpedo the role out of the greatest process improvement.</span></td></tr>
<tr style="height: 0px;"><td style="border: 1px solid rgb(0, 0, 0); padding: 7px; vertical-align: top;"><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">What motivates my 5 year old son, does not work for my 17 year old sons.</span><br />
<span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"> </span></td><td style="border: 1px solid rgb(0, 0, 0); padding: 7px; vertical-align: top;"><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">What motivates the CEO is different from directors, managers and individual contributors.</span></td></tr>
<tr style="height: 0px;"><td style="border: 1px solid rgb(0, 0, 0); padding: 7px; vertical-align: top;"><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">Not everyone can be heard at the dinner table when everyone is talking at the same time. But everyone wants to be heard.</span><br />
<span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"> </span></td><td style="border: 1px solid rgb(0, 0, 0); padding: 7px; vertical-align: top;"><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">Some of the best ideas for change can come in the ranks of the organization. At all levels.</span></td></tr>
<tr style="height: 0px;"><td style="border: 1px solid rgb(0, 0, 0); padding: 7px; vertical-align: top;"><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">Mom and Dad need alone time as often as they possibly can to recharge.</span></td><td style="border: 1px solid rgb(0, 0, 0); padding: 7px; vertical-align: top;"><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">I got nothing here.</span></td></tr>
</tbody></table>
<b id="internal-source-marker_0.7999776063952595" style="font-weight: normal;">
</b></div>
<b style="font-weight: normal;"><br /></b><br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjtQC-VAjyM0gYkRL-dKaA7O0zrCAaDrum0uYD1-HmplKwKoKo8n-E7-8Q29UTswFyPsvt-P2z9BZuWz06JxLci7_v1DesRPhdlGPHxzxuOTTvtJpCcrmxci9Ii-LrCthnN9LC_g0nh3yo/s1600/boss.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjtQC-VAjyM0gYkRL-dKaA7O0zrCAaDrum0uYD1-HmplKwKoKo8n-E7-8Q29UTswFyPsvt-P2z9BZuWz06JxLci7_v1DesRPhdlGPHxzxuOTTvtJpCcrmxci9Ii-LrCthnN9LC_g0nh3yo/s200/boss.jpg" width="191" /></a><b id="internal-source-marker_0.7999776063952595" style="font-weight: normal;"><span style="font-family: Arial;"><span style="font-size: 15px; white-space: pre-wrap;"><br /></span></span><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">I would like to look specifically on what motivates. I am starting to understand what motivates my 5, 6 and 7 year olds. Treats and trips to the park. My teenagers are a bit harder, but it mostly has to do with electronics. My older kids are motivated by pure cash mostly because they need it for college or fixing their car. Organizations are somewhat similar and finding out what motivates individuals is key to effecting change. So what motivates you, your boss, or your boss’s boss?</span></b><br />
<b style="font-weight: normal;"><span style="font-family: Arial;"><span style="font-size: 15px; white-space: pre-wrap;"><br /></span></span><span style="font-family: Arial; font-size: 15px; font-weight: bold; vertical-align: baseline; white-space: pre-wrap;">Individual Contributors - </span><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">Money is a good motivator for most individual contributors, but that is typically only the case if they feel they are not being paid enough. What I have found is a better motivator is, do they enjoy their work? Is it fun, is their voice heard, can they make a difference? For some it might be the camaraderie of working in a great team.</span></b><br />
<b style="font-weight: normal;"><span style="font-family: Arial;"><span style="font-size: 15px; white-space: pre-wrap;"><br /></span></span><span style="font-family: Arial; font-size: 15px; font-weight: bold; vertical-align: baseline; white-space: pre-wrap;">First-line Managers – </span><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">Many first line managers want to be directors and they want to climb that leadership ladder. So they want to make sure their team is successful according to what their director or senior manager wants. They are trying to make sure that themselves, and their teams, look good. They are building their careers. Then there are some first line managers that want to stay where they are. So they want things that are stable, quiet and secure. When trying to effect change with first line managers you need to find out the type of managers you are dealing with.</span></b><br />
<b style="font-weight: normal;"><span style="font-family: Arial;"><span style="font-size: 15px; white-space: pre-wrap;"><br /></span></span><span style="font-family: Arial; font-size: 15px; font-weight: bold; vertical-align: baseline; white-space: pre-wrap;">Directors and Senior Managers – </span><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">Power and influence. This is all about your team. The more successful your team is the more successful you are in the eyes of the executives. You have influence over more people, budgets and schedules. Being able to predictably deliver products or services from the organization is the key success factor of these people.</span></b><br />
<b style="font-weight: normal;"><span style="font-family: Arial;"><span style="font-size: 15px; white-space: pre-wrap;"><br /></span></span><span style="font-family: Arial; font-size: 15px; font-weight: bold; vertical-align: baseline; white-space: pre-wrap;">Executives – </span><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">Motivators for public company executives are very different than motivators for private companies. Public companies live and die on quarterly revenue and profit. Private company executives typically are motivated by long-term sustainable profit. How is a change in my organization going to affect my revenue and profit this quarter for public companies or longer for private companies? This of course is not always true and there are some executives with other motivation than the bottom line, but again you need to find out what motivates or de-motivates an executive to change.</span><br /><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"> </span><br /><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">Of course these are sparkling generalities and cannot be applied to every organization. The key is for you to find out what motivates people to change in your organization. Write it down. Then develop a plan to motivate your organization at all levels.</span><br /><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"> </span><br /><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">DWP</span></b>Darren Pulsipherhttp://www.blogger.com/profile/04546097789000371133noreply@blogger.com0Folsom, CA, USA38.6779591 -121.176058338.6283751 -121.2550223 38.727543100000005 -121.0970943tag:blogger.com,1999:blog-9107894188293530074.post-31047034663413239542012-02-06T13:32:00.001-08:002012-02-06T13:32:34.913-08:00Rock Quarries and Build/Test Farms<div><b><b><em><span style="font-family: arial, helvetica, sans-serif; font-size: 15px; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">When I was a teenager, I had a friend whose dad owned a rock quarry. They mined for aggregate that is used to make concrete, backfill for roads, and building subdivisions. It was a small operation, but for a teenage boy it was very cool. Large machines with conveyer belts, crushers, screens, and shakers. The engineer inside of me was fascinated with how it all worked. You dump in a truck full of what looked like dirt and rocks into one side of these machines and out on the other side came rocks of several different sizes, dirt and silt. The silt mixed with water made some of the best mud football games you can imagine.</span></em><br />
<span style="font-family: Arial; font-size: 15px; font-style: italic; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><br />
<span style="font-family: Arial; font-size: 15px; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">The image of these big machines came to my mind when I was talking to a couple of engineers tell me about our software build, release and test system at work. The source code goes in one side and our product comes out of the other side. And in our case more than one version of the product targeted for different Operating Systems and or configurations. One of the things they were complaining about was the amount of time it took to find out if their changes broke the build or made it past all of the tests in the test farm. </span><br />
<span style="font-family: Arial; font-size: 15px; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><br />
<span style="font-family: Arial; font-size: 15px; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Over the years the amount of tests run with each build has increased and the number of configurations has increased. This has made the turn around time hours instead of minutes as it used to be. The engineers I was talking to were complaining that they wanted instant feedback and could not wait hours to see if what they just typed in was going to bring the whole organization down or but the “magnus opus” that they believe they just created. Our build and test farm becomes overwhelmed when we are close to a release date and build results end up taking days instead of hours.</span><br />
<span style="font-family: Arial; font-size: 15px; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><br />
<span style="font-family: Arial; font-size: 15px; font-style: italic; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Again the big machines at the quarry came to mind again. I could see the huge screens, shakers and conveyor belts. I could picture how the first convey belt moved the dirt and rocks up to the top of this tower with conveyor belts coming off in all directions. The dirt then would be dumped into this very large screen big enough for almost everything except for large rocks about the size of large potatoes. These large rocks were sent down a conveyor belt to a crusher that then smashed these rocks into smaller rocks and then dumped that back into the top of the machine. The next set of screens would be smaller and let everything pass through except for rocks the about ¼ the size of the previous screen. In this case the conveyor belt carried these rocks to a big pile next to the tower of machines. This continued on until at the bottom of the stack silt was conveyed out to the silt pond. Did I mention mud football already?</span><br />
<span style="font-family: Arial; font-size: 15px; font-style: italic; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><br />
<span style="font-family: Arial; font-size: 15px; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">I could see what the engineers were wanting. They wanted to know if their build had big rocks or boulders in it first. They needed a quick feedback smoketest. Well we already had that. But they also wanted the aggregate screen. They wanted product out before everything was screened through the system. So I did what most good engineers do I went to google and looked at the different levels of testing. I found a good powerpoint that shows the canoical view of levels of testing. </span><a href="http://www.cs.swan.ac.uk/~csmarkus/CS339/presentations/20061202_Oladimeji_Levels_of_Testing.pdf"><span style="color: #1155cc; font-family: Arial; font-size: 15px; font-weight: normal; vertical-align: baseline; white-space: pre-wrap;">http://www.cs.swan.ac.uk/~csmarkus/CS339/presentations/20061202_Oladimeji_Levels_of_Testing.pdf</span></a><span style="font-family: Arial; font-size: 15px; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">. Simply it can be desribed as.</span></b></b> <ul><li style="font-family: Arial; font-size: 15px; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Unit Testing</span></li>
<li style="font-family: Arial; font-size: 15px; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Integration Testing</span></li>
<li style="font-family: Arial; font-size: 15px; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">System Testing</span></li>
<li style="font-family: Arial; font-size: 15px; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Acceptance Testing</span></li>
<li style="font-family: Arial; font-size: 15px; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Regression Testing</span></li>
</ul><b><b><br />
<span style="font-family: Arial; font-size: 15px; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><br />
<span style="font-family: Arial; font-size: 15px; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><br />
<span style="font-family: Arial; font-size: 15px; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">As I kept looking further in my organization I found, Interesting enough, many of the groups started doing placing screens in their build/test systems themselves in an ad hoc manner with CI build systems. Jenkins and Berta seem to be the most popular. As I went around and talked to more teams and more engineers I found one group in particular that had the same vision of the rock quarry as I did but had it in Software build and test. </span><br />
<span style="font-family: Arial; font-size: 15px; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><br />
<span style="font-family: Arial; font-size: 15px; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">This group had set up a CI build system that took each check in and pushed the build through several screens of tests to see the quality of the build. They had 5 levels of testing that would occur with each build. The screens became mroe fine grained and would take longer to run at as the source and build would go down the stack. There are a number of screens that can be put in place to give the engineers a quick feedback loop that they are looking for. The key is to time bound the first level of screens. Using a mixture of the levels of testing to give the first screen nice coverage of build and give immediate feedback to the developers. Here is an example of how a nice build/test screen could be set up.</span><br />
<span style="font-family: Arial; font-size: 15px; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><br />
<span style="font-family: Arial; font-size: 15px; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span></b></b> <div dir="ltr"> <table style="border-bottom-style: none; border-collapse: collapse; border-left-style: none; border-right-style: none; border-top-style: none;"><colgroup> <col width="105"></col> <col width="117"></col> <col width="106"></col> <col width="296"></col></colgroup> <tbody>
<tr style="height: 0px;"> <td style="border-bottom: #aaaaaa 1px dotted; border-left: #aaaaaa 1px dotted; border-right: #aaaaaa 1px dotted; border-top: #aaaaaa 1px dotted; padding-bottom: 7px; padding-left: 7px; padding-right: 7px; padding-top: 7px; vertical-align: top;"><span style="font-family: Arial; font-size: 15px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">< Time</span></td> <td style="border-bottom: #aaaaaa 1px dotted; border-left: #aaaaaa 1px dotted; border-right: #aaaaaa 1px dotted; border-top: #aaaaaa 1px dotted; padding-bottom: 7px; padding-left: 7px; padding-right: 7px; padding-top: 7px; vertical-align: top;"><span style="font-family: Arial; font-size: 15px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Name</span></td> <td style="border-bottom: #aaaaaa 1px dotted; border-left: #aaaaaa 1px dotted; border-right: #aaaaaa 1px dotted; border-top: #aaaaaa 1px dotted; padding-bottom: 7px; padding-left: 7px; padding-right: 7px; padding-top: 7px; vertical-align: top;"><span style="font-family: Arial; font-size: 15px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Build</span></td> <td style="border-bottom: #aaaaaa 1px dotted; border-left: #aaaaaa 1px dotted; border-right: #aaaaaa 1px dotted; border-top: #aaaaaa 1px dotted; padding-bottom: 7px; padding-left: 7px; padding-right: 7px; padding-top: 7px; vertical-align: top;"><span style="font-family: Arial; font-size: 15px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Test</span></td></tr>
<tr style="height: 0px;"> <td style="border-bottom: #aaaaaa 1px dotted; border-left: #aaaaaa 1px dotted; border-right: #aaaaaa 1px dotted; border-top: #aaaaaa 1px dotted; padding-bottom: 7px; padding-left: 7px; padding-right: 7px; padding-top: 7px; vertical-align: top;"><span style="font-family: Arial; font-size: 15px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">10 minutes</span></td> <td style="border-bottom: #aaaaaa 1px dotted; border-left: #aaaaaa 1px dotted; border-right: #aaaaaa 1px dotted; border-top: #aaaaaa 1px dotted; padding-bottom: 7px; padding-left: 7px; padding-right: 7px; padding-top: 7px; vertical-align: top;"><span style="font-family: Arial; font-size: 15px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Smoke Test</span></td> <td style="border-bottom: #aaaaaa 1px dotted; border-left: #aaaaaa 1px dotted; border-right: #aaaaaa 1px dotted; border-top: #aaaaaa 1px dotted; padding-bottom: 7px; padding-left: 7px; padding-right: 7px; padding-top: 7px; vertical-align: top;"><span style="font-family: Arial; font-size: 15px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Incremental</span></td> <td style="border-bottom: #aaaaaa 1px dotted; border-left: #aaaaaa 1px dotted; border-right: #aaaaaa 1px dotted; border-top: #aaaaaa 1px dotted; padding-bottom: 7px; padding-left: 7px; padding-right: 7px; padding-top: 7px; vertical-align: top;"><span style="font-family: Arial; font-size: 15px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">High level integration, some unit testing</span></td></tr>
<tr style="height: 0px;"> <td style="border-bottom: #aaaaaa 1px dotted; border-left: #aaaaaa 1px dotted; border-right: #aaaaaa 1px dotted; border-top: #aaaaaa 1px dotted; padding-bottom: 7px; padding-left: 7px; padding-right: 7px; padding-top: 7px; vertical-align: top;"><span style="font-family: Arial; font-size: 15px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">30 minutes</span></td> <td style="border-bottom: #aaaaaa 1px dotted; border-left: #aaaaaa 1px dotted; border-right: #aaaaaa 1px dotted; border-top: #aaaaaa 1px dotted; padding-bottom: 7px; padding-left: 7px; padding-right: 7px; padding-top: 7px; vertical-align: top;"><span style="font-family: Arial; font-size: 15px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Check In Regression</span></td> <td style="border-bottom: #aaaaaa 1px dotted; border-left: #aaaaaa 1px dotted; border-right: #aaaaaa 1px dotted; border-top: #aaaaaa 1px dotted; padding-bottom: 7px; padding-left: 7px; padding-right: 7px; padding-top: 7px; vertical-align: top;"><span style="font-family: Arial; font-size: 15px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Build from Smoke.</span></td> <td style="border-bottom: #aaaaaa 1px dotted; border-left: #aaaaaa 1px dotted; border-right: #aaaaaa 1px dotted; border-top: #aaaaaa 1px dotted; padding-bottom: 7px; padding-left: 7px; padding-right: 7px; padding-top: 7px; vertical-align: top;"><span style="font-family: Arial; font-size: 15px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Unit Testing for CheckIn </span></td></tr>
<tr style="height: 0px;"> <td style="border-bottom: #aaaaaa 1px dotted; border-left: #aaaaaa 1px dotted; border-right: #aaaaaa 1px dotted; border-top: #aaaaaa 1px dotted; padding-bottom: 7px; padding-left: 7px; padding-right: 7px; padding-top: 7px; vertical-align: top;"><span style="font-family: Arial; font-size: 15px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">1 hour</span></td> <td style="border-bottom: #aaaaaa 1px dotted; border-left: #aaaaaa 1px dotted; border-right: #aaaaaa 1px dotted; border-top: #aaaaaa 1px dotted; padding-bottom: 7px; padding-left: 7px; padding-right: 7px; padding-top: 7px; vertical-align: top;"><span style="font-family: Arial; font-size: 15px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Integration</span></td> <td style="border-bottom: #aaaaaa 1px dotted; border-left: #aaaaaa 1px dotted; border-right: #aaaaaa 1px dotted; border-top: #aaaaaa 1px dotted; padding-bottom: 7px; padding-left: 7px; padding-right: 7px; padding-top: 7px; vertical-align: top;"><span style="font-family: Arial; font-size: 15px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Full Build</span></td> <td style="border-bottom: #aaaaaa 1px dotted; border-left: #aaaaaa 1px dotted; border-right: #aaaaaa 1px dotted; border-top: #aaaaaa 1px dotted; padding-bottom: 7px; padding-left: 7px; padding-right: 7px; padding-top: 7px; vertical-align: top;"><span style="font-family: Arial; font-size: 15px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Integration Test, Regression Tests</span><br />
<span style="font-family: Arial; font-size: 15px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span></td></tr>
<tr style="height: 0px;"> <td style="border-bottom: #aaaaaa 1px dotted; border-left: #aaaaaa 1px dotted; border-right: #aaaaaa 1px dotted; border-top: #aaaaaa 1px dotted; padding-bottom: 7px; padding-left: 7px; padding-right: 7px; padding-top: 7px; vertical-align: top;"><span style="font-family: Arial; font-size: 15px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">3 hours</span></td> <td style="border-bottom: #aaaaaa 1px dotted; border-left: #aaaaaa 1px dotted; border-right: #aaaaaa 1px dotted; border-top: #aaaaaa 1px dotted; padding-bottom: 7px; padding-left: 7px; padding-right: 7px; padding-top: 7px; vertical-align: top;"><span style="font-family: Arial; font-size: 15px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Performance</span></td> <td style="border-bottom: #aaaaaa 1px dotted; border-left: #aaaaaa 1px dotted; border-right: #aaaaaa 1px dotted; border-top: #aaaaaa 1px dotted; padding-bottom: 7px; padding-left: 7px; padding-right: 7px; padding-top: 7px; vertical-align: top;"><span style="font-family: Arial; font-size: 15px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Build from Integration</span></td> <td style="border-bottom: #aaaaaa 1px dotted; border-left: #aaaaaa 1px dotted; border-right: #aaaaaa 1px dotted; border-top: #aaaaaa 1px dotted; padding-bottom: 7px; padding-left: 7px; padding-right: 7px; padding-top: 7px; vertical-align: top;"><span style="font-family: Arial; font-size: 15px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Performance Tests</span></td></tr>
<tr style="height: 0px;"> <td style="border-bottom: #aaaaaa 1px dotted; border-left: #aaaaaa 1px dotted; border-right: #aaaaaa 1px dotted; border-top: #aaaaaa 1px dotted; padding-bottom: 7px; padding-left: 7px; padding-right: 7px; padding-top: 7px; vertical-align: top;"><span style="font-family: Arial; font-size: 15px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">6 hours</span></td> <td style="border-bottom: #aaaaaa 1px dotted; border-left: #aaaaaa 1px dotted; border-right: #aaaaaa 1px dotted; border-top: #aaaaaa 1px dotted; padding-bottom: 7px; padding-left: 7px; padding-right: 7px; padding-top: 7px; vertical-align: top;"><span style="font-family: Arial; font-size: 15px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Nightly</span></td> <td style="border-bottom: #aaaaaa 1px dotted; border-left: #aaaaaa 1px dotted; border-right: #aaaaaa 1px dotted; border-top: #aaaaaa 1px dotted; padding-bottom: 7px; padding-left: 7px; padding-right: 7px; padding-top: 7px; vertical-align: top;"><span style="font-family: Arial; font-size: 15px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Build from Integration</span></td> <td style="border-bottom: #aaaaaa 1px dotted; border-left: #aaaaaa 1px dotted; border-right: #aaaaaa 1px dotted; border-top: #aaaaaa 1px dotted; padding-bottom: 7px; padding-left: 7px; padding-right: 7px; padding-top: 7px; vertical-align: top;"><span style="font-family: Arial; font-size: 15px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Integration Tests, System Tests, Unit Tests</span></td></tr>
<tr style="height: 0px;"> <td style="border-bottom: #aaaaaa 1px dotted; border-left: #aaaaaa 1px dotted; border-right: #aaaaaa 1px dotted; border-top: #aaaaaa 1px dotted; padding-bottom: 7px; padding-left: 7px; padding-right: 7px; padding-top: 7px; vertical-align: top;"><span style="font-family: Arial; font-size: 15px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">36 hours</span></td> <td style="border-bottom: #aaaaaa 1px dotted; border-left: #aaaaaa 1px dotted; border-right: #aaaaaa 1px dotted; border-top: #aaaaaa 1px dotted; padding-bottom: 7px; padding-left: 7px; padding-right: 7px; padding-top: 7px; vertical-align: top;"><span style="font-family: Arial; font-size: 15px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Weekly/Weekend</span></td> <td style="border-bottom: #aaaaaa 1px dotted; border-left: #aaaaaa 1px dotted; border-right: #aaaaaa 1px dotted; border-top: #aaaaaa 1px dotted; padding-bottom: 7px; padding-left: 7px; padding-right: 7px; padding-top: 7px; vertical-align: top;"><span style="font-family: Arial; font-size: 15px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Build from Nightly</span></td> <td style="border-bottom: #aaaaaa 1px dotted; border-left: #aaaaaa 1px dotted; border-right: #aaaaaa 1px dotted; border-top: #aaaaaa 1px dotted; padding-bottom: 7px; padding-left: 7px; padding-right: 7px; padding-top: 7px; vertical-align: top;"><span style="font-family: Arial; font-size: 15px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Full test suites. Performance</span></td></tr>
</tbody></table></div><b id="internal-source-marker_0.6405159991700202"><br />
<span style="font-family: Arial; font-size: 15px; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><br />
<span style="font-family: Arial; font-size: 15px; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">This of course is just an example of what could be. I think it is important to put a plan together on how the build progresses through the screens and in some cases the build is performance more than once on the same code base. Coordination between Validation and Development is key to making this work effectively.</span><br />
<span style="font-family: Arial; font-size: 15px; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Let me know what you think. Do you have any other good ideas on how to give development feedback quicker without sacrificing the quality of your product.</span><br />
<span style="font-family: Arial; font-size: 15px; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><br />
<span style="font-family: Arial; font-size: 15px; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">DWP</span></b></div>Darren Pulsipherhttp://www.blogger.com/profile/04546097789000371133noreply@blogger.com0tag:blogger.com,1999:blog-9107894188293530074.post-7439404566052523232012-01-23T11:06:00.000-08:002012-01-23T11:06:35.469-08:00Drag Co-efficient of Software Development<div><b id="internal-source-marker_0.04187739547342062"><div dir="ltr" style="margin-bottom: 0pt; margin-left: 36pt; margin-top: 0pt;"><span style="background-color: white; font-family: Verdana; font-size: 12px; font-style: italic; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">The drag coefficient is a number that aerodynamicists use to model all of the complex dependencies of shape, inclination, and flow conditions on aircraft drag. This equation is simply a rearrangement of the drag equation where we solve for the drag coefficient in terms of the other variables. The drag coefficient </span><span style="background-color: white; font-family: Verdana; font-size: 12px; font-style: italic; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Cd</span><span style="background-color: white; font-family: Verdana; font-size: 12px; font-style: italic; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> is equal to the drag </span><span style="background-color: white; font-family: Verdana; font-size: 12px; font-style: italic; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">D</span><span style="background-color: white; font-family: Verdana; font-size: 12px; font-style: italic; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> divided by the quantity: density </span><span style="background-color: white; font-family: Verdana; font-size: 12px; font-style: italic; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">r</span><span style="background-color: white; font-family: Verdana; font-size: 12px; font-style: italic; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> times half the velocity </span><span style="background-color: white; font-family: Verdana; font-size: 12px; font-style: italic; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">V</span><span style="background-color: white; font-family: Verdana; font-size: 12px; font-style: italic; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> squared times the reference area </span><span style="background-color: white; font-family: Verdana; font-size: 12px; font-style: italic; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">A</span><span style="background-color: white; font-family: Verdana; font-size: 12px; font-style: italic; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">. . . .</span></div><div dir="ltr" style="margin-bottom: 0pt; margin-left: 36pt; margin-top: 0pt;"><span style="background-color: white; font-family: Verdana; font-size: 12px; font-style: italic; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">This equation gives us a way to determine a value for the drag coefficient. In a controlled environment . . . we can set the velocity, density, and area and measure the drag produced. Through division we arrive at a value for the drag coefficient. . . . [T]he choice of reference area (wing area, frontal area, surface area, . . . ) will affect the actual numerical value of the drag coefficient that is calculated. When reporting drag coefficient values, it is important to specify the reference area that is used to determine the coefficient. We can predict the drag that will be produced under a different set of velocity, density (altitude), and area conditions using the drag equation.</span></div><span style="background-color: white; font-family: Verdana; font-size: 12px; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">—</span><span style="background-color: white; font-family: Verdana; font-size: 12px; font-style: italic; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">From the NASA Glenn Learning Technologies Project Web site,</span><span style="background-color: white; font-family: Verdana; font-size: 12px; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> </span><a href="http://www.grc.nasa.gov/WWW/K-12/airplane/dragco.html"><span style="background-color: white; color: #003399; font-family: Verdana; font-size: 12px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">http://www.grc.nasa.gov/WWW/K-12/airplane/dragco.html</span></a><span style="font-family: Arial; font-size: 15px; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><br />
<a href="http://www.grc.nasa.gov/WWW/K-12/airplane/dragco.html"><span style="background-color: white; color: #003399; font-family: Verdana; font-size: 12px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span></a><br />
<span style="background-color: white; font-family: Verdana; font-size: 12px; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">How do you reduce the “drag coefficient” in software development? Well, the best place to start is to determine what is slowing you down. Much like an Olympic swimmer training for a race, software teams need to find ways of reducing the amount of friction pushing against their momentum—what is affecting overall cycle time—by optimizing their performance. Professional swimmers are constantly tracking performance metrics, identifying food and exercise variables that may affect their strength and endurance. They may occasionally resort to shaving their bodies, wearing compression suits, and changing their strokes as ways of minimizing their own drag coefficient. It takes dedication to get through the barriers that come with Olympic swimmers.</span><br />
<span style="background-color: white; font-family: Verdana; font-size: 12px; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><br />
<span style="background-color: white; font-family: Verdana; font-size: 12px; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">The same is true in Software Development Productivity. As software development professionals we need to look at our own productivity as well as our group and organizations. Just like swimmers knowing how to measure improvement is the first step. Second is knowing where to look to find improvements in productivity. Third is being self-aware enough to see what you typically don’t see.</span><br />
<span style="font-family: Arial; font-size: 15px; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><br />
<span style="font-family: Arial; font-size: 15px; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">First, metrics to measure productivity. Of course there have been several studies that measure LOC(Lines of Codes) per day, Defects/LOC, Story points, burn down charts, velocity, etc.. The list is long and can be confusing. So I am not going to add to the confusion except to say what ever you pick be consistent. Gather the metrics in the same manner each time you measure. Add additional metrics as you need to. Remember that time should be part of what you measure. Lastly, watch for trends and correlate them to changes that you make in your processes or tools.</span><br />
<span style="font-family: Arial; font-size: 15px; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><br />
<span style="font-family: Arial; font-size: 15px; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Secondly, knowing where to look is a big deal. You can spend several weeks, months, or years looking at the wrong metrics, or focusing on something that doesn’t improve anything. My hints on this would be to look at the scope of where you are trying to optimize.</span><ol><li style="font-family: Arial; font-size: 15px; font-weight: normal; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Personal change - There are some good resources for looking at your own personal software development process. The one that appears to be most eye opening to my is the </span><a href="http://en.wikipedia.org/wiki/Personal_Software_Process"><span style="color: #000099; vertical-align: baseline; white-space: pre-wrap;">Personal Software Process</span></a><span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">. It helps you look at how much time you spend doing certain tasks for get work done, Designing, Coding, Debugging, Building, etc... When I went through the exercises I found I was highly dependant on my compiler to find trival typos and coding bugs instead of just taking an additional 30 seconds to look first. I suggest reading through the book and taking the exercises.</span></li>
<li style="font-family: Arial; font-size: 15px; font-weight: normal; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Team Change - Areas that you can look for team productivity improvements can start with the interactions that you have with the other individuals in your team. This includes, meetings, code reviews, build times, defects, sprint backlog, velocity of task work, Build/Debug/Fix/Build turn around times. The benefit of working inside your team to look for areas of improvement is your team is relatively focused on delivering the same component/library. You all want to succeed together and the problem is typically scoped to a small number of people.</span></li>
<li style="font-family: Arial; font-size: 15px; font-weight: normal; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Organizational Change - When I talk about organizational change I am specifically targeting multiple teams integrated together to deliver products to the market. In this case most of the performance improvement has to do with team interaction, component and responsibility ownership, and communication channel effciency. So looking things like Defect assignment, Stakeholder decomposition and assignments of tasks to component groups, Number of integration build failures, Number of defects per Integration build, etc... The key here is to focus on how to improve the coordination of the work across all of the individual teams and the integration of such work.</span></li>
</ol><span style="font-family: Arial; font-size: 15px; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Lastly, Is to be self aware. This is probably one of the hardest things that individuals, teams and organizations need to do to become truly effective. So let’s look at the swimming world to see if there is anything we can learn in the software world. Swimmers have used very complicated water tunnels to analyze their strokes. Although these have given some feedback, the most cost effective has been underwater video cameras. When swimmers can see how they look underwater they can make adjustments to their strokes and look at the effects those changes have on their times. Coaches can see and help swimmers but seeing it personally helps them understand what they are feeling in the water and what it looks like.</span><br />
<span style="font-family: Arial; font-size: 15px; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><br />
<span style="font-family: Arial; font-size: 15px; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">So how do we become more self aware developing software products. I don’t think setting up cameras in our cubes is going to help. But one method we might want to look at more is internal audits or assessments. If we look at this as ways to help us, instead of trying to just meet a criteria we can use the results to become more aware of our drag co-efficient. Even if we are doing a self audit like the PSP suggests. They all help us become better software engineers. </span><br />
<span style="font-family: Arial; font-size: 15px; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><br />
<span style="font-family: Arial; font-size: 15px; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Who knows maybe we should do like the swimmers do and shave our whole bodies and wear compression suits while we code. But I dont think that will decrease the number of bugs I produce per LOC. :)</span><br />
<span style="font-family: Arial; font-size: 15px; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><br />
<span style="font-family: Arial; font-size: 15px; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">DWP</span></b></div>Darren Pulsipherhttp://www.blogger.com/profile/04546097789000371133noreply@blogger.com0Folsom, CA, USA38.6779591 -121.1760583000000238.6367381 -121.23727180000002 38.7191801 -121.11484480000003tag:blogger.com,1999:blog-9107894188293530074.post-47218253444942193762012-01-20T14:51:00.001-08:002012-01-20T14:51:55.545-08:00Changing your organization with the Stomach Flu<div><b id="internal-source-marker_0.8145126118324697"><span style="font-family: Arial; font-size: 15px; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">The Christmas holiday is always a time to meet with family and friends. This year was no different for me and my family. I had 2 of my daughters come home from school, one toting a fiance, (A blog for another time). Late night games with the older kids, early morning games and movies with the little kids. I wish they would get on the same schedule. The second half of our Holiday was spent at my parent’s house in Southern California. We arrived late on a Monday and my sister and her 5 kids where staying with my parents for a couple day overlap with us. Imagine all of those kids and adults in one house. Lots of fun lots of games, great conversation, and the spread of the stomach flu. Isolation was out of the question. Too many people and too little space to control it. It traveled like wild fire. </span><br />
<span style="font-family: Arial; font-size: 15px; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><br />
<span style="font-family: Arial; font-size: 15px; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">It started early Tuesday morning with one of my sister’s kids. Zero sleep for her and her husband. It quickly infected two more of her kids. Before noon on Tuesday 5 people were worshiping at the porcelain throne. Thankfully none of my kids had gotten it. We had can of Lysol and anti-bacterial soap all over the place. We were fighting off this horrible unseen creature named </span><a href="http://www.cdc.gov/ncidod/dvrd/revb/gastro/faq.htm"><span style="color: #000099; font-family: Arial; font-size: 15px; font-style: italic; font-weight: normal; vertical-align: baseline; white-space: pre-wrap;">viral gastro enderitus</span></a><span style="font-family: Arial; font-size: 15px; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">. None of my kids got sick on Tuesday and Wednesday was looking good. Until about 3pm on Wednesday when my youngest a 5 year old boy named David told me he stomach was feeling funny. With in 30 seconds we had a mess to clean up and a very sick little boy. 45 minutes later the next victim my 6 year old son. By 9 o’clock that night 3 more kids had already fallen to this nasty virus. My wife and I were the clean up crew and knew it was just a matter of time. By Friday morning when we were heading back to Northern California everyone but myself and my oldest daughter had or were still being effected by the stomach flu.</span><br />
<span style="font-family: Arial; font-size: 15px; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><br />
<span style="font-family: Arial; font-size: 15px; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Of course the 500 mile 8 hour trip to Northern California took 11 hours because we had to stop several times. We were well equipped with throw up bags, ginger ale, and wet wipes, but we could only drive so far before we needed a break. In a very daring move my oldest who had not gotten sick taunted the virus when we stopped for lunch. She ordered the greasiest lunch she could find on the menu and said she wasn’t going to get sick. With in an hour on the road after lunch we had to pull over. It was like the virus heard her taunting and made her pay.</span><br />
<span style="font-family: Arial; font-size: 15px; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><br />
<span style="font-family: Arial; font-size: 15px; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">In the end this fast acting virus infected 30 people within a week including all of my kids, my sister and her kids and about 5 other families. So what does that have to do with anything about change in an organization? Let’s take a look.</span><br />
<span style="font-family: Arial; font-size: 15px; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><br />
<span style="font-family: Arial; font-size: 15px; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Many of the effective changes to culture or process in an organization happens organically. It is very much like a virus. It replicates and spreads quickly and without prejudice. So let’s look at some key aspects to this virus and how it might be mimicked in organizational change.</span><ol><li style="font-family: Arial; font-size: 15px; font-weight: normal; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><span style="font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">It must spread quickly</span><span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> - When you have a change you want to make to an organization make sure that you can get it to spread quickly. Sometimes if you phase in your change it never takes hold in the organization. You may need to break up a large change into smaller chunks that are more acceptable to the org. We don’t want to kill the org we want it to be stronger after the change. </span></li>
</ol><br />
<span style="font-family: Arial; font-size: 15px; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><br />
<div dir="ltr" style="margin-bottom: 0pt; margin-left: 36pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 15px; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Have a plan in place. If you have multiple locations make sure that the change spreads in all locations at the same time. Otherwise you can easily get push back from one location that had not been “infected” yet. Make sure you find out who is most likely to spread the change around the most. Just like the virus attacked the youngest in my family first. You know the ones that don’t wash their hands and touch everything. You need to find the people in your org that evangelize the changes and aren’t afraid to spread it around.</span></div><span style="font-family: Arial; font-size: 15px; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><ol start="2"><li style="font-family: Arial; font-size: 15px; font-weight: normal; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><span style="font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">It must overwhelm defences - </span><span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Find out who has the lysol and overwhelm them with the change. Everytime you have a change there will be people that will push against it. It is human nature to keep things the same. Change is hard for people and the longer something has been the same the harder it is to change. So find out who is subverting the change and bring them on board. Let them know that the change will benefit them in the long run. If that doesn’t work then you need to surround them with peers and friends that have already been infected. And last measure and least desireable is to mandate it from above. Work with their manager to help them understand the benefits of everyone getting on board. Again last resort is to do this. </span></li>
</ol><br />
<span style="font-family: Arial; font-size: 15px; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><br />
<div dir="ltr" style="margin-bottom: 0pt; margin-left: 36pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 15px; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Another way of overwhelming an organization with change ties into spreading it quickly. The fast the better. Hit them fast and hard. Make sure that you have your supporting documentation, evangelists, and marketing talking points ready for the change. If you are in the middle of the change and still trying to come up with this you are too late. You need to make sure that you disseminate the information as fast and as in depth as possible. you need to overwhelm the organization. They need to see that the change is inevitable.</span></div><span style="font-family: Arial; font-size: 15px; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><ol start="3"><li style="font-family: Arial; font-size: 15px; font-weight: normal; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><span style="font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Close proximity increases the spread - </span><span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">I am sure if I didn’t take my family down to my parents house we would not have gotten that flu. We had to be exposed to it. We had to shake hands, eat dinner together, have fun together. This is the same in your organization. You need to get personal with your organization. They need to know that you have the best interests of the organization first. You need face time with your team and the key players of the team both your evangelists and your taunters. </span></li>
</ol><br />
<span style="font-family: Arial; font-size: 15px; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><br />
<div dir="ltr" style="margin-bottom: 0pt; margin-left: 36pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 15px; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">If your organization is multiple geographies. Which in large organizations tends to always be the case. You need to make sure that you spend time in all of your locations and you need to get evangelists in all of your locations to help spread the change. You also need to identify the taunters and understand their concerns to help them overcome thier resistance to the change.</span></div><span style="font-family: Arial; font-size: 15px; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><ol start="4"><li style="font-family: Arial; font-size: 15px; font-weight: normal; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><span style="font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Infect the taunters - </span><span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">My daughter thought she had it beat. She tempted the virus and in the end the virus got her. You need to find out who in the organization will be or currently is most against the change. Identify and then use the overwhelm techniques described above. It is best to surround them with people they trust that have already accepted the change. Don’t leave this to chance. You need to work hard and see how the change is spreading and identify them quickly.</span></li>
</ol><br />
<span style="font-family: Arial; font-size: 15px; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><ol start="5"><li style="font-family: Arial; font-size: 15px; font-weight: normal; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><span style="font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Make it viral not bacterial - </span><span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Doctors have told me that if I have the virus it just needs to run its course, but a bacterial infection can be fought with antibiotics. So what are the antibiotics of organization change. One of the most effective is upper management. Make sure you have upper management support for the change. Make sure that they stand up for you when the taunters come to them and complain that they don’t want to change. If upper management won’t stand or waffles on the change then the change is at jeopardy of not infecting the whole organization and you get bifurcation of the org. This then starts the multi-camp yours and mine mentality that can destroy an organization.</span></li>
</ol><br />
<span style="font-family: Arial; font-size: 15px; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><br />
<div dir="ltr" style="margin-bottom: 0pt; margin-left: 36pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 15px; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Another aspect of viral infections is that the host cells are used to produce more virus. You need this to happen with your change as well. You evangelists are key to this. They need to recruit more people to push the change in the organization. </span></div><span style="font-family: Arial; font-size: 15px; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><br />
<div dir="ltr" style="margin-bottom: 0pt; margin-left: 36pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 15px; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Of course there are always those that will one to get their flu shot to prevent from getting the virus. Just like a virus your change needs to be able to mutate to infect the org. Good luck trying to figure that out. That is what makes you a great change agent.</span></div><span style="font-family: Arial; font-size: 15px; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><br />
<span style="font-family: Arial; font-size: 15px; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><br />
<span style="font-family: Arial; font-size: 15px; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Good luck infecting you organization with change. Remember if you don’t want to get the stomach flu yourself. stay away from people that have, wash your hands often and keep your hands away from you mouth. BTW, I was the only one in the house that didn’t get the virus. I think it was just dumb luck.</span><br />
<span style="font-family: Arial; font-size: 15px; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><br />
<span style="font-family: Arial; font-size: 15px; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">DWP</span></b></div>Darren Pulsipherhttp://www.blogger.com/profile/04546097789000371133noreply@blogger.com0tag:blogger.com,1999:blog-9107894188293530074.post-22280484215011430932012-01-13T09:38:00.001-08:002012-01-13T09:38:46.857-08:00How to peel a banana and build software<div><b id="internal-source-marker_0.2982050657738"><span style="font-family: Arial; font-size: 15px; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Did you know there is more than one way to peel a banana? I had no idea, but due to the internet and my 10 kids, I have now learned no less than 9 ways to peel a banana. Here they are: human, monkey, snap, throw, four split, upside down, thuimbnail, twist, break and peel, and slice and peel. Many of them are just adaptations of 4 of them and one of them uses a knife which with 10 kids in the house is something we actually frown on. Image little kids running around the kitchen with knives and bananas. Not a good sight. The techniques that we use the most: Human, Monkey, Snap and Throw.</span><br />
<span style="font-family: Arial; font-size: 15px; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><ol><li style="font-family: Arial; font-size: 15px; font-weight: normal; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Human - Most popular, Grab the top of the banana (the part with the stem), grab the banana with your left head and grab the stem with the right hand and peel the stem back. Simple and most people (humans) peel bananas this way.</span></li>
<li style="font-family: Arial; font-size: 15px; font-weight: normal; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Monkey - Best for ripe bananas and children under 5 or monkey as we call them sometimes. Grab the bottom of the banana with you thumb and index finger squeeze the bottom of the banana with your two fingers until the banana splits. Peel and eat.</span></li>
<li style="font-family: Arial; font-size: 15px; font-weight: normal; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Snap - Great if you have more kids than bananas. Hold the banana in both hands like holding the handle bars of a bike. Move you hands close together. Do not squeeze the banana too hard. Not rotate your hands in opposite directions The banana will snap in two. 5 bananas can feed 10 kids. Or tie them over for a short period of time. My 5 year old son loves doing this, it makes him feel like a He-Man.</span></li>
<li style="font-family: Arial; font-size: 15px; font-weight: normal; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Throw - Best for the beginning of a food fight. Use with caution. Grab the stem of the banana in your throwing hand. Hold on tight and make a throwing motion while holding on to the steam of the banana. This takes practice and lots of squished bananas. Sometimes if you don’t hold tight the banana flies across the room. At least that is what I have told my wife when bananas start flying.</span></li>
</ol><br />
<span style="font-family: Arial; font-size: 15px; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><br />
<span style="font-family: Arial; font-size: 15px; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Each one of the techniques has the same end result a peeled banana. Although the techniques are different, the results are the same. So why have so many different techniques or methods? I liked the Human the most, because that is what I grew up with. But the Snap and throw can be fun at times. What does that have to do with Build Systems? Just like bananas there are many of them and they all end up with the same results. Software that is executable.</span><br />
<span style="font-family: Arial; font-size: 15px; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><br />
<span style="font-family: Arial; font-size: 15px; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">So what is your favorite software build system. There are several techniques and methods. Why do you use the one you have right now? Have you looked at any other ones? Have you broadened your horizons? Or are you stuck with an old system that no one knows how it works and everyone is afraid to change it? I have been in the position myself. Any way here is a list of sites and tools to get you thinking about something different or maybe you will become more enamored with your current Build System. </span><br />
<span style="font-family: Arial; font-size: 15px; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><br />
<span style="font-family: Arial; font-size: 15px; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Build Systems can be broken down into different categories</span><ul><li style="font-family: Arial; font-size: 15px; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Build Scripting languages - Makefile, Ant, Maven, csh, bat</span></li>
<li style="font-family: Arial; font-size: 15px; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Integrated development environment builds - </span><a href="http://www.eclipse.org/"><span style="color: #000099; vertical-align: baseline; white-space: pre-wrap;">Eclipse</span></a><span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">, </span><a href="http://www.microsoft.com/visualstudio/en-us"><span style="color: #000099; vertical-align: baseline; white-space: pre-wrap;">Visual Studio</span></a><span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">, </span><a href="http://netbeans.org/"><span style="color: #000099; vertical-align: baseline; white-space: pre-wrap;">Netbeans</span></a><span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">, </span><a href="http://www.jetbrains.com/idea/"><span style="color: #000099; vertical-align: baseline; white-space: pre-wrap;">IntelliJ</span></a><span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">, </span></li>
<li style="font-family: Arial; font-size: 15px; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Automated script generators, </span><a href="http://www.gnu.org/software/automake/"><span style="color: #000099; vertical-align: baseline; white-space: pre-wrap;">GNU Automake</span></a><span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">, </span><a href="http://www.cmake.org/"><span style="color: #000099; vertical-align: baseline; white-space: pre-wrap;">CMake</span></a><span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">, </span><a href="http://developer.qt.nokia.com/doc/qt-4.8/qmake-manual.html"><span style="color: #000099; vertical-align: baseline; white-space: pre-wrap;">qmake</span></a><span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">, </span><a href="http://en.wikipedia.org/wiki/Nmake#Modern_versions"><span style="color: #000099; vertical-align: baseline; white-space: pre-wrap;">nmake</span></a><span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span></li>
<li style="font-family: Arial; font-size: 15px; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Continuous integration build systems, </span><a href="http://jenkins-ci.org/"><span style="color: #000099; vertical-align: baseline; white-space: pre-wrap;">Jenkins</span></a><span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">, </span><a href="http://www-01.ibm.com/software/awdtools/buildforge/enterprise/"><span style="color: #000099; vertical-align: baseline; white-space: pre-wrap;">BuildForge</span></a><span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">, </span><a href="http://www.atlassian.com/software/bamboo/overview"><span style="color: #000099; vertical-align: baseline; white-space: pre-wrap;">Bamboo</span></a><span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">, </span><a href="http://cruisecontrol.sourceforge.net/"><span style="color: #000099; vertical-align: baseline; white-space: pre-wrap;">CruiseControl</span></a><span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">,</span><a href="http://www.electric-cloud.com/products/electriccommander.php"><span style="color: #000099; vertical-align: baseline; white-space: pre-wrap;">ElecticCommander</span></a><span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">, etc... </span><a href="http://en.wikipedia.org/wiki/Comparison_of_continuous_integration_software"><span style="color: #000099; vertical-align: baseline; white-space: pre-wrap;">Click here for an complete list</span></a><span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span></li>
<li style="font-family: Arial; font-size: 15px; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Release Management systems - </span><a href="http://maven.apache.org/"><span style="color: #000099; vertical-align: baseline; white-space: pre-wrap;">Maven</span></a><span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">, </span><a href="http://www-01.ibm.com/software/awdtools/clearcase/"><span style="color: #000099; vertical-align: baseline; white-space: pre-wrap;">ClearCase</span></a><span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">, </span><a href="http://www.perforce.com/"><span style="color: #000099; vertical-align: baseline; white-space: pre-wrap;">Perforce</span></a><span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">, </span><a href="https://jazz.net/library/article/194"><span style="color: #000099; vertical-align: baseline; white-space: pre-wrap;">Jazz SCM</span></a><span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">, </span><a href="http://git-scm.com/"><span style="color: #000099; vertical-align: baseline; white-space: pre-wrap;">Git</span></a><span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span></li>
<li style="font-family: Arial; font-size: 15px; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Build Avoidance systems - ClearMake, </span><a href="http://maven.apache.org/"><span style="color: #000099; vertical-align: baseline; white-space: pre-wrap;">Maven</span></a><span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">, Ant, </span><a href="http://www.openmakesoftware.com/meister-build-management-benefits-java-developers/"><span style="color: #000099; vertical-align: baseline; white-space: pre-wrap;">Meister</span></a><span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span></li>
</ul><br />
<span style="font-family: Arial; font-size: 15px; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Other areas that tend to be grouped into the build systems because of the automations are:</span><ul><li style="font-family: Arial; font-size: 15px; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">unit level testing and - </span><a href="http://en.wikipedia.org/wiki/List_of_unit_testing_frameworks"><span style="color: #000099; vertical-align: baseline; white-space: pre-wrap;">List is too long check out this site</span></a><span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span></li>
<li style="font-family: Arial; font-size: 15px; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">automated software configuration management systems - Perforce, RTC, ClearCase UCM, etc...</span></li>
</ul><br />
<span style="font-family: Arial; font-size: 15px; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><br />
<span style="font-family: Arial; font-size: 15px; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">I hope you have broadened your horizons a little and see that there is so much more out there that can be leveraged to make your software development experience more productive. And maybe have fun peeling bananas.</span><br />
<span style="font-family: Arial; font-size: 15px; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><br />
<span style="font-family: Arial; font-size: 15px; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">DWP</span></b></div>Darren Pulsipherhttp://www.blogger.com/profile/04546097789000371133noreply@blogger.com1tag:blogger.com,1999:blog-9107894188293530074.post-14078622111251362452011-11-15T21:30:00.000-08:002011-11-15T21:30:57.974-08:00Truncated Domes, Code Reviews and Things that slow us down<div id="header" style="background-attachment: initial; background-clip: initial; background-color: #f0f0f0; background-image: initial; background-origin: initial; border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; font-family: Arial; font-size: 15px; padding-bottom: 10px; padding-left: 10px; padding-right: 10px; padding-top: 10px;">Truncated Domes, Code Reviews and Things that Slow Us Down</div><div id="contents" style="font-family: Arial; font-size: 15px; margin-bottom: 6px; margin-left: 6px; margin-right: 6px; margin-top: 6px;"><div class="c7" style="clear: left; direction: ltr; float: left; margin-bottom: 1em; margin-right: 1em; text-indent: 36pt;"><a href="https://docs.google.com/a/pulsipher.org/document/pubimage?id=13zNSEV7FZQvqZMojV-JlJ-cTo0CtRjJApLgF_vrw9mE&image_id=1gxvQ9Pb_Wv34rASTa3jXmlLjS2nV2H0" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="200" src="https://docs.google.com/a/pulsipher.org/document/pubimage?id=13zNSEV7FZQvqZMojV-JlJ-cTo0CtRjJApLgF_vrw9mE&image_id=1gxvQ9Pb_Wv34rASTa3jXmlLjS2nV2H0" width="131" /></a>I was recently at Target buying bedding for my family of 10 kids. Imagine a cart overflowing with pillows, blankets, sheets. The balancing act that it took me to put this all in the cart and get through check-out. As I come out of the store I can see my car three rows over and 5 cars down. I know I can do this. I just have to be careful and go slow and everything will make it in the cart to the car. Just for a second I take my eye off the sidewalk infront of me and boom! I hit those crazy yellow things in the sidewalk. You know what I am talking about the yellow bumps that are there to shake all of the stuff out of your cart. It is like someone does not want people to over stuff their carts. The bumps are there to shake everything loose out. Needless to say I spent the next 10 car.</div><div class="c7 c8" style="direction: ltr; height: 11pt; text-indent: 36pt;"></div><div class="c7 c8" style="direction: ltr; height: 11pt; text-indent: 36pt;"></div><div class="c7" style="direction: ltr; text-indent: 36pt;">Being an engineer of course I had to find out why in the world we have “Truncated Domes” in the front of stores at work, etc.. My first thought was someone slipped and fell. Then got a lawyer and sued everyone. Then companies afraid of being sued for millions put in the “Truncated Domes” so other people would not slip. Then I started getting mad at all of those lawyers that have caused my stuff to fall out of my cart. I had to look into this more.</div><div class="c7" style="direction: ltr; text-indent: 36pt;"><a href="https://docs.google.com/a/pulsipher.org/document/pubimage?id=13zNSEV7FZQvqZMojV-JlJ-cTo0CtRjJApLgF_vrw9mE&image_id=1aajo-5ZqGe5WCkuTQKx7D1nsDKr0GdQ" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" height="150" src="https://docs.google.com/a/pulsipher.org/document/pubimage?id=13zNSEV7FZQvqZMojV-JlJ-cTo0CtRjJApLgF_vrw9mE&image_id=1aajo-5ZqGe5WCkuTQKx7D1nsDKr0GdQ" width="106" /></a>Additional research found that truncated domes are a type of detectable warning areas as described in the <span class="c0" style="background-color: white; font-family: Tahoma;">Americans with Disabilities Act Accessibility Guidelines. Basically these yellow bumps help blind people know where the sidewalk ends and the street or parking lot begins. Many different types of detectable warning area techniques have been tried but the truncated domes have been found the most effective and the only type approved by the ADAAG. So I cannot get mad anymore. It helps blind people not walk into the street or busy parking lot. If I get mad at that then I would be unreasonable and very politically incorrect.</span></div><div class="c7" style="direction: ltr; text-indent: 36pt;"><span class="c0" style="background-color: white; font-family: Tahoma;">So what does that have to do with Software or Firmware engineering? I guess not much on the surface, but I did gain an appreciation for not taking things as they appear. Over the years I have found that some that one of the BKMs (Best Known Methods) to increase quality in software development is Code Reviews. One of the first reactions when Code Reviews are introduced to team is similar to my reaction to “Truncated Domes”. I hated them. Didn’t understand why they were there and knew they slowed me down. So to help people understand some of the benefits I have searched and compiled a quick list of benefits.</span></div><div class="c7 c8" style="direction: ltr; height: 11pt; text-indent: 36pt;"><span class="c0" style="background-color: white; font-family: Tahoma;"></span></div><ol class="c11" start="1" style="list-style-type: circle; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"><li class="c3" style="direction: ltr; margin-left: 72pt; padding-left: 0pt;"><span class="c0" style="background-color: white; font-family: Tahoma;">Sharing Experience and Knowledge - People come up to speed on new code faster when reviewing code of others. Teams talk about the code and tribal knowledge is built up.</span></li>
<li class="c3" style="direction: ltr; margin-left: 72pt; padding-left: 0pt;"><span class="c0" style="background-color: white; font-family: Tahoma;">Improved Code Quality - As people learn from each other they improve their own code. They want to make sure their code is higher quality when showing it to their peers.</span></li>
<li class="c3" style="direction: ltr; margin-left: 72pt; padding-left: 0pt;"><span class="c0" style="background-color: white; font-family: Tahoma;">Finding Bugs - As code reviews start at first bugs are found easier than after code review have been going on for a while. But it is much cheaper to find the bugs in code review than in validation or worse in the field.</span></li>
<li class="c3" style="direction: ltr; margin-left: 72pt; padding-left: 0pt;"><span class="c0" style="background-color: white; font-family: Tahoma;">Decrease Trucking Factor - As more people know and understand the code the team decreases the risk of losing domain knowledge due to illness, team moves, resignations or trucks hitting someone crossing the road.</span></li>
<li class="c3" style="direction: ltr; margin-left: 72pt; padding-left: 0pt;"><span class="c0" style="background-color: white; font-family: Tahoma;">Coding Standards - Coding standards are typically written down and new people spend hours reading documents that are difficult to understand. Code Reviews can bring people up to speed faster than sitting and reading coding standards.</span></li>
<li class="c3" style="direction: ltr; margin-left: 72pt; padding-left: 0pt;"><span class="c0" style="background-color: white; font-family: Tahoma;">Increased collaboration - Sometimes engineers need to be forced to be social and talk to each other. Code Reviews get engineers to talk with each other and share information.</span></li>
</ol><div class="c5" style="direction: ltr; height: 11pt; margin-left: 36pt;"><span class="c0" style="background-color: white; font-family: Tahoma;"></span></div><div class="c7" style="direction: ltr; text-indent: 36pt;"><span class="c0" style="background-color: white; font-family: Tahoma;">Next time you are being feed a new process or tool you should ask yourself why was the tool chosen, what is the purpose behind it, and sometimes just trusting in the people making the decision. Next time I will talk about some of the tools that help in code reviews.</span></div><div class="c7 c8" style="direction: ltr; height: 11pt; text-indent: 36pt;"><span class="c0" style="background-color: white; font-family: Tahoma;"></span></div><div class="c7" style="direction: ltr; text-indent: 36pt;"><span class="c0" style="background-color: white; font-family: Tahoma;">Helpful Links</span></div><div class="c8 c10" style="direction: ltr; height: 11pt;"></div><ol class="c9" start="1" style="list-style-type: disc; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"><li class="c6" style="direction: ltr; margin-left: 36pt; padding-left: 0pt;"><span class="c2" style="color: #000099; text-decoration: underline;"><a class="c1" href="http://www.gamasutra.com/view/news/37241/" style="text-decoration: inherit;">http://www.gamasutra.com/view/news/37241/</a></span> - Benefits of Code Review</li>
<li class="c6" style="direction: ltr; margin-left: 36pt; padding-left: 0pt;"><span class="c2" style="color: #000099; text-decoration: underline;"><a class="c1" href="http://productdevelop.blogspot.com/2007/10/benefits-of-code-review.html" style="text-decoration: inherit;">http://productdevelop.blogspot.com/2007/10/benefits-of-code-review.html</a></span> - Benefits of a Code Review</li>
<li class="c6" style="direction: ltr; margin-left: 36pt; padding-left: 0pt;"><span class="c2" style="color: #000099; text-decoration: underline;"><a class="c1" href="http://www.zdnetasia.com/behold-the-benefits-of-code-reviewing-39172660.htm" style="text-decoration: inherit;">http://www.zdnetasia.com/behold-the-benefits-of-code-reviewing-39172660.htm</a></span> - Behold the benefits of code reviewing</li>
<li class="c6" style="direction: ltr; margin-left: 36pt; padding-left: 0pt;"><span class="c2" style="color: #000099; text-decoration: underline;"><a class="c1" href="http://ostatic.com/blog/open-source-code-review-tools" style="text-decoration: inherit;">http://ostatic.com/blog/open-source-code-review-tools</a></span> - Open Source Code Review Tools</li>
</ol></div><div id="footer" style="background-attachment: initial; background-clip: initial; background-color: #f0f0f0; 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; font-family: Arial; font-size: 13px; padding-bottom: 10px; padding-left: 10px; padding-right: 10px; padding-top: 10px;">Published by <a href="https://docs.google.com/a/pulsipher.org/" target="_blank" title="Learn more about Google Docs">Google Docs</a><span class="dash" style="padding-bottom: 0px; padding-left: 6px; padding-right: 6px; padding-top: 0px;">–</span><a href="https://docs.google.com/a/pulsipher.org/abuse?id=13zNSEV7FZQvqZMojV-JlJ-cTo0CtRjJApLgF_vrw9mE">Report Abuse</a><span class="dash" style="padding-bottom: 0px; padding-left: 6px; padding-right: 6px; padding-top: 0px;">–</span>Updated automatically every 5 minutes</div>Darren Pulsipherhttp://www.blogger.com/profile/04546097789000371133noreply@blogger.com0tag:blogger.com,1999:blog-9107894188293530074.post-64995251681811935502011-10-27T12:35:00.001-07:002011-10-27T12:35:50.230-07:00A Case for Software Coding StandardsI have had the unique opportunity of co-authoring three books. Each book was very unique in the way that it was published. As you would expect, by the time the third book was published, it was much easier than the first. However, you might be surprised why that was the case. Let’s take a look at what happened.<br />
In 1999 I began co-authoring magazine articles for Rose Architect, a small magazine that talked about all things Rational Rose. This quickly grew into writing for several different trade magazines and publications. The main topic of the articles focused on software development tools and processes. After about 50 articles, my friend and co-writer, Christian Buckley and I decided we should put these together in a book. What an endeavor!<br />
Our first decision was to self-publish the book. We found a printer, designed the cover, decided the size of the book. ( There is no standard size for technical books. They are all different sizes.) We gathered all of the articles together, categorized them and divided them into chapters. Next, we wrote introductions and conclusions for the chapters, transition paragraphs, a preface, a conclusion chapter and even rewrote some of the articles.<br />
We had all of the content, text, graphics, bibliography, everything we needed for a book. We then spent the next 4-5 months working on the format so it was consistant and would fit on the size book that we wanted. We spent more time formatting and moving graphics, so they fit on the same page as the text, than we spent writing the content for the book. Our grand masterpiece finally went to the printer and we had the book in hand. Secrets of the Change Agent: Strategies for Software Development was born and we were the proud parents. Of course you can buy our book on Amazon. (Shameless plug)<br />
Although the book did not make us the JK Rowlings of software engineering geeks, it did land us a book deal with a real publisher, Addison-Wesley. They wanted us to re-write our book to focus on Rational ClearCase Deployments. More specifically, how to use a system engineering approach to deploying ClearCase environments. This was the beginning of our next book: The Art of ClearCase® Deployment: The Secrets to Successful Implementation. <br />
Now that we had a real publisher, we had to fit our writing style into their templates so their printer could automatically take the book and print it in their standard sizes, standard fonts, and font sizes. It took us sometime to learn the new template format and since much of our content was written in a different format, it had to be converted. Looking back we probably spent about 1/3 of our time formatting this book into this well defined standard from the publisher.<br />
Within months of our book hitting stores, Addison-Wesley commissioned us to write a third book. This time on another tool from IBM-Rational. The tool was ClearQuest. There wasn’t a book out there yet on the tool and they liked the perspective we used in our other books. I had used the tool before, but was not an expert. By the end of writing the book, I would be.<br />
We wrote the book from scratch. Nothing had been written before hand. We started with the template that Addison-Wesley gave us and started writing. Something amazed me this time. I spent no time at all worrying about formatting. I was already familiar with the writing standard and template they gave me. It was like second nature writing in that template. I focused all of my time on writing content for the book and making sure I understood the tool well enough to write about it. The book only took us six months from the first time we started writing to the time we were at the printers, three months shorter than the previous book. Our book: Implementing IBM® Rational® ClearQuest®: An End-to-End Deployment Guide is still considered the definitive guide to deploying Rational ClearQuest.<br />
So what does this have to do with anything? I found it interesting that the final product was the same, a book. But the effort and time I spent on the actual content of the book compared to the formatting and style of the book overtime decreased and the quality of the book increased. My focus in the last book was the content. All of my creative energy was spent on the things that mattered, the content not the format, font size or color of the book.<br />
I have found in my career when there is a well defined coding standard, development process, and tool chain, software engineers produce higher quality code in a more predictable manner. Their creative energy is focused on delivering the product not on the process of delivering the product. When teams have an ad-hoc coding standard, process and tools, the engineers tend to spend valuable time figuring out trivial things like: where to indent their code or what tool to use to share their code with their team. <br />
Just my random thoughts.<br />
DWPDarren Pulsipherhttp://www.blogger.com/profile/04546097789000371133noreply@blogger.com0tag:blogger.com,1999:blog-9107894188293530074.post-43314598835399577222011-10-26T11:10:00.000-07:002011-10-26T14:22:46.979-07:00An Argument for Software Coding Standards<iframe src="https://docs.google.com/document/pub?id=1PH8YvAV2NatxRBhLtlOOaF_kmRRxa4WxHCIIyDs30Og&" width="100%" height-"800px"></iframe>Darren Pulsipherhttp://www.blogger.com/profile/04546097789000371133noreply@blogger.com0tag:blogger.com,1999:blog-9107894188293530074.post-50004634289792332072011-10-24T18:02:00.000-07:002011-10-24T18:02:28.500-07:00Modern Day Carpetbaggers in BusinessOver the years I have managed several teams all over the world. Dealt with different cultures, customs, timezones, and languages. Anytime I was dropped into a new role to replace someone that was there before, I was seen as an outsider, a newcomer, someone placed into a spot that no one really wanted.<br />
When I was thinking about what to name this blog I thought of my history teacher in high school when we talked about the civil war. When the north (upper management) placed people from the north to run the southern states governments (Middle Managers). This people were nicknamed Carpetbaggers. Because of the luggage they brought with them on their assignments. Wikipedia has a great article about the history and today's use of the term. <a href="http://en.wikipedia.org/wiki/Carpetbagger">Wikipedia: Carpetbagger</a>.<br />
<br />
When I think about how most middle managers are accepted into their new roles the term carpetbagger seems to fit really well. Everyone is looking for you to fail, suspicious of your motives, and do not trust the decisions you make. This can be a hard, but rewarding job. I am hoping that my ideas can spark a conversation about how to effectively step into these new roles and be effective as soon as possible.<br />
<br />
This should be an interesting journey as I go back in time and look at all of the opportunities I have had to manage from the outside of a group and become a middle manager carpetbagger.Darren Pulsipherhttp://www.blogger.com/profile/04546097789000371133noreply@blogger.com0