Tuesday, 16 June 2009

Being Agile

One of the key goals of any software development company is to be agile regarding how quickly the company can respond to clients feedback. Its known that requirements are always changing and it can be difficult to react to these changes quickly.
When companies are not agile enough, clients can become disgruntled as there feedback is not been acted upon and companies could lose valuable clients.

I will discuss a couple of ways a software company can be more agile. The faster you meet your customers requirements, the happy your customers will be, which means a more successful company.

Agile Software Development Process

Firstly you must have an agile software development process in place. There is lots of detailed information on Wikipedia
The main idea is having quick short iterations of the software development life-cycle.

One of my favourite approaches is Scrum.
Below is an excellent video explaining how scrum works. I highly recommend that you watch it.


This video is from Hamid Shojaee who is the CEO of Axosoft. His company makes software change management systems which supports the scrum methodology very well.

I believe that scrum is one of the best processes. After watching the video you will think, how come I didn't come up with this process. One of my favourite aspects of this is the Burn down charts. It gives you great visibility of how the project is progressing.

Other Issues

Existing Code Base
Changing requirement means adding new functionality, improving and refactoring code etc.

If your existing code base in not well designed, architecture and tested, then maintaining this code base could prove very costly.

Let me explain is some detail
Ideally, if your code base is well designed and tested, adding new features and doing general maintenance is easy. The code is nice and modular and its easy to inject new pieces of logic. Its easy to reuse existing code. When there is a good bed of test suites, then you can confidential refactor the code and running the units tests can verify that everything is still working correctly.

On the other hand, if the code base is poorly designed and tested, then adding and maintaining code can be very time consuming and costly.

Once badly designed code in already in the code base, its quite difficult to remove.
  • A lot of people don't know what is good and bad code, thus cant identify what is good and bad.
  • Once bad code is in the code base, it is usually very hard to refactor and remove.
  • Other developers might see this bad code and assume that it is acceptable and the problem gets worse. Two wrongs never make a right, but things can get incredibility messy.
That is why it is important to tackle these problems as early as possible before things get out of control.
An analogy to this is when you get sick. The sooner you identify the symptoms and what is wrong with you, the early you can fight the sickness. Less pain and troubles. The exact same thing applies for coding.

Once you start working in the industry, this will become more apparent.

As long as you learn from your mistakes and improve your work, everything will be fine. Always try and find better ways to do things, this is the way to strive and become really good at what you do.

How to tackles these issues:
  • Its very important to spread the knowledge. If you find out something interesting and helpful, tell people about it. It will make the IT industry a better place. Blogs and twitter and good ways to spread the knowledge.
  • Do something about it. Don't just do nothing. If everyone thinks that someone else will do it, then nothing will happen and the problem is never solved.
  • Keep yourself up to date with the latest news and information in the industry. Use tools like RSS readers, twitter etc to learn and find out more.

3 comments:

Anonymous said...

Great write up on some of the important aspects on keeping development lean and the code base clean. Keep up the good work.

That Scrum in under 10 minutes video is still my favourite.

Anonymous said...

I also like this quote from How TDD and Pairing Increase Production

"...the biggest single determinant in today’s production is the quality of yesterday’s production."

Mehul said...

That quote makes a lot of sense.
I read that article you posted in the last comment.
Its really good and makes lots of sense.
Coding is one thing, but writing quality code is another skill altogether.