The Design of Software (CLOSED)

A public forum for discussing the design of software, from the user interface to the code architecture. Now closed.

The "Design of Software" discussion group has been merged with the main Joel on Software discussion group.

The archives will remain online indefinitely.

Very Rapid Software Development - Books

Can anyone recommend any books on very fast development practices. In my industry, very often we will have software projects that last in the range of days-weeks, and I'd like to know what the global body of knowledge has to say about making these projects efficient. Everything I've seen on 'rapid' processes deals mainly with rapid approaches to software with many weeks-months cycle time. We are expected to do largely "custom" software in extremely short periods of time.

Any thoughts?
A. Gorilla
Friday, December 16, 2005
I don't know of any books, and I have no idea if you can deliver quality software in days or even weeks. My idea for this situation is to create an application framework (custom built or publicly-available) that will speed up development time.

Even if you find a book on this subject (or software tools) it's going to take some time to learn it.

I've been in this situation before. And I used to stress over  unrealistic deadlines and usually delivered hacked up products. I'm still at the same company but I have slowed down my development and beginning to research on various tools and frameworks that will help me to make me more productive. I also communicated to the project manager that I'm gonna take my time and persuaded her to allow me longer times to work on things (it's the project manager's job to explain this to the client). Now because I don't rush as much anymore and start to think about the things I'm building, I feel that I'm delivering better products as a result. But this is just my experience so far.
Friday, December 16, 2005
"We are expected to do largely "custom" software in extremely short periods of time."

That's a tough requirement!  A good book, though about 10 years old now, is Steve McConnell's Rapid Development.

Now here is my take on it:

If you assume it takes so much time to write, test, debug a line of code, the time to complete a job is a function of the number of lines of code and how long it takes to write a line of code.  I know that's overly simplistic but it actually is fairly workable datum from the standpoint of how to improve productivity.

What you want to do is 1) minimize the amount of new code you have to write from scratch and 2) use tools that accelerate the writing of new code.

For #1, these are things that can really help out a lot:

1) Harness old, well-tested code
2) 3rd party libraries (good ones)
3) application frameworks - a well-designed framework will enable you to modularize your applications so that code can be more easily tested, and even more importantly, reused in other projects
4) good library of code-snippets

For #2:

1) A good modeling tool that enables you to create your objects, perhaps even visually, and it writes skeleton code for you.  You aren't typing this stuff in by hand so much.  You also make fewer errors, which can shave off a lot of time.

2) Code generation tools - this one alone can give you orders-of-magnitude of time savings for the parts that can be generated.

3) IDE plug-ins that results in less typing.

Also helpful is just plain old good practices and organization.  If it takes a bit longer to create code that can be better re-used in the future, spend the extra time and you will benefit on another project.  It takes a bit of discipline to do that, especially during crunch time, but you'll be very glad you did when have an opportunity to reuse it.  Also, I find it very helpful to document code well when I know it might be reused.  It really doesn't take as long as you think and you are much more likely to reuse the code if you can remember how it works.

I also knew of a programmer whose googling skills were amazing and he was able to find and make use of other people's posted code quite effectively.  It was very impressive because he really did get a lot done and only wrote new code when he absolutely had to.

There is no silver bullet that I know of but a combination of practices can increase productivity enormously.
Mike Stephenson Send private email
Friday, December 16, 2005

Succinctness is power. Pick the most powerful development tool that can get the job done. For some it's VB, for others Common Lisp.

It's hardly ever C++ or J2EE.
sometimes unprepared
Sunday, December 18, 2005
Lean Development by the Poppendiecks. They talk about one to four week dev periods.
slava Send private email
Monday, December 19, 2005
Maybe you want to look at something like ECO, a model-driven framework. This is a mixture of UML +  Object persistent framework + database schema ecolution + OCL intelligence + full support for .NET & ASP.NET.

I heard *great* things of it in the Borland newsgroups. Is included in Delphi 2006 Pro +.

The last new thing is executable state diagrams...
Mario Alejandro M. Send private email
Monday, December 26, 2005
I want to add that ECO work in C# too, is not a Delphi only thing...
Mario Alejandro M. Send private email
Monday, December 26, 2005
Crystal Clear by Alistair Cockburn might also help.  It's about small teams (<10 people) and one of its priorities is efficiency (i.e. reducing time/effort/cost) - although it has other priorities too, so doesn't try to push speed to the absolute maximum.  I've linked to some sample chapters here:
John Rusk Send private email
Tuesday, December 27, 2005

This topic is archived. No further replies will be accepted.

Other recent topics Other recent topics
Powered by FogBugz