ColdFusion Community

The online ColdFusion / CFML community website

Apart from onsite training, I've been doing very little training of late. My excuse is that I've just been too busy. I decided today, though, in response to several emails, to announce a training class entitled "Mastering ColdFusion Object Oriented Programming".

I've done many "OO Programming with CFCs" classes and I like them very much. But after folks master the fundamentals of OO, there's still a lot to be learned before we begin deriving substantial benefits from OO programming.

I'm asked a lot of questions about the best way to do OO (everything from aggregation to polymorphism to translating objects to and from relational databases). There's an awful lot on the web that is (in my NOT so humble opinion) pure nonsense.

I've spoken about part of this before with my friend, Jeff Peters. After the initial "I finally figured out how to write and instantiate a CFC" phase, many programmers get trapped in what I call "POO" -- pseduo OO programming. This is a wretched place to be: one has all the extra work of building OO apps -- and almost none of the benefits. Sadly, there are many voices that encourage POO.

I was bemoaning this in a recent IM exchange with another friend (I'll call him "Xavier"). I had been helping him with some problems he ran into. Xavier (or X for short) and I have known each other for years and consider him a real friend. I'm copying the IM exchange with minimal editing:

Me: It's just a matter of time before these POO programmers lose their faith in OO and go back to procedural coding. Really, POO *is* procedural coding -- it's just wrapped up in OO form.

X: Yeah, well, what's a POOr boy to do?

Me: LOL.

X: No, really, I understand what you're writing, but I know that once this crisis is past, I'm going to have another one. Why? Cause my lack of knowledge gets me into corners I can't get out of. At which point I write you and you get to bill me some more. I need to somehow turn a corner with OO programming -- I need that time you spent at Xerox Park.

Me: I know what you're saying, X. I could not have been more fortunate than I was, being exposed when I first started out to real OO programming. It's like you get a taste for the real thing -- and you have an instinctive aversion to POO.

X: So they taught you real OO?

Me: Absolutely. Now, my head swam at first. I didn't just "pick it up" like a natural; I really struggled to understand it. I think that's helped me be a better teacher, remembering how hard it was for me.

X: So, what about holding a class not on basic OO, but on real-world OO? A master course where you'd only have a few students and they would all know the basics of CFCs already and you could really show them the ropes, the stuff they'll encounter in the real world.

Me: Hmmm...tell me more.

X: OK, stuff like the strategy design pattern that you used to fix this latest mess. How to do aggregation. Also programmers are learning things from Java and that's not necessarily how to do things in CF, right? Then there are all the tricks you use, the code snippet stuff, the Object class that you gave me (and which I'm using only a tiny portion of, btw). You keep telling me I'm using inheritance wrong, but how SHOULD I use it? And if that's not enough, there's the whole object/database stuff that is so frustrating. And don't tell me it's frustrating because I'm not doing it right. I *know* I'm not doing it right. So why don't you have a class that teaches how to do OO right?

Me: Hmmm again. I think I got a little burned out over the "framework wars" and got tired of fighting the reams of bad advice I was reading. People were turning OO into POO. Sean Corfield referred to it as the 5:1 Syndrome, where every database table ends up with a bean and a dao and a gateway and a service class and a controller.

X: Been there done that.

Me: A lot of the ills of POO programmers comes from starting with the database. Like you were doing.

X: No, like I *am* doing. I know I'm not supposed to, but what exactly AM I supposed to do? That's a little hard to write in an email or even an article, no?

Me: Yeah, it takes hands on experience. You know how I'll ask you "how would you model this?" questions when we go out to eat?

X: I've learned a lot from that. And I like to learn a lot more. But you stopped giving classes, didn't write much -- what was up?

Me: Like I say, I got kind of burned out. I just didn't want to fight.

X: I love you like a brother but that was wrong.

Me: Yep. Well, I'm writing more now.

X: I see that. You ever gonna get a new site up?

Me: In the works.

X: Great. Then it's time for that Mastering OO class. Seriously, Hal, a lot of programmers want to do better but they don't know what you do. They're trying the best they know how. Hell, *I'm* trying the best I know how. And I've been reading the books you suggested and yes that helps but I need some intensive time where someone (you!) translate all the stuff I've been reading into "Look, this is how you should do it" time.

//

