Not all programming work requires the same set of aptitudes and skills. Here is my take at some groupings:
- Systems. This is the black art of developing software drivers or other software that requires an intimate knowledge of hardware or operating systems. Testing can be very difficult to do and is often a large part of the overall scope of the process.
- Business Process. This is the realm of programmers who design the architecture of ERP systems, company EDI platforms and insurance company billing systems. Business Process programming is all about the data. There are often large numbers of people involved in different roles and the biggest challenge can be communication rather than technical issues. Programmers who work in this space may develop prototypes and write specs for other programmers who actually do the coding.
- Maintenance. This kind of work involves making changes to existing software. The programmer may not understand the full scope and function of the software he or she is changing.For example, there may be a routine, ShowIfPermitted, that governs whether buttons on screens in the ERP software are visible based on user rights. The programmer can add a button that displays a report, and use the ShowIfPermitted function to display that button only to permitted users without understanding ERP or how security is implemented in the software. The success or failure of a maintenance programmer hinges on documentation and clarity of specs.
- Debugging. This is similar to maintenance but there's a little more involved. The ERP system may work fine for users with two monitors but doesn't display properly when the user has three or more monitors. Here, unlike maintenance, the task isn't clearly defined and requires a greater understanding of the software architecture. Debugging can be tough too as it often happens on production systems where the ability to add debugging code or other make changes is extremely limited.
- Hacking. This is how a lot of programmers got started. There is a small problem. For example, a state agency supplies a monthly report as an excel spreadsheet and there is a need to combine the data in the spreadsheet with information from a database and create a chart that includes the combined data. The user here might not be a programmer, he or she might be an accountant or a sales manager that decides to delve into VBA macros to automate a tedious and time consuming task. Programs created via hacking have a small user base and can be easily tested.