Tomorrow night looks to be a great night at Denver's JUG. Bruce Tate is presenting Beyond Java and David Geary is doing a session on Ruby on Rails. Both are great speakers, which I think is more important than the technical content itself. The only thing I'm worried about is Geary can be a real windbag. The last session of his I attended was on JSF in October of 2003. It was the first time I'd "met" him (never talked directly, just learned about his credentials) and the meeting lasted for about 3 hours. So David, let's keep it short and sweet so we can do some networking afterwards at Rock Bottom.
Update: Looks like Bruce Tate won't make it. Bruce and Jeff are going to present on developing an open source ESB in his place.
Whenever I talk to developers in the Java community about Rails, the first question out of their mouth is usually "But can it scale?" Today, David has written a nice post titled It's boring to scale with Ruby on Rails.
The one thing that I see time and time again is that Java developers don't seem to realize that some of the highest traffic sites on the net are using LAMP stacks similar to what Rails advocates. IMHO, I don't think "Rails can't scale" is a valid argument. In fact, I don't know if there's any argument or way to put down Rails anymore.
As a developer, my guess is the rates for programming in Ruby developer are less than for programming in Java (unless you're a Ruby Superstar of course), so that's one reason not to program in it. However, since Rails is one of those new bright and shiny things, chances are you might be able to get high rates for it. As far as Enterprise Adoption of Rails, unfortunately I think that's still pretty far on the horizon. I think the hardest part is convincing management that they'll be able to find developers to support it. Mind you, I didn't say good developers, just developers. Period. This is information I've gathered from talking to my Java developer friends.
Try convincing a Fortune 500 company to program in Rails vs. Struts and they'll probably choose Struts because there are thousands of Struts Developers. Is this a good decision on their part? I don't think so. I think it's more important to hire smart people that can learn a technology, rather than hiring those that know a technology. Of course, if someone knows a technology really well, there's probably no harm in hiring them.
I think Rails can become a real contender in the Enterprise if managers can be convinced that it'll be easy to maintain Rails application. Remember that most of software cost is maintenance. Because of this, the whole "it's super productive to develop with" doesn't matter so much - does it? Are Rails applications easy to maintain? My guess is yes, but how do you convince CTOs and CIOs? Another thing I think Rails needs for Enterprise Adoption is good tool support. Drag and Drop type of stuff. Why? Because management loves that stuff (because then they can develop apps) and it's a great sales tool. ASP.NET has been successful because of Visual Studio, not because of its ease-of-use and simple syntax.
Will I learn Rails and use it to develop applications? I certainly hope to, but it's hard enough convincing companies to use something other than Struts - so I don't know if I'll have much luck in selling Rails. The one cool thing about my new job at Virtuas is its an open source company, not just a Java open source company. This opens the doors for me to learn about Rails (and others) and compare them to Java Web Frameworks.
Update: Aaron Rustad has written an interesting article for DeveloperWorks that compares Rails to Struts+Hibernate: Ruby on Rails and J2EE: Is there room for both?
Kathy Sierra has a great post titled Ten Tips for New Trainers/Teachers. This hits home with me because because I've been doing a lot of training lately - and plan on doing a lot more in the future. I think she has a lot of great points, and I certainly plan on using her ideas as best I can. Luckily, I already use some of them - but I could certainly use some more, like group exercises and ditching slides in favor of more interactive sessions.
Here is a quick summary of this post:
Eleven Things to Know
- Know the difference between "listening" and "learning".
- Know how the brain makes decisions about what to pay attention to, and what to remember.
- Know how to apply what you learned in #2. In other words, know how to get your learners to feel.
- Know the wide variety of learning styles, and how to incorporate as many as possible into your learning experience.
- Know the fundamentals of current learning theory!
- Know why--and how--good advertising works.
- Know why--and how--good stories work.
- Know a little something about "the Socratic method". Know why it's far more important that you ask the good questions rather than supply all the answers.
- Know why people often learn more from seeing the wrong thing than they do from seeing the right thing. Know why the brain spends far less time processing things that meet expectations, than it does on things that don't.
- Know why it's just as important to study and keep up your teaching skills as it is to keep up your other professional skills. Yes there ARE professional organizations for trainers, with conferences, journals, and online discussions.
- Know why using overhead slides to deliver a classroom learning experience can--sometimes (often)--be the worst thing you can do.
- Know how -- and why -- good games can keep people involved and engaged for hours. Learn how to develop activities that lead to a Flow State.
Ten Tips for New Trainers
- Keep lecture to the absolute minimum.
- It is almost always far more important that your learners nail fewer subjects than be "exposed" to a wider range of subjects.
- For classroom trainers, the greatest challenge you have is managing multiple skill and knowledge levels in the same classroom! Be prepared to deal with it.
- Work hard to get everyone to complete the lab exercises, but NEVER give out the solutions in advance!
- Do group exercises whenever possible, no matter what you've heard.
- The best execises include an element of surprise and failure.
- Leave your ego at the door. This is not about you.
- Have a Quick Start and a Big Finish.
- Try never to talk more than 10-15 minutes without doing something interactive. And saying, "Any questions?" does not count as interaction!
- Don't assume that just because you said it, they got it. And don't assume that just because you said it five minutes ago, they remember it now.
- If you're not passionate, don't expect any energy from your learners.
And most importantly: It's not about what YOU do... it's about how your learners feel about what THEY can do as a result of the learning experience you created and helped to deliver.
Good advice Kathy - and much appreciated. I'm doing a full week of training in San Francisco next week, followed by a tutorial on AppFuse (at OSCON) in early August - both should give me a nice stage to test these ideas.
As far as your classroom experiences - which ones have you enjoyed the most? What did the instructor do different? How have you been inspired by a training course?