charlie's blog

Sunday, August 18, 2013

a note about the SDLC

I've been reading a lot of resumes recently, as we slowly grow the software group where I work, and I've noticed a lot of folks referencing the Software Development Life Cycle (SDLC). A large percentage of these resumes indicate that the applicant is well versed in the "entire SDLC", and they often go on to list the SDLC in detail as something like the following:
Requirements-gathering, Design, Development, Testing, Deployment
My concern here is that almost nobody includes "maintenance" or "evolution" in their list.

I'll say up front that I am not an adherent to any specific formal development process, be it Agile, Waterfall, or any of the other approaches out there. I certainly don't claim to be an expert on the SDLC. I can say this with complete confidence, though: no matter what process you follow, software always requires maintenance!

When I read these resumes I get the impression that the person thinks software development is like making a sculpture: you decide what it should look like, do the sculpting, make sure it looks like you intended it to, deliver it to the customer, and you're done! This is emphatically not how software development works.

A much better way to think about software is like a garden. Once you plant it, your job has only begun. You get to spend the next N years tending the garden: pulling weeds (fixing bugs), occasionally adding new plants (new features), and periodically moving things around (refactoring). Whether or not you do this work, someone has to do it, or the garden/software turns into a jungle and eventually dies.

I won't say that I immediately discard any resume that lists the SDLC and leaves out maintenance, and I realize some folks just haven't encountered this part of the process yet, but seeing this on a resume is a huge red flag for me.