<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>Azedi Technology</title>
  <link rel="alternate" type="text/html" href="http://azeditech.com"/>
  <link rel="self" type="application/atom+xml" href="http://azeditech.com/atom.xml"/>
  <id>http://azeditech.com/atom.xml</id>
  <updated>2007-12-24T07:12:40-08:00</updated>
  <entry>
    <title>Duct tape and technical debt</title>
    <link rel="alternate" type="text/html" href="http://azeditech.com/duct-tape-technical-debt.html" />
    <id>http://azeditech.com/duct-tape-technical-debt.html</id>
    <published>2009-10-15T01:48:32-07:00</published>
    <updated>2009-10-15T01:48:32-07:00</updated>
    <author>
      <name>kief</name>
    </author>
    <category term="architecture" />
    <category term="development" />
    <summary type="html"><![CDATA[<p>I received an email from my boss with a link to that <a href="http://www.joelonsoftware.com/items/2009/09/23.html">Spolsky piece on duct tape programmers</a> which had previously <a href="http://azeditech.com/developers/engineers-and-hackers.html">got my blood up</a>. The boss obviously doesn't read my blog, but he's been around the block enough that he didn't take Spolsky's piece at face value. </p>
<p>Nevertheless, when Martin Fowler's recent <a href="http://martinfowler.com/bliki/TechnicalDebtQuadrant.html">post on technical debt</a> came through my reader, I shot the link back to my boss. </p>
<blockquote><p>
Reckless debt may not be inadvertent. A team may know about good design practices, even be capable of practicing them, but decide to go "quick and dirty" because they think they can't afford the time required to write clean code. I agree with Uncle Bob that this is usually a reckless debt, because people underestimate where the <a href="http://martinfowler.com/bliki/DesignPayoffLine.html">DesignPayoffLine</a> is. The whole point of good design and clean code is to make you go faster - if it didn't people like Uncle Bob, Kent Beck, and Ward Cunningham wouldn't be spending time talking about it.
</p>
</blockquote>
<p>Duct tape design topic (not Fowler's term, he doesn't refer to Spolsky's post at all) is only a quarter of the quadrant in Fowler's post, the whole post is worth reading.</p>
<p>The inverse to the technical debt metaphor is the investment metaphor, i.e. investing time to build a solid architecture, or refactor, or whatever. This metaphor is widely used, as it's a natural one. Of course, it potentially runs counter to the <a href="http://en.wikipedia.org/wiki/You_ain%27t_gonna_need_it">YAGNI</a> principle. Interestingly, Martin Fowler is not an uncritical advocate of YAGNI, he expresses his ambivalence in his <a href="http://martinfowler.com/articles/designDead.html">Is Design Dead</a> piece. </p>
<p>I think it would be worth drawing up a quadrant for <a href="http://en.wikipedia.org/wiki/You_ain%27t_gonna_need_it">YAGNI</a> v. <a href="http://en.wikipedia.org/wiki/Big_Design_Up_Front">BDUF</a> similar to the one for technical debt. I'm not sure what the axes would be. One would probably be the level of knowledge confidence you have. </p>
<p>"Knowledge confidence" refers to how well you understand your requirements and the technologies and patterns you will use to address them, and the confidence you have that these will not change. In other words, are you sure whether you're gonna need it, or could it end up being de-scoped to hit a delivery date? What's the cost of putting in a simpler solution that won't necessarily address every requirement, then refactoring it as you reach that requirement in the backlog? How does it compare to the cost of developing a more complex solution up front that supports requirements you never get to, meaning there are requirements in between that get left out as well because you spent time on the complexity you didn't need?</p>
    ]]></summary>
    <content type="html"><![CDATA[<p>I received an email from my boss with a link to that <a href="http://www.joelonsoftware.com/items/2009/09/23.html">Spolsky piece on duct tape programmers</a> which had previously <a href="http://azeditech.com/developers/engineers-and-hackers.html">got my blood up</a>. The boss obviously doesn't read my blog, but he's been around the block enough that he didn't take Spolsky's piece at face value. </p>
<p>Nevertheless, when Martin Fowler's recent <a href="http://martinfowler.com/bliki/TechnicalDebtQuadrant.html">post on technical debt</a> came through my reader, I shot the link back to my boss. </p>
<blockquote><p>
Reckless debt may not be inadvertent. A team may know about good design practices, even be capable of practicing them, but decide to go "quick and dirty" because they think they can't afford the time required to write clean code. I agree with Uncle Bob that this is usually a reckless debt, because people underestimate where the <a href="http://martinfowler.com/bliki/DesignPayoffLine.html">DesignPayoffLine</a> is. The whole point of good design and clean code is to make you go faster - if it didn't people like Uncle Bob, Kent Beck, and Ward Cunningham wouldn't be spending time talking about it.
</p></blockquote>
<p>Duct tape design topic (not Fowler's term, he doesn't refer to Spolsky's post at all) is only a quarter of the quadrant in Fowler's post, the whole post is worth reading.</p>
<p>The inverse to the technical debt metaphor is the investment metaphor, i.e. investing time to build a solid architecture, or refactor, or whatever. This metaphor is widely used, as it's a natural one. Of course, it potentially runs counter to the <a href="http://en.wikipedia.org/wiki/You_ain%27t_gonna_need_it">YAGNI</a> principle. Interestingly, Martin Fowler is not an uncritical advocate of YAGNI, he expresses his ambivalence in his <a href="http://martinfowler.com/articles/designDead.html">Is Design Dead</a> piece. </p>
<p>I think it would be worth drawing up a quadrant for <a href="http://en.wikipedia.org/wiki/You_ain%27t_gonna_need_it">YAGNI</a> v. <a href="http://en.wikipedia.org/wiki/Big_Design_Up_Front">BDUF</a> similar to the one for technical debt. I'm not sure what the axes would be. One would probably be the level of knowledge confidence you have. </p>
<p>"Knowledge confidence" refers to how well you understand your requirements and the technologies and patterns you will use to address them, and the confidence you have that these will not change. In other words, are you sure whether you're gonna need it, or could it end up being de-scoped to hit a delivery date? What's the cost of putting in a simpler solution that won't necessarily address every requirement, then refactoring it as you reach that requirement in the backlog? How does it compare to the cost of developing a more complex solution up front that supports requirements you never get to, meaning there are requirements in between that get left out as well because you spent time on the complexity you didn't need?</p>
    ]]></content>
  </entry>
  <entry>
    <title>The Engineer and Hacker Continuum</title>
    <link rel="alternate" type="text/html" href="http://azeditech.com/developers/engineers-and-hackers.html" />
    <id>http://azeditech.com/developers/engineers-and-hackers.html</id>
    <published>2009-09-24T04:56:22-07:00</published>
    <updated>2009-09-24T04:56:22-07:00</updated>
    <author>
      <name>kief</name>
    </author>
    <category term="development" />
    <summary type="html"><![CDATA[<p>Joel Spolsky's recent piece on <a href="http://www.joelonsoftware.com/items/2009/09/23.html">Duct Tape Programmers</a> takes a characteristically extreme position that programmers who get stuff done simply and quickly are wonderful. I say characteristically extreme, because Spolsky has a columnist's approach to writing, i.e. take an extreme position that will get people worked up, although (actually because) it has obvious holes to pick.</p>
<p>I like to say that programmers fall on a Engineer / Hacker Continuum, and that each end has both positive and negative examples. On the engineering end, you have people who like to thoroughly think through what they are doing. The negative version of the engineer is the over-engineering architecture astronaut. They make everything harder than it needs to be. Their first reaction to any change request is that it's probably impossible, and in any case will be difficult and expensive, needing major parts of the system to be refactored, frameworks ripped out, etc.</p>
<p>On the opposite end of the spectrum is the Hacker. Managers love the hacker, because their first reaction to anything is that it'll be easy, and by the time the managers finish discussing whether to do it, the Hacker has already knocked it up. This is Joel's Duct Tape Programmer.</p>
<p>The evil side of the Hacker is that many (not all) of this type of programmer get things done quickly because they don't bother to think everything through, much less test it (Joel's dream programmer thinks unit tests are a luxury). They've coded it up, the code compiles, and they can click through the happy path on their development machine. Ship it! Oh, wait, I forgot to commit my code to the repository. Done, ship it!</p>
<p>Of course this results in bugs, customer complaints, and general disaster, at least if the company has any real customers. It works great for startups, because it gives them something to demo ("we have a working application"), and nobody is using it so the bugs don't matter.</p>
<p>So the positive flipside of the Engineer is that they take care, think things through, and design and build solid applications.</p>
<p>I've worked with Hackers who develop solid, clean, simple code, They're wonderful, they get stuff done quick. I've also worked with Engineers who keep their designs simple and effective. Also wonderful. But more often I've worked with developers who will slide into the negative versions of these if left to their own devices. </p>
<p>A development manager who follows Spolsky's principle of worshipping the Duct Tape Programmer, thinking they're always going to get the positive version of the Hacker work (code that's developed quickly, **and** is solid, fast, and scalable because it's been written simply and cleanly), are eventually going to end up tearing their hair out, not understanding why nobody can get the app to stop crashing, why new features take forever to develop even for their golden Hackers because nobody can untangle the spaghetti (in reality the Hackers end up writing new apps, because it's faster, which creates a new kind of spaghetti).</p>
    ]]></summary>
    <content type="html"><![CDATA[<p>Joel Spolsky's recent piece on <a href="http://www.joelonsoftware.com/items/2009/09/23.html">Duct Tape Programmers</a> takes a characteristically extreme position that programmers who get stuff done simply and quickly are wonderful. I say characteristically extreme, because Spolsky has a columnist's approach to writing, i.e. take an extreme position that will get people worked up, although (actually because) it has obvious holes to pick.</p>
<p>I like to say that programmers fall on a Engineer / Hacker Continuum, and that each end has both positive and negative examples. On the engineering end, you have people who like to thoroughly think through what they are doing. The negative version of the engineer is the over-engineering architecture astronaut. They make everything harder than it needs to be. Their first reaction to any change request is that it's probably impossible, and in any case will be difficult and expensive, needing major parts of the system to be refactored, frameworks ripped out, etc.</p>
<p>On the opposite end of the spectrum is the Hacker. Managers love the hacker, because their first reaction to anything is that it'll be easy, and by the time the managers finish discussing whether to do it, the Hacker has already knocked it up. This is Joel's Duct Tape Programmer.</p>
<p>The evil side of the Hacker is that many (not all) of this type of programmer get things done quickly because they don't bother to think everything through, much less test it (Joel's dream programmer thinks unit tests are a luxury). They've coded it up, the code compiles, and they can click through the happy path on their development machine. Ship it! Oh, wait, I forgot to commit my code to the repository. Done, ship it!</p>
<p>Of course this results in bugs, customer complaints, and general disaster, at least if the company has any real customers. It works great for startups, because it gives them something to demo ("we have a working application"), and nobody is using it so the bugs don't matter.</p>
<p>So the positive flipside of the Engineer is that they take care, think things through, and design and build solid applications.</p>
<p>I've worked with Hackers who develop solid, clean, simple code, They're wonderful, they get stuff done quick. I've also worked with Engineers who keep their designs simple and effective. Also wonderful. But more often I've worked with developers who will slide into the negative versions of these if left to their own devices. </p>
<p>A development manager who follows Spolsky's principle of worshipping the Duct Tape Programmer, thinking they're always going to get the positive version of the Hacker work (code that's developed quickly, **and** is solid, fast, and scalable because it's been written simply and cleanly), are eventually going to end up tearing their hair out, not understanding why nobody can get the app to stop crashing, why new features take forever to develop even for their golden Hackers because nobody can untangle the spaghetti (in reality the Hackers end up writing new apps, because it's faster, which creates a new kind of spaghetti).</p>
    ]]></content>
  </entry>
  <entry>
    <title>Is Spring still lightweight?</title>
    <link rel="alternate" type="text/html" href="http://azeditech.com/spring/is-it-still-lightweight.html" />
    <id>http://azeditech.com/spring/is-it-still-lightweight.html</id>
    <published>2009-09-23T01:12:08-07:00</published>
    <updated>2009-09-23T01:30:58-07:00</updated>
    <author>
      <name>kief</name>
    </author>
    <category term="spring" />
    <summary type="html"><![CDATA[<p>The <a href="http://www.springframework.org/">Spring Framework</a> emerged as the lightweight alternative to EJB for Java developers. It was simple, sensible, and had low overhead for designing, developing, and running applications. Over time it has grown from the platform of choice of subversive, technically-driven teams who want to get things done effectively, into the platform of choice for Enterprise Java development teams.</p>
<p>This is great, the best technology has won. But now Spring has become <a href="http://www.springsource.com/">a serious company</a>, and acquired by <a href="http://www.vmware.com">a bigger company</a> which itself is majority owned by a <a href="http://www.emc.com/">massive company</a>. And on the way, it's become something which smells to me like an Enterprise Solution.</p>
<p>I'm not talking about the corporate structure - I've got no problem with that in itself. And I'm not talking about the core framework itself, or even the family of extra components that have been acquired. I'm trying to get my head around the <a href="http://www.springsource.com/products/sts">development suites</a>, the <a href="http://www.springsource.com/products/tcserver">application servers</a>, the <a href="http://www.springsource.com/products/dmserver">other application servers</a>, (and now I see they even have a <a href="http://www.springsource.com/products/ers">web server</a>?).</p>
<p>Now, I have great respect for the guys who developed a lightweight Java platform that the pointy haired boss will sign off on using for corporate projects. If they are similarly packaging quality, useful open source software like Eclipse, Tomcat, and OSGi server, and so on, so that it makes life easier for designing, developing, and running well-engineered applications based on the principles of simplicity, then rock on, let me at it.</p>
<p>But I can't make heads or tails of the Spring Source suite of solution offerings. I have a look at the pricing, and I can't see the practical difference between these and offerings from IBM and the rest. What I do see is going down this road makes my cloud strategy awkward. I can't dynamically add and remove server images in response to useage requirements if I have to count the CPU's and pay a thousands of bucks every time I do so (waiting for the purchase to be approved by corporate each time). So it's not very lightweight from that perspective.</p>
<p>And I can't even work out what each Spring Source product does and whether it makes sense for me to even consider spending the cash, I quickly get bogged down by solution-speak every time I try to get a quick understanding. Then I saw a notice about <a href="http://www.springsource.com/training/dd001">Discovery Days</a>, and hey! a day-long seminar which goes over the various Spring Source solution offerings and explains what the hell they are, sounds perfect. Oh, wait, it costs £400. They want me to pay to go to their sales presentation. </p>
<p>Bleh.</p>
    ]]></summary>
    <content type="html"><![CDATA[<p>The <a href="http://www.springframework.org/">Spring Framework</a> emerged as the lightweight alternative to EJB for Java developers. It was simple, sensible, and had low overhead for designing, developing, and running applications. Over time it has grown from the platform of choice of subversive, technically-driven teams who want to get things done effectively, into the platform of choice for Enterprise Java development teams.</p>
<p>This is great, the best technology has won. But now Spring has become <a href="http://www.springsource.com/">a serious company</a>, and acquired by <a href="http://www.vmware.com">a bigger company</a> which itself is majority owned by a <a href="http://www.emc.com/">massive company</a>. And on the way, it's become something which smells to me like an Enterprise Solution.</p>
<p>I'm not talking about the corporate structure - I've got no problem with that in itself. And I'm not talking about the core framework itself, or even the family of extra components that have been acquired. I'm trying to get my head around the <a href="http://www.springsource.com/products/sts">development suites</a>, the <a href="http://www.springsource.com/products/tcserver">application servers</a>, the <a href="http://www.springsource.com/products/dmserver">other application servers</a>, (and now I see they even have a <a href="http://www.springsource.com/products/ers">web server</a>?).</p>
<p>Now, I have great respect for the guys who developed a lightweight Java platform that the pointy haired boss will sign off on using for corporate projects. If they are similarly packaging quality, useful open source software like Eclipse, Tomcat, and OSGi server, and so on, so that it makes life easier for designing, developing, and running well-engineered applications based on the principles of simplicity, then rock on, let me at it.</p>
<p>But I can't make heads or tails of the Spring Source suite of solution offerings. I have a look at the pricing, and I can't see the practical difference between these and offerings from IBM and the rest. What I do see is going down this road makes my cloud strategy awkward. I can't dynamically add and remove server images in response to useage requirements if I have to count the CPU's and pay a thousands of bucks every time I do so (waiting for the purchase to be approved by corporate each time). So it's not very lightweight from that perspective.</p>
<p>And I can't even work out what each Spring Source product does and whether it makes sense for me to even consider spending the cash, I quickly get bogged down by solution-speak every time I try to get a quick understanding. Then I saw a notice about <a href="http://www.springsource.com/training/dd001">Discovery Days</a>, and hey! a day-long seminar which goes over the various Spring Source solution offerings and explains what the hell they are, sounds perfect. Oh, wait, it costs £400. They want me to pay to go to their sales presentation. </p>
<p>Bleh.</p>
    ]]></content>
  </entry>
  <entry>
    <title>Chrome is not compelling enough for me. Yet.</title>
    <link rel="alternate" type="text/html" href="http://azeditech.com/chrome-not-yet-for-me.html" />
    <id>http://azeditech.com/chrome-not-yet-for-me.html</id>
    <published>2009-08-03T23:03:05-07:00</published>
    <updated>2009-08-03T23:11:06-07:00</updated>
    <author>
      <name>kief</name>
    </author>
    <summary type="html"><![CDATA[<p>I gave Google's <a href="http://www.google.co.uk/chrome/">Chrome</a> web browser another go, and after a bit less than a week I've gone back to FireFox. There are two reasons for this. </p>
<p>First, although Chrome might be faster when using Google's online apps, more stable since each tab is a separate process, etc., from a user experience point of view there is simply nothing compelling enough to make me _need_ to keep using Chrome. It isn't <a href="http://sethgodin.typepad.com/seths_blog/2009/08/fidelity-vs-convenience.html">ten times better</a> than the alternatives in any aspect of its use that I really notice on a regular basis. Firefox doesn't crash very often on me.</p>
<p>The second reason is plugins. Firefox has loads of plugins, which in effect means it has loads more functionality than is available in Chrome. In practice, there are probably only two or three plugins that I truly rely on. The first time I tried Chrome, shortly after it's release, I used it at work, and not for very long, because of FireFox's built in functionality for password management, and the password timeout plugin to enhance it. I use a lot of passwords when browsing at work, for the various online tools, test deployments of software, etc. I can't remember them all, but I don't want to just let Chrome remember them, and make them available to anyone who gains accesses to my PC. So I use a master password, and a timeout plugin that makes sure the master password is required fairly frequently.</p>
<p>This time around I used Chrome at home, and it turns out I don't rely on FireFox plugins quite as much in that context. However, last night I was surfing and ended up delving into a thread of links that seemed quite interesting for work, and wanted to save them to <a href="http://delicious.com">Delicious</a>. I'm used to using a FireFox plugin for this, and realized I'm incapable of living without it. That was the end of Chrome for me, for this round anyway.</p>
<p>Chrome will probably add a plugin API, but we'll see whether it helps it become more than a me-too in the browser market. Firefox has won a <a href="http://marketshare.hitslink.com/browser-market-share.aspx?qprid=0&amp;qpdt=1&amp;qpct=3&amp;qpcal=1&amp;qptimeframe=M&amp;qpsp=126">22% share of the market</a> by doing compelling things that IE didn't do at first, and didn't do well when they finally added them (tabbed browsing and plugins). Chrome's intended killer features seem to be that it runs complex online apps faster and more stably. Unfortunately for Chrome, FireFox is not currently slow or crashy enough to make this a clear win for most users, but perhaps as the online applications become increasingly complex it will matter.</p>
    ]]></summary>
    <content type="html"><![CDATA[<p>I gave Google's <a href="http://www.google.co.uk/chrome/">Chrome</a> web browser another go, and after a bit less than a week I've gone back to FireFox. There are two reasons for this. </p>
<p>First, although Chrome might be faster when using Google's online apps, more stable since each tab is a separate process, etc., from a user experience point of view there is simply nothing compelling enough to make me _need_ to keep using Chrome. It isn't <a href="http://sethgodin.typepad.com/seths_blog/2009/08/fidelity-vs-convenience.html">ten times better</a> than the alternatives in any aspect of its use that I really notice on a regular basis. Firefox doesn't crash very often on me.</p>
<p>The second reason is plugins. Firefox has loads of plugins, which in effect means it has loads more functionality than is available in Chrome. In practice, there are probably only two or three plugins that I truly rely on. The first time I tried Chrome, shortly after it's release, I used it at work, and not for very long, because of FireFox's built in functionality for password management, and the password timeout plugin to enhance it. I use a lot of passwords when browsing at work, for the various online tools, test deployments of software, etc. I can't remember them all, but I don't want to just let Chrome remember them, and make them available to anyone who gains accesses to my PC. So I use a master password, and a timeout plugin that makes sure the master password is required fairly frequently.</p>
<p>This time around I used Chrome at home, and it turns out I don't rely on FireFox plugins quite as much in that context. However, last night I was surfing and ended up delving into a thread of links that seemed quite interesting for work, and wanted to save them to <a href="http://delicious.com">Delicious</a>. I'm used to using a FireFox plugin for this, and realized I'm incapable of living without it. That was the end of Chrome for me, for this round anyway.</p>
<p>Chrome will probably add a plugin API, but we'll see whether it helps it become more than a me-too in the browser market. Firefox has won a <a href="http://marketshare.hitslink.com/browser-market-share.aspx?qprid=0&amp;qpdt=1&amp;qpct=3&amp;qpcal=1&amp;qptimeframe=M&amp;qpsp=126">22% share of the market</a> by doing compelling things that IE didn't do at first, and didn't do well when they finally added them (tabbed browsing and plugins). Chrome's intended killer features seem to be that it runs complex online apps faster and more stably. Unfortunately for Chrome, FireFox is not currently slow or crashy enough to make this a clear win for most users, but perhaps as the online applications become increasingly complex it will matter.</p>
    ]]></content>
  </entry>
  <entry>
    <title>Lean and Agile blogrolls</title>
    <link rel="alternate" type="text/html" href="http://azeditech.com/blogrolls/lean-and-agile.html" />
    <id>http://azeditech.com/blogrolls/lean-and-agile.html</id>
    <published>2009-06-13T01:28:25-07:00</published>
    <updated>2009-06-13T01:46:16-07:00</updated>
    <author>
      <name>kief</name>
    </author>
    <category term="blogroll" />
    <category term="lean" />
    <summary type="html"><![CDATA[<p>Here are some blogs I'm currently following about Lean proceses. Some are focused on software development, some cover lean processes more broadly.</p>
<script type="text/javascript" src="http://www.google.com/reader/ui/publisher-en.js"></script><script type="text/javascript" src="http://www.google.com/reader/public/javascript-sub/user/04687734312451656188/label/lean?callback=GRC_p(%7Bc%3A%22gray%22%2Ct%3A%22My%20%5C%22lean%5C%22%20Blogroll%22%2Cb%3A%22true%22%7D)%3Bnew%20GRC"></script><p>
These are blogs focused on Agile software development as well as Lean:</p>
<script type="text/javascript" src="http://www.google.com/reader/ui/publisher-en.js"></script><script type="text/javascript" src="http://www.google.com/reader/public/javascript-sub/user/04687734312451656188/label/agile?callback=GRC_p(%7Bc%3A%22gray%22%2Ct%3A%22My%20%5C%22agile%5C%22%20Blogroll%22%2Cb%3A%22true%22%7D)%3Bnew%20GRC"></script><p>
These are pulled dynamiclly from my <a href="http://reader.google.com">Google Reader</a> account, so will change whenever I change my subcriptions.</p>
    ]]></summary>
    <content type="html"><![CDATA[<p>Here are some blogs I'm currently following about Lean proceses. Some are focused on software development, some cover lean processes more broadly.</p>
<script type="text/javascript" src="http://www.google.com/reader/ui/publisher-en.js"></script><script type="text/javascript" src="http://www.google.com/reader/public/javascript-sub/user/04687734312451656188/label/lean?callback=GRC_p(%7Bc%3A%22gray%22%2Ct%3A%22My%20%5C%22lean%5C%22%20Blogroll%22%2Cb%3A%22true%22%7D)%3Bnew%20GRC"></script><p>
These are blogs focused on Agile software development as well as Lean:</p>
<script type="text/javascript" src="http://www.google.com/reader/ui/publisher-en.js"></script><script type="text/javascript" src="http://www.google.com/reader/public/javascript-sub/user/04687734312451656188/label/agile?callback=GRC_p(%7Bc%3A%22gray%22%2Ct%3A%22My%20%5C%22agile%5C%22%20Blogroll%22%2Cb%3A%22true%22%7D)%3Bnew%20GRC"></script><p>
These are pulled dynamiclly from my <a href="http://reader.google.com">Google Reader</a> account, so will change whenever I change my subcriptions.</p>
    ]]></content>
  </entry>
  <entry>
    <title>What happens to teams who let their Agile practices slip</title>
    <link rel="alternate" type="text/html" href="http://azeditech.com/agile-hitler.html" />
    <id>http://azeditech.com/agile-hitler.html</id>
    <published>2009-05-20T23:16:25-07:00</published>
    <updated>2009-05-20T23:16:25-07:00</updated>
    <author>
      <name>kief</name>
    </author>
    <category term="agile humor" />
    <summary type="html"><![CDATA[<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/l1wKO3rID9g&hl=en&fs=1" /><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><embed src="http://www.youtube.com/v/l1wKO3rID9g&hl=en&fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object>    ]]></summary>
    <content type="html"><![CDATA[<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/l1wKO3rID9g&hl=en&fs=1" /><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><embed src="http://www.youtube.com/v/l1wKO3rID9g&hl=en&fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object>    ]]></content>
  </entry>
  <entry>
    <title>One indicator of the growth of the Cloud model</title>
    <link rel="alternate" type="text/html" href="http://azeditech.com/node/47" />
    <id>http://azeditech.com/node/47</id>
    <published>2009-03-14T03:50:42-07:00</published>
    <updated>2009-03-14T03:50:42-07:00</updated>
    <author>
      <name>kief</name>
    </author>
    <category term="cloud" />
    <summary type="html"><![CDATA[<p>From <a href="http://blogs.ft.com/techblog/2009/03/how-many-computers-does-the-world-need/">Richard Waters at the FT</a>, via <a href="http://www.roughtype.com/archives/2009/03/the_coming_of_t.php">Nicholas Carr</a>.</p>
<blockquote><p>
According to Microsoft research chief Rick Rashid, around 20 per cent of all the servers sold around the world each year are now being bought by a small handful of internet companies - he named Microsoft, Google, Yahoo and Amazon. That is an amazing statistic, and certainly not one I’d heard before. And this is before cloud computing has really caught on in a big way.
</p>
</blockquote>
<p>Of course, this figure doesn't really prove a trend, the quote above is too vague. How big is a "small handful", and is this an increased concentration over previous time periods (and what is the time period we're talking about as "now"?) The implication is yes, and it is credible from what we're told about these companies' rapidly growing data centre expansion.</p>
    ]]></summary>
    <content type="html"><![CDATA[<p>From <a href="http://blogs.ft.com/techblog/2009/03/how-many-computers-does-the-world-need/">Richard Waters at the FT</a>, via <a href="http://www.roughtype.com/archives/2009/03/the_coming_of_t.php">Nicholas Carr</a>.</p>
<blockquote><p>
According to Microsoft research chief Rick Rashid, around 20 per cent of all the servers sold around the world each year are now being bought by a small handful of internet companies - he named Microsoft, Google, Yahoo and Amazon. That is an amazing statistic, and certainly not one I’d heard before. And this is before cloud computing has really caught on in a big way.
</p></blockquote>
<p>Of course, this figure doesn't really prove a trend, the quote above is too vague. How big is a "small handful", and is this an increased concentration over previous time periods (and what is the time period we're talking about as "now"?) The implication is yes, and it is credible from what we're told about these companies' rapidly growing data centre expansion.<br />
&lt;!--break--></p>
    ]]></content>
  </entry>
  <entry>
    <title>Cloud Camp London</title>
    <link rel="alternate" type="text/html" href="http://azeditech.com/cloud-camp-london.html" />
    <id>http://azeditech.com/cloud-camp-london.html</id>
    <published>2009-03-13T00:11:13-07:00</published>
    <updated>2009-03-13T00:28:17-07:00</updated>
    <author>
      <name>kief</name>
    </author>
    <category term="cloud" />
    <summary type="html"><![CDATA[<p>I went to last night's London <a href="http://www.cloudcamp.com/">CloudCamp</a>, which I enjoyed quite a bit. I'm not going to go into pontifications about cloud computing - I think it's a brilliant concept, not mature yet, and an excellent option for online service startups.</p>
<p>A few random notes from the Camp:</p>
    ]]></summary>
    <content type="html"><![CDATA[<p>I went to last night's London <a href="http://www.cloudcamp.com/">CloudCamp</a>, which I enjoyed quite a bit. I'm not going to go into pontifications about cloud computing - I think it's a brilliant concept, not mature yet, and an excellent option for online service startups.</p>
<p>A few random notes from the Camp:</p>
<p>I enjoyed <a href="http://neilbartlett.name/blog/">Neil Bartlett's</a> lightning talk about OSGi and the Cloud. I'm gearing up for an OSGi pilot project at the moment, and am hoping to attend Neil's course at <a href="http://skillsmatter.com/course/java-jee/osgi-the-dynamic-module-system-for-java">Skills Matter</a> next week, but hadn't thought through the usefulness of OSGi in a cloud. Given that getting the full value out of a cloud infrastructure means being able to rapidly and automatically provision an arbitrary number of servers, and then keep them all updated, this is a natural fit. It's a shame he didn't manage to finish in 5 minutes.</p>
<p>My notes are poor, but I think it was a guy from Qwest Software who did an excellent job of making a very key point for people hoping to move their company onto a cloud infrastructure. In brief, you are not going to get the approval from the C?Os unless you can prove that it will be cheaper than your current infrastructure. And you can't do that if you can't tell them how much your current infrastructure currently costs in the same terms as the Cloud, i.e. how much does it cost to add a new service, including not just hardware and vendor costs but the support and other costs that go along with it. He asked how many people in the room can identify that cost with their current infrastructure right now, and I didn't see anyone raise their hand. Hmm.</p>
<p>I was amused when they took a voice vote on the number of people planning to attend each of the breakout sessions. It sounded like there were about the same number of people going to 'Open Cloud' as going to 'Enterprise Cloud', but the latter group sounded much less enthusiastic.</p>
    ]]></content>
  </entry>
  <entry>
    <title>SOFEA, a flawed approach to a presentation architecture</title>
    <link rel="alternate" type="text/html" href="http://azeditech.com/sofea-flawed.html" />
    <id>http://azeditech.com/sofea-flawed.html</id>
    <published>2008-12-11T07:19:02-08:00</published>
    <updated>2009-02-25T14:28:14-08:00</updated>
    <author>
      <name>kief</name>
    </author>
    <summary type="html"><![CDATA[<p>I'm doing a bit of research into presentation technologies for use in J2EE apps, with accessibility as a particularly key requirement, and an eye on SOA, and extensibility (porlets or not?), among other things. I ran across a <a href="http://www.theserverside.com/news/thread.tss?thread_id=47213">year-old article on TSS</a> about a white paper and blog by Ganesh Prasad, Rajat Taneja and Vikrant Todankar.</p>
    ]]></summary>
    <content type="html"><![CDATA[<p>I'm doing a bit of research into presentation technologies for use in J2EE apps, with accessibility as a particularly key requirement, and an eye on SOA, and extensibility (porlets or not?), among other things. I ran across a <a href="http://www.theserverside.com/news/thread.tss?thread_id=47213">year-old article on TSS</a> about a white paper and blog by Ganesh Prasad, Rajat Taneja and Vikrant Todankar.</p>
<p>The basis of the article is that for the purposes of the presentation layer, the architecture should consider three elements, application download (which may be loading a web page, or downloading a rich client), presentation flow, and data interchange. They essentially argue that these must all come together in the client, thus reconciling the thick-vs-thin client camps by effectively defining server-side control of presentation as an anti-pattern called Front Controller.</p>
<p>I tend to agree with two of the commenters on the TSS article, Keith Weinberg and Ivan Smirnov, in that SOFEA is an approach which works in some circumstances, not all. </p>
<p>Actually, I would say the conceptual split between application, presentation, and data defined by the SOFEA paper is fine and useful, a slightly different approach to describing MVC. But the authors are quite insistent that the MVC can only live in the browser using AJAX or else an actual thick client. This is an arbitrary definition which, if followed dogmatically, means SOFEA is useless in a number of situations, including my own.</p>
<p>The number one reason is <a href="http://www.w3.org/TR/WCAG20/">accessibility</a>, which I mentioned above as a requirement. SOFEA requires all users to use a browser which fully supports the flavour of AJAX used by the application, which cuts out a number of devices and browsers (most mobile phones, for instance, and screen readers) and users in locked-down IT environments. </p>
<p>The power of assembling the presentation on the server-side is that it can be delivered to a broad range of devices. I don't quite buy the idea (as the SOFEA authors responded to the above posters) that the presentation sitting anywhere but the browser automatically classifies it as an anti-pattern. The browser is an arbitrary place to draw the line, if the architecture of an application joins the application, presentation, and data following a "good" design pattern, the fact that it does so on computer A rather than computer B is irrelevant.</p>
    ]]></content>
  </entry>
  <entry>
    <title>Nice description of what Lean development is all about</title>
    <link rel="alternate" type="text/html" href="http://azeditech.com/lean-development-key-philosophies.html" />
    <id>http://azeditech.com/lean-development-key-philosophies.html</id>
    <published>2008-09-30T05:56:45-07:00</published>
    <updated>2009-02-25T14:26:46-08:00</updated>
    <author>
      <name>kief</name>
    </author>
    <category term="agile" />
    <category term="lean" />
    <summary type="html"><![CDATA[<p>I'm becoming a big fan of <a href="http://en.wikipedia.org/wiki/Lean_software_development">Lean Software Development</a>, a particular strand of <a href="http://en.wikipedia.org/wiki/Agile_software_development">Agile Development</a> methodologies, although we are a mostly-Scrum shop. I find Corey Ladas's description a <a href="http://leansoftwareengineering.com/2008/09/29/why-pull-why-kanban/">very tidy explanation of the key philosophies of Lean</a>:</p>
    ]]></summary>
    <content type="html"><![CDATA[<p>I'm becoming a big fan of <a href="http://en.wikipedia.org/wiki/Lean_software_development">Lean Software Development</a>, a particular strand of <a href="http://en.wikipedia.org/wiki/Agile_software_development">Agile Development</a> methodologies, although we are a mostly-Scrum shop. I find Corey Ladas's description a <a href="http://leansoftwareengineering.com/2008/09/29/why-pull-why-kanban/">very tidy explanation of the key philosophies of Lean</a>:</p>
<blockquote><p>People with different skills have to work together to deliver product features. Don't build features that nobody needs right now. Don't write more specs than you can code. Don't write more code than you can test. Don't test more code than you can deploy.</p></blockquote>
    ]]></content>
  </entry>
  <entry>
    <title>T-Mobile WiFi ripoff</title>
    <link rel="alternate" type="text/html" href="http://azeditech.com/t-mobile-wifi-ripoff.html" />
    <id>http://azeditech.com/t-mobile-wifi-ripoff.html</id>
    <published>2008-09-24T05:17:45-07:00</published>
    <updated>2008-09-24T05:17:45-07:00</updated>
    <author>
      <name>kief</name>
    </author>
    <category term="wifi" />
    <summary type="html"><![CDATA[<p>T-Mobile has quite a scam going.<br />
I took my new Nokia N95 with me to Turkey last month and played with the GPS and Google Maps quite a bit, and did the occasional browsing and twitter posting as well. Using maps on a phone chews up a lot of data since it constantly downloads images, so I made sure to only use it from WiFi spots at my in-laws' or friends' houses. I wasn't worried about accidentally downloading the images from a local phone network on 3G or GPRS since I never set up a local access point, and anyway I have my phone set to always prompt me to choose the data connection to use.<br />
I was very pleased with my phone, bragging that WiFi and GPS were a surprisingly useful bell and whistle when used in combination abroad.<br />
I got the phone bill yesterday. Ã‚Â£50 in roaming data charges.<br />
Apparently, T-Mobile tracks how much data you transfer over wifi, and bills you for it. Never mind that you are transferring data over your own network connection, nothing to do with T-Mobile other than having bought the phone from them.<br />
Now I'm scared to use my phone. What if I agree a business deal over my t-mobile phone, will T-Mobile deduct a commission from my phone bill? I once negotiated a raise over my mobile, do I owe T-Mobile a percentage of my salary every month? Forever?<br />
I found <a href="http://www.fonefunshop.co.uk/forum/showthread.php?t=24336">a forum post</a> from someone who made the same discovery. I'm sure it's embedded in the Terms and Conditions.<br />
I've been a T-Mobile customer for 10 years. Unfortunately, it's 16 months until I can freely switch. But I will.</p>
    ]]></summary>
    <content type="html"><![CDATA[<p>T-Mobile has quite a scam going.</p>
<p>I took my new Nokia N95 with me to Turkey last month and played with the GPS and Google Maps quite a bit, and did the occasional browsing and twitter posting as well. Using maps on a phone chews up a lot of data since it constantly downloads images, so I made sure to only use it from WiFi spots at my in-laws' or friends' houses. I wasn't worried about accidentally downloading the images from a local phone network on 3G or GPRS since I never set up a local access point, and anyway I have my phone set to always prompt me to choose the data connection to use.</p>
<p>I was very pleased with my phone, bragging that WiFi and GPS were a surprisingly useful bell and whistle when used in combination abroad.</p>
<p>I got the phone bill yesterday. Ã‚Â£50 in roaming data charges.</p>
<p>Apparently, T-Mobile tracks how much data you transfer over wifi, and bills you for it. Never mind that you are transferring data over your own network connection, nothing to do with T-Mobile other than having bought the phone from them. </p>
<p>Now I'm scared to use my phone. What if I agree a business deal over my t-mobile phone, will T-Mobile deduct a commission from my phone bill? I once negotiated a raise over my mobile, do I owe T-Mobile a percentage of my salary every month? Forever?</p>
<p>I found <a href="http://www.fonefunshop.co.uk/forum/showthread.php?t=24336">a forum post</a> from someone who made the same discovery. I'm sure it's embedded in the Terms and Conditions. </p>
<p>I've been a T-Mobile customer for 10 years. Unfortunately, it's 16 months until I can freely switch. But I will.</p>
    ]]></content>
  </entry>
  <entry>
    <title>Looking to hire - again</title>
    <link rel="alternate" type="text/html" href="http://azeditech.com/node/40" />
    <id>http://azeditech.com/node/40</id>
    <published>2008-08-13T23:04:23-07:00</published>
    <updated>2008-08-13T23:04:23-07:00</updated>
    <author>
      <name>kief</name>
    </author>
    <category term="jobs sysadmin architect" />
    <summary type="html"><![CDATA[<p>We're looking to hire again. This time I've got 6 positions to fill in my team, and we've got 4 others.<br />
In my team, we need a Lead/Manager for the Support Team, and a Support Engineer. This has proved a tricky position to specify, since these people need to be all-rounders. They need to be able to manage our infrastructure, from OS up, so they need to be strong on Linux, scripting, and "infrastructure" tools and concepts, like monitoring, configuration management, etc. But they also need to be able to support the applications themselves, which requires knowing about Java app servers (Tomcat in particular), databases, and web servers. On top of that, they need to be customer-support focused - they don't deal with the end users directly, but do need to deal with internal customers and key people, particularly technical contacts, at our customers and partners.<br />
On top of that we need a Senior Java Architect and an Architect/Senior Developer type. These are again tricky, I firmly believe in Architects being hands-on, and we are an agile team, so they can't just be UML monkeys. But the core development team is offshore in Poland, and our software is complex, so it will be a challenge to get up to speed with it, and be able to interface between the non-technical people in London and the developers there, take ownership of planning a major revision. Cool roles really, but a fairly new thing for us, so we can't be 100% certain how the role will work in practice.<br />
We're also going to hire a QA manager and test engineer.<br />
Fun times here!</p>
    ]]></summary>
    <content type="html"><![CDATA[<p>We're looking to hire again. This time I've got 6 positions to fill in my team, and we've got 4 others.</p>
<p>In my team, we need a Lead/Manager for the Support Team, and a Support Engineer. This has proved a tricky position to specify, since these people need to be all-rounders. They need to be able to manage our infrastructure, from OS up, so they need to be strong on Linux, scripting, and "infrastructure" tools and concepts, like monitoring, configuration management, etc. But they also need to be able to support the applications themselves, which requires knowing about Java app servers (Tomcat in particular), databases, and web servers. On top of that, they need to be customer-support focused - they don't deal with the end users directly, but do need to deal with internal customers and key people, particularly technical contacts, at our customers and partners.</p>
<p>On top of that we need a Senior Java Architect and an Architect/Senior Developer type. These are again tricky, I firmly believe in Architects being hands-on, and we are an agile team, so they can't just be UML monkeys. But the core development team is offshore in Poland, and our software is complex, so it will be a challenge to get up to speed with it, and be able to interface between the non-technical people in London and the developers there, take ownership of planning a major revision. Cool roles really, but a fairly new thing for us, so we can't be 100% certain how the role will work in practice.</p>
<p>We're also going to hire a QA manager and test engineer.</p>
<p>Fun times here!</p>
    ]]></content>
  </entry>
  <entry>
    <title>We&#039;re looking to hire a sysadmin team lead</title>
    <link rel="alternate" type="text/html" href="http://azeditech.com/jobs/lead-sysadmin.html" />
    <id>http://azeditech.com/jobs/lead-sysadmin.html</id>
    <published>2007-12-27T06:54:02-08:00</published>
    <updated>2007-12-27T06:54:02-08:00</updated>
    <author>
      <name>kief</name>
    </author>
    <category term="jobs" />
    <summary type="html"><![CDATA[<p>We need someone to take up the leadership of the London-based support team at the <a href="http://mapofmedicine.com">Map of Medicine</a>, which manages and supports our server-based software products. This is a hands-on technical role suitable for someone with senior-level technical skills, ready to move into or improve in a team-lead position. We are also looking for a junior syadmin type, probably someone looking for their second job in the field. The contact email is tech dash jobs at map of medicine dot c o m. No recruiters wanted.</p>
<h2>What the team does</h2>
<p>The responsibilities for the support team involve: </p>
<ul>
<li>Delivering and supporting our applications to our customers (we provide second and third line support, first-line helpdesk support is handled by client organizations), internally and externally,</li>
<li>Helping new and existing customers with the technical aspects of implementing and integrating our software into their systems and processes</li>
<li>Running, improving, and expanding our hosting infrastructure, particularly as we grow internationally.</li>
</ul>
<p>Our company combines the agility and rapid pace of a four year old software start-up with the stability and resources of an international, publically listed publishing company.</p>
<h2>Details</h2>
<p>We develop and provide a software service that serves as a healthcare knowledge source across multiple healthcare organisations. We deliver this as a hosted service, and also as software that partner organisations can host.</p>
<p>The Map of Medicine application suite is a Java-server based web application that runs on Linux or Windows on a Tomcat application server using a MySQL, SQL Server, or Oracle database.</p>
<h4>Technologies we use</h4>
<p>Our hosting infrastructure currently spans a production farm in redundant data centres, and a development/test "lab", and will expand to another data centre internationally. Our production systems are primarily Linux with Apache and Tomcat, with some Windows servers running SQL Server. Our test lab uses virtual servers on VMWare ESX, running Oracle, MySQL, and various other bits of technology.</p>
<p>Ensuring that our applications are highly available, reliable, and responsive is a key driver, so we implement monitoring, security, and centralized configuration management using mainly open source tools such as Nagios, Puppet, Subversion, and OpenLDAP, as well as custom scripts. Load balancing, database clustering, and data-centre failover are other cornerstones of our availability strategy.</p>
<p>We must be able to rapidly configure and deploy our applications for testing, pilot projects, and expansion. Centralized configuration management is essential to this, as is our use of virtualization technologies.</p>
<p>We also provide knowledge management services internally and externally, and provide leadership to the rest of the company on how to effectively use these. These are based around our wiki and bug tracker using Confluence and Jira.</p>
<h2>The Role</h2>
<p>The Support and Infrastructure Team Lead needs to be an experienced system administrator who can lead a team of 4+ in planning and implementing new technologies and expanding and improving use of existing technologies. This is a hands-on technical role. The Team Lead needs to be highly customer-focused, able to discuss daily operational problems and issues with non-business people and customers. They will also need to be able to think longer term and be involved in planning new applications and services and consult with client-organisations to plan their technical implementation of our software.</p>
<h4>Required Skills</h4>
<ul>
<li>Strong knowledge of Linux and Windows server operating systems,</li>
<li>Strong knowledge of web-application technologies including Apache, load-balancing, virtual web-hosting, HTTP protocol,</li>
<li>Knowledge of SQL databases, including installation and principles of tuning, and at least basic SQL,</li>
<li>Experience in managing multi-server infrastructures including monitoring, configuration, user and host directory services (LDAP, DNS), shared storage, backups, etc.,</li>
<li>Scripting languages (Bourne/Bash shell scripting, Perl),</li>
<li>Excellent written and verbal communication,</li>
<li>Experience working in a technical support environment, understanding of issue tracking systems, Service Level Agreements (SLAs), first/second/third line support arrangements and other technical support processes,</li>
<li>Ability to manage and prioritize a fast-paced, rapidly changing workload keeping customer and business needs at the fore,</li>
</ul>
<h4>Desirable Skills</h4>
<ul>
<li>Java application servers, particularly Tomcat,</li>
<li>Server virtualization technology, particularly VMWare ESX,</li>
<li>Shared storage, particularly iSCSI,</li>
<li>Experience of healthcare systems or working with or in a clinical environment</li>
<li>Presentation skills</li>
</ul>
    ]]></summary>
    <content type="html"><![CDATA[<p>We need someone to take up the leadership of the London-based support team at the <a href="http://mapofmedicine.com">Map of Medicine</a>, which manages and supports our server-based software products. This is a hands-on technical role suitable for someone with senior-level technical skills, ready to move into or improve in a team-lead position. We are also looking for a junior syadmin type, probably someone looking for their second job in the field. The contact email is tech dash jobs at map of medicine dot c o m. No recruiters wanted.</p>
<h2>What the team does</h2>
<p>The responsibilities for the support team involve: </p>
<ul>
<li>Delivering and supporting our applications to our customers (we provide second and third line support, first-line helpdesk support is handled by client organizations), internally and externally,</li>
<li>Helping new and existing customers with the technical aspects of implementing and integrating our software into their systems and processes</li>
<li>Running, improving, and expanding our hosting infrastructure, particularly as we grow internationally.</li>
</ul>
<p>Our company combines the agility and rapid pace of a four year old software start-up with the stability and resources of an international, publically listed publishing company.</p>
<h2>Details</h2>
<p>We develop and provide a software service that serves as a healthcare knowledge source across multiple healthcare organisations. We deliver this as a hosted service, and also as software that partner organisations can host.</p>
<p>The Map of Medicine application suite is a Java-server based web application that runs on Linux or Windows on a Tomcat application server using a MySQL, SQL Server, or Oracle database.</p>
<h4>Technologies we use</h4>
<p>Our hosting infrastructure currently spans a production farm in redundant data centres, and a development/test "lab", and will expand to another data centre internationally. Our production systems are primarily Linux with Apache and Tomcat, with some Windows servers running SQL Server. Our test lab uses virtual servers on VMWare ESX, running Oracle, MySQL, and various other bits of technology.</p>
<p>Ensuring that our applications are highly available, reliable, and responsive is a key driver, so we implement monitoring, security, and centralized configuration management using mainly open source tools such as Nagios, Puppet, Subversion, and OpenLDAP, as well as custom scripts. Load balancing, database clustering, and data-centre failover are other cornerstones of our availability strategy.</p>
<p>We must be able to rapidly configure and deploy our applications for testing, pilot projects, and expansion. Centralized configuration management is essential to this, as is our use of virtualization technologies.</p>
<p>We also provide knowledge management services internally and externally, and provide leadership to the rest of the company on how to effectively use these. These are based around our wiki and bug tracker using Confluence and Jira.</p>
<h2>The Role</h2>
<p>The Support and Infrastructure Team Lead needs to be an experienced system administrator who can lead a team of 4+ in planning and implementing new technologies and expanding and improving use of existing technologies. This is a hands-on technical role. The Team Lead needs to be highly customer-focused, able to discuss daily operational problems and issues with non-business people and customers. They will also need to be able to think longer term and be involved in planning new applications and services and consult with client-organisations to plan their technical implementation of our software.</p>
<h4>Required Skills</h4>
<ul>
<li>Strong knowledge of Linux and Windows server operating systems,</li>
<li>Strong knowledge of web-application technologies including Apache, load-balancing, virtual web-hosting, HTTP protocol,</li>
<li>Knowledge of SQL databases, including installation and principles of tuning, and at least basic SQL,</li>
<li>Experience in managing multi-server infrastructures including monitoring, configuration, user and host directory services (LDAP, DNS), shared storage, backups, etc.,</li>
<li>Scripting languages (Bourne/Bash shell scripting, Perl),</li>
<li>Excellent written and verbal communication,</li>
<li>Experience working in a technical support environment, understanding of issue tracking systems, Service Level Agreements (SLAs), first/second/third line support arrangements and other technical support processes,</li>
<li>Ability to manage and prioritize a fast-paced, rapidly changing workload keeping customer and business needs at the fore,</li>
</ul>
<h4>Desirable Skills</h4>
<ul>
<li>Java application servers, particularly Tomcat,</li>
<li>Server virtualization technology, particularly VMWare ESX,</li>
<li>Shared storage, particularly iSCSI,</li>
<li>Experience of healthcare systems or working with or in a clinical environment</li>
<li>Presentation skills</li>
</ul>
    ]]></content>
  </entry>
  <entry>
    <title>Agile service management pattern: Deploy often</title>
    <link rel="alternate" type="text/html" href="http://azeditech.com/agile-service-management/deploy-often-pattern.html" />
    <id>http://azeditech.com/agile-service-management/deploy-often-pattern.html</id>
    <published>2007-12-24T06:32:10-08:00</published>
    <updated>2007-12-24T07:12:13-08:00</updated>
    <author>
      <name>kief</name>
    </author>
    <category term="agile" />
    <category term="service_management" />
    <summary type="html"><![CDATA[<p>I'd like to start on a set of rules for running and supporting onlines services in a way that takes advantage of lean production principles. This is carrying on the thoughts stirred up by my <a href="http://azeditech.com/my-itil-course-thoughts.html">recent exposure to ITIL</a>, which is pretty much the IT infrastructure equivalent of the waterfall development principle.<br />
So the first pattern I came up with in that post was around keeping people involved throughout the process of planning, rolling out, and running a service, rather than having each of these things done by a different set of people, relying on the mythical "knowledge transfer" process. I'm sure there's a lot more to say on that one, but for the moment I'd like to get another idea out.<br />
This pattern can be called <em>DeployOften</em>. I've found that a good rule in most areas of life is: if you find something difficult to get right, do it more often. This is obvious in some contexts - it's called practice - but in day to day business it goes against the grain to seek out painful tasks and repeat them more than is necessary to get through the job. The benefit is that the more you do something, the better you get at it, and it becomes less painful.<br />
The principle of doing difficult things more often is found throughout agile development methodologies, an obvious example being test-driven development. Where testing is usually a painful and dull process, typically skipped or skimped, agile makes it a central behaviour, in fact the very first thing you should do when coding is to write up automated tests.<br />
A difficult and painful part of service management is deploying new or updated software, part of what ITIL calls the transition phase. One organisation I know of tries to release updates to their software every 3 months, and each time it's a trial. Deploying the software to the server inevitably turns up surprises, and acceptance testing by users drags on with multiple rounds as updated releases are built to fix problems discovered.<br />
This is in spite of automated nightly and iteration builds, which somehow never bring out the same issues that come out even on staging servers, which use snapshots of current live data sets, and more rigidly mimic the live deployment environment.<br />
The DeployOften pattern suggests that the operations team should deploy each iteration build onto a production-like environment rather than waiting for the nearly-complete release. This will raise cries from the ops people, who don't exactly have light workloads already. But by deploying every two weeks they will get it down to a very quick process, and also turn up deployment problems much sooner in the development cycle, which should raise the developers' awareness of the kinds of things they need to keep in mind to make deployment easier.</p>
    ]]></summary>
    <content type="html"><![CDATA[<p>I'd like to start on a set of rules for running and supporting onlines services in a way that takes advantage of lean production principles. This is carrying on the thoughts stirred up by my <a href="http://azeditech.com/my-itil-course-thoughts.html">recent exposure to ITIL</a>, which is pretty much the IT infrastructure equivalent of the waterfall development principle.</p>
<p>So the first pattern I came up with in that post was around keeping people involved throughout the process of planning, rolling out, and running a service, rather than having each of these things done by a different set of people, relying on the mythical "knowledge transfer" process. I'm sure there's a lot more to say on that one, but for the moment I'd like to get another idea out.</p>
<p>This pattern can be called <em>DeployOften</em>. I've found that a good rule in most areas of life is: if you find something difficult to get right, do it more often. This is obvious in some contexts - it's called practice - but in day to day business it goes against the grain to seek out painful tasks and repeat them more than is necessary to get through the job. The benefit is that the more you do something, the better you get at it, and it becomes less painful.</p>
<p>The principle of doing difficult things more often is found throughout agile development methodologies, an obvious example being test-driven development. Where testing is usually a painful and dull process, typically skipped or skimped, agile makes it a central behaviour, in fact the very first thing you should do when coding is to write up automated tests.</p>
<p>A difficult and painful part of service management is deploying new or updated software, part of what ITIL calls the transition phase. One organisation I know of tries to release updates to their software every 3 months, and each time it's a trial. Deploying the software to the server inevitably turns up surprises, and acceptance testing by users drags on with multiple rounds as updated releases are built to fix problems discovered.</p>
<p>This is in spite of automated nightly and iteration builds, which somehow never bring out the same issues that come out even on staging servers, which use snapshots of current live data sets, and more rigidly mimic the live deployment environment.</p>
<p>The DeployOften pattern suggests that the operations team should deploy each iteration build onto a production-like environment rather than waiting for the nearly-complete release. This will raise cries from the ops people, who don't exactly have light workloads already. But by deploying every two weeks they will get it down to a very quick process, and also turn up deployment problems much sooner in the development cycle, which should raise the developers' awareness of the kinds of things they need to keep in mind to make deployment easier.</p>
    ]]></content>
  </entry>
  <entry>
    <title>ITIL can suck, but shouldn&#039;t</title>
    <link rel="alternate" type="text/html" href="http://azeditech.com/my-itil-course-thoughts.html" />
    <id>http://azeditech.com/my-itil-course-thoughts.html</id>
    <published>2007-12-20T03:22:38-08:00</published>
    <updated>2007-12-24T07:12:40-08:00</updated>
    <author>
      <name>kief</name>
    </author>
    <category term="agile" />
    <category term="itil" />
    <category term="service_management" />
    <summary type="html"><![CDATA[<p>The pattern of my career over the past five years or so has involved moving newish, smallish internet/software companies to a post-startup hosting infrastructure. My past three companies were all small companies that developed and hosted internet applications, either for clients (in one case) or their own products. My role in each case was to move things to a more mature infrastructure, with configuration management, monitoring, directory services, and the other pieces needed to be able to manage a growing sprawl of servers and applications.<br />
My focus has been much more on the technical than on the people processes for running and supporting the infrastructures. In my current job, the team I've brought in and the infrastructure we've built has reached a decent level, although there's certainly plenty more to do technically. But looking at what we've done and what I want to do next, I've realized thatrather than moving on and doing the same thing at another company, the more interesting challenge will be to take things to the next level.<br />
The next level for me is going beyond the technical to focus on the people and processes. The technology infrastructure is going to grow in size and sophistication, including spreading to multiple data centres globally, but the technical challenges seem like more of the same to me. The challenges that seem newer and more intriguing to me personally are more along the lines of how the hell we're going to organize and coordinate people doing development, infrastructure, and support in three, four, or more countries.<br />
So I went on a course in <a href="http://en.wikipedia.org/wiki/ITIL_v3">ITIL version 3</a>. Yikes. ITIL is basically a blueprint for organizing a huge IT operation with lots of bureaucratic processes, forms, and signoffs that will make it nearly impossible to get anything done, and ensure that responsibilities are divided so that nobody who is doing anything productive sees the big picture.<br />
I don't think it has to be this way. I actually did find the course useful, although not as useful as it could have been given that most of the people on it were more interested in ticking off the certification than getting ideas on how to improve the organisations they work at. There were some pretty interesting people there, some of whom were obviously interested in fixing real problems "back home". If the course had been more of a workshop where we shared war stories and ideas, it would have rocked.<br />
A lot of the concepts in ITIL are useful, I think it's more a matter of using your head when applying them, making sure to adapt the ideas in ways that fit your needs and objectives. It's very easy to see how an organisations, especially large ones, take the ITIL material and use it to build horribly inefficient IT structures. I've worked with companies that use ITIL this way, and the course shed light on how they got this way.<br />
The biggest problem with ITIL is that it's presented with clearly defined "phases" of strategizing, desiging, deploying ("transitioning"), operating, and improving IT services. This is an invitation to a waterfall model, where (as in at least one organization I know of) each phase can even be run by a completely different team of people.<br />
So one group designs the service, hands it off to another than rolls it out (tests and installs it), and then hands off to a completely separate team that supports it. In the organisation I've encountered, the operations team hasn't got the vaguest clue about the service.<br />
Of course the transition process involves "knowledge transfer" where the people who set up the service train the support team, but anybody who's done this stuff in the real world should know better.<br />
Knowledge that is transferred in a handover process is never, ever, ever going to be learned as well as knowledge that comes from actually being involved throughout the whole process. Having some hands-off  manager (ahem) overseeing things all the way through doesn't cut it, the people who will actually be diving into runtime problems with an application need to have gotten their hands dirty trying to install the application, and even have pitched into meetings where the details of how the application should be integrated into the infrastructure.<br />
Otherwise, you're going to end up in the situation of my nameless organisation, one which is actually often held up as an exemplar of ITIL. They host an application on their servers, installed by the transition team, and their support team had training on how to log into the server and investigate problems with it. But when users call up with problems, the support people, who probably support dozens of applications, have forgotten all of this. They call up the software vendor - who have no access to the servers.<br />
Can you imagine how incompetent your organisation looks when it's clear that your support people have no idea that the application they support is run by their own company?<br />
But I do think it's possible to take many of the ideas of ITIL and apply them in a more agile manner. A bit of Googling shows I'm not the only one who thinks so, but that there doesn't seem to have been much work done on the idea, at least publicly. It's certainly something that would take a bit of thought and work.<br />
My first thought, clearly, is that an agile IT services process would have to embrace the lean management principle of empowerment by having the "workers" (for lack of a better word) involved throughout the process.<br />
I've also thought that the <a href="http://en.wikipedia.org/wiki/Kanban">kanban</a> approach to agile is paricularly suited to a sysadmin team, since it does away with the iterations/release cycle in favor of a queue of tasks that people pull from when they find they've got spare capacity.<br />
Anyway, I'm looking forward to thinking this stuff through and trying out ideas over the next year. Although I'm going to be far less hands-on technically, my focus does need to involve a thorough understanding of the technical aspects of what we're doing, so I don't think I'm going to become a total suit.</p>
    ]]></summary>
    <content type="html"><![CDATA[<p>The pattern of my career over the past five years or so has involved moving newish, smallish internet/software companies to a post-startup hosting infrastructure. My past three companies were all small companies that developed and hosted internet applications, either for clients (in one case) or their own products. My role in each case was to move things to a more mature infrastructure, with configuration management, monitoring, directory services, and the other pieces needed to be able to manage a growing sprawl of servers and applications.</p>
<p>My focus has been much more on the technical than on the people processes for running and supporting the infrastructures. In my current job, the team I've brought in and the infrastructure we've built has reached a decent level, although there's certainly plenty more to do technically. But looking at what we've done and what I want to do next, I've realized thatrather than moving on and doing the same thing at another company, the more interesting challenge will be to take things to the next level.</p>
<p>The next level for me is going beyond the technical to focus on the people and processes. The technology infrastructure is going to grow in size and sophistication, including spreading to multiple data centres globally, but the technical challenges seem like more of the same to me. The challenges that seem newer and more intriguing to me personally are more along the lines of how the hell we're going to organize and coordinate people doing development, infrastructure, and support in three, four, or more countries. </p>
<p>So I went on a course in <a href="http://en.wikipedia.org/wiki/ITIL_v3">ITIL version 3</a>. Yikes. ITIL is basically a blueprint for organizing a huge IT operation with lots of bureaucratic processes, forms, and signoffs that will make it nearly impossible to get anything done, and ensure that responsibilities are divided so that nobody who is doing anything productive sees the big picture.</p>
<p>I don't think it has to be this way. I actually did find the course useful, although not as useful as it could have been given that most of the people on it were more interested in ticking off the certification than getting ideas on how to improve the organisations they work at. There were some pretty interesting people there, some of whom were obviously interested in fixing real problems "back home". If the course had been more of a workshop where we shared war stories and ideas, it would have rocked.</p>
<p>A lot of the concepts in ITIL are useful, I think it's more a matter of using your head when applying them, making sure to adapt the ideas in ways that fit your needs and objectives. It's very easy to see how an organisations, especially large ones, take the ITIL material and use it to build horribly inefficient IT structures. I've worked with companies that use ITIL this way, and the course shed light on how they got this way.</p>
<p>The biggest problem with ITIL is that it's presented with clearly defined "phases" of strategizing, desiging, deploying ("transitioning"), operating, and improving IT services. This is an invitation to a waterfall model, where (as in at least one organization I know of) each phase can even be run by a completely different team of people. </p>
<p>So one group designs the service, hands it off to another than rolls it out (tests and installs it), and then hands off to a completely separate team that supports it. In the organisation I've encountered, the operations team hasn't got the vaguest clue about the service. </p>
<p>Of course the transition process involves "knowledge transfer" where the people who set up the service train the support team, but anybody who's done this stuff in the real world should know better. </p>
<p>Knowledge that is transferred in a handover process is never, ever, ever going to be learned as well as knowledge that comes from actually being involved throughout the whole process. Having some hands-off  manager (ahem) overseeing things all the way through doesn't cut it, the people who will actually be diving into runtime problems with an application need to have gotten their hands dirty trying to install the application, and even have pitched into meetings where the details of how the application should be integrated into the infrastructure.</p>
<p>Otherwise, you're going to end up in the situation of my nameless organisation, one which is actually often held up as an exemplar of ITIL. They host an application on their servers, installed by the transition team, and their support team had training on how to log into the server and investigate problems with it. But when users call up with problems, the support people, who probably support dozens of applications, have forgotten all of this. They call up the software vendor - who have no access to the servers.</p>
<p>Can you imagine how incompetent your organisation looks when it's clear that your support people have no idea that the application they support is run by their own company?  </p>
<p>But I do think it's possible to take many of the ideas of ITIL and apply them in a more agile manner. A bit of Googling shows I'm not the only one who thinks so, but that there doesn't seem to have been much work done on the idea, at least publicly. It's certainly something that would take a bit of thought and work.</p>
<p>My first thought, clearly, is that an agile IT services process would have to embrace the lean management principle of empowerment by having the "workers" (for lack of a better word) involved throughout the process. </p>
<p>I've also thought that the <a href="http://en.wikipedia.org/wiki/Kanban">kanban</a> approach to agile is paricularly suited to a sysadmin team, since it does away with the iterations/release cycle in favor of a queue of tasks that people pull from when they find they've got spare capacity.</p>
<p>Anyway, I'm looking forward to thinking this stuff through and trying out ideas over the next year. Although I'm going to be far less hands-on technically, my focus does need to involve a thorough understanding of the technical aspects of what we're doing, so I don't think I'm going to become a total suit.</p>
    ]]></content>
  </entry>
</feed>
