<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3109386887529685808</id><updated>2024-10-02T05:13:11.494-04:00</updated><category term="agile"/><category term="Systems monitoring"/><category term="application support"/><category term="microsoft"/><category term="oracle"/><category term="organizational behavior"/><category term="recurring patterns"/><category term="systems performance"/><category term="CPU profile of scalable applications"/><category term="ETA bait"/><category term="IT 101"/><category term="IT effectiveness"/><category term="IT execution"/><category term="IT failures"/><category term="IT job specialization"/><category term="IT people"/><category term="IT support"/><category term="IT support maturity model"/><category term="IT top talent"/><category term="Performance engineering"/><category term="Software 101"/><category term="XP"/><category term="adsl"/><category term="analyze table"/><category term="asynchronous"/><category term="barely sufficient"/><category term="bea"/><category term="broadband boost"/><category term="change"/><category term="change management"/><category term="colocation"/><category term="common IT problems"/><category term="computer associates"/><category term="content control is king"/><category term="cpu profile"/><category term="creeping elegance"/><category term="crisis bridge protocol"/><category term="crisis management"/><category term="dark arts"/><category term="database maintenance"/><category term="debugging in live"/><category term="default config"/><category term="delivery hubs"/><category term="dsl speed problems"/><category term="enterprise common components"/><category term="enterprise support"/><category term="global warming"/><category term="historical performance reporting"/><category term="i&#39;ve fallen and I can&#39;t get up"/><category term="iis server"/><category term="infrastructure  configuration"/><category term="layered distributed systems"/><category term="lessons learned"/><category term="maxconnections"/><category term="performance tuning"/><category term="pitfalls in outage situations"/><category term="proactive"/><category term="project execution"/><category term="reactive"/><category term="reuse"/><category term="risk managemement"/><category term="scope creep"/><category term="search engine optimization"/><category term="sequential analysis"/><category term="sequential execution"/><category term="service  management"/><category term="siteminder"/><category term="software complexity"/><category term="software quality"/><category term="software reuse"/><category term="synchronous"/><category term="systems availability"/><category term="systems effectiveness"/><category term="systems integration"/><category term="telecom"/><category term="top talent recruiting"/><category term="transaction performance"/><category term="transaction variance"/><category term="trial and error"/><category term="web services performance"/><category term="wikipedia"/><category term="windows server 2003"/><title type='text'>knownbugs</title><subtitle type='html'>Ever gone through the experience of staying up a couple of nights to resolve a crisis situation due to a problem that was &#39;known&#39; ?! Doesn&#39;t feel good does it, yet we keep on making the same mistake. An open discussion on best practices in the area of IT systems management, quality, prevention of crisis, etc.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://www.knownbugs.org/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3109386887529685808/posts/default'/><link rel='alternate' type='text/html' href='http://www.knownbugs.org/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/3109386887529685808/posts/default?start-index=26&amp;max-results=25'/><author><name>Milan Gupta</name><uri>http://www.blogger.com/profile/13287099462062649030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>30</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3109386887529685808.post-1061735588163840187</id><published>2020-03-20T00:08:00.001-04:00</published><updated>2020-03-20T00:09:45.714-04:00</updated><title type='text'>Production Support</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCjLYZcbLUksVZnuOAKKmCHLIz0cj37g1PKMDvOgsbxu33kwaBkLacBeMpAaf1uUYhPnWiB-oPVW4B6P2vbFlOra1LvCi_hyphenhyphensAE2R1BpYNMyHz6mbG5_bZjb4cAyvmMCkaos85zA6XXAo/s1600/prodsupport.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;616&quot; data-original-width=&quot;818&quot; height=&quot;300&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCjLYZcbLUksVZnuOAKKmCHLIz0cj37g1PKMDvOgsbxu33kwaBkLacBeMpAaf1uUYhPnWiB-oPVW4B6P2vbFlOra1LvCi_hyphenhyphensAE2R1BpYNMyHz6mbG5_bZjb4cAyvmMCkaos85zA6XXAo/s400/prodsupport.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
I have seen my share of IT processes across a number of companies over the past 25 years. The ones around production support have always been the most interesting, specifically, in situations where teams/organizations get themselves into trouble and then spend their life on crisis/bridge calls trying to get themselves out of it. A lot can be learned about the culture of a company going through one of these ..&lt;br /&gt;
&lt;br /&gt;
Whilst the basics of best-practices around IT production support have been enshrined in standards such as ITIL, just following a book/rules has never been a recipe for extra-ordinary.&lt;br /&gt;
&lt;br /&gt;
One specific dynamic I have often debated in my mind is around the &quot;segregation of duties&quot;. I remember my time in the early 90s where it became a bad thing suddenly for us developers to have access to production. Heaven forbid, we would make changes in production on the fly .. this was true in IT telecom (i.e. at least until telecom became IT), primarily driven via the discipline of managing mission critical networks and related lifeline services. I did have a certain respect for this, especially given the hard-coded culture of service availability in telecom companies.&lt;br /&gt;
&lt;br /&gt;
Of course, in the finance industry, I found that even data-center sysadmins were not trusted with privileged access to the very servers they were meant to administer. Also two-eyes-four-eyes .. something we can thank the banking sector for.&lt;br /&gt;
&lt;br /&gt;
To my point and the picture above. I have tried to capture what I see is an often misunderstood and consequently dysfunctional state of affairs within an IT organization. I define &quot;commando&quot; as the behaviors where folks make changes to production without any due diligence or testing etc. I define &quot;process driven&quot; as everything by the book and in the extreme case, overly constraining and time consuming (without adding any value).&lt;br /&gt;
&lt;br /&gt;
On the other axis, I define &quot;trial &amp;amp; error&quot; as the mode of analysis/resolution that teams resort to when they lack the technical knowledge/understanding/skills of what they are supporting. This can be methodical and process driven and will ultimately yield a result (however, on speed, you need to be lucky). NB&amp;gt; I don&#39;t classify the &quot;bounce the servers&quot; solution as necessarily &quot;trial &amp;amp; error&quot; as it is an effective step in cutting your losses on troubleshooting when you have SLAs. I define &quot;knowledge/skills&quot; based as state where the highest technical skills (typically the original developers/engineers) are applied and engaged on problem solving. NB&amp;gt; This is NOT a line that defines Tier2 application support vs Tier3.&lt;br /&gt;
&lt;br /&gt;
On target zones, it really depends on the business impact. Typically, however, in most companies, it is a one-size fits all approach. Companies have a hard enough time getting consistency in their performance.&lt;br /&gt;
&lt;br /&gt;
Break-glass is an interesting one and typically is meant as a safety or &quot;panic&quot; button, when normal process doesn&#39;t work or speed is required. This allows for the developers to take control and break the &quot;segregation of duties&quot; barriers.&lt;br /&gt;
&lt;br /&gt;
Questions to ask when you assess where you are on the chart :&lt;br /&gt;
1. when in a crisis, are your smartest/highest skilled people engaged (and accountable) ?&lt;br /&gt;
2. do they have access when needed (and the tools) ?&lt;br /&gt;
3. are they allowed to lead or are they muted by process ?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://www.knownbugs.org/feeds/1061735588163840187/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/3109386887529685808/1061735588163840187' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3109386887529685808/posts/default/1061735588163840187'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3109386887529685808/posts/default/1061735588163840187'/><link rel='alternate' type='text/html' href='http://www.knownbugs.org/2020/03/production-support.html' title='Production Support'/><author><name>Milan Gupta</name><uri>http://www.blogger.com/profile/13287099462062649030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCjLYZcbLUksVZnuOAKKmCHLIz0cj37g1PKMDvOgsbxu33kwaBkLacBeMpAaf1uUYhPnWiB-oPVW4B6P2vbFlOra1LvCi_hyphenhyphensAE2R1BpYNMyHz6mbG5_bZjb4cAyvmMCkaos85zA6XXAo/s72-c/prodsupport.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3109386887529685808.post-1583590544819939383</id><published>2020-03-12T21:12:00.002-04:00</published><updated>2020-03-13T00:27:34.951-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="risk managemement"/><title type='text'></title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
I am always amazed when I find IT teams with this behavior :&lt;br /&gt;
1. Business requires something urgently from IT&lt;br /&gt;
2. IT assesses the change&lt;br /&gt;
3. IT then designs and solutions the change&lt;br /&gt;
4. IT then risk assesses the change as &quot;high risk&quot;&lt;br /&gt;
5. IT then presents the solution with a &quot;high risk&quot; profile to the business pretty much scaring the pants off everyone.&lt;br /&gt;
6. Business then backs off the ask&lt;br /&gt;
7. End = do nothing. IT feels happy they made a good &quot;risk&quot; based decision&lt;br /&gt;
&lt;br /&gt;
Bright futures in such companies ..&amp;nbsp;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://www.knownbugs.org/feeds/1583590544819939383/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/3109386887529685808/1583590544819939383' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3109386887529685808/posts/default/1583590544819939383'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3109386887529685808/posts/default/1583590544819939383'/><link rel='alternate' type='text/html' href='http://www.knownbugs.org/2020/03/i-am-always-amazed-when-i-find-it-teams.html' title=''/><author><name>Milan Gupta</name><uri>http://www.blogger.com/profile/13287099462062649030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3109386887529685808.post-6694861871854223408</id><published>2010-01-28T06:11:00.003-05:00</published><updated>2010-01-28T06:54:36.608-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="agile"/><category scheme="http://www.blogger.com/atom/ns#" term="barely sufficient"/><category scheme="http://www.blogger.com/atom/ns#" term="creeping elegance"/><category scheme="http://www.blogger.com/atom/ns#" term="scope creep"/><title type='text'>barely sufficient</title><content type='html'>I observed a very talented engineering team making a basic mistake today.&lt;br /&gt;&lt;br /&gt;I think we often mis-interpret what &#39;barely sufficient&#39; means in the context of agile software development and delivery. It is mistakenly interpreted as an excuse to cut down requirements. In reality, I believe it really applies more to engineering and design than to requirements. There are two different syndromes to be careful of in a software project - &#39;scope creep&#39; and &#39;creeping elegance&#39;.&lt;br /&gt;&lt;br /&gt;In an agile methodology, we iterate through cycles of &#39;design a little&#39;, &#39;code a little&#39;, &#39;test a little&#39;. We embarq on writing software often without fully understanding the problem. I am a big fan of this vs up front. Personally, I pretty much think on the keyboard as I believe, people learn incrementally. That said, I am aware always that there is a risk in this mode until I have a full grasp of the problem. My energy is always directed towards activities or areas that help me flesh out unknowns. Whilst in this mode, I &#39;hack&#39; for speed and refactor only after I think I have my arms around the business problem.&lt;br /&gt;&lt;br /&gt;What I found the team doing was laying the &#39;foundation&#39; down aka building middleware.  That by itself wasnt a problem, however, they had taken their eyes of the business problem and failed to deliver the results in the needed timeframe.&lt;br /&gt;&lt;br /&gt;Programming competitions are a great way to teach developers this mindset. You have a fixed duration so you have to be quick. You have to focus on the problem and only the problem .. no deviating onto bunny trails. You have to solve the problem in the simplest quickest way. As engineers, we love complexity so, the last discipline is the hardest.</content><link rel='replies' type='application/atom+xml' href='http://www.knownbugs.org/feeds/6694861871854223408/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/3109386887529685808/6694861871854223408' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3109386887529685808/posts/default/6694861871854223408'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3109386887529685808/posts/default/6694861871854223408'/><link rel='alternate' type='text/html' href='http://www.knownbugs.org/2010/01/barely-sufficient.html' title='barely sufficient'/><author><name>Milan Gupta</name><uri>http://www.blogger.com/profile/13287099462062649030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3109386887529685808.post-9184118135842082993</id><published>2009-06-04T13:04:00.002-04:00</published><updated>2009-06-04T13:09:05.173-04:00</updated><title type='text'>Service granularity and re-use</title><content type='html'>&lt;div&gt;Architects in the IT organisation where I work display an interesting tendency to equate re-usabilty with granularity.  The received wisdom seems to be that the more granular a service is, the more re-useable it is.  To a certain extent it is useful to have the ability to mix and match just the bits of functionality you require.  This becomes detrimental at the point where it starts to push behaviour to toward the consuming systems, of which there are usually more than one.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;As a case in point, a new system is being written, which (among other things) exposes the ability to lookup items in a cache.  It employs a side-caching strategy to do this.  It&#39;s API looks something like this:&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;MyItemCache&lt;/div&gt;&lt;div&gt;    findItem(itemId : String) : Item&lt;/div&gt;&lt;div&gt;    createItem(item : Item)&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;Consumers of this service will call findItem() to check for the item in the cache, using the Item if it is there.  If the Item is not there, they are expected to fetch the Item from the source system - which is a different system entirely - and then add it to the cache, using createItem().&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;There are a number of issues with this approach.&lt;/div&gt;&lt;div&gt;* The fact that the cache is a side cache (and therefore does not front the source system) means that consumers of this cache must also have knowledge of the source system - making the overall architecture more complicated and brittle.&lt;/div&gt;&lt;div&gt;* Each consuming system is expected to implement over again the logic required to check in the cache, then fetch and add the Item if it is not already cached.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;While this last point may seem like a small amount of code to write, it should be remembered that forcing each client system to re-implement this logic means that the difficultly of changing this logic is multiplied by the number of client systems, with all the associated co-ordination of teams that this involves.  Add to that the impact that differing or buggy implementations might add to the mix and you have a problem far more damaging that the cost of a few lines of code.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;An alternative approach, which would eliminate both of these problems, would be to make the cache a through-cache, with the cache itself handling the &quot;if not cached: fetch from source&quot; behaviour. Having eliminated the need to manually add things to the cache, the service interface is simplified, as follows:&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;MyService&lt;/div&gt;&lt;div&gt;    findItem(itemId : String) : Item&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;Client systems are then relieved of responsibility for implementing this logic over and over, and need not have knowledge of yet another system.  Re-use is enhanced, while complexity is reduced.  Everyone is happy!  :-)&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.knownbugs.org/feeds/9184118135842082993/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/3109386887529685808/9184118135842082993' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3109386887529685808/posts/default/9184118135842082993'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3109386887529685808/posts/default/9184118135842082993'/><link rel='alternate' type='text/html' href='http://www.knownbugs.org/2009/06/service-granularity-and-re-use.html' title='Service granularity and re-use'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3109386887529685808.post-2470933624191757449</id><published>2008-05-02T15:13:00.003-04:00</published><updated>2008-05-11T19:03:22.133-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Performance engineering"/><title type='text'>Performance Engineering</title><content type='html'>A good &lt;a href=&quot;http://www.theserverside.com/tt/articles/article.tss?l=PerformanceEngineering&quot;&gt;article &lt;/a&gt;from Alok Mahajan &amp;amp; Nikhil Sharma from Infosys ! Am quite stunned to be frank.</content><link rel='replies' type='application/atom+xml' href='http://www.knownbugs.org/feeds/2470933624191757449/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/3109386887529685808/2470933624191757449' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3109386887529685808/posts/default/2470933624191757449'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3109386887529685808/posts/default/2470933624191757449'/><link rel='alternate' type='text/html' href='http://www.knownbugs.org/2008/05/performance-engineering.html' title='Performance Engineering'/><author><name>Milan Gupta</name><uri>http://www.blogger.com/profile/13287099462062649030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3109386887529685808.post-5976154192299878243</id><published>2008-03-18T18:22:00.003-04:00</published><updated>2008-03-18T18:28:45.143-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="agile"/><category scheme="http://www.blogger.com/atom/ns#" term="colocation"/><title type='text'>on colocation</title><content type='html'>One of the interesting things I found was the impact of colocation on the productivity of teams. &lt;br /&gt;&lt;br /&gt;Consider a team of six people working on a module. Try this out .. place them at random seats within an office floor out of line of sight from each other. What you will find is that they may as well be in different countries. &lt;br /&gt;&lt;br /&gt;Now place them in a six person pod or cubicles adjescent to each other. You will be amazed at the difference this makes in their productivity. &lt;br /&gt;&lt;br /&gt;Back in 96, I was amazed one day to find one team started the habit of standing up on their desks (across six partitioned cubicles) for a daily quick discussion / debrief. It was quite funny as this was before the days of &#39;agile&#39; and &#39;standups&#39; etc. They found it quite effective to just stand up on their desks and confer when they had a quick team decision to make. &lt;br /&gt;&lt;br /&gt;Just something that make me smile back then.</content><link rel='replies' type='application/atom+xml' href='http://www.knownbugs.org/feeds/5976154192299878243/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/3109386887529685808/5976154192299878243' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3109386887529685808/posts/default/5976154192299878243'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3109386887529685808/posts/default/5976154192299878243'/><link rel='alternate' type='text/html' href='http://www.knownbugs.org/2008/03/on-colocation.html' title='on colocation'/><author><name>Milan Gupta</name><uri>http://www.blogger.com/profile/13287099462062649030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3109386887529685808.post-7273120333006801540</id><published>2008-03-09T04:56:00.004-04:00</published><updated>2008-03-09T06:26:02.922-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="delivery hubs"/><category scheme="http://www.blogger.com/atom/ns#" term="systems integration"/><title type='text'>running systems integration delivery hubs</title><content type='html'>A large SI (systems integration) project typically involves the requirements, design, development, integration, testing and deployment of an integrated enterprise software release. This typically involves the work of a large number of people spread across numerous teams, typically, across the organization and often across organizational boundaries.&lt;br /&gt;&lt;br /&gt;Ideally, there are only two roles in this setup. A business role and a technical role. The business role represents the &#39;user&#39; or the &#39;customer&#39;. They lead on  requirements specification &amp; testing. The technical role lead on design, development, integration and deployment. Of course, each activity involves folks from both roles, however, it is important to keep perspective of who &#39;leads&#39;. &lt;br /&gt;&lt;br /&gt;The main source of inefficiency within any structure is communication. It is the hardest problem to solve. That is why people with multi-dimensional skills are so much more effective than people with a single dimension or specialized roles. &lt;br /&gt;&lt;br /&gt;Having separate teams perform each specialized function (requirements, design, development, integration, testing, deployment etc) causes havoc as imagine the inefficiency and discontinuity created by the hand-offs. Where possible, such optimizations must be made, however, some specialization is inevitable when you scale up. &lt;br /&gt;&lt;br /&gt;The establishment of the critical roles (leadership) and the required infrastructure is key to success. &lt;br /&gt;&lt;br /&gt;Delivery Hub must-haves. &lt;br /&gt;1&gt; co-location facility with open floor plan, plenty of whiteboards, and 2-3 breakout rooms.&lt;br /&gt;&lt;br /&gt;2&gt; strongest presence from the e2e testing team (ideally also the &#39;users&#39;). &lt;br /&gt;&lt;br /&gt;3&gt; e2e solution design team (also ideally the integration leads).&lt;br /&gt;&lt;br /&gt;4&gt; representation from each of the component teams (project manager + 2-3 key developers)&lt;br /&gt;&lt;br /&gt;5&gt; e2e test environments - ideally 3. One being production mirror, another one for development-integration and the last being integration-release. The config and release management for the production mirror and integration-release environment must be formally managed to ensure integrity and optimal uptime that allows testing productivity. Expect the dev-int environment to be the most dynamic of the three with daily drops from component teams. &lt;br /&gt;&lt;br /&gt;6&gt; Core delivery hub roles :&lt;br /&gt;a&gt; overall program lead with program management support&lt;br /&gt;b&gt; overall architect / design lead (ideally also the integration lead)&lt;br /&gt;c&gt; overall business lead (requirements, business process etc.)&lt;br /&gt;d&gt; testing lead (ideally also the requirements lead)&lt;br /&gt;e&gt; test/config management lead (manages change control and integrity of the test environments, also ideally leads the software deployment to production)&lt;br /&gt;f&gt; deployment lead (focussed on pulling together all aspects of the deployment - training, data grooming, documentation, systems conversion &amp; cut-over etc.)&lt;br /&gt;g&gt; e2e support lead (service management including e2e monitoring)&lt;br /&gt;&lt;br /&gt;7&gt; Daily program stand-up. I always did a 6 pm (1 hr) stand-up every day that helped bring focus to our execution.&lt;br /&gt;&lt;br /&gt;In the project, there are three key phases that you will encounter. Am assuming that some form of agile or spiral methodology is used, so, these phases while unique, may not represent a distinct milestone. You will know when you are in each phase and effort must be made to prioritize activities that allow you to move to the next phase. &lt;br /&gt;&lt;br /&gt;Phase I: This is where the requirements and design are still under a fair amount of churn and incomplete. &lt;br /&gt;Phase II: The scope is now locked down, the designers have more or less finished their stuff with the developers now with plenty to do and on the critical path. &lt;br /&gt;Phase III: Testing / integration is critical path with the developers and designers fixing defects. &lt;br /&gt;&lt;br /&gt;&lt;INSERT DIAGRAM HERE&gt;&lt;br /&gt;&lt;br /&gt;The diagram above gives you a sense of the dynamics and activities in the project. A couple of core principles to highlight.&lt;br /&gt;a&gt; In phase I, it is the designers that are under stress. All help to make them productive. What this really means is that component development teams help with the e2e solution design and not wait to be spoon fed a document. The burden is really more the feeling of being the bottleneck than the technical challenge. This also solves another standard pitfall in that it improves the efficiency of knowledge transfer from design to development. &lt;br /&gt;b&gt; Tight requirement documentation and change control from the start is a must.&lt;br /&gt;c&gt; Test case development starts with the requirements .. ideally, use cases are translated to test scenarios from the start. Data setup demands for the test environments are looked at from the start.&lt;br /&gt;d&gt; In phase II, force early drops from the development teams. Any and all early feedback from the &#39;users&#39; and &#39;testers&#39; helps derisk the project. Early integration = SUCCESS ! Get into the specify/design-code-integrate-test spiral as quickly as possible. In this phase, give as much flexibility to the development teams. Anticipate frustration from the testers due to quality and downtime of test environments. Do not underestimate the value of this although .. this is crucial that they stay engaged and provide any and all early feedback. The only thing to not compromise with the development teams is releasing into test. In this phase, testers are usually buddies with the developers. &lt;br /&gt;e&gt; This is where testers become antagonistic towards the developers. Here the balance shifts to testing productivity. You must favor discipline in release management for test environments over the development team&#39;s inclination to fix (aka change) things constantly. &lt;br /&gt;&lt;br /&gt;On the e2e project plan : &lt;br /&gt;The critical artifact for me was what I called the &#39;component integration matrix&#39;. It was a simple spreadsheet that had a breakdown of functionality of the enterprise release on one axis and the components on the other. The solution design outlines which components are involved for each functional grouping. The program managers working with the component delivery managers would work out the release dates and software versions for their components ready for integration. The easy optimization that this allowed was to align/prioritize the work for each component so that e2e functional threads would be completed as a priority thereby allowing the e2e test teams to get going. Of course, in parallel to the design, the test teams aligned their e2e test cases to each of these horizontals and reported test coverage along these lines. That way, I could in a single spreadsheet see the convergence and critical path of the program from a software development and integration perspective. &lt;br /&gt;&lt;br /&gt;&lt;INSERT EG. HERE&gt;&lt;br /&gt;&lt;br /&gt;This was always more useful than the prettiest gantt charts. It is only finalizing this that gave me any sense of a target date, so, completing this was always a priority. &lt;br /&gt;&lt;br /&gt;-------------------------------&lt;br /&gt;NB&gt; This is by no means expected to represent a comprehensive view of the subtleties or complexities within a delivery hub ... just some food for thought. This represents 15 years of experience brain dumped within 30 mins so take it for value added.</content><link rel='replies' type='application/atom+xml' href='http://www.knownbugs.org/feeds/7273120333006801540/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/3109386887529685808/7273120333006801540' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3109386887529685808/posts/default/7273120333006801540'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3109386887529685808/posts/default/7273120333006801540'/><link rel='alternate' type='text/html' href='http://www.knownbugs.org/2008/03/running-systems-integration-delivery.html' title='running systems integration delivery hubs'/><author><name>Milan Gupta</name><uri>http://www.blogger.com/profile/13287099462062649030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3109386887529685808.post-4980019808436421499</id><published>2007-11-20T07:47:00.001-05:00</published><updated>2007-11-20T07:51:58.203-05:00</updated><title type='text'>It&#39;s not done until it&#39;s deployed and working!</title><content type='html'>It may amaze some people, but there are still development teams out there that think their job is done when they hand over to the test team.  It should be obvious to everyone that the business derives no value from a system until it is deployed and working.  Finger pointing and claiming that &quot;it works on my machine&quot; doesn&#39;t make money for the business!&lt;br /&gt;&lt;br /&gt;Scripting or otherwise automating the deployment of an application is an invaluable aid to the whole development process.  It speeds the process, thereby reducing the code/test feedback cycle.  Even more importantly, it makes the process repeatable.  The same script used for deployment to test should be used for deployment to production, thereby exercising the deployment scripts as part of the test cycle.&lt;br /&gt;&lt;br /&gt;Likewise, if your project has difficulty with deployments, having a developer present during production deployments will pay dividends. There is nothing like first hand experience for bringing home to the development team the issues faced when their application is used in anger.&lt;br /&gt;&lt;br /&gt;Until you have confidence that your deployment will go perfectly every time, involve the development team in every production deployment.  And make automated deployment a requirement of every development project.</content><link rel='replies' type='application/atom+xml' href='http://www.knownbugs.org/feeds/4980019808436421499/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/3109386887529685808/4980019808436421499' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3109386887529685808/posts/default/4980019808436421499'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3109386887529685808/posts/default/4980019808436421499'/><link rel='alternate' type='text/html' href='http://www.knownbugs.org/2007/11/its-not-done-until-its-deployed-and.html' title='It&#39;s not done until it&#39;s deployed and working!'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3109386887529685808.post-3864137081540957970</id><published>2007-11-11T13:09:00.000-05:00</published><updated>2007-11-11T13:43:37.089-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="wikipedia"/><title type='text'>wikipedia</title><content type='html'>Wikipedia - continues to amaze me every day.&lt;br /&gt;&lt;br /&gt;I am often faced with situations I have absolutely no technical information or background on. All Believe it or not, in many situations, all I have as starting tools are my instincts. However, this is rapidly corrected by good ol&#39; google search and wikipedia lookups although, I still do miss speed reading documentation in book form.&lt;br /&gt;&lt;br /&gt;On vacation with nothing better to do than just relax, I came across these amazing pictures ..&lt;br /&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Wikipedia:Featured_pictures&quot;&gt;http://en.wikipedia.org/wiki/Wikipedia:Featured_pictures&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;padding:.5em 0em .5em 0em; text-align:center; margin:auto; width:100%;&quot;&gt;&lt;b&gt;English Wikipedia Featured Pictures&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style=&quot;overflow-x:scroll;overflow-y:hidden;&quot;&gt;&lt;br /&gt;&lt;div style=&quot;width:9500px;&quot;&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Image:Mandel_zoom_10_satellite_seehorse_valley.jpg&quot; class=&quot;image&quot; title=&quot;Mandel zoom 10 satellite seehorse valley.jpg&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://upload.wikimedia.org/wikipedia/commons/thumb/8/89/Mandel_zoom_10_satellite_seehorse_valley.jpg/333px-Mandel_zoom_10_satellite_seehorse_valley.jpg&quot; width=&quot;333&quot; height=&quot;250&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Image:Incandescence.jpg&quot; class=&quot;image&quot; title=&quot;Incandescence.jpg&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://upload.wikimedia.org/wikipedia/commons/thumb/1/1b/Incandescence.jpg/166px-Incandescence.jpg&quot; width=&quot;166&quot; height=&quot;249&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Image:NASA-Apollo8-Dec24-Earthrise.jpg&quot; class=&quot;image&quot; title=&quot;NASA-Apollo8-Dec24-Earthrise.jpg&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://upload.wikimedia.org/wikipedia/commons/thumb/a/a8/NASA-Apollo8-Dec24-Earthrise.jpg/250px-NASA-Apollo8-Dec24-Earthrise.jpg&quot; width=&quot;250&quot; height=&quot;250&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Image:Global_tropical_cyclone_tracks-edit2.jpg&quot; class=&quot;image&quot; title=&quot;Global tropical cyclone tracks-edit2.jpg&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://upload.wikimedia.org/wikipedia/commons/thumb/2/23/Global_tropical_cyclone_tracks-edit2.jpg/500px-Global_tropical_cyclone_tracks-edit2.jpg&quot; width=&quot;500&quot; height=&quot;250&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Image:Yellow-rattle_close_700.jpg&quot; class=&quot;image&quot; title=&quot;Yellow-rattle close 700.jpg&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://upload.wikimedia.org/wikipedia/commons/thumb/4/43/Yellow-rattle_close_700.jpg/189px-Yellow-rattle_close_700.jpg&quot; width=&quot;189&quot; height=&quot;250&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Image:World_Map_1689.JPG&quot; class=&quot;image&quot; title=&quot;World Map 1689.JPG&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://upload.wikimedia.org/wikipedia/commons/thumb/3/3b/World_Map_1689.JPG/290px-World_Map_1689.JPG&quot; width=&quot;290&quot; height=&quot;250&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Image:Divers_-_Illustrated_London_News_Feb_6_1873-2.PNG&quot; class=&quot;image&quot; title=&quot;Divers - Illustrated London News Feb 6 1873-2.PNG&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://upload.wikimedia.org/wikipedia/commons/thumb/4/42/Divers_-_Illustrated_London_News_Feb_6_1873-2.PNG/200px-Divers_-_Illustrated_London_News_Feb_6_1873-2.PNG&quot; width=&quot;200&quot; height=&quot;249&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Image:SeattleI5Skyline.jpg&quot; class=&quot;image&quot; title=&quot;SeattleI5Skyline.jpg&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://upload.wikimedia.org/wikipedia/commons/thumb/3/36/SeattleI5Skyline.jpg/417px-SeattleI5Skyline.jpg&quot; width=&quot;417&quot; height=&quot;250&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Image:Grapevinesnail_01.jpg&quot; class=&quot;image&quot; title=&quot;Grapevinesnail 01.jpg&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://upload.wikimedia.org/wikipedia/commons/thumb/6/69/Grapevinesnail_01.jpg/424px-Grapevinesnail_01.jpg&quot; width=&quot;424&quot; height=&quot;250&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Image:Apollo_11_bootprint.jpg&quot; class=&quot;image&quot; title=&quot;Apollo 11 bootprint.jpg&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://upload.wikimedia.org/wikipedia/commons/thumb/8/89/Apollo_11_bootprint.jpg/248px-Apollo_11_bootprint.jpg&quot; width=&quot;248&quot; height=&quot;250&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Image:Yarra_Night_Panorama%2C_Melbourne_-_Feb_2005.jpg&quot; class=&quot;image&quot; title=&quot;Yarra Night Panorama, Melbourne - Feb 2005.jpg&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://upload.wikimedia.org/wikipedia/commons/thumb/8/8d/Yarra_Night_Panorama%2C_Melbourne_-_Feb_2005.jpg/655px-Yarra_Night_Panorama%2C_Melbourne_-_Feb_2005.jpg&quot; width=&quot;655&quot; height=&quot;250&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Image:Early_flight_02561u_%284%29.jpg&quot; class=&quot;image&quot; title=&quot;Early flight 02561u (4).jpg&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://upload.wikimedia.org/wikipedia/commons/thumb/4/4a/Early_flight_02561u_%284%29.jpg/171px-Early_flight_02561u_%284%29.jpg&quot; width=&quot;171&quot; height=&quot;250&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Image:Haeckel_Spumellaria.jpg&quot; class=&quot;image&quot; title=&quot;Haeckel Spumellaria.jpg&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://upload.wikimedia.org/wikipedia/commons/thumb/0/0c/Haeckel_Spumellaria.jpg/176px-Haeckel_Spumellaria.jpg&quot; width=&quot;176&quot; height=&quot;250&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Image:St_Vitus_stained_glass.jpg&quot; class=&quot;image&quot; title=&quot;St Vitus stained glass.jpg&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://upload.wikimedia.org/wikipedia/commons/thumb/8/8e/St_Vitus_stained_glass.jpg/376px-St_Vitus_stained_glass.jpg&quot; width=&quot;376&quot; height=&quot;250&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Image:Anser_cygnoides.jpg&quot; class=&quot;image&quot; title=&quot;Anser cygnoides.jpg&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://upload.wikimedia.org/wikipedia/commons/thumb/1/15/Anser_cygnoides.jpg/375px-Anser_cygnoides.jpg&quot; width=&quot;375&quot; height=&quot;250&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Image:Moons_of_solar_system_v7.jpg&quot; class=&quot;image&quot; title=&quot;Moons of solar system v7.jpg&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://upload.wikimedia.org/wikipedia/commons/thumb/4/4f/Moons_of_solar_system_v7.jpg/354px-Moons_of_solar_system_v7.jpg&quot; width=&quot;354&quot; height=&quot;250&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Image:Cuban_missiles.jpg&quot; class=&quot;image&quot; title=&quot;Cuban missiles.jpg&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://upload.wikimedia.org/wikipedia/en/thumb/5/57/Cuban_missiles.jpg/247px-Cuban_missiles.jpg&quot; width=&quot;247&quot; height=&quot;250&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Image:Eyjafjallaj%C3%B6kull.jpeg&quot; class=&quot;image&quot; title=&quot;Eyjafjallajökull.jpeg&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://upload.wikimedia.org/wikipedia/commons/thumb/8/8e/Eyjafjallaj%C3%B6kull.jpeg/373px-Eyjafjallaj%C3%B6kull.jpeg&quot; width=&quot;373&quot; height=&quot;250&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Image:Coyote_portrait.jpg&quot; class=&quot;image&quot; title=&quot;Coyote portrait.jpg&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://upload.wikimedia.org/wikipedia/commons/thumb/7/73/Coyote_portrait.jpg/438px-Coyote_portrait.jpg&quot; width=&quot;438&quot; height=&quot;250&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Image:STS-116_spacewalk_1.jpg&quot; class=&quot;image&quot; title=&quot;STS-116 spacewalk 1.jpg&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://upload.wikimedia.org/wikipedia/commons/thumb/8/89/STS-116_spacewalk_1.jpg/379px-STS-116_spacewalk_1.jpg&quot; width=&quot;379&quot; height=&quot;250&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Image:Two_Gannets_edit_2.jpg&quot; class=&quot;image&quot; title=&quot;Two Gannets edit 2.jpg&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://upload.wikimedia.org/wikipedia/commons/thumb/7/76/Two_Gannets_edit_2.jpg/375px-Two_Gannets_edit_2.jpg&quot; width=&quot;375&quot; height=&quot;250&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Image:Salad_platter.jpg&quot; class=&quot;image&quot; title=&quot;Salad platter.jpg&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://upload.wikimedia.org/wikipedia/commons/thumb/9/94/Salad_platter.jpg/375px-Salad_platter.jpg&quot; width=&quot;375&quot; height=&quot;250&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Image:Cricket_fielding_positions2.svg&quot; class=&quot;image&quot; title=&quot;Cricket fielding positions2.svg&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://upload.wikimedia.org/wikipedia/commons/thumb/9/9a/Cricket_fielding_positions2.svg/187px-Cricket_fielding_positions2.svg.png&quot; width=&quot;187&quot; height=&quot;250&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Image:Mark_48_Torpedo_testing.jpg&quot; class=&quot;image&quot; title=&quot;Mark 48 Torpedo testing.jpg&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://upload.wikimedia.org/wikipedia/commons/thumb/5/51/Mark_48_Torpedo_testing.jpg/388px-Mark_48_Torpedo_testing.jpg&quot; width=&quot;388&quot; height=&quot;250&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Image:Seagull_on_sale_pier.jpg&quot; class=&quot;image&quot; title=&quot;Seagull on sale pier.jpg&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://upload.wikimedia.org/wikipedia/commons/thumb/f/ff/Seagull_on_sale_pier.jpg/373px-Seagull_on_sale_pier.jpg&quot; width=&quot;373&quot; height=&quot;250&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Image:Lion_waiting_in_Nambia.jpg&quot; class=&quot;image&quot; title=&quot;Lion waiting in Nambia.jpg&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://upload.wikimedia.org/wikipedia/commons/thumb/1/10/Lion_waiting_in_Nambia.jpg/333px-Lion_waiting_in_Nambia.jpg&quot; width=&quot;333&quot; height=&quot;250&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Image:Washington_Monument_Dusk_Jan_2006.jpg&quot; class=&quot;image&quot; title=&quot;Washington Monument Dusk Jan 2006.jpg&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://upload.wikimedia.org/wikipedia/commons/thumb/c/c1/Washington_Monument_Dusk_Jan_2006.jpg/188px-Washington_Monument_Dusk_Jan_2006.jpg&quot; width=&quot;188&quot; height=&quot;250&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Image:Joan_of_Arc-Notre_Dame.jpg&quot; class=&quot;image&quot; title=&quot;Joan of Arc-Notre Dame.jpg&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://upload.wikimedia.org/wikipedia/commons/thumb/e/eb/Joan_of_Arc-Notre_Dame.jpg/187px-Joan_of_Arc-Notre_Dame.jpg&quot; width=&quot;187&quot; height=&quot;249&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Image:Mahdist_in_the_Khalifa%27s_house%2C_Omdurman%2C_Sudan.png&quot; class=&quot;image&quot; title=&quot;Mahdist in the Khalifa&#39;s house, Omdurman, Sudan.png&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://upload.wikimedia.org/wikipedia/commons/thumb/2/20/Mahdist_in_the_Khalifa%27s_house%2C_Omdurman%2C_Sudan.png/198px-Mahdist_in_the_Khalifa%27s_house%2C_Omdurman%2C_Sudan.png&quot; width=&quot;198&quot; height=&quot;250&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.knownbugs.org/feeds/3864137081540957970/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/3109386887529685808/3864137081540957970' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3109386887529685808/posts/default/3864137081540957970'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3109386887529685808/posts/default/3864137081540957970'/><link rel='alternate' type='text/html' href='http://www.knownbugs.org/2007/11/wikipedia.html' title='wikipedia'/><author><name>Milan Gupta</name><uri>http://www.blogger.com/profile/13287099462062649030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3109386887529685808.post-6256936092641323145</id><published>2007-11-02T11:23:00.000-04:00</published><updated>2008-12-11T11:35:14.177-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="adsl"/><category scheme="http://www.blogger.com/atom/ns#" term="broadband boost"/><category scheme="http://www.blogger.com/atom/ns#" term="dsl speed problems"/><title type='text'>double your broadband speed</title><content type='html'>&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzd_nZQ3JP23zStl2_dw1iAhVZKnytYWveE8bMFfigwtvi0Hq0A8AMn8OfypPuBRXVrzxBvKMcBPktx8lgOlov9Fo3KObzvNGI-9IXmyC8QL8R3921z06jUN_JXnssbKnJrY_bE06LLdk/s1600-h/untitled1.GIF&quot;&gt;&lt;img id=&quot;BLOGGER_PHOTO_ID_5128264173249665314&quot; style=&quot;FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzd_nZQ3JP23zStl2_dw1iAhVZKnytYWveE8bMFfigwtvi0Hq0A8AMn8OfypPuBRXVrzxBvKMcBPktx8lgOlov9Fo3KObzvNGI-9IXmyC8QL8R3921z06jUN_JXnssbKnJrY_bE06LLdk/s320/untitled1.GIF&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;I have been struggling with my DSL service since I moved into this new home. For some reason, my modem was training to 4M instead of the 8M in my previous home. My first reaction was acceptance that this was due to the distance factor from the exchange (which IS a significant factor). However, after months of resentment that life should be better, I decided to do something about it.&lt;br /&gt;&lt;br /&gt;I had suspected that my internal home wiring was a factor. I knew that I should get a boost by changing things around, however, did not expect the level of impact. 15 minutes of investment boosted my speed from 4 MB to 8 MB.&lt;br /&gt;&lt;br /&gt;So here is what I did and some explanation of what was causing the problem.&lt;br /&gt;&lt;br /&gt;In the picture above, scenario A is your typical home internal wiring. The pair comes into the home through a special wall plate (NTE) and is then distributed around the home. This is a spiderweb typically. Worse, there may be other devices using the phone lines .. intercoms, alarm systems, pay-per-view box etc. The ADSL modem is typically on the end of one of these legs so, the signal to the modem has the interference and loss caused by the spiderweb of internal home wiring in addition to the normal loss and interference.&lt;br /&gt;&lt;br /&gt;Scenario B uses a special device called an NTE5 central adsl splitter that plugs into the wall-&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjd6EjVUrqaMkl7nnWpDyCVgqc4fXxHcwLXPH7yl3bvYbaYqtiPgo5uJJZNuXbcBDW_z8q8OyynKnnk3f4gDd7q-nX1gcePmFKABwGvn-xInRq-huUVSnsNiy22u1sVhndH4xbPYorb5L0/s1600-h/t_16134.jpg&quot;&gt;&lt;img id=&quot;BLOGGER_PHOTO_ID_5128268313598138674&quot; style=&quot;FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjd6EjVUrqaMkl7nnWpDyCVgqc4fXxHcwLXPH7yl3bvYbaYqtiPgo5uJJZNuXbcBDW_z8q8OyynKnnk3f4gDd7q-nX1gcePmFKABwGvn-xInRq-huUVSnsNiy22u1sVhndH4xbPYorb5L0/s320/t_16134.jpg&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;plate where the copper pair from the exchange enters your home (you will have to do a mini external home survey to find where the pair disappears into the wall into your home).&lt;br /&gt;&lt;br /&gt;&lt;p&gt;You can see from the diagram that the signal to the modem does not have any of the issues with the internal home wiring. This also eliminates the need to put splitters on each and every outlet that has a phone. &lt;/p&gt;This is a 15 min job. Really trivial. Only limitation is that your ADSL modem now has to be located and plugged into this wall plate only. Here is a good link / site that explains further.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.broadbandzone.co.uk/shop/centralisedfilter.html&quot;&gt;http://www.broadbandzone.co.uk/shop/centralisedfilter.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The issue of having the ADSL modem locked into one place possibly far away from a computer is really a non-issue now-a-days. Two options / reasons : most ADSL modems now have WIFI built in (G or N standards will be more than enough). Alternately, there are powerline ethernet devices that work very well. What these devices do is basically make your internal home power (220V) cables into a transmission network for ethernet. Fairly pricey still, however, extremely flexible and they work !! I use the &lt;a href=&quot;http://www.netgear.com/Products/PowerlineNetworking/PowerlineEthernetAdapters/HDX101.aspx&quot;&gt;NetGear Powerline Ethernet HD adapters&lt;/a&gt; and have no complaints.</content><link rel='replies' type='application/atom+xml' href='http://www.knownbugs.org/feeds/6256936092641323145/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/3109386887529685808/6256936092641323145' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3109386887529685808/posts/default/6256936092641323145'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3109386887529685808/posts/default/6256936092641323145'/><link rel='alternate' type='text/html' href='http://www.knownbugs.org/2007/11/double-your-broadband-speed.html' title='double your broadband speed'/><author><name>Milan Gupta</name><uri>http://www.blogger.com/profile/13287099462062649030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzd_nZQ3JP23zStl2_dw1iAhVZKnytYWveE8bMFfigwtvi0Hq0A8AMn8OfypPuBRXVrzxBvKMcBPktx8lgOlov9Fo3KObzvNGI-9IXmyC8QL8R3921z06jUN_JXnssbKnJrY_bE06LLdk/s72-c/untitled1.GIF" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3109386887529685808.post-1681465364746388934</id><published>2007-11-01T08:30:00.001-04:00</published><updated>2008-12-11T11:35:14.469-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="IT support maturity model"/><title type='text'>Maturing IT support - framework / model</title><content type='html'>&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQtAJkt-eRPQ8aVSvkoNxZmTVzgrZRMNAtzQHe7jq0srsu9rllfu9HNd0-p1-4AHbOCXR6pYDQU6E9ftqv_m3wz_psyvb9zLQQ-736ySC2iQL7gLgmthZbSC8OqGx7cI6F2HnTfVQk3HI/s1600-h/untitled.GIF&quot;&gt;&lt;img id=&quot;BLOGGER_PHOTO_ID_5127848562149333266&quot; style=&quot;FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQtAJkt-eRPQ8aVSvkoNxZmTVzgrZRMNAtzQHe7jq0srsu9rllfu9HNd0-p1-4AHbOCXR6pYDQU6E9ftqv_m3wz_psyvb9zLQQ-736ySC2iQL7gLgmthZbSC8OqGx7cI6F2HnTfVQk3HI/s320/untitled.GIF&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;I find the model I created useful in evaluating where teams stand in their maturity and the kinds of things I ask them to focus on to move up the value chain and improve their performance. &lt;/p&gt;&lt;p&gt;An example, to move from a state of &#39;managed&#39; to &#39;measured&#39;, I ask teams to put in place measures in the following areas : &lt;/p&gt;&lt;p&gt;A&gt; Business KPI reporting in the context of the system being measured. B&gt; Measures around the utilization of the system (beyond CPU etc.). The most basic is a graph of concurrent user logins at 15 min intervals. More sophesticated is transactional level measures. C&gt; Systems availability reporting which of course is always 99%+. A better way is measuring business impact i.e. #minutes downtime / call centre agent / month.  &lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.knownbugs.org/feeds/1681465364746388934/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/3109386887529685808/1681465364746388934' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3109386887529685808/posts/default/1681465364746388934'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3109386887529685808/posts/default/1681465364746388934'/><link rel='alternate' type='text/html' href='http://www.knownbugs.org/2007/11/maturing-it-support-framework-model.html' title='Maturing IT support - framework / model'/><author><name>Milan Gupta</name><uri>http://www.blogger.com/profile/13287099462062649030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQtAJkt-eRPQ8aVSvkoNxZmTVzgrZRMNAtzQHe7jq0srsu9rllfu9HNd0-p1-4AHbOCXR6pYDQU6E9ftqv_m3wz_psyvb9zLQQ-736ySC2iQL7gLgmthZbSC8OqGx7cI6F2HnTfVQk3HI/s72-c/untitled.GIF" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3109386887529685808.post-6656404641192032243</id><published>2007-11-01T08:06:00.000-04:00</published><updated>2007-11-01T08:16:49.593-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="i&#39;ve fallen and I can&#39;t get up"/><category scheme="http://www.blogger.com/atom/ns#" term="performance tuning"/><category scheme="http://www.blogger.com/atom/ns#" term="systems performance"/><title type='text'>I&#39;ve fallen and I can&#39;t get up</title><content type='html'>Too often I get a plea for help wherein a development/delivery manager runs into problems taking a system into production. Guess most often where they run into trouble .. yep ! Performance.&lt;br /&gt;&lt;br /&gt;When questioned about the technical details, same old pattern. Lack of understanding of underlying middleware, database, 3rd party tools etc.&lt;br /&gt;&lt;br /&gt;When a team displays such a lack of understanding, what I hear is the team saying to me - &quot;I can code it, however, I don&#39;t know how to actually make it work !&quot;&lt;br /&gt;&lt;br /&gt;Performance considerations are intrinsic to good development practices &amp;amp; design. While a focussed effort on performance optimization for a week using a highly skilled team always yields amazing results, it is a bad idea to deliver under that assumption.&lt;br /&gt;&lt;br /&gt;This is often the simple difference between average and good teams.</content><link rel='replies' type='application/atom+xml' href='http://www.knownbugs.org/feeds/6656404641192032243/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/3109386887529685808/6656404641192032243' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3109386887529685808/posts/default/6656404641192032243'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3109386887529685808/posts/default/6656404641192032243'/><link rel='alternate' type='text/html' href='http://www.knownbugs.org/2007/11/ive-fallen-and-i-cant-get-up.html' title='I&#39;ve fallen and I can&#39;t get up'/><author><name>Milan Gupta</name><uri>http://www.blogger.com/profile/13287099462062649030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3109386887529685808.post-8641424948069033082</id><published>2007-09-16T13:52:00.000-04:00</published><updated>2007-09-16T14:01:16.535-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="IT effectiveness"/><category scheme="http://www.blogger.com/atom/ns#" term="organizational behavior"/><category scheme="http://www.blogger.com/atom/ns#" term="reuse"/><category scheme="http://www.blogger.com/atom/ns#" term="software reuse"/><title type='text'>reuse</title><content type='html'>On reuse within IT. I seem to be talking about this a lot so .. might as well put this down.&lt;br /&gt;&lt;br /&gt;IMHO, I break reuse within IT into the following stages :&lt;br /&gt;&lt;br /&gt;Stage 0 : Reuse teams (just this gets you 60% of the way)&lt;br /&gt;Stage 1 : Reuse design patterns (typically effected by having a clearly articulated architecture and some governance frameworks). This however, may be a legacy of waterfall methodologies.&lt;br /&gt;Stage 2 : Reuse software (libraries, SOA, components etc.)</content><link rel='replies' type='application/atom+xml' href='http://www.knownbugs.org/feeds/8641424948069033082/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/3109386887529685808/8641424948069033082' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3109386887529685808/posts/default/8641424948069033082'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3109386887529685808/posts/default/8641424948069033082'/><link rel='alternate' type='text/html' href='http://www.knownbugs.org/2007/09/reuse.html' title='reuse'/><author><name>Milan Gupta</name><uri>http://www.blogger.com/profile/13287099462062649030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3109386887529685808.post-1991738985209060829</id><published>2007-07-07T17:43:00.000-04:00</published><updated>2007-07-07T18:35:03.048-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="computer associates"/><category scheme="http://www.blogger.com/atom/ns#" term="enterprise common components"/><category scheme="http://www.blogger.com/atom/ns#" term="layered distributed systems"/><category scheme="http://www.blogger.com/atom/ns#" term="siteminder"/><category scheme="http://www.blogger.com/atom/ns#" term="Systems monitoring"/><title type='text'>on monitoring enterprise shared/common components</title><content type='html'>I had an encounter with a commonly used enterprise component - single sign-on, specifically, a tool called Site-minder (now owned by computer associates).&lt;br /&gt;&lt;br /&gt;First my rant, as this cost me 3 days of my life and a weekend away from my family. While quite a nifty tool and what appears to be a highly scalable platform, I was not prepared for the level of &#39;blindness&#39; to simple things like throughput and response time. You can get all sorts of information about connections, threads etc. however, the information isn&#39;t sufficient within the package to fully monitor what is going in and out of this black-box. Also, no historical graphs in the monitor ? Wait, that is another product you have to buy from CA ? Wouldn&#39;t it be awesome if only we could reset the stats/counters at run-time ? That way, you could tune, then reset the stats/counters &amp; re-measure.&lt;br /&gt;&lt;br /&gt;OK. Got that off my chest and it wasn&#39;t completely venomous. Believe me, its been a tough week.&lt;br /&gt;&lt;br /&gt;Seriously, shared infrastructure typically have really compelling business cases and yes, there are truly efficiencies to be gained, however, effective monitoring becomes absolutely critical. All eggs in one basket means you save on baskets and runners, however, the stakes for a mistake  go way up !! So you better be careful.&lt;br /&gt;&lt;br /&gt;Shared infrastructure is also more complex to model and monitor, specifically when you are dealing with layered distributed systems. Eg., in the Siteminder model, there are agents that consume transactions (may be locally cached) from a series of policy servers which in turn consume transactions from downstream services, eg. LDAP directory servers, authentication servers ...&lt;br /&gt;&lt;br /&gt;In such a framework, I would closely monitor the following aspects :&lt;br /&gt;- daily/hourly transaction arrival rate from each agent (and the cache rate).&lt;br /&gt;- transaction response time variance (this is a sign of downstream bottlenecks)&lt;br /&gt;- resource consumption in the policy server (no. of threads active/in-use) .. monitor at peak&lt;br /&gt;- above three for each of the downstream consumables.&lt;br /&gt;&lt;br /&gt;If your application support team can do this, they have the first clue about what is going on within their framework else, guess what, tomorrow you may go through what I just went through this past week.</content><link rel='replies' type='application/atom+xml' href='http://www.knownbugs.org/feeds/1991738985209060829/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/3109386887529685808/1991738985209060829' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3109386887529685808/posts/default/1991738985209060829'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3109386887529685808/posts/default/1991738985209060829'/><link rel='alternate' type='text/html' href='http://www.knownbugs.org/2007/07/on-monitoring-enterprise-sharedcommon.html' title='on monitoring enterprise shared/common components'/><author><name>Milan Gupta</name><uri>http://www.blogger.com/profile/13287099462062649030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3109386887529685808.post-6966319824059478672</id><published>2007-04-25T07:15:00.000-04:00</published><updated>2007-04-25T08:05:05.206-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="content control is king"/><category scheme="http://www.blogger.com/atom/ns#" term="dark arts"/><category scheme="http://www.blogger.com/atom/ns#" term="search engine optimization"/><title type='text'>on the dark arts of search engine optimization</title><content type='html'>I have been trying to figure out why I cannot search the internet (&lt;a href=&quot;http://www.google.com&quot;&gt;google&lt;/a&gt;, &lt;a href=&quot;http://www.msn.com&quot;&gt;msn&lt;/a&gt;, &lt;a href=&quot;http://www.yahoo.com&quot;&gt;yahoo &lt;/a&gt;...) and get to my blog even after doing an exact search for keyword combinations exclusive to my blog. What opened up to me is a whole new world. I know, I know, I am obsolete .. what world have I been living in ?! I am an old UNIX/C guy and html/xml really doesnt classify as programming to me. I now feel bad about poking fun at the mainframe guys back in the 90s. In saying that, now I really feel old !! I digress, sorry for the soapbox. &lt;br /&gt;&lt;br /&gt;My quest is to get a hit in google search using a combination of my name and &#39;knownbugs&#39; keywords. Should be unique with the top hit bringing me to the website hosted on google blogspot .. big assumption being the search engines give you results ordered by relevance (occurence of all keywords). &lt;br /&gt;&lt;br /&gt;Well, not quite so. So, reading up on recommendations, I first researched &lt;a href=&quot;http://en.wikipedia.org/wiki/Tagging&quot;&gt;tagging&lt;/a&gt;. &lt;a href=&quot;http://support.technorati.com/support/siteguide/tags&quot;&gt;Technorati tags &lt;/a&gt;is an emerging &#39;power player&#39; in the world of blogs. Supposedly, &#39;labels&#39;, &#39;titles&#39;, &#39;headers&#39; in blog content/articles should be automatically picked up by the Technorati engine (invoked when you &#39;ping&#39;). Alternatively, you can force a tag by using the &#39;Technorati Tags&#39; method. &lt;br /&gt;&lt;br /&gt;Even so, this only makes your tags visible within &lt;a href=&quot;http://www.technorati.com&quot;&gt;Technorati&#39;s blog search&lt;/a&gt;. For the normal google internet search, blog content hosted on blogspot appears invisible, however, on &lt;a href=&quot;http://www.google.co.uk/blogsearch?hl=en&quot;&gt;google&#39;s blog search&lt;/a&gt;, it works. &lt;br /&gt;&lt;br /&gt;I also did the wait 30 days and magic will happen thing. This is what some recommend as the time it takes for &lt;a href=&quot;http://en.wikipedia.org/wiki/Web_crawler&quot;&gt;spiders &lt;/a&gt;to crawl your content. &lt;br /&gt;&lt;br /&gt;So, further tricks/tips. I am now in the process of getting a custom domain name. &lt;a href=&quot;http://godaddy.com&quot;&gt;Godaddy.com&lt;/a&gt; offers cheap registrar services. My selection - &lt;a href=&quot;http://www.knownbugs.org&quot;&gt;www.knownbugs.org&lt;/a&gt; (or .info, .net, .biz .. unfortunately, .com was taken by someone who wants to make money by selling the name). &lt;br /&gt;&lt;br /&gt;What a custom domain name will do, is treat the blog content as regular www content and hopefully allow the search engine &lt;a href=&quot;http://en.wikipedia.org/wiki/Web_crawler&quot;&gt;&#39;spiders&#39; &lt;/a&gt;to index the content making it visible in the regular google search world. &lt;br /&gt;&lt;br /&gt;I suspect, I will find other gotchas as there clearly is money at play here. &lt;br /&gt;&lt;br /&gt;Instead of us being in the age of &#39;content in king&#39;, we appear to be living in the age of &#39;content control is king&#39;. Here is where there is a war going on. The behemoths - google, microsoft, yahoo .. all at play. &lt;br /&gt;&lt;br /&gt;&#39;Influencing&#39; search engines is worth a lot of money nowadays. A massive amount of complexity behind the scenes with &#39;SEC&#39; or &lt;a href=&quot;http://en.wikipedia.org/wiki/Search_engine_optimization&quot;&gt;search engine optimization &lt;/a&gt;being a real growth area. I worry ! &lt;br /&gt;&lt;br /&gt;I worry about such central control on information access, however, hacks like us always have a way of breaking free. &lt;br /&gt;&lt;br /&gt;More as my quest progresses !! Am still waiting for the DNS servers to update so expect to be redirected to www.knownbugs.org when you go to knownbugs.blogspot.com shortly.</content><link rel='replies' type='application/atom+xml' href='http://www.knownbugs.org/feeds/6966319824059478672/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/3109386887529685808/6966319824059478672' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3109386887529685808/posts/default/6966319824059478672'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3109386887529685808/posts/default/6966319824059478672'/><link rel='alternate' type='text/html' href='http://www.knownbugs.org/2007/04/on-dark-arts-of-search-engine.html' title='on the dark arts of search engine optimization'/><author><name>Milan Gupta</name><uri>http://www.blogger.com/profile/13287099462062649030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3109386887529685808.post-3113363826942184876</id><published>2007-04-24T11:31:00.000-04:00</published><updated>2007-04-24T12:16:25.935-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="debugging in live"/><category scheme="http://www.blogger.com/atom/ns#" term="ETA bait"/><category scheme="http://www.blogger.com/atom/ns#" term="pitfalls in outage situations"/><category scheme="http://www.blogger.com/atom/ns#" term="sequential analysis"/><category scheme="http://www.blogger.com/atom/ns#" term="sequential execution"/><category scheme="http://www.blogger.com/atom/ns#" term="trial and error"/><title type='text'>common pitfalls in outage/crisis situations</title><content type='html'>Teams dealing with outages typically suffer the following behavioral problems. Some of these conflict with each other in aims .. there isn&#39;t unfortunately a set formula I can come up with as each situation has its own variables/complexities. A standardized process/template however, would be great ! &lt;br /&gt;&lt;br /&gt;1&gt; Trial and error&lt;br /&gt;Don&#39;t fall for this. You know you are in trouble when you get ambiguity from the technical teams. If you are stuck, ask yourself what can you do to get additional information onto the table. Often, you will find teams stuck &#39;enjoying&#39; the problem because they have no method for infusing new information or experience into the problem diagnosis. Doing things trial &amp; error mode also force you into a sequential analysis mode. Also, this leads to the &#39;2 hr ETA bait&#39; (see below). &lt;br /&gt;&lt;br /&gt;2&gt; Debugging in live&lt;br /&gt;While prevention of recurrence is key and that requires some investment in analysis / data collection during an outage, it MUST be capped. Do not fall into the trap of ... &quot;give me 20 more minutes, I have almost figured it out ..&quot;. You will hate yourself later. Walk into the situation with a time limit in your mind upon which you will trigger a failsafe way of restoring service. Communicate that upfront to the team (I am assuming that you have a failsafe procedure to restart the system to restore service that you will trigger on .. may be something as simple as rebooting the servers). Of course, best practice is that you always execute the failsafe and never debug in live, however, that requires a significant investment in test infrastructures that are capable of reproducing the problem. Remember, there is a value to getting to true root cause as that is the only way you will prevent recurrence. &lt;br /&gt;&lt;br /&gt;3&gt; Sequential analysis&lt;br /&gt;Distinguish &#39;sequential analysis&#39; from &#39;sequential execution&#39;. Sequential execution is good, sequential analysis is BAD. On the analysis side, you should try to split off multiple teams (assuming you have the resources) on different aspects of the problem. That allows you to cover all bases quickly vs. an elongated recovery path where you are problem solving only one thing at a time. Sequential execution is GOOD because you want to introduce only one variable at a time else, you will break the cause and effect chain. Usually, problem solving is about eliminating variables and then incrementally fixing one thing at a time using a measured/scientific approach. &lt;br /&gt;&lt;br /&gt;4&gt; 2 hr ETA bait ...&lt;br /&gt;Setting expectations on &#39;expected time to restoral&#39; is really really hard. Here is the dark art of estimation at its finest. Setting no expectation is unacceptable (it will be fixed when it is fixed .. attitude).  Your business partners/users will not be as upset about an outage as they will be about setting false expectations. Usually, a significant outage will require operational teams to build workaround/catch up plans where they may have to staff overtime or weekends. These plans depend on your estimates. &lt;br /&gt;&lt;br /&gt;And .. what&#39;s worse is none of your technology suppliers / partners will co-operate.&lt;br /&gt;&lt;br /&gt;On crisis situations with financial implications, vendors get very very conservative or worse, clam up ! In a crisis situation, you always will feel the information is inadequate to make a decision or set an expectation. I usually follow my instincts here (of course, harnessing whatever facts are available on the situation).  Don&#39;t try this unless you have the right technical experience.</content><link rel='replies' type='application/atom+xml' href='http://www.knownbugs.org/feeds/3113363826942184876/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/3109386887529685808/3113363826942184876' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3109386887529685808/posts/default/3113363826942184876'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3109386887529685808/posts/default/3113363826942184876'/><link rel='alternate' type='text/html' href='http://www.knownbugs.org/2007/04/common-pitfalls-in-outagecrisis.html' title='common pitfalls in outage/crisis situations'/><author><name>Milan Gupta</name><uri>http://www.blogger.com/profile/13287099462062649030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3109386887529685808.post-3703447029913654900</id><published>2007-04-24T11:00:00.000-04:00</published><updated>2007-04-24T12:13:46.042-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="bea"/><category scheme="http://www.blogger.com/atom/ns#" term="enterprise support"/><category scheme="http://www.blogger.com/atom/ns#" term="microsoft"/><category scheme="http://www.blogger.com/atom/ns#" term="oracle"/><title type='text'>enterprise support from technology partners</title><content type='html'>Five years ago, I was pounding Microsoft on their lack of understanding of enterprise support. It is amazing how far they have come. I remember a couple of years back, an incident relating to a system based on SQL server. It was terrible !! The answers back from Microsoft were very casual .. try this patch ! Of course, nothing being hot patchable however, luckily not requiring a complete rebuild of WindowsNT server, an hour later when we figured that didn&#39;t work, the answer was, OK, try this now. We felt really foolish architecting a mission critical enterprise application on SQL server. &lt;br /&gt;&lt;br /&gt;Microsoft has really come a long way since that. I was very pleasantly surprized in a recent encounter on how they have matured. Their crisis technical lead was clear, crisp, unfazed by pressure and clearly knew what he was talking about. That instilled confidence. He knew how to distill and present the facts and avoid making false promises. Also, their follow-the-sun model actually worked !! The transitions were seamless with knowledgement transfer occuring behind the scene and a warm hand-off with 1 hr overlap. Their account team was on the ball and follow-up and follow through was perfect. In fact, they chased me !! &lt;br /&gt;&lt;br /&gt;Other examples of great support I have received are from BEA. BEA&#39;s account manager takes the unique honor of being the only sales guy I know who stuck with me for 36 hours straight during a crisis situation helping with anything he could (including doing the coffee rounds). I never believed a sales guy had that kind of stamina ;-). Oracle&#39;s down systems group are also top notch. &lt;br /&gt;&lt;br /&gt;Technology partners usually have to support crisis situations remotely. They will depend on you for information and one of the challenges is to be able to supply it to them - real-time. Simple things like file-size limits in your email servers can look like bad ideas in these circumstances. Firewalls are a fact of life so, have a strategy on how your technology partners get access to your systems/intranet when you need them to.</content><link rel='replies' type='application/atom+xml' href='http://www.knownbugs.org/feeds/3703447029913654900/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/3109386887529685808/3703447029913654900' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3109386887529685808/posts/default/3703447029913654900'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3109386887529685808/posts/default/3703447029913654900'/><link rel='alternate' type='text/html' href='http://www.knownbugs.org/2007/04/enterprise-support-from-technology.html' title='enterprise support from technology partners'/><author><name>Milan Gupta</name><uri>http://www.blogger.com/profile/13287099462062649030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3109386887529685808.post-4767140497543374910</id><published>2007-04-24T10:42:00.000-04:00</published><updated>2007-04-24T11:00:09.531-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="crisis bridge protocol"/><title type='text'>crisis bridge protocol</title><content type='html'>When dealing with outage situations, it is important to establish a clear bridge protocol for the participants. Hopefully, you won&#39;t have to go through these on each call as this will contribute to your MTTR (remember, you are in an outage/crisis situation). &lt;br /&gt;&lt;br /&gt;a&gt; one person speak at a time&lt;br /&gt;b&gt; identify the lead (hopefully you !)&lt;br /&gt;c&gt; people mute when not speaking&lt;br /&gt;d&gt; people not put you on hold (most PBXs will play music for the rest of the participants)&lt;br /&gt;e&gt; mute if you want to have a sidebar conversation&lt;br /&gt;f&gt; remember, if you go to sleep, you will be spotted because of your snoring&lt;br /&gt;g&gt; no calling from a cell phone (or c becomes very important)&lt;br /&gt;h&gt; establish clearly the participants and their role/what function they represent&lt;br /&gt;&lt;br /&gt;Traditional conference bridges are slowly evolving into a multimedia facility - IM session in parallel is becoming commonplace with Netmeeting/Livemeeting quickly following. At Qwest, it was nice to have the facility to dial into an 800 number and then select a sub-bridge (option 1..9). That way, the main bridge team could quickly branch sub-teams off without confusion and avoid wasting time on communicating bridge numbers. &lt;br /&gt;&lt;br /&gt;Separate out from the start a management bridge, customer bridge and the technical bridge. Chaos ensues if you mix them all into one.&lt;br /&gt;&lt;br /&gt;Just my two minutes of brain dump .. will add more as I flesh this out/collect my thoughts.</content><link rel='replies' type='application/atom+xml' href='http://www.knownbugs.org/feeds/4767140497543374910/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/3109386887529685808/4767140497543374910' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3109386887529685808/posts/default/4767140497543374910'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3109386887529685808/posts/default/4767140497543374910'/><link rel='alternate' type='text/html' href='http://www.knownbugs.org/2007/04/crisis-bridge-protocol.html' title='crisis bridge protocol'/><author><name>Milan Gupta</name><uri>http://www.blogger.com/profile/13287099462062649030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3109386887529685808.post-200713081906112099</id><published>2007-04-24T10:16:00.000-04:00</published><updated>2007-04-24T10:41:32.747-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="historical performance reporting"/><category scheme="http://www.blogger.com/atom/ns#" term="Systems monitoring"/><title type='text'>Systems monitoring - historical views - best practice</title><content type='html'>One of the best things I have seen is the standardized use of a monitoring framework with historical reporting for the technical aspects of a system (CPU, i/o, network, memory, database, kernel ..). &lt;br /&gt;&lt;br /&gt;There are several tools out there in the marketplace that do this. IBM Tivoli, HP Openview, BMC, EMC SMARTS (and then some), all offer solutions along these lines. The key is to instrument agents / data collectors across the estate (on each server) and have a central database &amp; reporting web-site that allows IT folks to select a node and display historical results around a wide variety of technical aspects. The value seems ambiguous, however, let me tell you that it makes my life much much easier. &lt;br /&gt;&lt;br /&gt;When in crisis mode, this data helps immensely. It is crucial data that tells you when something changed. It allows technical teams to quickly focus, analyze and resolve a set of issues that normally are thorny and contribute to large MTTR numbers on problem incidents. Yes, logging into the box and monitoring real time tells you there is a problem, however, a historical view tells you when something changed. Also, this is crucial for another best practice - server capacity management and monitoring. &lt;br /&gt;&lt;br /&gt;The key is universal rollout / standardization. Don&#39;t get trapped in the technology selection mode. Pick one and implement universally. This isn&#39;t difficult work, however, best implemented within your server provisioning process so that anything new automatically has the standardized framework. &lt;br /&gt;&lt;br /&gt;It is amazing how telling something as simple as a historical CPU profile is. You see processing/business utilization patterns, exactly when backups occur, batch jobs etc. and more importantly, when something CHANGED.</content><link rel='replies' type='application/atom+xml' href='http://www.knownbugs.org/feeds/200713081906112099/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/3109386887529685808/200713081906112099' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3109386887529685808/posts/default/200713081906112099'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3109386887529685808/posts/default/200713081906112099'/><link rel='alternate' type='text/html' href='http://www.knownbugs.org/2007/04/systems-monitoring-historical-views.html' title='Systems monitoring - historical views - best practice'/><author><name>Milan Gupta</name><uri>http://www.blogger.com/profile/13287099462062649030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3109386887529685808.post-4107927211821768163</id><published>2007-03-06T23:19:00.000-05:00</published><updated>2007-04-23T12:07:19.667-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="analyze table"/><category scheme="http://www.blogger.com/atom/ns#" term="cpu profile"/><category scheme="http://www.blogger.com/atom/ns#" term="database maintenance"/><category scheme="http://www.blogger.com/atom/ns#" term="oracle"/><title type='text'>database maintenance</title><content type='html'>&lt;a href=&quot;http://technorati.com/tag/oracle&quot; rel=&quot;tag&quot;&gt;Oracle&lt;/a&gt; &lt;a href=&quot;http://technorati.com/tag/database%20maintenance&quot; rel=&quot;tag&quot;&gt;database maintenance&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;One recurring theme I see with junior dbas is the lack of understanding of the &#39;&lt;a href=&quot;http://technorati.com/tag/analyze%20table&quot; rel=&quot;tag&quot;&gt;analyze table&lt;/a&gt;&#39; proceedure. This is crucial for proper database performance. Can be scheduled  once a week or more frequently based on system profile.&lt;br /&gt;&lt;br /&gt;Basically, the &#39;analyze table&#39; command gathers statistics on the table and stores them internally as hints for the query optimizer. Indexes are picked up based on these statistics. For dynamic tables (large growth or shrinkage or changes to key indexed fields), it is imperative this is performed frequently. For safety, run it anyway after key database operations.&lt;br /&gt;&lt;br /&gt;Know what &#39;good&#39; looks like for your system. Baseline and save (better still commit to memory) the key behavioral aspects of your system eg. cpu utilization profile, throughput, response times, i/o levels etc. That way, you will know when this profile changes and will be a key trigger for you to action for early detection of problems. More importantly, when you implement change, you should compare the before and after profile of your system.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://technorati.com/tag/milan%20gupta&quot; rel=&quot;tag&quot;&gt;Milan Gupta&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.knownbugs.org/feeds/4107927211821768163/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/3109386887529685808/4107927211821768163' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3109386887529685808/posts/default/4107927211821768163'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3109386887529685808/posts/default/4107927211821768163'/><link rel='alternate' type='text/html' href='http://www.knownbugs.org/2007/03/database-maintenance.html' title='database maintenance'/><author><name>Milan Gupta</name><uri>http://www.blogger.com/profile/13287099462062649030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3109386887529685808.post-8396204092919474672</id><published>2007-03-03T06:14:00.000-05:00</published><updated>2007-04-23T11:22:52.900-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="change"/><category scheme="http://www.blogger.com/atom/ns#" term="change management"/><title type='text'>Change  management</title><content type='html'>The first question I ask a team when something breaks is &lt;em&gt;what changed &lt;/em&gt;?. 99% of problems end up relating to change. Amazing !!&lt;br /&gt;&lt;br /&gt;I did not put &lt;em&gt;change&lt;/em&gt; as the top problem within my post on what keeps me busy because I believe that change is good. It is necessary and as inevitable as evolution.  It is necessary for healthy growth. So IT cannot take the simplistic approach of &#39;if it ain&#39;t broke, don&#39;t fix it!&#39;.&lt;br /&gt;&lt;br /&gt;Any decent sized telco typically has an IT estate of 3000+ systems, 50K+ computing assets and 10K+ people all changing stuff. Is it any surprise that systems availability &amp; stability actually goes up during christmas ?&lt;br /&gt;&lt;br /&gt;What is key to establishing a high performance IT organization is managing change effectively. It is instrumental to have a proper inventory of systems, more importantly, their inter-dependencies and impact on business process. Most importantly, a team that understands this model.&lt;br /&gt;&lt;br /&gt;While end-to-end testing frameworks can flesh out unexpected side-effects of change, it isn&#39;t reasonable to expect that all work will go through this framework. With 10K+ employees, there will be leakage and impact. Specifically around stuff that you would least suspect.&lt;br /&gt;&lt;br /&gt;Proper and effective change management framework would consist of the following :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;A team as described above that performs the function of a change approval board (centralized or decentralized)&lt;/li&gt;&lt;li&gt;An e2e testing framework that certifies each change&lt;/li&gt;&lt;li&gt;An effective communication framework typically a change ticket process that notifies the relevant enterprise pieces that are potentially impacted by the change&lt;/li&gt;&lt;li&gt;Leadership &amp; support from the development teams on implementing change. &lt;/li&gt;&lt;li&gt;Post-implementation verification of change (ideally monitoring key business KPIs before and after the change). &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;author&gt;Milan Gupta&lt;/author&gt;&lt;br /&gt;&lt;managingEditor&gt;milangupta1@gmail.com&lt;/managingEditor&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.knownbugs.org/feeds/8396204092919474672/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/3109386887529685808/8396204092919474672' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3109386887529685808/posts/default/8396204092919474672'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3109386887529685808/posts/default/8396204092919474672'/><link rel='alternate' type='text/html' href='http://www.knownbugs.org/2007/03/change-management.html' title='Change  management'/><author><name>Milan Gupta</name><uri>http://www.blogger.com/profile/13287099462062649030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3109386887529685808.post-8951799032602710612</id><published>2007-03-03T05:23:00.000-05:00</published><updated>2008-12-11T11:35:15.124-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="application support"/><category scheme="http://www.blogger.com/atom/ns#" term="organizational behavior"/><category scheme="http://www.blogger.com/atom/ns#" term="proactive"/><category scheme="http://www.blogger.com/atom/ns#" term="reactive"/><title type='text'>proactive vs. reactive application support</title><content type='html'>&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWhDXLDD2kVQJ2VfB_oNaoqLCGFdLha8cDCvRvTMzt0F5VlyD6UK0kbHCOA8tbbZ3lGwEr6B48L3gDN9lNO8eLapGQWUGw2yR0HjzvvUWgt2dA3cariZa3USwghkT7N08r8A14L8xovzc/s1600-h/App+Support+Model.gif&quot;&gt;&lt;img id=&quot;BLOGGER_PHOTO_ID_5037642255305044498&quot; style=&quot;FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWhDXLDD2kVQJ2VfB_oNaoqLCGFdLha8cDCvRvTMzt0F5VlyD6UK0kbHCOA8tbbZ3lGwEr6B48L3gDN9lNO8eLapGQWUGw2yR0HjzvvUWgt2dA3cariZa3USwghkT7N08r8A14L8xovzc/s320/App+Support+Model.gif&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;A key aspect of a good application support model that is often missed is the importance of each application support group behaving as a customer of a downstream dependent system.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;A common fallacy is to assume that each application and its support group is an independent unit purely acting on a reactive basis. This puts the onus of taking a business user problem and translating it to a specific application problem, onto some form of a centralized service management wrap. Not the most efficient as most problems are first detected within the application support teams (provided they are awake). It is imperative that they drive the resolution of the problem to their downstream dependent system.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;As an example, consider the picture wherein the application arena is a simple service order processing chain wherein system A is some CRM system, system B is an orchestration / workflow layer, system C is a inventory / assignment system and system D is a service activation system. Typically, there is tight coupling and dependencies between each of these layers - any anomalies impact business KPIs and flow-through. The users of the CRM systems will see these anomalies as orders not being completed on time. The orchestration system will see these as orders stuck at a particular stage. The problem may actually lie within the assign / inventory layer or the service activation layer which also will be noticed by the respective app support teams. &lt;/div&gt;&lt;br /&gt;&lt;div&gt;Behavior within the teams should be as follows :&lt;/div&gt;&lt;div&gt;1&gt; Ideally, the bridge monitoring system should have received alarms and alerted the respective systems .. this would represent IT being pro-active. &lt;/div&gt;&lt;div&gt;2&gt; Failsafe on this would be the app-support team for the CRM system creating an IT fault on the orchestration system who in turn would transfer the fault to the assign / inventory system. Not the most effective, however, necessary as a failsafe and reinforces proper organizational behavior. For complex scenarios, a service management layer may be introduced. I still consider this pro-active. &lt;/div&gt;&lt;div&gt;3&gt; Least ideal is 1 &amp; 2 failing with the users reporting the fault - this is IT being reactive. &lt;/div&gt;&lt;br /&gt;The usual breakdown I observe is in #2 with companies mostly operating in #3. #1 requires a sophesticated business process monitoring infrastructure, something I consider to be still an industry wide problem given state of investment and commitment to such projects within an IT portfolio. Breakdown in #2 is usually an artifact of organizational boundaries and/or poor skillsets &amp;amp; focus. Each team operates in a silo and purely on a reactive basis. A truly dangerous place to be for any CIO.&lt;br /&gt;&lt;br /&gt;&lt;author&gt;Milan Gupta&lt;/author&gt;&lt;br /&gt;&lt;managingEditor&gt;milangupta1@gmail.com&lt;/managingEditor&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.knownbugs.org/feeds/8951799032602710612/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/3109386887529685808/8951799032602710612' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3109386887529685808/posts/default/8951799032602710612'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3109386887529685808/posts/default/8951799032602710612'/><link rel='alternate' type='text/html' href='http://www.knownbugs.org/2007/03/application-support-organizational.html' title='proactive vs. reactive application support'/><author><name>Milan Gupta</name><uri>http://www.blogger.com/profile/13287099462062649030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWhDXLDD2kVQJ2VfB_oNaoqLCGFdLha8cDCvRvTMzt0F5VlyD6UK0kbHCOA8tbbZ3lGwEr6B48L3gDN9lNO8eLapGQWUGw2yR0HjzvvUWgt2dA3cariZa3USwghkT7N08r8A14L8xovzc/s72-c/App+Support+Model.gif" height="72" width="72"/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3109386887529685808.post-485286962871686102</id><published>2007-03-01T19:04:00.000-05:00</published><updated>2007-04-23T11:22:00.463-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="asynchronous"/><category scheme="http://www.blogger.com/atom/ns#" term="synchronous"/><category scheme="http://www.blogger.com/atom/ns#" term="transaction performance"/><category scheme="http://www.blogger.com/atom/ns#" term="transaction variance"/><title type='text'>synchronous vs asynchronous transactions</title><content type='html'>If you have ever built call center apps .. you will already have learned this lesson. For some reason, we keep repeating these mistakes over and over and over ...&lt;br /&gt;&lt;br /&gt;Remember - synchronous transactions for time-sensitive stuff. For transactions that a call center rep has to wait on (while customer is on the phone) .. use synchronous backplane eg. web-services. For others (non-time sensitive), use asynchronous. Your messaging architecture MUST support both.&lt;br /&gt;&lt;br /&gt;The thing that creates havoc the most in call centers is transaction performance variance. Not always just transaction performance. If something consistently takes 90 seconds, you will find your call center reps work around this poor performance by predicting this period of wait and filling it with other work or small talk with the customer. What makes call center agents mad is transaction variance - sometimes it only takes 4 secs, sometimes 300. That&#39;s when the customer on the line gets the embarrassed comments - &#39;my system is slow .. my system has frozen up ..&#39; etc. etc.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;author&gt;Milan Gupta&lt;/author&gt;&lt;br /&gt;&lt;managingEditor&gt;milangupta1@gmail.com&lt;/managingEditor&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.knownbugs.org/feeds/485286962871686102/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/3109386887529685808/485286962871686102' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3109386887529685808/posts/default/485286962871686102'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3109386887529685808/posts/default/485286962871686102'/><link rel='alternate' type='text/html' href='http://www.knownbugs.org/2007/03/synchronous-vs-asynchronous.html' title='synchronous vs asynchronous transactions'/><author><name>Milan Gupta</name><uri>http://www.blogger.com/profile/13287099462062649030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3109386887529685808.post-3901930081303081215</id><published>2007-03-01T18:29:00.000-05:00</published><updated>2007-04-23T11:21:41.051-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="application support"/><category scheme="http://www.blogger.com/atom/ns#" term="service  management"/><category scheme="http://www.blogger.com/atom/ns#" term="systems availability"/><category scheme="http://www.blogger.com/atom/ns#" term="systems effectiveness"/><title type='text'>systems availability vs. systems effectiveness</title><content type='html'>First of a series of posts where I will cover the area of application support &amp; service management. This is probably one of the largest problem areas in an IT portfolio and the number one reason that leads to CIO departures.&lt;br /&gt;&lt;br /&gt;Providing excellent day-to-day service ! What is the role of IT in this ? What is the role of a particular application support team ?&lt;br /&gt;&lt;br /&gt;A typical CIO challenge is to take the IT group up the value chain within a company. This applies to all disciplines including providing day-to-day support.&lt;br /&gt;&lt;br /&gt;Support teams and IT value is typically stuck at the systems availability monitoring and reporting level. 99.95% uptime. Famous words. We&#39;ve all heard this. Somehow that 0.05% seems to hide a massive amount of operational impact. Putting that under the microscope usually leads to startling revelations.&lt;br /&gt;&lt;br /&gt;An alternate strategy is to focus on systems effectiveness - my name for nothing other than business process monitoring, however, this is a little different. Here, you apply the concepts of business process monitoring in a &#39;systemy&#39; way.&lt;br /&gt;&lt;br /&gt;To clarify, each system typically performs a specific function within a process chain. Systems monitoring at the technical level covers all the engineering aspects of the platform eg.&lt;br /&gt;Database, hardware, CPU, I/O, Filesystem space etc. Usually, this stuff is trapped using tools like HP Openview, BMC etc. and monitored by a 7x24 bridge operation. When alerts are received, automatic callouts are performed with an extra pair of eyes to make sure.&lt;br /&gt;&lt;br /&gt;Better groups take this up one level. Monitoring of log files for errors eg. SQL errors, core dumps, etc. However, this is also usually insufficient. Even better groups start getting sophesticated around application level capacity monitoring - eg. thread utilization, queuing behavior and other subtleties around bad jvm characteristics eg. full GCs.&lt;br /&gt;&lt;br /&gt;However, that also isn&#39;t usually sufficient. The trick is to customize a set of measures that are relevant to the business use of the application and monitor for that. Keep your finger on that pulse and magic happens. Your operational partners will no longer care if the system goes up or down .. they are happy for you to measure based on the business performance. An example of this is to measure performance response time and variance for transactions that are time sensitive - eg. those that a call center application calls on the back-office systems. Alternately, in the case of workflow, some measure of cycle time and right first time (on-time being trivial case of RFT).&lt;br /&gt;&lt;br /&gt;Do this and suddenly, you have gone up the value chain and made your life simpler. Your teams grow as they go from being purely reactive to being proactive. Also, more importantly, they learn the operational side of things and recognize exactly the criticality and value of their system in the larger picture.&lt;br /&gt;&lt;br /&gt;This isn&#39;t anything fancy. I&#39;m not talking about a full-scale business process monitoring framework here. Full BPM requires a standardization of metrics and process and usually abstracts away from the systems design and implementation. For architectures that are a mix of legacy and new, this is usually never perfect either. I&#39;m talking about a simple application of common sense to what you monitor. They challenge is usually understanding the design of the system and extrapolating the meaningful set of measures that the end-to-end business process depends on. This is usually very specific to the design and implementation of the system as the data must be harvested frequently and usually in real-time.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;author&gt;Milan Gupta&lt;/author&gt;&lt;br /&gt;&lt;managingEditor&gt;milangupta1@gmail.com&lt;/managingEditor&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.knownbugs.org/feeds/3901930081303081215/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/3109386887529685808/3901930081303081215' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3109386887529685808/posts/default/3901930081303081215'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3109386887529685808/posts/default/3901930081303081215'/><link rel='alternate' type='text/html' href='http://www.knownbugs.org/2007/03/systems-availability-vs-systems.html' title='systems availability vs. systems effectiveness'/><author><name>Milan Gupta</name><uri>http://www.blogger.com/profile/13287099462062649030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3109386887529685808.post-7777171280122117029</id><published>2007-02-14T18:42:00.000-05:00</published><updated>2007-04-23T11:21:12.549-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="common IT problems"/><category scheme="http://www.blogger.com/atom/ns#" term="IT 101"/><category scheme="http://www.blogger.com/atom/ns#" term="IT execution"/><category scheme="http://www.blogger.com/atom/ns#" term="lessons learned"/><category scheme="http://www.blogger.com/atom/ns#" term="project execution"/><category scheme="http://www.blogger.com/atom/ns#" term="Software 101"/><title type='text'>Project Execution</title><content type='html'>For any significant development project or classical integration programme, there are a number of necessary ingredients, the absence of which usually are a recipe for disaster.&lt;br /&gt;&lt;br /&gt;1&gt; The right leadership.&lt;br /&gt;Any project must have its technical leadership and its business leadership straight. Yes, this boils down to two people who will challenge each other and maintain the necessary checks and balances.&lt;br /&gt;&lt;br /&gt;2&gt; Management &amp; Escalation.&lt;br /&gt;One of the biggest blunders and chaotic environments is where you have non-technical management managing technical work. Recipe for disaster as you will spend you life on escalations that look complex and scary, however, are very simply solved. Also, a lack of understanding of the development cycle usually leads to pre-mature questions from the management which in turn leads to pre-mature decision making, needless work etc. Eg. on one of my projects, being the  architect / technical lead, I was asked (by the VP) for a technical specification of the system within the first month of what was a 2 yr project !! Understand that managers want to know when things will get done even before they allow anything to start. Developers will not reliably tell you when things will get done until they are actually done. Such is life and the variability of agile. You are welcome to use waterfall if you want a 100% schedule predictability, however, understand, that you are basically getting 1 unit of work at a cost of 5 (the addl. 4 are padding to manage the risks/unknowns which are inherent in most projects). On structure, you have basically two philosophies, architect/tech lead report to the manager or manager report to the architech / tech lead. I vote for the latter. As long as the manager / project manager understand their role wrt the tech lead / architect, things typically are fine. Watch for this dynamic very very carefully as this is where bad bad decisions are usually made. You do NOT want a non-technical person making a technical decision. &lt;br /&gt;&lt;br /&gt;3&gt; Top talent recruiting - the best attract the best. No one likes carrying dead weight. Once you seed the team correctly, this will be self-correcting. I have and never will believe in the 200+ project team size. I have done amazing things with a 40 person development team. Remember, the software design and tools you choose itself brings limitations on how many developers can work concurrently and productively.&lt;br /&gt;&lt;br /&gt;4&gt; Pay attention to the learning curve. Things will not progress at the pace you would expect until you have a seed development team that has matured sufficiently around their understanding of the business problem. These will become your technical leads as your project grows. It is wise to invest this learning in the best technical developers from the start as they are the ones who are going to produce the software.&lt;br /&gt;&lt;br /&gt;5&gt; Match your technology choices to your developer team skills. If you want your project to be the guinea pig for the &#39;next cool new tool / technology&#39; .. OK .. but understand your risks. You need the time to get your developers up to speed on this.&lt;br /&gt;&lt;br /&gt;6&gt; Establish the right roles within the team from the start.&lt;br /&gt;Architect/Designer, Developer/Tech Lead, Business SME/Tester, Project Manager, Test/Development Environment Manager, Application support lead, Deployment Lead, Integration Lead (Designer), Business Implementation Lead (Training/Comms/Metrics)&lt;br /&gt;&lt;br /&gt;7&gt; Get and stay close to the end-user/customer.&lt;br /&gt;The shorter the communication chain between an end user and a developer, the greater the chance of success.&lt;br /&gt;&lt;br /&gt;8&gt; Test from the start - your user stories are really test cases in disguise. Pay attention to test data. &lt;a href=&quot;http://www.mercury.com/us/products/quality-center/testdirector/&quot;&gt;Test Director &lt;/a&gt;is a decent tool to document your tests and track your coverage.&lt;br /&gt;&lt;br /&gt;9&gt; Solve the hard problems first. Focus on the unknowns as early as possible. PANIC EARLY !!&lt;br /&gt;Its only great teams that have a 40 hr work week in their final week before deployment. No magic here .. it comes from spending the weekends before that so that you are coasting in style when you near the finish line.&lt;br /&gt;&lt;br /&gt;10&gt; Develop/Test with real data as early as possible.&lt;br /&gt;At the early phases of a project, the developers must have flexibility over the testers. This is the best-effort co-operative testing phase. It is extremely frustrating for the testers as the productivity is low. If you are using end-users, you must have alignment, else, you will be fire-drilling all the time trying to manage perceptions of problems from above. This phase of testing is key as your end goal is to get as much early feedback to the developers. During the last phase of the project, the testers must be the enemy of the developers as they move to the &#39;antagonistic&#39; testing and the user acceptance testing phase. Here, the testers must be the focus with full support from the developers and the test environment leads. Another best practice is to have a repeatable set of test cases rather than a set of testers. This provides a very easy way to manage stakeholders as anybody who wants a say, can review and add to the test cases. The better they are, the better your chances for a quality delivery.&lt;br /&gt;&lt;br /&gt;11&gt; Co-locate as much as possible.&lt;br /&gt;NB&gt; Do not assume co-location means same building or floor. Even team members strewn across the floor randomly will not have the same effectiveness as an integration pod or 6 adjascent cubicles housing a sub-team working on a common area. There is truly an amazing effect on productivity. Make the hard call and force this if you are getting into the red zone. I understand the day and age of offshoring, however, in crunch mode, you cannot replace good old co-location with anything. Remember, communication/organizational barriers is the most common problem to integration problems. The main problems will be at the boundaries.&lt;br /&gt;&lt;br /&gt;12&gt; Basic software engineering disciplines - makefiles, daily/continuous builds, regression test automation, code reviews, use of software quality and analysis tools (purify, jprobe, ..).&lt;br /&gt;&lt;br /&gt;13&gt; If you are using 3rd party tools, understand your risks. There will be issues and it is up to you to design around them. Remember, you will have limited flexibility to fix/modify the 3rd party tool. A third party tool does not relieve you from the need to understand the details.&lt;br /&gt;&lt;br /&gt;14&gt; Certain roles go hand in hand with accountabilities and later roles in the project lifecycle eg. it is ideal to have the people who specified the user requirements also be the testers; the solution designers/architects be also intrinsic in the integration / testing / defect resolution of the project.&lt;br /&gt;&lt;br /&gt;15&gt; Plan for production - clean up the logfiles - meaningful and concise. Write the required business process monitoring reports that allow you to ensure the platform&#39;s effectiveness post production. Do this early as this will allow you to identify gaps in the design / functionality that can make your life extremely difficult post production. A easy example is for a workflow based system, have the ability to take a snapshot of the in-flight jobs and where they are. Have a clear model of expected execution profile so you can catch exceptions, performance issues, bottlenecks, etc.&lt;br /&gt;&lt;br /&gt;16&gt; Measure before you implement, measure after you implement .. you are not done until you restabilize the business KPIs (and this will take you a month). Your end-users may not notice things as they are new to the system too .. so, don&#39;t expect to get the usual level of guidance from operation on &#39;problem areas / defects&#39;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;author&gt;Milan Gupta&lt;/author&gt;&lt;br /&gt;&lt;managingEditor&gt;milangupta1@gmail.com&lt;/managingEditor&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.knownbugs.org/feeds/7777171280122117029/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/3109386887529685808/7777171280122117029' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3109386887529685808/posts/default/7777171280122117029'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3109386887529685808/posts/default/7777171280122117029'/><link rel='alternate' type='text/html' href='http://www.knownbugs.org/2007/02/project-execution.html' title='Project Execution'/><author><name>Milan Gupta</name><uri>http://www.blogger.com/profile/13287099462062649030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry></feed>