Growing Pains of a Software Company

July 16th, 2007 by Sameer | Filed under Software Engineering, Work Related.

There is a particular small software company that has been in business for more than 10 years that builds a web application similar to say PHPNuke.  Here are a few characteristics of this company: They have survived this far using Microsoft Visual SourceSafe for their source control (which is probably okay for small teams but starts to have problems when you start to use it extensively), they have not used any unit testing, they do not have any form of automated testing or regression testing.  They have sales in the millions of dollars, and they have about 6-10 developers and 2 QA (as well as many QA overseas).  Every time a build is made, the overseas QA team has to "crash test it" (meaning to run the site and click frantically until something breaks).  This does not mean there is no test plan, but rather this method of testing is very unreliable and prone to errors.  As well the number of customers they have is less than 100, and we can reasonably assume that simultaneously less than 10 users would be logged in for each application.   Now that the company is growing each one of these issues is going to bite them in the butt. 

The boss might wonder, "if we got along this far without doing any of the following, well… why should we??".. But as a "soldier" on the front lines, you start to see the problems that can come up with this sort of thinking.

 

Not using unit testing

This means that QA receives a page that is not unit tested.  It is ad-hoc tested by the developer, meaning that they try to click and break their new code, but there is no form of automated manner to this testing.  As well, every time the code is updated, the developer has to re-test and re-re-test it manually.  As well there is no real confidence in the code other than the fact that the QA team has tried their best to crash it and it did not crash.  It might even be very time consuming and painful to set up the test each time.  Without unit testing, this is a lot of time wasted that could be used in development. Read up on Test Driven Development for something else that you can gain from proper Unit Testing.  By the way, what does unit testing software cost you?  FREE if you use NUnit.  Or like $14,000 if you use IBM Rational Test RealTime. Its up to you. Just Do It.

 

Not using proper Source Control

Trying to implement branching ,sharing, multiple releases, with Visual SourceSafe! You will find it is very difficult.  As the company is growing they needed to be able to release and develop multiple versions concurrently.  This is near impossible with SourceSafe, if not very difficult, and they need to move into using a better source control software such as Team System, Subversion, Perforce, etc..  This will give them features such as atomic checkins, shelving (if required), cheap labels, etc..

 

Not using automated testing

This comes back to the earlier topic of unit testing…  Without automated testing, there is no confidence in the code.  Each change, even a minor one, can possibly break some unknown piece of code in the system. 
To hear a real story, making a change to a general object in the system caused a crash on a Report that was only somewhat related to the general object. 
 
This was not noticed until on a live customer demo, but due to slickness on the part of the presenter, it was overlooked.  This is a deadly game of cat and mouse, that can result in lost customer confidence and eventually lost customers.  AUTOMATED TESTING is FAR TOO IMPORTANT to not use, especially if your company is growing and growing.

 

Small number of customers

With a small number of customers, there are some problems that you have in your code that will not be noticed until you start to grow.  For example, if your code is not thread safe, and you are using shared/static variables that are not meant to be shared on a specific page, problems that might not show up until you have multiple users loading that page simultaneously.  This will happen as your number of customers grow.
 
 
As well as load issues.  As a small shop, you can throw the most horrible piece of inefficient code and in most cases it will not cause a problem because your server can most likely handle it.  As you start to increase in size as a company, and as you have more people hammering your server, your inefficient code is going to start to tear at the seams and you will have to go back and re-organize it.    Sometimes code can survive and be in use for more than 5 years so its well worth your time to build it properly.   Look at your own code set and see how old it is.  If it’s been years and years and you are still using it, re-consider that the time you spend to build it properly is well worth it.  Tell your boss to make sure he knows who he is hiring, as bad apples can spoil the whole pie.

Other Interesting Posts

2 Responses to “Growing Pains of a Software Company”

  1. Scott Kuhl | 2/08/07

    Do you have a good recommendation for automated testing?

  2. Sameer Alibhai | 2/08/07

    I hear Mercury TestRunner is realllly nice.. Also MS Team System reportedly has automated testing. You might want to try them both out and see what works for you. Download a trial and play around with it. Based on your needs it might be what you are looking for.

Share Your Thoughts

Valid XHTML 1.0 Transitional Valid CSS!