When ORM becomes a problem

ORM (Object Relational Mapping) systems are useful in getting you started with a project. They help you to quickly create objects that model your Data Source, letting you interact with the data in a simple and intuative manner.

While ORM is extremely useful, especially in smaller projects, this usefulness comes at a price. ORM becomes a problem in long-term maintenance as you are committed to the ORM you initially select, whether its Entity Framework, LINQ2SQL, SubSonic, NHibernate, or any other ORM Software Factory system that generates class based on the targeted data source you will need to select one and, in most cases, will be married to it throughout the development (and product) life cycle.

While this may not seem to be a deal breaker it is not until later, during the longer-term maintenance phase, that the price is paid. Developers who inherit the project from you will be forced to continue to use the ORM you selected, even if its no longer available. And if the ORM system is open-source, with its source code available for you to modify, upgrades (or downgrades) to a different version can cause major headaches which often result in the development team refusing to make changes to the ORM for fear of crashing the application (or even worse would be to cause lots of runtime errors that are only discovered after the upgrade).

Another disadvantage is that if the data source schema is changed the application is not shieldedfrom the change. The relational schema of the data is hard coded into the application via the generated classes. If the data model changes the ORM object won’t know until they are regenerated by the ORM software.
The moral of this story is to use caution when working with ORM systems. Anticipating and addressing these kinds of issues beforehand can help to avoid having your hands tied later down the line.

Making your website project a success

Finding a talented, reliable, and responsive development firm that has the skills you need can be an enormous challenge. Understanding what you need can be just as difficult, here are a few things that will help you get started in the right direction.

Know your target audience:

Who are you creating the website for: the general public, your company’s employees, or existing clients? While this may seem silly it is one of the most overlooked items in nearly all projects. Identifying who the site is for, how they will use it, and what the most important parts are is critical to the success of any website project. Take the time to really think about your target audience, what they need, and how you are going to provide it to them. Write this information down in an outline form and regularly refer back to it during and after the development process, asking each time if you have given your target audience what they need.

Identify a budget:

It is difficult (if not impossible) to know how much a project will really cost, often you are identifying your needs during (and even after) the project is being developed. Even if you have no idea what your project may cost to produce you need to set limits on how much you are willing to spend. Think if your project as if it where the purchase of a new car; you don’t want to go to the Porsche dealership when you can only afford a Yugo and you don’t want to be looking at Yugo’s when you really need a heavy duty truck. Your project is an investment that needs to bring a return, identify how much money you are willing to spend and what your project needs to do for you in order to justify the expenditure.

Ask for a development timeline and make sure everyone can stick to it, including you:

It is important for all parties involved that an estimated development schedule be created and agreed upon by everyone. Your development firm must balance your project with others that it may be involved in; you will need to balance the needs of your project with your current work load. No one party can do it all, realizing that your website development project will require both time and effort from you and setting aside the necessary time to stay on track is one of the most important practices to follow. Making sure you follow up with your development team, getting them the feedback and materials they need when they need them can mean the difference between the success and failure, not to mention reducing a great deal of stress for both sides.

Focus on what’s important:

It’s easy to get carried away with your project, spending time and money on things that don’t achieve the bottom line. Work with your development company to create a “Critical Path”, a set of absolute “must have’s” that represent the bare minimum needed to make your project a success. Before, during, and after the project focus on the Critical Path first leaving the extra’s for later if time permits.


Communication with your development firm makes or breaks a project.
Be responsive: Return phone calls and emails promptly. Keep your development firm informed:if you don’t have time to get them something then let them know, set up regular scheduled meetings/calls to discuss the status of your project and any decisions/changes that may need to be made.

Don’t make assumptions:

Don’t assume others understand what you meant, instead ask them to repeat it to you in their own words. Miscommunication costs time and money, taking a few moments to ensure everyone is on the same page can make your development experience much more pleasant.

Stay involved:

Your development firm cannot do it without you, just as you cannot do it without them. If you haven’t heard from them in awhile give them a call and ask for an update

Get things in writing:

keep a record of your email conversations and follow up any calls with an email that recaps what was discussed.