« New Hard-Drive in Apple PowerBook G4 | Main | Much Needed Vacation »

Developing Software in a Fast Company

I've been working at MobiTV for nearly 3 months, and have been able to make a noticeable impact in the PCTV project during my stay. This is a very fast paced business (Internet/mobile video delivery) with highly compressed product delivery schedules. This virtually eliminates the possibility for big up-front design that has been possible on some of the government projects I was involved in with SRA.

This is not the first time I've worked for a company with high expectations and little time. While working on a very small start-up in 2003 with my friends Tim & Ben, we relied on Extreme Programming (XP) techniques to manage deliverables and keep product quality high. It worked very well for us, and instilled in me the importance of writing and running developer unit-tests. It had a profound effect on how I approached writing software - thinking of requirements in terms of unit-tests is a major paradigm shift.

For most junior (& many senior) programmers, the idea of writing developer unit-tests is quickly dismissed because they have too much work to do on production code and can't space the time. What they don't realize is that the act of writing unit-tests enforces their understanding of what the requirements are for production code, and saves them time because they end up writing only enough code required to make the tests pass. Also, having unit-tests to verify functionality increases a developer's confidence in the code and reduces the amount of time spent in the debugger during development time, integration testing, and QA testing.

Recently, my teammates and I at MobiTV have applied and benefited from the use of XP and unit-testing while developing the latest release of PCTV. We achieved 80% test-coverage of our code, and encountered merely 10 defects during the QA cycle (more than 100 had been reported in the previous release). We also finished the development phase 3 weeks ahead of schedule. Management has taken notice at the dramatic improvement in quality and reduction in development time that resulted from unit-testing and test-driven development.

Lately, I've been working on a new version of our PCTV front-end web application. I have used the StrutsTestCase library to conduct unit-testing of Struts Actions, which is an area often overlooked when writing unit-tests. StrutsTestCase makes it easy to test form validation and Action invocation for applications that use Struts. It also includes support for the Spring and Tiles frameworks, both of which we're using. The only downside is that StrutsTestCase doesn't appear to be actively maintained, though it works well with the Struts 1.3.8 library that we're using.

Comments

Congrats on joining MobiTV, sounds like a hot place to be!

Fabian.

Post a comment

(If you haven't left a comment here before, you may need to be approved by the site owner before your comment will appear. Until then, it won't appear on the entry. Thanks for waiting.)