You know what would be cool?
In my experience, some of the best ideas started with, "You know what would be cool is if..." Amazing things begin to happen when your designer and your programmer can work together effectively. The developer gives front-end the data they need in a format that is easily extensible and the magic begins to happen.
How do you create that environment?
I have in fact been guilty of writing my own method of adding a class to an item that is dynamically generated. Unfortunately, my 'checkTheKids()' function had lots of redundant if/else statements and made a mess of the project.
Easy! Separate your business layer from your presentation layer and draw a line in the sand. Sure, you can write CSS and they installed Photoshop on your machine, but I also have access to the database and have this nifty PHPMyAdmin here. It may sound bad, but do your job and let someone else do theirs. Problems can occur when a designer thinks he knows best and creates a little function to add a simple class. What the designer may not know is that the method he is using is an intesive, recursing function of data that is already in scope. The same goes for developers that want to add a simple error class on an input so they can see that the errors are being thrown. Then, when the designer goes to update the CSS and can't figure out why they have to use '!important' just to get some changes to take effect, life can become miserable.
This doesn't mean you should do the bare minimum, either. Instead, communicate with your Yin or your Yang and explain what you need. More often than not, you will start a dialogue which will hopefully include a "you know what would be cool".
What about in larger projects?
This is probably the most important time to discuss the direction of the project. Have a kickoff meeting and discuss what are the goals, deliverables and timelines for the project and identify the issues ahead of time. If the programmer decides to use XML/XSLT and you haven't a clue about XPath, maybe there is an alternative that would allow the designer to build the pages in a more familiar format. As well, if you intend on loading data through AJAX, the developer needs to know to create a web service so that the information and data you are expecting is available.
This may seem obvious to some, but document everything. That doesn't just mean writing notes. It also means putting the milestones and objectives in your project management software. Develop sitemaps, wireframes and mockups and get the lead designer and programmer to give their feedback.
Consider this:
- Brainstorm ideas together
- Have regularly scheduled status meetings
- Communicate across teams to make sure that deadlines and milestones are being met
- Building static HTML/CSS pages
- Use real data that a user would enter (John Doe and 123 Main Street is okay, but what happens if the name or address is really long)
Proof is in the pudding
Recently, I was IMing with one of our programmers and we were discussing this awesome code that will take all of the CSS in the page, minify, compress, GZip and cache it. I mentioned that the script is great, but what would be awesome is if it could incorporate LESS. We read up on their API and figured out how we could easily incorporate LESS into our code without causing any overhead and being completely compatible with our current projects. Now, I can use the functionality of LESS to increase my productivity all because I started off with a "you know what would be cool?"
Good luck in your projects. Hopefully this can offer some helpful tips to you and your team.