Sunday, February 28, 2010

On to ... LISP (?)

My financee is a former high school math teacher. One of the term she's introduced me to is TYNT, this year's new thing, and it's companion, LYNT, last year's new thing. Apparently we aren't the only ones subject to fashions. After the CORBA, JINI, SOAP, SOA, SaaS, and the Perl/Python/Ruby/Groovy scripting wars, I'm a bit shell-shocked.

However, in spite of myself, I ave decided to come to grips with reality. Multi-core is here to stay, and the and now we have to figure out how to respond. The big question to me is which way to jump in response. We have our old threading tools (locks, semaphores,et al.), the new thread constructs in C++ standard library, the Intel tool set, and others.

To me, the most interesting development is is the sudden increase in prominence of functional languages. So, I'm taking a look at hybrids like Scala, F# and old favorites like Haskell, and a new incarnation of Lisp, Clojure. To warm up my functional muscles, I'm using it as an excuse to experience a blast from the past, and starting with The Little Schemer. Currently, I'm working through a chapter a night. The complete reliance on recursion seems a bit forced at times, but it is a good mental workout--yoga for the recursive part of the brain.

Monday, February 16, 2009

Agile in a Ossified Culture

A friend of mine (call him Fred) is trying to get a project approved in his company.  The point of the project is to replace a complicated, multi-step manual process with an automated tool.  In addition to being manual, the process relies heavily on tacit knowledge (i.e., it exists only in the users' heads).  The approach being suggested was agile: several short iterations geared toward delivering immediate business value while beginning to draw the tacit knowledge out of the users' heads.

To give you an idea of how well it is going, Fred is currently in month five of preparing/revising/defending the project plan.  He is hoping to go forward for actual approval in another six weeks.  Assuming all goes well, after budget approvals, etc. are done, the first line of code may be written in another eight weeks (OK, I lied; Fred got so frustrated that he's been doing some coding during this protracted farce).  Honestly, if the waterfall group got together with the PMP certification folks and the most conservative accountants and CMMI/ISO9002 group you could imagine, the resulting process would be cavalier in comparison.  There are a minimum of 16 meetings to review the final plan and budgets before it can be approved.

What is hard to understand is that everyone in Fred's company seems to be terrified by the prospect that version 1.0 won't contain every possible bit of detail, kind of like Athena appearing fully formed from the head of Zeus (although Zeus got whacked in the head with an axe to let Athena out, a feeling Fred is becoming quite familiar with).  What's more, they seem completely focused on having the perfect plan.  Remember this is a manual process that revolves around tacit knowledge.  One of the company's technology leaders asked how the data integrity of the results could be guaranteed.  Currently the "data integrity of the results" is based upon rules that only exist in people's heads, and on manual entry of the results into a back-end system.

Fred's company has a plan-driven culture.  The company essentially believes that planning predicts the outcome.  Requiring detailed plans is their way of preventing wild, poorly thought out wastes of the company's money.  Fair enough.  What I find puzzling it that they can't see that they are losing all of the business value that could be had now if they would just get out of their own way  Given that they seem to agree that the project should and will be done, opportunity cost associated with the delay seems like a foreign idea.

Agile development is often described as a strategy of mitigating risk of poorly understood and/or volatile requirements.  It is well-known that requirements churn have blown many a budget, and eventually killed many projects.  One thing that seems less emphasized is Agile's focus on early delivery of the highest priority requirements.  This can allow the business to realize some value from the software early, even while the plan-driven folks are still in the requirements huddle.

Fundamentally, I'm left wondering whether it is possible for Fred to succeed with his approach.  One possibility is obviously faking a detailed plan, and then doing he intended to do all along.  As long as the results are good, this can be done.

But if Fred wants to play it straight, can he?  How does one sell that to management that doesn't want to hear it?  Is it possible to use Agile be effectively used in a plan-driven culture such as exists in Fred's company?

Saturday, December 27, 2008

Well-read? Isn't that special ...

This is an up front apology (of sorts).


This is intended as a forum for my thoughts about computer languages, software development, testing, etc. (and occasional gratuitious references to my kids and cats). A number of those thoughts are stolen from others, but I do try to give credit where credit is due.

I wandered into the software field later in life, and so I don't have a degree in computer science. Being self-taught leaves me with some feelings of inferiority, and I deal with mine through reading. I'm at a point where I can afford to buy books, and I spend much of my free time reading computer books. This does get me very strange looks at the beach on vacation (at least I think that's what the strange looks are for), but I'll put up with it. Anyway, my time in school left me with the tendency to cite things, and I intend to keep that up here. I'll try to keep the cites relevant (Brian Kernighan, P. J. Plauger, Bjarne Stroustrup, Guido van Rossum, and Joel Spolsky), rather than spinning off into that "As Pliney the Younger said..." kind of nonsense.


End of apology