I've find myself with a most interesting challenge and would greatly appreciate some advice.

Back in 1996, some friends of mine asked me for help figuring out how to develop web applications for clients. At the time, I knew nothing of Java and little about web application frameworks in general, if any even existed then. I set them up with an arcane httpd server and wrote a script interpreter that could do a few useful things like send SQL statements to a database and return the results.

For better or worse, my friends are still using this setup today, and they're actually milking some pretty complex applications out of it. Of course the development process is horrendous, the software isn't very reliable and there's a lot they just don't have the tools to do.

I've managed to convince them that they want to migrate to a J2EE application server, probably using Spring, but I'm not sure I can get them all the way there. We're talking about people who not only don't know J2EE, they don't know Java, have never heard of tiered software design, and for that matter aren't even using version control. For my part, I'm not even that familiar with web tier frameworks, having worked primarily on EJBs and tag libraries the last couple of years.

Nevertheless, my friends are smart technical people and could eventually learn all of this -- but I can't shut their business down for a year while I teach it to them. Ironically they're excellent with SQL, since they've had to spend so much time working with it directly.

I haven't seen much written about this kind of issue, I guess because J2EE development is usually undertaken by companies who can hire trained people when they want them. My friends' business is small, so they really need to acquire the skills themselves.

So, any advice as to how to get smart but busy people productive fast? What should we focus on and what can we ignore?