So, properly chastened by a real friend, I'm announcing that I'm going to hold a week-long class in just what X asked for: Designing and Building Real-World ColdFusion Object Oriented Applications. If you'd like to attend, you do need to know all the basics of CFCs. I'm not being an elitist: I love teaching OO fundamentals with CFCs. But we'll have so much deeper stuff to tackle that there won't be time for the basics.

Students should bring their own laptops because, in addition to the classroom time, you'll be working on class projects at night. (I'm not a big fan of the "macho coding/I can write code for 24 hours straight" school of training; we just have a lot of material to cover.)

Up to six students can enroll. I've done small classes and large classes and -- no surprise -- small works better. And with something this intense, six is enough.

The class will be held here in beautiful Sarasota, FL, Oct 20-24. The cost is $3800. I know that's expensive and I intend to make sure you get your money's worth.

If you want to sign up or if you have questions, you can email me at hal[at]halhelms.com or call me at 941.716.6909.

Add a Comment

You need to be a member of ColdFusion Community to add comments!

Join ColdFusion Community

John Whish Comment by John Whish on July 14, 2008 at 4:01pm
Thanks Hal! I appreciate it :)
Hal Helms Comment by Hal Helms on July 14, 2008 at 3:38pm
Sure, John. Here are some books...

Object Technology: A Manager's Guide by David Taylor. Just the best introduction to foundational OO concepts I've ever read. It's beautifully written and illustrated.

Fundamentals of Object-Oriented Design in UML by Meilir Page Jones. Meilir is a friend and an absolutely terrific author as well as one of the best thinkers on OO in the bidness. Highly recommended. I go back to this book every 18 months or so and always get something new out of it. And he's a funny guy!

I'd start with those two. Taylor's book is a breeze; Meilir's will require more grappling on your part, but the payoff is great.
John Whish Comment by John Whish on July 12, 2008 at 1:34pm
Hi Hal, I'm a bit late reading your posts, but have found them very interesting. This one in particular has been great. I could easily be Mr X (apart from the brotherly love bit as I've never met you!). It reassuring to know that you struggled with the concepts. It is hard to move away from the idea that you start off by designed the database, and then have the db schema define your application.
The 5:1 Syndrome makes no sense to me. Equally a lot of posts that I read claim to be an introduction to OOP are as you say simply wrapping procedural code up in a CFC. I don't consider this to be all bad (although I can see it also not good!) as at least you get a sort of pseudo encapsulation so you're business logic can be changed. A lot of people do consider this to be OOP when it clearly isn't, this all adds to the confusion and as a result, makes the procedural approach just seems like a better place to be.
I know you are asked via email for advice on OOP, so for those of us who can't make your classes, would you be kind enough to link to some posts and/or books that you can recommend.
Thanks!
Specialists in ColdFusion Development
Tagged.com

> Place your advert here /h3>

Latest Activity

8 hours ago
17 hours ago
Chandan Kumar added a photo
19 hours ago
19 hours ago
John Farrar About a month ago my second book "ColdFusion 9 Developers Tutorial" hit the press. You can find it on amazon.com and packtpub.com both.
yesterday
Shirak Grigor added a blog post
There are a communication issues between three technologies together Flex, CF, and .Net. The issue is around null values and how each technology treating it. Flex support null values for String, Object, and Dates only as far as my knowledge up to Fl…
on Tuesday
Mark Parratt and Kathy Elliott joined ColdFusion Community
August 24
Discussion, Q&A, and fellowship amongst those interested in the ColdFusion on Wheels framework.
August 23
Thanks Jamie
August 20
This is currently being discussed in the Wheels Google Group: http://groups.google.com/group/cfwheels/browse_thread/thread/832e0a5010f96a53?hl=en
August 20
Jamie Martin updated their profile
August 20
I use layerblue http://www.layerblue.com/ they've been good to me, the are only on cf7 though... but depends what you need.
August 20

Members

  • Tariq Ahmed
  • Francisca Espi Puig
  • Chandan Kumar
  • Pradeep
  • John Farrar
  • Ram
  • Vijay Manickaraja
  • Jan van Hellemond
  • Shirak Grigor
  • Wil Genovese
  • David Harris
  • JC

Translate this page

© 2010   Created by Nick Tong

Badges  |  Report an Issue  |  Terms of Service

Sign in to chat!