In software engineering, two things are very important – 1) Requirements and 2) Defects. Requirements are basically what the customer wants. The more elaborate the better. Different people have different ways of writing requirement – some are very elaborate, some concise and some work through it as the product gets developed.
A software engineer is the person responsible to make the product and in most cases relies on the requirement to get started on building the product. Any flaw in the product reflects a flaw in the requirement’s gathering process. But that is seldom the case.
When the product is delivered and does not work as expected in the requirements, the customer creates what we call “defects”. In an ideal scenario there should be no defects. But we are talking about ideal world and world as we know is never ideal. There are flaws in everything and so is it in this process too. This is a normal lifecycle of a software engineer’s job.
I however know some people who do not work out of requirements. They work out of defects. So basically they don’t pay attention to what is expected out of their product upfront and do a sloppy job to deliver the product and let the users test it and find issues and finally fix it based on the issues raised by the customer.
In layman terms – imagine yourself making pasta for your family except that all you serve them is boiled pasta and then when your family complains you throw in some veggies, and then meat, then sauce, cheese and so on. How would your family feel? I bet they will never let you cook dinner again 🙂 Jokes apart that is how the customer would feel when you do a sloppy job.
Many times people lose focus. They intend to do well but eventually either knowingly or unknowingly don’t do things the right way. What person are you? A requirement person or a defect person?