Tag Archives: agile

Keys to a stable application

Checkmark

Unit Tests!

If you don’t know about unit testing and the power and flexibility that it gives you then you NEED to get on board!
When your project has over 50% test coverage you’ll start to experience a strange feeling of confidence in the code that you’re writing. This confidence you’re feeling will be the fact that you’ve seen your code perform it’s duties over and over again with success.

Each time you run the tests after you’ve added code, you know that everything still works and that gives you huge peace of mind.

Obviously there are some other things you can aim for to aid this.

Like…

  • If you find a bug…write a test that exercises it and fails…THEN fix the code and see the test pass!
  • Aim for 80% coverage or more on the entire application.
  • Setup hooks in your version control that runs the tests before it lets you check in your code.
  • Use fixtures! If you interact with data then use fixtures! Do not pull from a live database! If you pull from a database on a server you’re introducing configuration issues and tighter coupling.

Want to learn more?

Version Control

I didn’t put this first because I assume that people use version control on their projects. If not on a RAID server or in the cloud then at least a simple Mercurial repository on their local machine.
The ability to track versions of your software is essential in providing long term stability to your application. Interestingly enough I don’t think that tracking your files is what brings stability from version control. Typically when you choose some form of version control there are prescribed methods that are suggested for the developers to interact with this version control. For subversion there is the idea that you’re supposed to have a “trunk” and then branch and merge back down. These methods of separation in work bring more discipline to the development of your application.

Obviously don’t discount the idea of having version tracking on your source code! Version tracking has an immense value in the development of your application. Version control makes it possible to track bugs down to the very line! Version control allows you to branch your project and work on many features in parallel! Best of all version control opens the door to a world of many developers working on the application at one time!

Want to learn more?

Best Practices

What can I say, Duh right?

If you’re in school right now, tell your professor to start teaching some best practices in an area they’re familiar with. You will benefit from these your entire life.

Want to learn more?

Testing

Pretty simple, do it! Make SURE that you test your code before you commit it and send it off to your QA process. There are now quick little changes in which you don’t have to test the actual user interface or consumer of your code. Do this! It’s freaking annoying when you don’t!

Make sure that you have an isolated environment(integration server) to test your code on! This will make it easier and it’s also very important for the next step as well.

In Django you can even use the built in server to test your application. Snap(Haskell) also has it’s own server.

Want to learn more?

Release Planning

This is interesting because it never came up on my radar until we started doing it, and then I realized how important it really was. I mean it’s obvious right? Here make this thing and then release it! Ok, how?  It’s also helpful to practice on your integration server(mentioned above) before releasing to production. This might sound silly but practice does make perfect!

Secondly, or maybe firstly, release planning just helps everyone know what their job is on release day.

Want to learn more?

Issue Tracking

Ok, I’ll be honest, I don’t know if this goes at the top or the bottom.  You can have issue tracking setup as your developing but one thing I know for sure is that you need it once you’ve released the product! Oh, and it really helps to have it public as well! Products like GetSatisfaction.com will help you communicate with your customers! And who’s input should you care about the most? The people that use your product!

The trick with issue tracking is that you must respond to the issues! The quicker the better in most cases.

Want to learn more?

Summary

The steps I’ve outlined here are not from any one particular process. These are just things that I’ve seen through trial and error that have appeared to work in my environment. I feel like they are high-level things that can be acknowledged and done that will increase the stability and maintainability of a software product.

What do you think? Feel free to comment! We can help each learn!

Advantages of 1 week sprints

Where I work there has been a lot of movement towards creating an agile development environment. I believe that the process of transitioning into agile is unique for each company or group that makes that commitment.  Something that I noticed, which isn’t really unique in the agile world, is that short sprints have a lot of advantages. I realize that there are a lot of projects/bugs/features that may require sprints longer than one week, but I think a push to shorten sprints could be advantageous in developing quality.

Iterate!

(Not to be confused with irritate…)

In software development there is a lot of emphasis on iteration. Iterate! Iterate! Iterate!

Iterating on a project is one of the aspects that allows agile to work so well. So in the beginning we tried 4 week iterations, thinking that longer sprints would ease the transition from our previous development process, which was a scrum hybrid environment, and already in a 4 week cycle. What we discovered after about two iterations(two months) was that these longer iterations didn’t seem to be working as well as we had hoped. They seemed to help with the transition somewhat, but as time went on a lot of us wanted to switch to the shorter sprint. One reason was that we realized that a lot can happen in four weeks when it comes to requirements, direction guided by business needs and critical defects. So in our particular case the biggest advantage to one week sprints was the tremendous increase in…

Read more »