« July 2006 | Main | November 2006 »

October 30, 2006

Process as a Substitute for Competence

If you work in a sotfware development organization, you've probably heard a lot about "alternative" software development and project management methodologies, such as Agile, SCRUM, Extreme Programming (XP), Test-Driven Development, etc.  These are, of course, all alternatves to the traditional waterfall model (wonderfully parodied in the preceding link -- the conference linked to is, of course, not real.  I particularly like the session entitled "Pair Managing: Two Managers per Programmer.")

Most of my development experience came at Microsoft, which has its own software development life cycle (SDLC) and, for all its problems, still has a large number of very smart developers and a management corps consisting almost entirely of former coders.  As a result, I operated under the assumption that this SDLC was more or less typical for the industry, as it sort of vaguely lined up with the traditional waterfall SDLC.

And then I came to my current job.  Yes, I have found the IT shop that performs development on the unmodified waterfall model -- welcome to 1979.  The great majority of our software development work is outsourced to a contracting firm in India, and thus worked on overnight, largely out of contact with our management, and the amount of process involved is staggering.

On one recent project, the software development managers insisted on a 5-page requirements definition document, two management reviews of that document, a functional specification with four contributors, a peer review and a management review of that document, a detailed design document, a management review and sign-off of that document, and a test plan before development could begin on the code.

The code in question?  Five lines of SQL.

Yes, a 2-hour project took over a month.  Actually, it's not quite done yet, due to the repeated test cycles.  You might think all that documentation would have rendered bugs impossible, but if so, you'd be wrong.

Why on earth is so much process present?  Why does it take three documents and six meetings to write five lines of SQL?  There are twice as many pages of documentation as lines of code!  Well, having worked with the people involved on these documents, plus the development, and the testing, not just on this project but several others, I think I've figured out the purpose: process is being used as a substitute for competence.

The thing that's surprised me, though, is that process actually turns out to be a pretty good substitute for competence.  With enough steps, documents, design reviews, and test plans, I think that the proverbial 1,000 monkeys with typewriters really could produce a functional IT system.  The incredible amount of mutual reinforcement breaks the task down into such minute pieces that each piece is comprehensible and completable by anyone with even the slightest modicum of coding or testing ability.  It turns what is inherently a massively complex endeavor -- software engineering -- into little more than rote following of directions.  Each step is so long and involved as it must be performed in so much detail that the next step follows necessarily, without putting much thought into it.  The waterfall model enforces this level of detailing by making it nigh-impossible to change decisions made early on.  It also helps project management -- after years of this sort of development, the project managers know to a pretty good degree of accuracy how long each minute task will take, and can thus do a pretty good job coming up with a (shockingly long) timeline for a project in any stage of development.

The problem with this model, though, is that anyone who is halfway competent finds himself spending more time on process than on actual, productive development activity.  Everything is drawn out over a huge period of time.  I think this is the main thing that's been driving alternative methodologies like Agile and SCRUM -- the desire by skilled developers to sweep away all that process that's "in their way," and get rid of documentation and meetings.

This has led to the principles of the Agile Manifesto:

  • Individuals and interactions over processes and tools
  • Working software over comprehensive documentation
  • Customer collaboration over contract negotiation
  • Responding to change over following a plan

