This is probably the single best advice there is regarding agile software development, offered by the authors of The Pragmatic Programmer under section “The Essence of Agility”. Having worked in agile and pseudo-agile teams myself, I believe this is a valid point conspicuously disguised as a rant. Teams often tend to follow some off-the-shelf agile model as a written-in-stone guidebook, and in doing so inadvertently move away from the very essence of agile.
Just the following four deceptively simple values should apparently put one on a path to true agility:
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
In my experience, I’ve found #2 and #3 to be the most difficult to comply with as they often involve setting expectations with the client which can be tricky, unpleasant, or downright impossible.
These four values should guide not just project managers and analysts on a team but also developers. The art of creating good software doesn’t only lie in writing clean code but also in enforcing inclusive and structured communication patterns.
Do they get lost under the weight of monetary aspirations? Or do they get suppressed by parents’ expectations? Whatever the reasons maybe, the sufferer is always the dreamer – the youth who dreams of becoming a civil engineer but ends up a computer engineer, and vice-versa. At least that is what the situation is like in India. And that starts right from the high school itself, when a student is required to choose from either of the 3 streams – Medical, Non-medical, and Commerce. It generally goes like – Doctors’ children will take (be made to take) medical even if the child wants to be an engineer, and the Businessman’s son will take up commerce. The situation is far worse for the non-medical students. Even if one voluntarily takes up that stream, chances are, they will be forcibly made to take an engineering stream against their wishes when they enter the college.
All this doesn’t end in the college itself; it continues beyond it, in the job as well. When people begin IT jobs as freshers (which most of the engineering graduates do), they are not given choices; instead a specialization (kind of work to be done) is slapped on their faces, selected randomly by none other than a computer program! So, what happens to a computer engineer who wanted to do some hard-core and challenging coding at job? He/she usually ends up doing testing or support work or many other things except coding.
This is the apathy the Indian engineering job scene is suffering from at the moment. People have become so placement-oriented that they choose higher education courses just because those would help them fetch a “high paying job”. It doesn’t matter anymore if one wants to become a mechanical engineer; he’s made to opt for electronics engineering because that is more “lucrative”. In some cases, people take up *any* course just for the sake of graduating from a premier college because the end result – the placements – are usually good there.
I say, it’s time to wake up and start realizing dreams, instead of continuing to sleep and letting your dreams get manipulated by external factors. Sometimes I feel proud (and lucky), not just because I graduated from an institute (college) of national importance, but primarily because I graduated as a computer engineer, what I always wanted to be.