Tuesday, January 18, 2005

Overemphasis on OO and Modularity

As I have seen more and more in our industry, the call for modularity has surpassed the original intent. In far past, too many applications were to huge, hard to read, and were using similar code, that could have been re-used, and save some time.

There is a lot of common sense involved with code re-usability:

1. Making sure we don't waste time in writing the same codee
2. Making sure that long applications are broken up into more readable applications

But I feel we've finally gone way over the edge, by these simple but needed changes in how we code, way too far into OO-land.

I feel there are times when OO can be useful, but not when you are coding coldfusion applications 99% of the time.

Coldfusion is a very powerful language for creating web applications, but is most know for it's speed of concept to results, Rapid Application Development. So that means there has to be a logical path from a to b, and that's the end of the application.

We are getting invested into things that may be interesting but are inhibiting our speed of delivery.

Simply said, Object Orientation, requires thinking in non-logical ways, that make it hard to work with and hard to communicate about.

What happened to plain old english logic?

I felt this when I had taken my first java class, I could figure out how eventually to do whatever i wanted, but no one would talk in a logical manner.

If I wanted to X, what things do I need to do X. A Simple Question, but because of object orientation, there was no way to logically describe the problem and solution.

Object Orientaton sounds really fascinating, but experiences like really a waste of time.

I have no problem finding new ways to both improve the quality of the code, and improve the speed of delivery, but I have never believed OO was the path to do that.

I am sure there can be a more logical approach to working with Java, without having to use OO language.

I mean, I've worked in javascript, which has methods and objects, but I've had no problem doing what I needed to get done, because it's coders use logic.

This goes along with CFC as well. Which were originally meant to be used for web services only, which is fine. But now everyone wants to use them for non-webservice related projects?

Doesn't anyone have a clue how to code for scalability? It's interesting and new ways of doing things, but they are not always the best ways.

We have to use our common sense.

So what things can we do to improve coding quality?

Start with the basics:

1. Commenting
2. Code Readability including good indenting
3. Use a Project Management Process to avoid coding mistakes
4. Documentation
5. Learning from Mistakes

My Motto - "Doing it the right way the first time"

Understand how to code for best performance, and code as if each application will be serving millions of users consistantly.

Understand how to write the best sql statements to get the data you want, but write it for performance. Use stored procedures, dts packages, all the functionality to move cf scheduled events into the database, so the web server can just focus on serving pages.

There are so many ways that we fail every day to just do the core, and all of us are into whatever the current fad is.

If there are other ways to be better coders, I am sure eager to know. I do not assume I know it all. But I do try to know what works, and what is a waste of time.

Coldfusion is about speedily creating great applicationss, so are you?

Job Hunting: A fun and educating experience

As the trend in this economy has been of constant flux of jobs, it has taken some learning to know how to deal in this new economy.

I hope to share the lessons and skills I have learned in dealing with this, and I hope to hear other people's experiences as well..

First off, there is never enough sites to store your resume, the key I have found is to identify which sites, are the future employer's actually using themselves??

I use Monster, Dice, Yahoo Hotjobs, and Careerbuilder, most of all. They all have all key features that make them different and yet the same.

1. The daily search email can be very useful, to automate the process of finding a job, or finding an employer. But the hard part is to identify, what keywords to use. Such as do you use coldfusion or cold fusion, which do employers use, and what should you use.

2. Job Titles, ooooh aah. It's weird that each company may have it's own job title, that do different things. Such as a webmaster in 1 company may be the developer, but in other, just handles maintenance of the web site and handles emails. It's so unnecessarily confusing, especially when looking for jobs, what job title, best describes what your employer wants to hire you at?

3. Constantly revise your resume. I am never satisfied with descriptions of what I have done.

4. Documentation or Profiling of work, this is one of the hard areas to provide. All employers want it, but won't allow us to provide it. Because all code is usualy propietary, so how can we prove what we know? Well I actually discussed this with a recruiter who wasn't sure how to handle this, and my answer is testing sites or services, such as brainbench or other sites that you can get an account for, and use to test potential employees. What else can we do?

5. Dealng with recruiters, this has been the most difficult experience. Such as 25 recruiters asking you regarding the same exact job. Or recruiters posting job ads, but with no actual job, just so that they can get you in their database. Also every recruiter besides having recieved an email of our web-based resume, want a word one as well. And there is no easy way to convert it to word, and still look good and on 1 page. There has to be a better way to both meet the needs of the job searchers and employers to have all the information they absolutely have to have...

It's just frustrating sometimes dealing with all the barriers to a job. After all we have similar goals, I want a job, they want to hire someone, so how can we meet in the middle and work out these problems.

Part of this has to deal with the experiences we had during and after the dot-com bomb. Companies can not simply exist without clear ways to earn and keep money.

We need to be paying people meritiously...and re-think how promotion and demotion works.

Good luck to everyone who is looking and hiring...