This is pretty much the complete opposite of the waterfall model, and developers often enjoy working in such a model quite a bit more.  (This said, it can be done badly, as discussed in Steve Yegge's blog here, though that post eventually turns into Google-worship.)  Good developers, on the whole, hate process, don't like writing documentation, have no concept of or interest in business concerns, and like to code by the seat of their pants anyway.  A methodology that says "what you want to do anyway, that's good!" will naturally get a lot of traction.  Nothing gets developers excited like telling them that they don't need to produce documentation, the code is the documentation.

However, I can see that as much as I hate the process-bound development process I work with here, an Agile methodology would be a total failure with these developers.  They are simply paralyzed by the slightest bit of uncertainty, entirely unwilling to just figure out for themselves what will work.  They entirely lack both the ability and the desire to experiment.  In short, while they're programmers, they're not geeks, and that idea still seems somewhat foreign to me -- when I think about developers, I still think about people who program for fun.  But these developers approach programming like it's on an assembly line, and they need to be told the right way to do everything before they're willing to touch it.

So if you're faced with a very involved, complicated process to do something, stop and consider why that process is there -- it's possible, likely even, that it's there to remove the responsibility of making decisions from some set of people.  Sometimes that's because someone higher up is (or was) a petty tyrant and doesn't care for decisions being made by anyone but himself -- in that case, the process may be ripe for a change.  But sometimes it's there because the people involved are unwilling or unable to act without it, and in that case you change it at your peril.  While a more agile process would be better for me, and is better for the development teams at Microsoft and Google, it's not necessarily better for everyone -- not everyone is a self-motivated geek.

Unfortunately for me, I don't think this is a process I can change here.  It turns out that outsourcing development to India is so much cheaper that even if it takes four times as long, it's still a net savings. 

October 25, 2006

The Cost of Commuting

I think one of the major reasons people don't object more strongly to the commuting culture is that they simply don't realize how much it costs.  After all, it's only driving to work in the morning, how much of your salary does it really take up?  Well, for me:

  • 31 gallons of gasoline per month = $79/mo., $953/yr.
  • 672 miles driven per month; assuming a 100,000 mile vehicle lifespan, this depreciates my vehicle by $168/mo., $2,016/yr.
  • Parking a few blocks from my building = $100/mo, $1,200/yr.
  • Bumping my driving miles per year above 8,000 raises my insurance rates slightly.
  • I waste a substantial period of time every day sitting in traffic.  Assuming I value my time by about what I'm compensated for it at work, this costs me $1,127/mo., $13,524/yr.

Good lord, that's a lot.  My commute costs me $4,169/yr. in actual costs, or $17,693 if you count lost time!  (On one hand, counting lost time is cheating a bit since I wouldn't really spend all that commuting time working, and I'm not paid by the hour anyway.  But since if I were offered the option to take a $13,524 pay cut to drop a day off my workweek, I'd take it in a heartbeat, I don't think it's an entirely unfair valuation of my time, either.)

And in many ways I'm getting off easy -- my car gets 22 mpg average (though honestly it may well be lower during Seattle's rush hour), it's a Honda that didn't cost all that much (keeping the depreciation cost down and meaning it really will last for at least 100,000 miles), and $4.75/day for downtown parking is cheap as hell.  With a Mercedes and a better parking spot, I could easily have $7,500 in actual monetary cost from the daily commute.

Think about that -- your company's requirement that you sit in a cubicle at work every day, even when it's not actually necessary for what you accomplish, is costing you $4,000 or more per year.  And that's cost, not wages, which means that not commuting would be the equivalent of a $5,700 raise in terms of how much money you would actually end up with in your pocket.

Of course, your company doesn't care overmuch, since you are paying that cost, and they are not.  However, I think if more people were aware of the true cost, they'd be more inclined to view telecommuting as the benefit it is, and making use of remote workers would be a more accepted cost-saving measure for corporations.  A $4,000 pay cut to work from home would actually increase my take-home pay, and that would be saving my employer money.

October 23, 2006

Telecommuting in the media

Apparently I'm not the only one wondering why companies don't make greater use of telecommuting... Will Femia at Clicked has the same question, linking to a PC Magazine post by John Dvorak.

