The first thing, which comes to mind, when someone is telling that he is working in the software development industry, is programming. Obviously, programmers have realized the same thing. However, programming is not the only job in the software development industry. It is not even the most important one. This blog entry is written to justify my opinion. So, if you are a programmer and you feel that you are the most important part of the machine, you should consider following arguments very carefully:
- Without sales, there is no need for programmers. This one is pretty obvious, but sometimes it is still forgotten. If there is no money coming in, there is no money going out either. This means that you are not getting paid. Thus, it might be wise to remember, where your paycheck is really coming from, because in the end, it is not your employer, who is paying your bills. I will give you a hint: If your product or service does not sell, you have to do something or end up filing for bankruptcy.
- Without specification, programmers have no idea what they should do. The key of making great software is to know, what you are expected to do. Thus, you should gather the requirements of the software, and create a specification, which you can use during the implementation phase. Remember that a specification does not necessarily have to be a huge Word document with 200 pages in it. The most important thing is that you know what you should provide, and the customer knows what to expect (Remember that every software project has got a customer. It can be internal or external, but it does exist!).
- Without project management, programmers cannot prioritize their actions. Without guidance programmers tend to focus on tasks, which are challenging, interesting or just plain fun. Unfortunately, since the task selection is a subjective process, the selected tasks might not be the ones, which would be most beneficial for the current project. This is where the project management steps in, and guides the programmers to the right direction by prioritizing the available tasks, which in theory should ensure that the most important features are implemented first (In reality... Well, that is an another story).
- Without testing, no one really knows, whether the software works or not. No one is going to pay for a software, which does not work. So, it is in your best interest to deliver a software that works. And yes, the only way to know, if a software really works, is to test it. A common misconception among programmers is that testing is easy and boring task, which does not require any special skills. That is why testers are not always getting the respect they deserve. Well, I have got news for all programmers out there: First, finding a good software tester is not an easy task. It is actually harder than finding a good programmer. Second, testing is not an easy or indifferent task. It is your last chance to impact to the user experience of the software. After the software has been released, you are too late. All you can do is hope that your QA department has done their job. Remember, you have got only one chance to make that crucial first impression.
- Without data migration from previous system, the new system can be useless. Sometimes having an old system replaced with a new one is justified, but that alone is not enough to make the new system useful. Users of the system are generally expecting that the information stored into the old system is available in the new version as well. Data migration can be tricky and demanding task, which is why it is usually done by integration specialists, who have got experience from transferring information between different systems and solving problems caused by different data models. Remember, if the information is not transferred, it does not really matter how brilliant the new system is. From the customer's point of view, you have failed to deliver.
When all mentioned aspects of a software development work have been taken care of, programming is rather straightforward. However, it does not mean that it would be simple or easy. It is just straightforward. Oh, one more thing: saying that something is not the most important thing, does not mean that it does not matter at all. In the end, programming is just one piece of a gigantic puzzle. Without that piece the puzzle cannot be completed, but the puzzle has other, equally important parts as well.