Interface Developers have to be available from start to end in a project (and work with real live code)
Having had a number of jobs and from being a consultant, getting the opportunity to see how a lot of companies and clients work over the years, I’m way too often surprised how underestimated cooperation and keeping a competence available throughout a project really is.
There are two main reasons why this happens:
Interface Developers don’t want to get dirty
I’ve met a fair number of Interface Developers in my day who are just into creating raw HTML, CSS and maybe some JavaScript, and that’s it. While I can understand them, if they ever want to truly deliver, to produce a working live web site, they have to step up.
Really, how hard is it to code a perfect HTML prototype without taking real life problems and obstacles into account? When you’re sitting there, completely shielded off from the rest of the world, few things will ruin your world but at the same time, your world will never meet the real world.
Interface Developers have to get their hands dirty; learn source code control (Subversion etc), start working in “real” code environments (meaning JSP. ASP.NET, Ruby on Rails etc) and adapt your code generated content controlled by a server-side language. Throw in a quirky CMS and content texts with real words instead of Latin (oh dear), and you’ve got yourself a challenge.
Poor work methodologies
While the above can cause these sorts of problems, by far the biggest problem is when Interface Developers aren’t allowed to take part in an entire project and make sure their code holds up till launch date. Common scenarios are:
- One company does design and HTML coding, while another does actual system integration.
- Instead of working an agile manner, where people with different competences constantly cooperate, a waterfall model is applied where the design team delivers to the HTML people, who in turn leave their code off to System Developers breaking it down.
Why either of these are so dangerous is because, as any good Interface Developer knows, developing a front end for a web site, ensuring cross-browser and cross-platform functionality, is a never-ending work of fine-tuning and knowing the ins and outs of the major web browsers out there.
To instead dump the results of an Interface Developer’s craft, a person dedicating his professional life to coding web interfaces, into the hands of a jaded and tired System Developer who isn’t interested nor cares about the actual code output to the end user when he is finished filling it with real live content, seems insane to me!
I have a firm belief that you should always, always use the right person for the right job. Why would you force something such as splitting a HTML document into reusable and optimized components onto a System Developer who is skilled in so many other areas but this particular one? If you have a person who has a) created the code to begin with and b) will create the end result faster and more correct, why the hell wouldn’t you assign that task to him/her?
And what’s even more ridiculous is that it should be so extremely evident that if a Designer leaves his code to an Interface Developer, and completely cuts off the ties (due from being from another company or getting other new tasks to work with), and the Interface Developer in turn leaves the code to a System Developer and never sees it again till it’s in test, or, worse, is released live, is that the result is almost obliged to become sub-par.
The Designer usually doesn’t even recognize his design, and the Interface Developer wonders how in God’s name his perfect validating code has ended up in nestled P
elements and H1
elements closed multiple times in a row (just to really make sure it’s closed…) just because some glitch in the server-side code, which never got a quality check.
People will think the design sucks, and the Interface Developers will get a lot of shit for invalid code which is both inaccessible, bad for SEO and takes forever to load. And here you have a majority of the roles in a project being responsible for parts someone else messed up, and they weren’t even allowed to be there to make sure it didn’t happen. Does that sound fair to you?
Or, more importantly, does that seem like a good business investment?
What I propose
The way I suggest people work, and how I myself work in the projects I’m involved in, is that every competence in a project, especially the ones in producing roles such as Designers, Interface Developers and System Developers, work side-by-side the entire project, preferably sitting so close to each other so they can just turn around and discuss something as it comes up.
Every represented skill set doesn’t necessarily have to be there full time, but rather consistently from the day work is begun till it reaches its deadline and is released. Some people would argue that there might be a cost increase with this approach, but compare that to the badwill and costs of redoing and fixing something already released over and over again, just since things weren’t properly discussed when they surfaced, and the people with the wrong skills were used for the wrong job.
Let’s put a stop to poor web sites being released due to lack of working together, assigning tasks to the wrong team member and neglecting to see that it always has been, and always will be, completely vital to collaborate to become genuinely successful.
I believe that a good web-developer should always know about design, interface and backend development. Even if it's ok to be "gifted" in only one part, you should always know about the rest. And therefor always be involved in the entire process of the development.
I think it's very hard to seperate those few parts strictly apart, as there is no real, straight, seperation going on! Unlike desktop application developement…
Maybe we got that issue because we initially thought that webdev is just similar to appdev! It's good to point that out, as a lot of companies don't get it yet…
Robert, I couldn't of said it better myself. This was always my biggest annoyance of freelance/contract work. For a while there when I got out of school I had made a little name for my self around my town for being a good HTML/CSS guy for the local web firms. Most of the time they would send me work when they had to much of it and needed someone they could depend on. I would slice up their work spend hours making the code as semantic, valid and browser compatible as I could.
In turn would hand it back over to the web firm to do the integration and almost always the code came up looking pretty bad, because most software engineers don't care or know about the standards we try to adhere to and a lot, not all brush HTML/CSS off as kids play. I never had a site that looked as good as I coded it when it went live, it took me a while but I came to the conclusion that it was always going to be like that so not to be so disappointed if the sites in my portfolio were not representing how I truly intended the code to be.
I did a small contract stint with a major ecommerce firm working inside of their platform. It was my first time working in a Java environment and I have to tell you it made my work that much more enjoyable even though the standards were not the best. I really can't see why anyone would just want to do HTML templates and hand them over. I think you really cross the line into a real developer when you have to work with HTML and CSS in a large scale web application, having to work inside of the guts of the site.
I now work at another ecommerce company where I work with the same Java platform and get to work 5-10 feet away from the designers and other engineers, its really a great way to work and we all learn from each other. I think once you master one thing if your truly passionate about your career you want to make your job challenge you. So why once you "Master" HTML and CSS why would you want to just limit yourself to that. I am now considered a software engineer at my job and its a blast because I can now have all my HTML render the way I want it to from all the different types of iterators and what not. People don't want to obtain new skills and continually move ahead in their career are people that aren't truly passionate about what they do.
sorry for the lengthy comment but it really hit home for me!! Great post π
The recently launched new booking at sj.se is a perfect example of what your are trying to say with this blog post. Its a scandal.
What scares me is that many developers out there don't even consider design, interface and system to be three different parts. They actually believe they can handle all three just fine on their own.
I've heard interface developers say "I suck at design", designers said "Divs does not work, bring on the tables" and seen system developers spit out HTML and CSS as some last minute polish.
There are actually three strengths here, three phases of production, which must be respected equally and be handled by "the right man for the right job", or it will be become a weakness instead.
Great blog, Robert!
Great post, Robert. As someone who weaves in and out of all three of those roles, I agree that there needs to be some continuity and quality-control throughout the process of designing and developing websites.
All too often when a client only wants "Photoshop layers" or "HTML templates", the end result is no where near the designer/front-end developer's original spec. Even so, an interface disconnected from the interaction (and likewise disconnected from the server-side logic) rarely ends in a holistic experience.
But the reality is that oftentimes budgets and timelines don't allow for this continuity; clients don't buy into the cost vs. quality, or they believe their in-house developers will suffice (when oftentimes they just don't give a shit and/or have to meet unrealistic deadlines).
Still, there is a better way and I hope, in time, that clients will more and more "get it".
I'm glad to see that you agree with me! I'm amazed to see this lack of understanding in so many places, and the failed results and wasted money because of it.
Dan,
On the contrary, thanks for a long comment and I'm very glad to hear that you liked the post!
And then the multifunctional designer-interfacedeveloper-systemdeveloper web programmer has born.
And then died in heart attack.
Ceriak,
Ha ha! π
Well, I believe developers and designers really have to be more versatile and work together, rather than doing their thing behind closed doors, to achieve the best results.
[…] Interface Developers have to be available from start to end in a project (and work with real live co… […]