What he finds odd is that this is one area where, of all things, the government is ahead of private industry.  It turns out that Public Law 106-346 "requires each Executive agency to establish a policy under which eligible employees may participate in telecommuting to the maximum extent possible without diminished employee performance."  There's a very interesting report on the GSA Telework site that has a lot of data in it about how telework has worked out for the Federal government:

  • 85% of executive agencies have telework policies.   65% of them even have telework coupled with alternative work schedules.
  • 46% of agencies reported that over 25% of their employees participated in telework at least once during the year.
  • 50% of teleworkers in executive agencies are "core" teleworkers -- that is, "Telework that occurs on a routine, regular, and recurring basis away from an employee's principal place of duty (e.g., at home, at a telework center, at an alternate location) one or more days per week."
  • For agencies with a low percentage of teleworkers, the barriers cited were:
    • Office coverage challenges, 54.6% (I'm not even sure what this means.)
    • Nature of agency work, 51.1%
    • Data security, 44.1%
    • Management resistance, 38.3%
    • IT issues, 31.4%
    • Funding for equipment/IT support, 25.5%
    • Employee resistance, 15.1%
    • None, just not doing it, 10.4%
    • Training, 6.9%

Take a look at those barriers.  Some are quite legitimate -- "nature of agency work" could easily make telecommuting impossible for large numbers of employees (it's hard to work from home if you're, say, the clerk at the DMV or otherwise in a customer-facing, in-person job), and "employee resistance" reflects the fact that some people just aren't able to be productive at home due to distractions.  For that matter, some people see going to the office as a form of socializing and would be lonely without it.

But the fact that Data Security and IT Issues are on there is kind of sad, as those issues are quite resolvable.  On the bright side, they're actually a good bit easier to solve than, say, management resistance.  We have technologies like VPNs and laptop encryption that can take care of the data security needs, though to implement them securely requires there be some company-provided equipment (it doesn't do much good if I make a perfectly secure connection to someone's spyware-ridden home machine that hasn't had a virus scan in four years.)

The conclusion of the report, though, is something the private sector really needs to hear: "The positive impact telework can have on an employee's reduced commuting time, effort, and costs; increased productivity; and increased control over the delicate act of balancing work and personal responsibilities is tremendous. Benefits to the organization, including the increased ability to recruit and retain valuable employees, gain higher productivity, and experience boosted morale, are clearly documented. Reduced commuting serves to benefit the environment by fewer pollutants being dispersed into the air, and less wear and tear to roads and vehicles."

Despite the numbers given in the report, Dvorak concludes that the primary barrier to telework is simple irrational management resistance -- as he puts it, "the current management model is hovering around 1921."  I've certainly run into this, when my current manager was hired into this IT group, his first actions were to establish more fixed working hours, get a schedule drawn up for people, and spout manager aphorisms like "Everyone is valued in the office."  I wonder, however, if this is the case everywhere or if Dvorak and I are just drawing conclusions from our own anecdotal bad experiences.  Somehow, I doubt that federal government agencies are hotbeds of enlightened, forward-looking management -- if anything, I'd expect the bureaucratic culture to encourage even more order-for-order's-sake.

Where have I been?

I haven't posted here in a good long while, and there have been a variety of reasons -- the primary one simply being that I hit a very busy time at work and also rediscovered various hobbies, and just didn't make the time to write here.  However, there is one other reason -- this blog is, fundamentally, about work-related topics, and it's important to me to be able to make it constructive, and not simply an outlet for complaining about work (as the Web has more than enough of those.)

While telecommuting, groupware, presence technology, and alternative working arrangements will remain my primary focus, after as many years as I've spent in the IT and software development world, I can confidently say there are a lot more things making IT and development workers unhappy than just having to sit in a stifling, sterile cubicle farm.  I have a lot of commentary to make on these things, but have refrained from doing so since they seemed at least somewhat off-topic.  However, even if not necessarily directly related to the blog's original mission statement, they're certainly related to its title and overall focus.  Specifically, I'm thinking of software engineering practices and features of the corporate workplace that make employees unhappy but don't actually do much for productivity.

Thus, in reactivating this forum, I'll also be broadening its focus somewhat.  I hope you'll find it interesting.