I think they’re a little confused, but it’s still an interesting idea

Bookmark and Share

August 28th, 2006

Surfing around the Web yesterday, I stumbled upon a blog posting by European Capital Partners (EUCAP), entitled “Is Google Hiring Hackers or Software Engineers?” which culminated with the statement that

“Ed Yourdon, one of the inventors of software engineering, visiting digg.com observes that web2.0 startups will need software engineers as the service grows. Hackers will not be out of work though.”

I may have made a few modest contributions to the field of software engineering, but I think it’s a bit of an exaggeration to say that I’m one of its “inventors.” More importantly, I don’t see how anyone reading my report about digg.com could conclude that I believe Web 2.0 startups will need software engineers as their service grows; read my blog posting for yourself, and see what you think.

And the EUCAP article begins with a rather dubious assertion:

“Classical software engineers work in organized and structured ways, for the pursuit of perfect code. Give them a specification of what you want, and they will deliver on time, to cost, and with zero defects. Their work process is down to a science. Quality, on time, within costs is their mantra.”

It’s reasonable to assume that people building safety-critical systems (e.g., flight-control systems for commercial airlines) do strive for perfect code; but for the majority of software engineers building real-world applications, a better description of their objective is that they’re building “good-enough” systems that represent a practical engineering tradeoff (that’s why we call it “software engineering”) between the classical constraints of functionality, delivery schedule, cost, and quality; see my blog postings here and here for a discussion of good-enough software.

And in any case, there’s a serious flaw with the notion that classical software engineers can optimize all of these constraints, and deliver software that’s on time, within budget, and free of defects, if you just “give them a specification of what you want.” We certainly know how to do a better job of helping end-users write a specification than we did thirty years ago — that’s largely what my work on structured analysis and object-oriented analysis has been all about — but it doesn’t guarantee that the specification will be sufficiently complete, detailed, and error-free to ensure that the resulting implementation will be error-free (and on time, and within budget). As the software engineering profession now universally agrees, even if the end-user gives us a “perfect” specification, it’s subject to constant change throughout the implementation process. Business priorities change, government regulation changes, and in the final analysis, end-users retain the prerogative to change their minds about what they want a system to do. That’s what agile software development is all about.

But aside from these quibbles, I thought the EUCAP article made an interesting suggestion: today’s software companies need both “hackers” (people who depend on inspiration and insight more than a formal, step-by-step development methodology) and “classical” software engineers who follow something like the Software Engineering Institute’s Capability Maturity Model (CMM). Unfortunately, I think their use of Google as an illustration of this need for a “two cultures” strategy is also a bit confusing; as their article says,

“To try and stay ahead of the game, Google is hiring candidates that can innovate; hackers to artfully create new astounding services. To maintain and polish its existing software, Google is also hiring software engineers to implement process and quality.

“The novelty is that Google likes the 2 in 1 solution; hacker and computer scientist in one. By Google’s own admission, all their employees have to be 30% hacker and 70% scientist.”

The hyperlink here points to another EUCAP blog entry, entitled “How Google Runs Innovation,” in which the claim is made that Googlers are supposed to divide their time into three portions: 70% for working on Google’s core products related to search; 20% for research; and 10% for wild-and-crazy brainstorming. For what it’s worth, the actual language on Google’s “What’s It Like To Work in Engineering, Operations, & IT” page says this:

“Google engineers all have ‘20 percent time’ in which they’re free to pursue projects they’re passionate about. This freedom has already produced Google News, Google Suggest, AdSense for Content, and Orkut – products which might otherwise have taken an entire start-up to launch.”

My concern here is EUCAP’s implication that you have to be a hacker in order to feel sufficiently passionate about a development effort to warrant putting it into the 20% category; and I think it’s also dangerous to imply that the “traditional” work (in Google’s case, search-engine technology) is devoid of any need for creativity and innovation. As a loose generalization, it may be okay; but I worry that it can also lull us into some sloppy thinking, with some dangerous consequences.

For example, the final paragraph of the EUCAP article say,

“Software engineering may be outsourced to India, but entrepreneur and intrapreneuship has become the essence of competitive edge. Innovation has become the new marketing. Judging by the way Google is recruiting among the web2.0 hacking community, hackers are here to stay.”

The obvious implication is that only the straightforward, bread-and-butter, software development activities requiring formal software engineering disciplines are going to be outsourced to places like India and China. And the more subtle implication is that the Indian software industry is incapable of doing anything creative and innovative. But I think that’s a dangerous assumption; for example, if you type the search phrase “India Web 2.0″ into Google, you’ll get a long list of interesting hits. Since search results change from day to day, depending on the real-time behavior of the Web, you’ll probably get a different list than I did; the first item on my list was an interesting blog entry entitled, “Web 2.0 Weekly Wrap-up India Special,” which noted that Sabeer Bhatia, a co-founder of Hotmail who made $400 million from its sale to Microsoft, has recently introduced a new product called blogeverywhere.

Ultimately, what’s most important for successful IT organizations is not to hire a mixture of cowboy hackers and robot-like SEI-CMM level-5 software-methodology fanatics, but rather to follow Google’s concept of setting aside 20% of every engineer’s time for “projects they’re passionate about.” How they choose to pursue that passion is a separate decision altogether.

3 responses about “I think they’re a little confused, but it’s still an interesting idea”

  1. Paul Elosegui said:

    Ed, your counter-post is longer than the original. A deluge of feedback. Thank you

    There is a strong cultural divide between between hacker community, and structured development professionals. The divide is best described by Eric Raymond’s “The Cathedral & the Bazaar” essay, and his O’Reilly book. Structured, designed development on the one hand and distributed development on the other. Some call the bazaar Linux-style development.

    My post is written for the hacker community and as such contains cultural assumptions, and is naturally not exact. I keep the post lenghts down, and use artistic license so the story does not bore the visitors. So Newton invented gravity, Ford the motorcar, Einstein the atom bomb, and you invented structured development. It is hard to be interesting and entertaining in 500 words.

    Integrating both styles is becoming a real problem for business. Open sourcing code to the hacker community is becoming widespread, for both marketing and development motives. Some companies like MySQL (open source database) feed of the external development as an idea & innovation base, and use only internal code for their releases. Others use external, unstructured development, for their code base.

    The point behind my story is how you integrate both contributions. To my knowledge the problem has not been addressed as yet, and most of us find an arrangement by trial and error. Yet the challenge is more and more widespread among businesses. A subject of a book perhaps.

  2. Paul Elosegui said:

    The reference to progress of web2.0 arena along the technology cycle is taken from your Google visit post, not your digg visit. I stand corrected.


    Rademacher’s success at creating such a mashup is one of many examples that today’s innovative Web 2.0 products and services can indeed be created and launched by one hard-working, talented person — or, in some cases, a small team of two or three people. To some extent, that has always been true of the software field, and it was true in the early days of Web 1.0 as well; but then we began to see larger and more expensive startup efforts, with an army of developers, and an associated multi-million dollar budget that required massive VC funding, and/or the resources of a large company. I wouldn’t be surprised if we eventually see the same thing for Web 2.0; but for now, we’re still in the early phases of the technology cycle, where a couple of talented, hard-working engineers can do dazzling things

  3. Limewire Music Downloads said:

    Great boys1cf8c7

Leave a Reply