In Business, there are two types of people.
The first type is the kind of person who expects any individual who has a job to be able to do that job. This means that the individual needs to make the effort to understand each job function and why it is done. They also need to have a fundamental comprehension of the equipment they are involved with on a day to day basis.
The second type is the kind of person who expects the tools they use in their job to not allow them to make mistakes, so that even if they do not understand what they are doing, what they need to do is explained for them at every step and wrong choices are incapable of being made.
I’m the first type. And because of that, when I write programs, I write them so that everything that needs to be possible is available. Many people I write these programs for are the second type, and they want my program to analyse data (and read minds) and allow them on any given screen to only be able to do what they are required to do for their job.
For example, I have a screen that allows you to edit the status of a port and to edit the assignments of that port. I coded it completely open (you can edit either at any time) because our database and backend has been shown to have… quirks where data goes missing. The people I am writing it for want the screen to only allow you to set a port’s status to working if an assignment exists, and only to set it to available if no assignment exists. They also want adding or deleting an assignment disabled if the port is in a working status. So, if a bug happens that obliterates an assignment while leaving the port in a working status… my way, you add the assignment back. Their way… you have to set the port to available, then make the assignment, and then set the port back to working. And if for some reason you want to manually delete a port… my way, delete assignment, set port to available. Their way, set the port to available, delete assignment.
Now, the question is, do you see why my way is better?
This screen is not the entire application. And there are hundreds of people using the application. On another screen, there is an equipment assignment page that searches for and offers available ports for assignment. In both cases, they are making the port available for assignment when it is not ready to be (or is not going to be) available.
So, I do it their way… and the next complaint I get is that one person was working on the manual screen above and the port was assigned by the automatic screen after they made it available when it wasn’t really available. Now they want me to code in a delay, store a time stamp and only offer to automatic assignments ports that have been available for at least an hour… *sigh*