Tag Archives: agile

SOFTDEV: Top 10 software practices

SOFTDEV: Software Development Methodologies

One of the categories in this Blog is about Software Development Methodologies. From a single person project to hundreds of developers there are some key similarities and some significant differences. Also, the evolution of the art of software development and the science of software engineering have changed the processes used. Finally, the tools we have to work with have evolved and improved significantly.

I’ve been programming since 1974 (see BIO – Programming in School). Sure my initial projects were in high-school and structured around basic programming fundamentals but even in my teacher’s classroom, there was structure and a set of expectations. My teacher insisted on commented code or you got a zero grade and she encouraged us to write the comments before the code … and remember, each line of code was a keypunch card back then.
We’ve come a long way since the 1970’s, even if you are a project team of one person, but we have not outlived the usefulness of good software practices:

  1. Understand your user’s requirements;
  2. Design your code before you write your code;
  3. Comment your code well;
  4. Make your code readable to others.

I’ll add to those basic principles some practices that bring us into this century and more into a team development perspective:

  1. Build tests as you build your software;
  2. Use a version control system (CVS, Subversion, git, etc.);
  3. Define a build system that versions the builds tied to the version control system;
  4. Iterate fast, and demonstrate working, tested code, even if it’s not the entire feature or product;
  5. Always make your project measurable;
  6. Communicate your completion estimates weekly to management, to customers or the intended users.

There is a lot written about software methodologies like Waterfall, Agile, SCRUM and Kanban among others and they encompass the majority of the principles listed above along with the concept of self-organized teams to get things done, on-time, on-budget, with happy customers and employees.

I want to explore some of the more challenging aspects of software development methodologies from my own experience and talk about the challenge of transitioning from one process to another for continuous improvement.