Tuesday 30 July 2013

How Much Business Training for Software Developers?

How much do Software Developers need to understand the business of the application they are developing?

Management and Business People tend to think big-picture (and that is a good thing).  They view the application as a growing (hopefully) number of services to a set of customers making the customers' lives easier, and ultimately making the company money.  Without question, this view of the application is crucial to the success of the application.  Without this view, the services that are built may not fit together, may not be complete, or may be missing altogether.

So, how much of the underlying business do Developers really need to understand?  How much time (and therefore money) should be spent on training Developers on what the application ultimately does?

When a Developer is building one of the above-mentioned services, they do not look at it as a piece of a larger number of services which form the application; they look at it in terms of what pieces of information are moving, what processing should be applied, and where that information should go.  Depending on the nature of the data, this could be a database, a call to another system, mathematical processing, etc.

To Software Developers, an application is just an endless paddle-ball game of requests and data processing.  The request comes in from the User, some data gets processed, and is then retured and displayed to the User.  Request comes in, data goes out; request comes in, data goes out, request comes in...  You get the idea.  An application is a series of data requests, API calls, reads / writes to a database, display of data to a User, etc.  

Remember, the same Developer can work on software that governs the fuel flow of a rocket one day, quantity of jeans on store shelves the next day, and a patient medication system the following day.  Do they need to be a PHD in rocket phycics, Masters in Business, have their MD?

As a Manager, you want top notch Software Developers that can write great code with few issues as quickly as possible - regardless of what business you are working in.  It is extremely beneficial that those Developers can transfer their skills from one subject matter to another; quality code is needed in rocket physics, retail, health care, etc.  Taking time to train Developers on the business of the application is ultimately wasted time, and time is money.  

You may be thinking that a Developer who has been with a company working on the same application for a long time is a benefit because they get to know the application and business the longer they work there.  What is actually happening is they are remembering the application, not understanding the business.  They will remember the services they worked on but that does not mean they understand the business.  Plus, the longer a Developer is in the same place, they run the risk of having their skills become stale.  Technology is moving at such an increasing rate that a Developer that is not moving forward is really moving backwards.

So, if you have a new Developer that has just joined your team, get them pair-programming with an existing Developer, and get them into the code as quickly as possible.  They do not need days or weeks of training to get them understanding the business.  They already know code; don't get in their way.