With all of the recent talk regarding object oriented development in ColdFusion, a common theme appears with developers attempting to make the jump that I have seen many times in the past. You see comments like “where are the OO tutorials” or “where can I find an OO book”. The problem that people don’t seem to grasp here is that object oriented development is not something that you can just follow a check list for and be an expert at. There is no step A, step B, now you have a world class object oriented application.
Imagine a carpenter who only has a hammer in his toolbox. This carpenter can get quite a bit done with just that one tool, but to him, everything looks like a nail. This is where procedural development is very useful and practical for getting things done. For this carpenter, the hammer can take care of quite a few tasks – “hammering” them out quickly – just maybe not in the best way possible.
However, if you take that same carpenter and give him some more tools, over time and with experience with those new tools, he can start to create much more refined projects. Don’t skip the part about time and experience though.
Object oriented development is more of an umbrella over a very large collection of tools and best practices for application development. With object oriented development, you have things like encapsulation, inheritance, and design patterns. Just having these tools in your toolbox does not make you an object oriented developer or make your application any better.
It is just as easy to create a bad object oriented application as it is to make a bad procedural application. What sets apart a “guru” developer from an average developer is the ability to know the tools in his/her toolbox and to be able to use those tools in the right place at the right time.
I have heard a quote many times regarding design patterns where a developer asks, I have worked all of the design patterns into my application but one, can you help me get this last one in? Just because you have the tools does not mean that using every one of them makes you a better developer or a better application. If you go into the transition to object oriented development expecting to read a book and be an expert tomorrow, you are in for a headache at the very least.
I started my programming career in object oriented development over 12 years ago and I am still learning new tools and how to better utilize them. While I could be slow, what that really means that there is a lot out there to learn and a lot of experience to gain.
As a fellow developer stated a few days back, if you ever quit learning, this industry is going to pass you by. With a concept as big as object oriented development though, you are much better off taking small bites and learning one tool at a time.
Comments on: "No Object Oriented Cookbooks Here" (4)
While I am not a big fan of restating often-repeated phrases, this one seems particularly relevant when considering learning all things OO – “How do you eat an entire elephant? One bite at a time…”
Head First Object-Oriented Analysis and Design
Sure, there’s no magical checklist, but I think “OO” tutorials/example applications like Ben Nadel’s OOPhoto series go a long away.
Also, although I’ve never seen an OO book from a CF perspective there are a lot of other options .
I personally enjoyed Head First Object Oriented Design and Analysis, but one could always check out a Rails or PHP OO book for something that’s perhaps a little more tangible for a CFer.
Ok, this is very much off topic but this was the only way I have been able to catch up with you to discuss a tutorial you did for Coldfusion 8 on PDF manipulation and using DDX:
I wanted to know how can I use DDX to further manipulate the exact location of a header and footer? I used the center tags and even StyleText tags with info concerning font-weight, font-type, etc. I wanted to know whether I could use CSS type style properties to set an exact placement or does DDX use something else? Thank you in advance for your help.