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.

Share  Twitter

Add a Comment

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

Join this Ning Network

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

> Place your advert here <


Latest Activity

John Stanton has set up their private workspace using Huddle Workspaces.
14 hours ago
PROVEER CONSULTING Ltd added a discussion to the group CF Contractors
Hi all,I have a number of vacancies posted in my Box.net app on my profile page. All are live roles.http://uk.linkedin.com/in/proveerconsultingltdEasiest method of contact will be via email- to   andy@proveer-consulting.com, please add your cv and a…
yesterday
UK TV need someone for 9 weeks, contact Marc Schroder
yesterday
PROVEER CONSULTING Ltd added a discussion to the group Coldfusion Jobs
Hi all,I have a number of vacancies posted in my Box.net app on my profile page. All are live roles.http://uk.linkedin.com/in/proveerconsultingltdEasiest method of contact will be via email- to   andy@proveer-consulting.com, please add your cv and a…
yesterday
John Stanton is now a member of ColdFusion Community
on Saturday
Joost van der Drift added a discussion
Does anyone have experience with or know if it's possible to use CF as middle ware between hardware and db? Eg a measuring device of which the results are stored in the db?
on Friday
PROVEER CONSULTING Ltd Guys thanks for your words on Twitter, i know being a legal guardian to my little bros wont be easy, but i will make it work, thanks again.
on Friday
Yogesh Solomon added 2 photos to the album 'Yogesh'
on Friday
Yogesh Solomon updated their profile photo
on Friday
For the developers that want to make it look good, for the designers that want to make it functional, for those control freaks with web-ADD who have to do it all!
on Thursday
James Privett added 2 events
on Thursday
Nick Tong and James Privett are now friends
on Thursday

Members

  • John Stanton
  • PROVEER CONSULTING Ltd
  • Tufan Cakiroglu
  • Lance Smith
  • Ken Cone
  • David McGuigan
  • Martin Boswell
  • Rich Sloan
  • Joost van der Drift
  • Yogesh Solomon
  • Manoj Sudra
  • James Privett

Translate this page

© 2010   Created by Nick Tong

Badges  |  Report an Issue  |  Privacy  |  Terms of Service