Monthly Archives: April 2008

Is There a Job Called “Coding”?

“Management has announced that project management and application design will be done locally while coding will be done offshore.”

This announcement conveyes a number of messages.

The tone implies that coding essentially is some type of basic work. The thinking has been all done; now the results have to be written out in full and typed into a terminal, just like entering data from a fax or letter. Unless application design is done to a very fine level of detail, writing source code requires a lot of intellectual work to convert common language specifications into a running program.

The announcement implies, too, that coding is some kind of low level work. The architect has designed the building. Now the building company takes over, and while the construction of foundation, walls, and roof requires specific skills that an architect might not have it is quite clear there is a difference in the attributed value of work, both intellectually and financially. Writing source code requires very specific knowledge of ever changing APIs and frameworks. Apart from that, software architecture and implementation never are as independent as planning and building a house. While the latter is a pretty tried and true standard affair the former means solving a new problem with new means almost every time.

Since the company employs business engineers that capture requirements and produce a specification, architects that design the internal structure, and developers that write the software, “coding” must be what developers do, and coding is going abroad. Not too happy a perspective for “coders”, whose value has been downgraded while being informed they will be made redundant. The offshore “coders” probably don’t see themselves as data entry personnel, either. In example, I found Indian programmers at least as capable (and ambitioned) as their local counterparts.

The offshoring of “coding” work encourages management to relabel developers as architects, which might be what they are – or not. Often, the following questions are never answered: What does an architect typically do? What qualification must an architect have? Does the company provide formal training, or are architects simply being appointed? This non-definition of what an architect is leads to the employment of architects who never have been doing any serious programming, which in my professional opinion is a sine qua non prerequisite.

Management does not quite understand what their software developers do when they talk about about “architecture” (“planning the system down to the details”) and “coding” (“typing in source code”), especially in the context of offshoring. Of course development work can be split up like that. But then architecture would comprise 80% of the effort, and not much could be saved by getting 20% of the work done at low cost. Additionally, problems and insights during implementation often prompt an adaptation or change of architecture, requiring a more iterative approach than the waterfall modell “design here, code overseas” provides.

Going Offshore – Things to Keep in Mind

One of my clients decided to offshore development work. The idea is that high level, well paid work – maintaining direct contact with the customer, capturing requirements, specifying and designing the application – gets done locally while the coding gets done offshore for cheap.

This didn’t quite work out as planned, for reasons that were not too difficult to anticipate. The scenario described above touches on a number of issues that I would like to address in a series of blogs.

The anticipated subjects:

  • “High level work” – What separates high level from low level work? Why is high level (= high cost) work not offshored as well?
  • Separation of architecture and development – Does this provide benefits? Improve quality? See “Breaking Up Architecture and Development“.
  • Going offshore to reduce development cost – How much cheaper is offshore labor really? What additonal costs are incurred? See “Comparing Work by Cost Only“.
  • “Coding” – Is there a job called “coding”? What does it consist off? What happens to the onshore “coders”? See “Is There a Job Called Coding?“.
  • Ethical aspects – What are the implications of producing offshore in low wage areas of the world and selling the product in high price markets? What does it mean to the current workforce?
  • Prerequisites – What kind of projects are suitable for offshoring? What processes should be in place before going offshore is attempted? See “Prerequisites for Offshoring“.
  • Economical aspects – Are there other, better ways to reduce development cost? What does “better” mean in this context? See “Comparing Work by Cost Only“.

What does that have to do with Software Entropy? Software quality gets influenced by many factors, and the longer I work in the field the more I recognize that most problems in software development aren’t technical. Management decisions have a huge impact, and going offshore is one of them.