We’ve become complacent
Seems like there are very few developers out there practicing agile techniques. FitNesse is almost unknown in the Delphi community. While DUnit is the accepted standard for unit testing there doesn’t seem to be much talk about using it to to TDD. We have no equivalent to FxCop, NDepend or NCover for Delphi.
In short, we’re way behind the times.
Have we become stagnant? Did we give up? We used to be able to say that using Delphi we could develop products faster and more reliably than others. What happened? I don’t think that’s the case anymore. I don’t think it’s any fault of the language or vendor. I think we got stuck. Are you still writing code the same way? Fixing bugs the same way? Resonding to customer demands the same way?
If you’re still writing tightly coupled code (i.e.: business logic in GUI event handlers) you are behind the times.
If your product doesn’t have an automated test suite you’re behind the times.
If your code isn’t being continuously integrated, built and tested every day you’re behind the times.
If you can’t show how much of your code is covered by your tests you’re behind the times.
If when a defect is reported you can’t create a test case to prove and fix it you’re behind the times.
There are so many useful techniques and practices that will make our lives easier it’s hard to understand why we as a community have not embraced them.
Take this as a call to action. Throw off this systemic complacency. Choose to write better code. Educate yourself. Make your life easier by implementing the basics: Automated acceptance testing, continuous integration, TDD/BDD. The learn and implement all the practices of eXtreme programming.
Go team!
We started XP about three years ago… today we have over 13000 automated tests (DUnit). Continuous builds and testing harness triggered 30 seconds after code submission and complete testing feed back in 4 hours (we are trying for 2.5 hours). One week iterations, story cards, pair programming.
It takes commitment, but the payback for the company and the development staff is very high. I would never go back to the old waterfall days.
@John
That’s awesome! What were some of your big challenges?
for the most part, i agree (test cases for everything is more than i can do for my software). you didn’t mention revision control software.
john: you have an impressive achievement there. what kind of software are you writing/maintaining?
Have to admit the best things in Delphi are not free.
CodeHealer is great just like FxCop, NDepend (Together for Delphi inside the IDE is also capable).
TestComplete and do more TDD stuffs than DUnit.
FinalBuilder can help automate your builds, although you may use MSBuild and other free stuffs to setup a basic CI (for Delphi 2007+ only) - I know WANT, but it is inactive now.
The only thing missing is an NCover alternative for Delphi. Although there are some, I never evaluate any.
What I believe is that most Delphi developers now intend to upgrade their process to an agile way. But it takes time. According to my old memories, there were more and more sessions on Borland Conferences in the past about agile processes, but now there is no BorCon, or CodeRage.
Sad
Delphi programmers tend to be old experienced hands, have seen it all before, and can see hype for what it is.
Most of us have years of experience and have developed our own way of working. A young chap here is a big fan of D/NUnit and now we have two people that do nothing but create and maintain unit tests. Uh huh.
My customers want results and don’t care if I am “behind the times”.
I agree with ken
may be for commercial software but for in house programming they want a feature yesterdays and if there is a slight booboo you can fix it on the spot. I cannot see myself spending 50% of my time writing tests programs. they would have a fit.
we are not talking about contoling a nuclear plant here, but corporate databases applications.
These new buzzwords are great academic topics but for real life??? anyways the buzz will have another name next year
At work we practice Agile development, we have an engineering testing and validation department, we are required to write test cases and we embarked in the Agile development boat. We still produce bad software filled with bugs.
Until we change what we do, changing how we do it will not have any effect.
Delivering good software starts with a good understanding of what needs to be done and good plan on how to get there. Everything else is to sell books and promote the man of the hour.
I was reading a comment in reply to this post on DelphiExtreme, by Ken Knopfli, and I quote…
Discover (http://www.cyamon.com/discover1.htm) does code coverage, it works great for me.
AQTime can do it as well, but it slows down you app more than Discover. This may not be a problem for you of course.
@Lex Y Li
Guess want is finally active again. I though it was dead, but now Andrew is putting a lot of effort into building the next version.
See http://want-tool.org/news.asp for details.
jdawkins and mike p
I apologize for the delay…
The past challenges have been: How do we start? What parts of of Agile should we adapt first? Getting support from all ‘players’.
The biggest challenge was and continues to be ‘people’. We are a bunch of complacent creatures. That is why I concur with your title. People need to have courage to get out of their comfort zones.
So the boss or team does not want DUnit tests. TDD on your own pc. Your quality and style will improve. If you have a challenging problem, don’t lone wolf it… ask for someone to ‘pair’ with you. People will notice. The successes will draw support naturally.
Tools: TortoiseSVN, SVN, Cruise Control, Ruby scripts, Trac, and some minor custom tweaks to make them all work together. Large magnetic white boards, workstation pods (4 pcs per pod)
PC test farm that is integrated with a dashboard on a TV that displays the status of the tests at all times.
Keep up the great work with this blog.
Thanks John.
Hi,
I have published Fit for Delphi port. It is available at http://code.google.com/p/fit4delphi/
Thanks Michael,
We’ve recently moved out fit server implementation do SourceForge. We should talk about consolidating projects.
Well done, btw.
I haven’t seen any news about your implementation. We definitely need to talk. My implementation is more flexible as it is not requiring to use always Variants in properties and methods and is calling methods when it is required. I don’t see any unit tests in your version.
Thanks
Michal
Alas, the ego thrives on distraction, dissatisfaction, and the never ending search for acceptance. It deplores simplicity and clarity. I’m happier to stay “behind the times” and chances are that you will be too. Truly “getting ahead” is rarely more and typically less.
“Nothing beats a wood stove when it’s a 40 below blizzard and the power poles have dominoed.”
Good post..here’s some additional related info.
This is a good or nice information.
I don’t see any unit tests in your version.
I appreciate yout report.
I found your website perfect for my needs. It contains wonderful and helpful posts. I have read most of them and got a lot from them.
Thanks for those advice i’ll bring them on!
Looking forward to another great blog. Good luck to the author! all the best!