Believe it or not, my current job (where I’ve been since fall 2011) is my first where being a developer is my primary responsibility. My previous titles have been things like “support technician”, “data analyst”, and “IT manager”. Being able to code was just a bit of added value I could bring to the table (if it was acknowledged at all).
I’ve never been a fantastic coder– but I’m pretty good at taking an idea and turning it into something that works. That’s often been good enough, for the kind of projects I get involved with. I’ve long understood that there is a class of programmers who are better than me. They did things like Test Driven Development, or simply wrote better code, or used better tools. They were agile. I didn’t understand what agile development was all about, so it just became a code word for everything I wasn’t.
That all changed after I went to Scrum training a few months ago. Scrum is a particular way of implementing agile development. It turns out, “agile” (and Scrum) are exceedingly humane. Now, I understand that the defining feature of agile development is humility.
Here is why I say that:
- There is no presumption of mastery. Instead, you are simply asked to keep learning and improving.
- Likewise, the entire team is asked to periodically reflect on how they are working, and adjust as necessary.
- Agile recognizes that nobody on earth (and certainly no committee or working group) is any good at deciding what the requirements really are for a software project. By getting the work-in-progress in front of customers quickly and often, you can react to their feedback, and be more confident that you are in fact building the right thing.
To me, that seems like a really civilized way to work, and erases a decade of agile anxiety.