Saturday, May 24, 2008

Technical Debt

I was browsing around the web and found a interesting concept, Technical Debt. This was a concept brought up by Ward Cunningham in OOPSLA '92. It is being taken over by the Agile people under Agile Project Management . I think it's a good concept for test engineers to take into account, too. The Agile portion and blogs by Steve McConnell (Technical Debt and Technical Debt Decision making) discuss it from a software standpoint. But for test engineers, it can be more than just technical debt in the software. The articles don't go into much detail on exactly what technical deficit is.

Here is what I think. For software some items that would cause technical deficit would be issues:

- Hacked together code or code with a lot of short cuts
- Spaghetti code
- Code that is complex or hard to follow
- Incomplete or inadequate error checking.
- Code to be implemented later
- TBD's or incomplete requirements.
- Poor or Incomplete design
- Anything “owed” to the software that is deferred.

I was contemplating technical debt for the rest of test and hardware can most certainly have technical debt, too. Again, it would be anything owed to the hardware. Some of this would be:

- Incomplete schematics
- Unspecified connectors
- Incomplete grounding or shielding
- Incomplete wire lists
- Incomplete wire specifications where they were needed.
- Again, anything “owed” to the hardware

The mechanical portions could have technical debt as well. It would be things like:

- Incompatible of incomplete layout
- Unspecified mechanical connections,
- Other items that are needed but left unspecified.

(I not as much an expert on hardware or mechanical aspects of test but I'm sure a lot of the hardware people can add to these lists.)

The blogs by Steve McConnell on Technical Debt equate it to financial debt because they have a lot of the same issues. Technical debts, as well as financial debts, have to be taken care of at some point in time or they will bite you in the rear end. If they are not the hardware and mechanical technical debt can be disastrous at integration time or when test operators actually use the equipment. The Software technical debts can come back at anytime, like an unpaid bank loan. Some software debts may bite you at integration time, or worst validation time, or even worse, while the equipment is in use on a production line. To keep it in financial terms, this would be like a bankruptcy. You could get past the technical bankruptcy but your reputation could be ruined for a while.

Also, the hardware technical debts can cause the software have a technical deficit if a hardware debt has to be fixed in software. It's like the hardware defaulting on a technical loan co-signed by the software. This seems to happen quite often.

Overall, when technical debt is taken on, it needs to be taken into account for future releases. If there is to much, it can cause a burden on your future of your tests. If it's not taken care of it could bring everything crashing down, potentially during validation or production.

The scary thing is if you don't realize you're taking on technical debt you have bigger problems and your people need to be trained or replaced.

4 comments:

Anonymous said...

Hello JA,
thanks for your views on the issue. May I ask you a question, because I am new in developing test software and hardware, I have a project an mp4 player, mind sharing your opinion on how can I start? I am using labwindows 8.1, what hardware to I need. thanks

JAV said...

Hi Leo,
It's good to see others using LabWindows. I want to admit that I haven't worked with sound before, I'm a missile tester. If your testing the sound signal coming out of the device You could just use an oscilloscope like an NI-5122 or a sound test card like an NI-PXI-4498. Probably the best bet would be to go to www.ni.com and select contact NI. and contact NI about what you need. I jsut don't know enough about your tests to give a good answer.

Good Luck,
Joe

Anonymous said...

Hi JA,
thanks for your answer, what I currently have is BNC 2090, can that be enough? I am trying to learn something new on developing test for manufacturing. Basically video parameters, sounds, etc. That instead of doing it a manual test, a semi automated test will be fine. Do you have any resource other than NI where I can find samples on software codes with hardware schematics on different testing products? I am also currently setting up a blog for different testing system, might pop again and if you are interested to post as an author on the blog.

JAV said...

Hi Leo,
I do use Agilent and Tektronix but I like NI equipment the best.

There are a lot of places you can get code samples, not all the places have LabWindows, but places like www.codeproject.com and www.codeguru.com have a lot of various code samples.

I don't know about hardware or schematics, I tend to go to some of my friends and say, "what hardware do I need?"

I'd like post on your blog if you would like for me to. I'm always interested in getting information out to help people learn about testing.

Have a great day!
Joe V