Of all the posts and topics I read on the internet, very few of them pertain to the dicsipline of Enterprise Software Developer. Obviously the Steven Souders books are great, and so is the YUI theater. But when it comes to being a solid UI developer at a company like Salesforce.com, what is life like?

Living in a Java World

At larger companies, its likely that the majority of the business logic will be on the server. Because of that, a large majority of the developers in the company will specialize in the backend. You’ll have those who specialize in the front end as well, and those who are balanced in each to varying degrees of skill.

With such a make-up of skills, you’ll always be battling those developers who write less then perfect code, and aren’t aware of optimal practices for developing in the browser environment.

Complexity of the System

In a system with a very large code base and product set, you’ll generally have bits of common functionality, but you’ll also have one offs that have completely different UI’s. For instance in Salesforce we have common detail and edit pages, list views, and our Chatter components. These can all be fit into a common UI framework, but we also have things like dashboard builders, page layout editors and event schedulers.

These complicated projects are usually where provided UI API start to break down, the knowledge of the general developers is stressed and UI resources are sought for. As a UI developer its a good situation for you as your generally in high demand. Though as the UI expert on the team, you have the responsibility of not just developing a great product, but you’ll need to ensure that any framework for the company is extended to support your new features and that its all maintainable.

This seems common sense, but to often the UI is considered an add on layer. Something thats added at the end to make the feature either pretty or cool.

Technologies

This is the big difference between the awesome stuff I’m reading about and what I get to use day to day. For a system like ours here at Salesforce we have a policy of supporting the last 2 versions of IE. We do support the other browser vendors, but as they continually update their browser versions we don’t care so much about anything but the current version. Even though we say we only support the last two versions of IE (8 and 7), we have a few reasons we can’t totally ignore IE6, so essentially we need to support IE back to 6.

With that in mind, most of the capabilities of the HTML5 feature set are off limits. We do use things like CSS rounded corners in W3C complaint browsers, and accept square corners in IE, but thats an easy downgrade. For something like css animations, or postMessage we would need to do a more complicated downgrade and when you need to write something twice it doesn’t seem cost efficient to use the newer features.

In addition to not being able to use cutting edge technologies, you need to be able to program for those lower level browsers. You need to know which CSS selectors you can use if your programming for IE6, DOM inconsistencies in IE6 vs IE7 vs Google Chrome.

Everything Else

The life of a UI developer in a company like Salesforce is really wonderful. I’m really enjoying it, and you have the ability to do things on a scale much larger then most sites. But I want to focus on noting some of the activities unique to enterprise UI development. I know its fruitless to note, but if your curious about anything please ask. Its fun to share.

If your not following @dalmaer you are really missing out. I feel like I can stay up to date with my field of JavaScript development by simply following Dion. Something he posted a few days ago was this video that he called must watch, and I totally agree. It really redefines a few common perceptions that I’ve had ever since I’ve been programming.