Friday, June 30, 2006

Being Mr. Clean

I'd like to share some of my experiences as a coder in the Mr. Clean role, where've i've had thru the last 3+ years, been the person cleaning up the code for other people.

And maybe it's having to do that constantly, that has made more my focus on the basics, rather than soem advanced cf programming.

So i'd like to share some of my systematic approaches I have to improving the code.

1. Documentation

Commenting is essential as more programmers are aware of, but when you have a lot of coldfusion files and applications, it's time to step up and document your applications as well.

And this doesn't have to be something highly complex.

For example if your a dba, you'd create a Entity Relationship Diagram as both document and reference material.

As a coder create an Informational Architechture of your Applications

Pick an Application on your site.

A. What files/folders does it contain
B. What custom tags/includes/cffunctions does it use
C. What datasource/databases does it use?
D. Any kind of major current problems going on with it?
E. And if you have the information, perhaps a small history would be nice as well.

This is all about my belief in the importance of preparing for the worst, and also providing training information, for either a peer, a successor, your manager, etc.

2. Source Control

This may sound sad or amusing, but not every company has source control in place, or knows what one is easiest to use and deploy. Or what ones can be cheap to try out and cause the least problems

This takes time and trying different ones out.

3. Pick and Document a Method/Framework

It doesn't matter to me what method you pick, but document as much of it as possible, what naming conventions your gonna use, coding styles, working in any kind of teamwork styles etc.

Even if your using the most known framework in cf world, each company tends to have it's own unique flair for how they implement it. So document it, for your posterity's sake.

4. Know and Train to be expert on all levels of application development.

Where you may start out by being a part of a team, using methods like fusebox where you only have to code in certain aspects of coldfusion application development, in the end, if someone leaves, or you move on, you may not always have the option of just coding in what you've done so far.

So I still believe that training in all aspects are important, good coding styles, using your variables/incoming data, parsing/manipulating strings/data, interaction with databases in writing great sql, basic layout and design.

I am not claiming to be an expert, I just suggest it's wise in the long haul to know as much as possible.

Now of course, it may not always be easy to implement all of these ideas, right away at full 100%, so you need to find small things, small incremental ways, so that you're gradually becoming the full rounded, long term thinking/planning developer.

I hope someday where I can stop having to go to places and be Mr. Clean, and just write good code.

Thank you.

P.S. Happy Forth of July

Wednesday, June 28, 2006

How did you get your ColdFusion Training?

After a lot of the comments back and forth, I am kind of curious to here some comments on the different ways and methods that we all got trained to learn to use coldfusion.

I myself, learned by bothering the web development team, when I was a tech support person, to learn how to do everything from html, javascript and coldfusion.

I was always a person who wanted to learn more, do more.

No one was offering any training, classes, books.

But on my own I had started off by getting an Instant HTML book, then just started to play with html, javascript etc.

As for training companies provide, in my personal job experience:

1. I have been to exactly 1 ColdFusion Conference, CFNorth, loved it tremendously, but the company wouldn't pay to go a second time. Most of the companies I worked for did not seem willing to spend money on training, other than to maybe buy a book for you, and that was if you were lucky.

2. I also went to a free Allaire Spectra Demonstration in Minneapolis, where I saw Raymond Camden for the first time. Not because I really was into Spectra, but because it was free and it was any kind of coldfusion training that i could actually hear other developers from.

3. And this was before the days I even heard there was a CFUG, but I really did like the early days of the CFUG. I even was lucky enough to present a few times.

4. But most of my training was either me buying books on my own, learning on my own. I just asked a lot of questions.

5. Eventually I got the opportunity to help train others at 1 company, and I tremendously enjoyed that, not because I want to shove my preconceived notions down someone's throat, but really because I want to help other people have to go thru the painful process of learning that I and many others had to go thru. The CF Developer's Guidebook is awesome both for learning to get certified, but to also help know what are all the aspects of cf to master.

6. But as I get exposed more to different jobs, companies, it just became obvious to me that companies didn't really want to help train you. They wanted you to be trained in how ever many programming languages and methods, but didn't want to take the time or money to help you really master it.

7. And I've done a lot of job interviews, it would be very shaming that I would see all these web shops, that just didn't care about the quality of their code, yet I would have to try to get those jobs because sometimes that's all there was.

8. So because of that, I started to write my first articles, and I posted thme on defusion.com, they are still there.

I mean I even created this blog, because I want to both learn more, share more, hopefully to bring the quality of our industry as high as it gets.

But it really upsets and insults me all the negative comemnts I get. Like that because I don't agree with them, or didn't have the same experiences as them, that I am somehow not a good programmer.

I mean we are all shaped by our experiences, and none of us exactly have the same ones, can't we respect that out of each other?

I really hope you can see past your biases, to our common desires and dreams for coldfusion to be the best it can be, and that we as an industry can shine...

I am no Ben Forta, Charlie Arehart, I am just a ColdFusion Developer who loves ColdFusion, I just want to both be the best, and help us all as i can be the best.

So tell us all what kind of training experiences you had, I really would like to hear.

Thank you.

Tuesday, June 27, 2006

Are we going down a healthy path of ColdFusion?

Lately all i hear is eclipse, java, .net, code reuse, database introspection, and I find it rather irritating, I mean honestly have we as an industry really proven that we create stable, usable applications?

Maybe that's why I care less about what the trends are, because I see us more focus on what's new than doing ColdFusion at higher level's of quality.

I've had a lot of job interviews with many different companies, but what strikes me is this drive to new technology, without even been to the point of creating good code.

I think we've lost track of the lessons we should have learned with the dot-bomb.

Here are some of the lessons I learned:

1. There has to be solid financial stability, could care less for IPO's, porsche's but just to have a job I can keep, and be at for 10-20 years would be really ncie for a change.

2. The end of all these schlock shops that just churn out code, that 1-2 years later embarrasses or destroy's their reputation, because it was crappy coding.

3. New Trends/Fads are fun, but are no replacement for solid standards, good work ethics, and giving a damn about the applications you sell/provide or service.

4. The end of Short Term Planning/Thinking, I mean sure there are things we have to get done in the short term, but why keep self-destructing by avoiding what is essential to being a top knotch language...

Maybe that is why I am a fan of Charlier Arehart and a few others out htere, that try to help us create better code and applications....

Maybe that's why I could care less about OO, Fusebox, MachII, ColdReactor, ColdSpring.. Because are we really as a whole industry really turning out applications like we should be, something to be proud of, that lasts, instead of having to always re-write everything in 2-3 years because we didn't give a crap...

Maybe that's why I use to go to CFUG meetings and read the CFDJ....

Instead I get, have you done an enterprise application, focus on inane details instead of am I proud of the code I create, do I give a hoot that 5-15 years later it is still reasonably easy to read, scalable, can be easily fixed or changed...

I love programming in ColdFusion, just not sure where I fit in an industry that cares more about having/creating the next dot-com explosion when we really know it's just gonna blow in our faces again...

Just think about it...