Summary

Working in a specific industry or for a specific company for a long period of time does not mean you have knowledge of that industry. Software developers need to take the initiative to learn about the core business. The core business needs to start demanding that the software development organization hire software developers with core business knowledge.

A lack of business understanding causes growth and churn in software projects, it is as simple as that. Every software developer, regardless if you are a designer, programmer, or tester needs to learn the core business. This will improve performance more than anything else. There will be less project growth and churn.

Often, I hear, “We do not have time to learn the core business or study our customers.” The same strategy is used to avoid exercising and dieting. People often say, “I don’t have time to exercise everyday; I don’t have time to keep track of my food intake.” There is so much time wasted redoing functionality because the software development team did not understand the actual problem in the first place. They relied on a user who was not able to articulate the problem and solution. By doing things right the first time you create extra time.

I hear developers say, “Studying the customer is not my problem,”or, “Someone else does that and they tell me what to program.” This may come as a surprise to many software developers, but helping the customer in his or her job is the sole purpose of a software application. Software applications are not developed because they are cool and represent the latest technologies; they are developed to help customers solve problems. Knowing and understanding the customer is everyone’s problem.

Dian Fossey, renowned researcher of gorilla behavior, understood to really understand gorillas she needed to go to the jungle and study them. To really understand your customer, you need to go to the jungle. The jungle is where your customer lives and works every single day. If you don’t visit and study your customer in its natural habit, you can’t really understand the problems. If your customer needs to carry water from the river to camp everyday, and there is a tiger in the way, then you really need to address the tiger. If a line forms when people try to vote, then you need to address the line. If the users of your application have yellow sticky notes all over their monitors, you need to address the yellow stickies.

In the end, software developers are problem solvers, not programmers. Programming is just a technique to solve a customer problem. The domain of software is much larger than just writing code. It encompasses the entire customer problem. The fundamental difference between a software developer and a programmer is focus. Do you focus on solving your customer’s problems, or are you focused on writing code? If your focus is on writing code, then clearly, you are a programmer. If your focus is on helping your customer solve a problem, then you are a software developer. Developers develop software with the purpose of solving a problem, not because it is cool; and you utilize the latest coding techniques.

Good companies, good consultants, and good software developers are good observers of people, of teams, of environments. Instead of asking your customer what it wants, you should utilize ethnological studies to help to discover requirements. The root cause of not being able to define requirements or what needs to be done is a lack of business and customer knowledge. It is not about building functionality; it’s about building the right functionality.

On the other hand, you can take the perspective that the client or a client liaison should provide all the requirements and it is your job to code. You can believe it is the customer’s responsibility to provide requirements and passively sit back and wait. This is has been the mentality for some time now in software development. You can also watch your job be outsourced to Asia or Eastern Europe, too. Now, if you are a hungry developer in Asia or Europe, this is how you can take more IT jobs from the West.

As St. Thomas Aquinas remarked in his introduction to De Ente et Essentia, "a little error in the beginning leads to a great one in the end." A small error at the outset can lead to great errors in the final conclusions, as the Philosopher says in I De Caelo et Mundo - written around 1253.