This is the story of ancient war between Software Scientist and Software Craftsmen on the ground of Software Engineering
The Scientists
Slogans:
Let’s reinvent the wheel
Complexity is charm
Think out-of-the-box (never look inside)
Whenever company gets a project the developers are in search of well-hyped patterns and practices. Whatever the projects require, whatever the timelines are, they follow impressions, seeking complexities to passionate their lives. The problem is they want to combine the universal truths they get from their gurus, with the hypes. They get the compliance in few of the cases. It becomes a routine that start with complexity and when you stuck, let the things fly.
They often suggest the solutions they think they should learn. According to their point of view: software projects are to create a difference, even if the project fails, even if they do not add any value, if they implement state-of-the-art technologies, they consider it success.
The Craftsmen: the delivery people
Slogans:
We deliver
Quality is just a fantasy, don’t talk about it
Ad-hocism
Research is a synonym of time-wasting;
Fortunately some of the projects who comply with hyped patterns and rigid practices succeeded to achieve the timelines, thanks fortune. And now the support people are ready to show their quick solutions. They’ll show that the tasks completed by the developers in month was just a matter of days. Thanks to encapsulation; no one knows what’s inside J
Till the day the application is safe from the quick solutions of support staff, it shows some stability. And once it gets the first JUGAR—synonym for a careless ad-hoc solution in Urdu language—the application becomes more addicted to their JUGARs and provides more options for support people to prove their problem solving skills.
Syed Azhar Hussain said
Nice post. Lacking in management skills is the key towards this approach, and management is not a skills that only managers do, in my view it is a skill that everyone should know, and those who don’t know must learn it. In our engineering schools, we should add PRACTICAL management (and software engineering) courses. JUIGARs, workarounds, useless documentation, super-hero-type-attitude towards problems are also critical to the quality design. We need to understand quality by nature that it is not applying new techy stuffs to the requirements. Quality is to satisfy customer, not mapping new technology to the requirement. Another important thing which is missing, is to learn from mistakes and don’t repeat them. Keep auditing ourselves using very simple process “1) Do the right thing, and 2) Are we doing it right”.