It is now almost evident that 2009 will be a year of recession and crisis. All indicators are down for the US economy and world’s economy is falling with it. Mainstream media presents governments’ actions as a heroic struggle to keep things running, while in fact things they do – mass bailouts, aid packages, 0% interest rates, printing dollars (and other currencies) – just make the problem worse.

This situation has a broad & long term impact but in this article I want to focus on what it all means for our industry – the IT and especially software development.

Recessions and crises are a time of test. When markets contract only the best will stay, the rest will fail. In other words – those who swim faster and adapt better will survive the storm, those not moving quickly enough or in a wrong direction will go down. It’s not nice, but it is the way things are.

However, IT in general has many things going for it that make it, I think, less vulnerable and having better chances of going through this storm in good shape.

First, it has always been fiercely competitive and thus is more fit than others. IT is widely unregulated by governments, did not receive any protection or intervention and has been largely union-free. It has been therefore much more exposed to the free market than banks or heavy industries. Furthermore, we did go through our own, “local” bust – the “dot.com” bubble burst of about 8 years ago. So IT companies in general should be better prepared to cope with tough times.

But even more importantly as our clients will be squeezed by the same market dynamics of bust and recession they will have to get more effective in order to survive. And to do that they will need more technology, more IT systems to support their processes, more automation and more data analysis to stay on top of things. In short they will need more of what we deliver, not less.

This time, though, with forecasting the future more difficult than ever those systems will have to help companies cope with changing business environment – and that will be reflected also in approach to projects. So companies will look to develop lighter systems and do it as flexibly as possible. That means less willingness to commit to long-term projects and fixed contracts – plus less use of work-heavy technologies.

Startups are distinctly different from established businesses but for us at Code Sprinters they are an important part of our client base. In the coming year and onwards they will have a much harder time finding angels and VCs willing to invest in them. But that means only the best business plans will get funded – and that with this funding an additional pressure for good execution will come. Good will even more than before mean: fast, with good quality and elasticity.

So common theme here for all client groups depending on IT will be more effectiveness, better value and above all flexibility to cope with hard to predict changes.

Luckily for us all the IT did come up with a way to approach things exactly that way: light technologies like web applications, frameworks, open source components etc. keep costs down and make building systems easier. The whole family of agile methods gives much higher productivity plus flexibility to cope with change easier. In fact methods like Scrum and simple T&M contracts will shine in those times.

So the coming storm will be a huge opportunity for companies that – just like us here at Code Sprinters – offer agile approach to build web applications.

I know of course how this kind of argument is perceived: yet another marketer trying to sell his method/product/service by trying to link it to what’s in fashion. Crisis is in fashion now – just turn on a TV – so let’s sell agile as a the magic cure for the crisis. But I honestly believe this is the case and here is some substatantion to my claims:

  • agile means cutting down on BS, so less overhead – and who would like to pay for unnecessary documents, work and meetings at the time when every dollar is turned twice before it is spent?
  • agile teams are open to change – every sprint (2-4 weeks) client can change the project direction, which is a clear advantage at the time of instability when any predictions can be only very general and anyway uncertain,
  • agile T&M contracts can be cancelled at any time – much more security at a time when budget given to the project today might be taken away few months from now,
  • plus with an agile team even if you cancel the project you get code that does something, is complete to some extent – which means that even if cancelled early the project has high chance of brining value,
  • agile teams are focused on highly important, high value items first meaning getting quicker to the point of system being usable,

  • good agile teams do good software – that is well tested, well designed, so that it a) will continue on working and b) could be extended further by other team with manageable learning curve.

If we look at web applications we also see clear benefits, especially lower cost and faster development of specialized business systems, both internal and client-facing. I won’t go into details here, because web technologies have been the primary choice for new custom business systems for a few years now.

To sum it all up: IT in general is here to stay, as in these troubled times companies will need more computer-powered muscle than ever, they will need it for less and delivered in a more flexible way. Luckily, the IT industry – unlike, say, banks or car manufacturers – is up to delivering just that. Well, maybe not the whole IT industry, but sizable enough part of it to keep us going. Which is fundamentally good news to open the New Year 2009 with.

So – Happy New Year!

(All the points above assume you know how agile methods, Scrum in particular, deliver those benefits – if you don’t see our Scrum Resources page to get started. Next this month – Prophets of Doom.)

We have released a new version of our on-line hosted Scrum tool last week – the Banana Scrum. The most important addition is, of course, the automatic registration form, but we also improved the way in which the user interface works. We start to get ideas from our users, who generally like the tool but will undoubtedly help us make it better.

Which is good, since I think there is a definite need for a simple, on-line tool to assist agile teams in their work. Which leads me to another topic – resistance to any such tools. When someone asked about a tool for Scrum on the Yahoo Scrum group there was a bunch of answers advising not to use any tools – use a wall with velcro attached index cards or, at the very least, Excel.

Agile community in general and Scrum community in particular seems to be very attached to “good old” physical artifacts, like index cards, hand-drawn burndowns, hand sorted backlogs etc. I can respect that but I’m a completely different person – I’m a “paperless guy”.

The only thing I still prefer on paper is books. Hand drawn brundowns can be nice if everyone sits in the same room from 9 to 5, but we have a much more relaxed atmosphere – everyone has to be in for the Daily Scrum but otherwise people can work from where they want when they want. Whiteboard is great for sketching things or making notes during a meeting but I don’t think it is good to make it a permanent repository for anything. I think if we work with computers and systems and web apps we should use them. How credible we are telling other people our applications can save their business if we stick to index cards and velcro?

So, I don’t like it when some agile gurus look down us, paperless guys, when we confess we use software tools to manage our projects rather than walls, cards and boards. I don’t think it is a good idea to be too dogmatic about tools, I agree with that, but it also applies to the old paraphernalia of the paper age.

On LinkedIn someone asked this question:

How do you deal with the project requesters that are asking you for a project estimate before you get all your questions answered? Would you just ignore them and loose the project or go ahead and earn a client?

This is indeed a problem all of us in the software development business face. The question is indeed what to do in such a situation and it boils down to following three choices a service provider has:

  • rip the client off – add all the uncertainties, add the industry standard 25% and produce a bid – then do it as fast and cheap as possible and profit – that’s probably what _most_ companies do,
  • risk your money – to win the bid do all the above but not add 25% but rather subtract it, so that you’re cheapest thus winning the bid, then kick the project as fast out of the door as you can compromising on everything your client being ignorant in technology won’t be able to tell – namely quality (do spaghetti code, do it ugly, test only positive paths and forget unit testing etc.),
  • tell the truth. That is – the client he won’t get anything solid with what he has, just lies, assumptions etc. However, for whatever amount he can spend he can get the most important features he needs with solid quality. If his site would be a success he can add nice-haves later on. Ask the client to make a list of them, discuss them, tell him that in one short iteration one or two will be up & running. Be honest and cooperative. It’s not a guarantee of success, but well… this is what this option is all about.

Everyone who is approached by such a client makes this choice. The problem is that typically such clients don’t like the third option, so they fall for the people choosing the other two. The results we all known – poorly designed sites, unmaintainable code or – worst – lost time and money.

What we follow is of course the third option.