The FirstNet system which runs the emergency departments in NSW (Australia) hospitals, allows treatment details and test results to be assigned inadvertently to the wrong patient. This is one of the numerous flaws exhibited by FirstNet during its systematic review.
Though, these can be termed as design flaws, but these flaws took shape during the planning stage itself.
It doesn’t really matter what we are designing, however small or big, whether we are working as an independent entity or as a part of the team, our goal should be to ensure that the fringe conditions are taken care of (not by themselves, though).
When working in a team, analyze your task and understand the fringes of your task, the input and output parameters and raise questions.
When working on modules, which interact with modules developed by a different team, follow the same procedure, understand the output of these external modules, analyze your fringe conditions and observe whether these conditions are being addressed logically or not.
Though, this sounds complicated, however when you get used to this, its quite easy, as your mind has been trained for detecting such anomalies.
Secondly, when designing input screens, a programmer has to understand that he/she is designing that screen for a user who doesn’t know anything about computers. The end-user is most probably a person who is used to a particular method, and has been ordered by the management to work on the new proposed system, so you must expect some resentment. Also, understand that the end-user is bound to commit mistakes, so throw in as much field validations as much possible and at the same time keep it as simple as possible.
Project Managers, mostly interact with the top management and neglect the actual user who is working on your system. These users are the ones who will report to you a logical flaw and will also suggest you methods which will make their life easier, listen to them, let them know that their point of view is as important to you as that of the top management, discuss it and thrash out the problem. One small hint, when an end-user makes a suggestion, its always to make their life easier, which may or may not be the prescribed method or maybe a loophole which might get created in the system, you should be 110% attentive.
Why blame the computer? Computer was so perfect that it showed to you how erroneous you are.