Development Is Design
I recently received this email from a startup:
We’re a startup in San Francisco looking to launch a 5-page website this October. We would deliver all wireframes, web content, and design PSDs. We just need a front-end pro to develop the site. While the site is straightforward, we do have high dev requirements:
- lightweight site that loads quickly
- use HTML+CSS, only use JS when absolutely needed
- entire site to be coded using Bootstrap3
- CSS using LESS
- sprite images
- responsive on desktop (Safari, Chrome, Firefox, IE8+), tablet, mobile (portrait+landscape view)
- final deliverables: HTML, CSS, JS files
Is this something you can help us with?
I quipped about how I wished to stop getting e-mails like this. Not because I’m ungrateful for potential project opportunities, but rather because the startup is treating front-end development as something entirely separate from the design process. (Also, for a startup that doesn’t have a developer on staff, they sure have a lot of specific development requirements).
The unfortunate reality is that this startup is not alone in thinking that front-end development is something completely detached from the design process. That you can design everything in isolation then just throw things over the fence to get built.
The Development Identity Crisis
Even when my title was “Web Developer” or “Open Standards Developer”, I used to call myself a “front-end designer”. Now I call myself a “web designer”. A lot of times I go even broader and just say “I make websites” and leave it at that.
I specifically avoid calling myself a developer because people end up assuming that I can whip up some Ruby gems or normalize some databases. I’ve never had a computer science class. My first line of programming was
stop(); in ActionScript. I learned if/else statements, loops, variables, and more through jQuery (Gasp! Horror!). Almost all of the programming I’ve done is to manipulate something on a screen. While I’m slowly learning the fundamentals of programming, I wouldn’t dare call myself a programmer.
HTML is not programming. CSS is not programming. But because they’re still code, front-end developers are often put in the same bucket as Python, Java, PHP, Ruby, C#, C++, Objective C, etc, etc developers, rather than with the rest of the design team. This is a big problem.
Development Is Design
HTML and CSS development is design. The most frustrating projects I’ve ever worked on were with people that didn’t understand why front-end development needed to involved in the design process. The most rewarding projects I’ve ever worked on were projects that included front-end development at the very beginning.
As the Web landscape grows increasingly complex, it’s increasingly important to demonstrate the myriad ways a Web experience can be interacted with. It’s impossible for designers working in static environments to realistically articulate every device, user setting, and variable that effects how a design is realized. Because of this, front-end developers need to work closely with other designers to ensure what’s being created is realistic and feasible. This requires rolling front-end development into the design workflow, rethinking our deliverables, and working together in order to create experiences that look and function beautifully on a whole host of screen sizes, form factors, and environments.
In order to effectively design for today and tomorrow’s Web, we must replace outdated design artifacts with real collaboration and communication.
For a lot of people, this is scary as shit.
A Fundamental Problem
A lot of brands, agencies, and organizations have their “creatives” (they call them that) in one department and “IT partners” (they call them that) in another department. Sometimes the developers are on another floor. Sometimes they’re in another building. Sometimes they’re in another city. Sometimes they’re in India. Or Romania. Or Buenos Aires.
This divide between design and development is often so ingrained in a company’s culture, it can seem impossible to make the case for including HTML and CSS in the design process. I’ve rassled with lots of clients’ IT departments who fought tooth and nail to own any and all code. I’ve also rassled with lots of design teams who didn’t see any point in including front-end development in the design process. But one thing everyone could agree on: it’s annoying for some know-it-all front-end developer to come in and tell everybody they’re doing it wrong.
The Web landscape gets crazier every day, and the issues with the design/development divide will only grow more and more apparent. Front-end developers often exist in a weird purgatory, somewhere between the design world and the ultra-geek programming world. We serve as translators between these two worlds, and I feel it’s our responsibility to bridge this chasm between design and development.
Tear Down This Wall
As multi-device Web design quickly becomes the norm, the throw-it-over-the-fence style of creating websites is going to be increasingly difficult. The modern Web design process requires intense collaboration between designers and front-end developers. Real collaboration and communication are difficult, but we must get over that awkwardness in order to overcome the design/development divide.