This post here is really inspiring. It is the kinda post that makes you want to jump up and shout "Listen to this guy!".
Software development is a weird job, I have been doing it for almost 10 years and everyday is completely new. Although now I feel, most of the problems in software development can be broken down into these categories - - Communication - Trust - Requirement Management - Time Constraints - Technical Debt
Its amazing that how combination of these problems baffles every organization to this date. I saw many failed projects in the beginning of my career but when I discovered Agile, Scrum and XP it knocked me off. It seemed to me that everyone faced these problems and there were some very smart people who sat down and discussed these problems and came up with some recommendations. I followed these recommendations to the full and did a few successful projects.
With Agile now gaining acceptance, I now see another set of problems. People who follow Agile but don't follow the full set of recommendations, for example working in Sprints but having Sprints without goals. Or working in Sprints but changing users stories everyday. Then there is the new breed of software developers who have not done any other methodology except Scrum and they feel Scrum itself is bloated. "Who needs a planning meeting" they will say. And there are Project Managers who have adopted Scrum because it is the "in" thing these days like some PMI certification read from books but in their heart of hearts they still consider software development as a command and control task done by "resources".
So amidst this all doom and gloom, what does the developer do? I have thought about it for days and there are only two things that we need to do -
- Write clean code everyday that is flexible and fully tested (unit + integration + functional).
- Plan and meet the Sprint goals.
For me, if a developer does these two things and these two things only he can hold his head high and go home even if everything else falls apart. Period.