Blog

Software Development – Function vs Eloquence

By Chris Malott posted on January 11th, 2010

I’ve been involved in some major Software Development projects both as a Developer and a Project Manager. In fact, over the last year we’ve been developing a large scale Java application to replace a number of systems for our parent company Computer Stores Northwest, Inc (The Mac Store, Bodelin, PowerMax, Iris Professional Services).  We’ll be releasing the software next month for our first round of user acceptance testing.

Over the years I’ve gained a unique perspective on developers and how they function on business projects. I’ve observed two types of business software developers:

Type A – The Eloquent Developer: This developer lives and breathes eloquence. She comes armed to battle with an “OO and eloquent design rules all”, handbook. At every junction she carefully analyzes the task at hand, methodically detailing every possible input/output scenario, and goes to task developing an armada of eloquent objects designed to handle “all” while abstracting the details from the caller. She passionately believes this is the only way to get things done.

The Pros/Cons as I see it:

Pros:

  • Generally writes code that scales better and is more maintainable.
  • Dependable analysis when problems are articulated effectively. This typically requires an intermediary with this type of developer.
  • Very strong technically.

Cons:

  • Prone to over-engineering.
  • Focuses primarily on the technical and not on the business ramifications of the work.
  • Generally takes significantly longer to produce results. I.E. Higher cost of acquisition.

Type B – The Functional Developer: This developer is both a business person and a developer. She comes armed to battle with a “How to be an MBA and an Engineer”, training manual. She understands time is money, and her interest is on getting the business rules right the first time. She is an effective communicator, and her guiding principle is on driving the continued profitability of her customers through the solutions she provides.

The Pros/Cons as I see it:

Pros:

  • Effective communicator who doesn’t require an “intermediary” to just “get it” when business problems are relayed.
  • Looks at the big picture.
  • Results driven, and typically costs less to get the initial product rolled out right.

Cons:

  • Not particularly eloquent on the core development, which depending on the scope of the problem can lead to security, maintenance, and scalability problems.
  • Does not place enough emphasis on the technical.
  • Is a relatively rare commodity. There are far more developers that fall into the (or at least think they do) Type A category.

So who’s the better pick?

My answer: neither in their entirety. If you’re a business person, you might be tempted to say Type B. If you work in the technical industry you might be tempted (which frankly represents a problem to me, but I’ll get into the detachment of IT personnel and business later) to lean towards Type A.

Ultimately there are two questions we have to evaluate. First, what is my cost of acquisition? That is, what is my total cost to produce the software product in its initial running state. Second, what is my total cost of ownership? That is, what is my cost of acquisition plus my cost of maintenance over the lifetime of the product. You might find that when orchestrated correctly Type A will have a lower total cost of ownership. Conversely, you might find that when orchestrated correctly Type B will have a lower cost of acquisition.

So the natural conclusion we must draw is that the ideal developer is one that is a culmination of both Type A and Type B. When I look at hiring developers or contractors to assist in development projects, this is always what I’m looking for. I’m interested in developers that understand the business approach and will just “get it done”, but won’t simply throw smart design and eloquent code the wind. This can be a tough thing to find, and are the kind of folks you hang on to when you do.

In my opinion, when developing small and medium sized business applications the ideal developer makeup is probably somewhere around 70%/30% in favor of  functional. This is a recipe for a successful initial product that doesn’t significantly increase your total cost of ownership or the general liability of operating the system.

About Iris Professional Services
Iris Professional Services is a computer consulting company operating offices in both Seattle and Portland. Businesses throughout the Pacific Northwest rely on our expert IT consultants for all their network IT support services.

Posted in Software Development

Leave a Reply