Or perhaps better yet I should rephrase the title above and instead write: Is agile development conducive to Perl?
For the last ten years or so there's been a big rage about the benefits of agile software development and how much better this methodology is compared to good old Waterfall or RUP or Ruby on Rails or whatever.
I would like to claim that Perl is just as good if not better than any other programming language when it comes to going agile. I've used it often enough and it has resulted in successful products hitting deadlines and bringing in big bucks. Who ever told us that early-to-market is an impossible task?
Perhaps Perl is not ideal, but it's flexible enough. Perl fosters creativity in such a way as to bring about visible results very quickly. There are many ways of doing things, and these alternative can be compared, the good with the not so good and even the bad with the outright bad, when choosing the most viable direction to take. Perl means moving forward not backwards.
Is speed the most important? Sure. Should we keep quality in mind? Yes, of course. Is there enough time to test? You better or else. Should we demo even though it's not quite ready. Yes and yes.
Let's have a look at Scrum which is one way of being agile. Since I've had more experience there, I feel more comfortable discussing it in light of the Perl programming language.
Scrum's success is based on a number of important concepts including the following:
- Describe requirements as user stories
- Prioritize tasks by business value
- Commit to short-term goals and go for it
- Allow the team to do anything to accomplish the goal
- Do not disturb development during each cycle
- Develop quickly and pragmatically
- Take part in daily stand-up meetings
- Measure speed by iterative development cycles
- Empower the development team to make any and all decisions
- Embrace change because it will happen
- Review and improve
- Foster bleeding-edge technology that might break things
- Accept delays as part of life and make them public
- Tackle risks early and do not fear failure
- Verify, rework and move forward
- Be proud of what you create
- Have a fun and relaxing time getting things done
I could go on and on explaining the fine art of doing Scrum within the wonderful world of Perl, but I believe I've said enough for the time being.
Hopefully my short discussion here has tickled enough people out there to make them think and reflect upon their own experiences. Enough so at least that they are inspired to leave comments of all kinds, foster even more discussion, defending and/or judging good old Perl as a agile way of doing things (or not).
So is Perl really conducive to agile development? I think so.
I'm fairly sure that most (all?) of the teams using perl at the BBC are using scrum, which means that for example the iplayer backend is a Scrum-driven Catalyst+DBIx::Class project.
I'll let the guys actually at the beeb confirm/deny this though, should any be reading this.
I would be interested to know more about how the following point that you mentioned is achieved and how a developer copes with it ( not always easy IMHO )
By fostering a bleeding-edge approach, you are purposely pushing the limits of development and the creativity required. The fact that things might break is a good thing, because by doing so one is testing the health of the future successful product at every angle, thereby reducing greatly any inherent risks when the product goes live.