Interview w/ Capsize Designs

Interviewee: Mike Critteden of Capsize Designs

1. How did you get into web development?

I went into college thinking of some type of engineering, just because I had that common "how does that work?" attitude about everything, but that faded after a few physics courses. So I had taken a Java class which I liked, and sort of accidentally ended up in an intro course to HTML and PHP, and I was blown away. I think all web developers have a huge light bulb moment of "so that's how all this is done!" and I had that everyday for like 3 months. It only took a couple days to realize that I really loved it.

So long story short, I spent the next couple years reading every snippet of every web design article I could find and making countless fake sites on localhost before I finally decided it was time to make it a job.

2. Whats the hardest part about being a web developer?

I think it depends on what side of web development you're into. For anybody that works directly with clients, the hardest part is definitely balancing the requests of clients with what you know is best. We've all had a lot of conversations about why that cheesetastic dotted-border coupon shouldn't go on the sidebar, or why all flash isn't a good idea, or why five paragraphs is too much info for the home page, and I think I speak for all web developers when I say that that's tough. We don't want to have a client pick apart every single aspect of our work any more than a mechanic wants to have a customer crawl down underneath and critique the work done on a transmission (or even worse, say they want it done a certain way when they know nothing about it). Plus, anybody that deals with clients must deal with getting new clients, so at times that may mean cold calling or unfortunate compromising.

And then there's the other breed of web developers -- the behind the scene'ers. For these guys, clients aren't a problem, so I'd have to say the hardest part (besides IE6, that's too obvious) becomes innovating. We've all, at one point, spent hours building a site until we realized it looks exactly like another site, or until we left for lunch and came back and realized how incredibly ugly it is. That's our dilemma, things are often either not pretty or not creative. Anybody who can constantly roll out sites that are not only good looking and usable but also original and creative is a better man than I.

3. The number one reason you should use a CSS Framework?

Short answer -- speed. Love them or hate them, they definitely speed up the process.

Long answer -- speed + collaboration. Here comes the essay:

In my experience, frameworks (especially grid frameworks, but even with strictly typographical frameworks like Tripoli or Boilerplate) cut down coding time by a huge amount (often by about 1/3), which is a lot in the world of web design where the faster you go, the more clients you can take and thus the more successful you become. Even if you only use frameworks for the prototyping stage and not the finished product, it's still a huge timesaver by letting you skip the monotonous tasks of setting up type, getting a layout coded, etc. It lets you get right to the fun stuff that's unique from site to site.

As far as the semantic debate, the way I see it, the HTML used by a site built on BlueTrip (or Blueprint or 960.gs or YUI or Emastic or Typogridphy or ...) is going to be the same as the HTML used on a site where the CSS has been carefully, 100% hand crafted - you'll still have the same divs nested in the same way, etc. All that differs is what goes in the class attribute.

What you end up doing then is something like this:

div id="aboutus" class="navigation span-2"

instead of:

div id="aboutus" class="navigation"

You don't lose any semantics, but you gain improved maintainability of the code. Semantic markup and structural classes don't necessarily need to be exclusive of each other, you can have both.

Of course nobody (including me) wants to have to do something like that. Of course it's not quite as pretty, and of course it bothers me. But not nearly as much as how frustrating and tough it is to write maintainable CSS that can be updated and managed by a TEAM of people. I think in the real world, separation of content and presentation is impossible. Outside of exercises like CSSZG it doesn't work, and you almost always end up having to modify your HTML inline with your CSS.

It all comes down to what can make our client-side code maintainable, accessible and effective across multiple devices. Structural class names appear to cover all three bases, so it's hard to come up with a good argument against them other than "they make me feel uncomfortable".

4. What's your favorite server-side scripting language and why?

I'm a big PHP guy, especially when combined with a framework (CodeIgniter! Kohana!). It's widely accepted, relatively scalable, and not completely annoying to code, so how can you argue?

That being said, I really really like Django, and Python in general. While more of a general purpose language than a scripting language, it's still really well suited for web environments, and it's just such a beautiful, concise, and full featured language. And Django is really awesome. It's templating engine is about the simplest I've found anywhere, it's regex usage for URL's is as flexible as it gets, it's admin interface is ridiculously cool, I could go on and on.

The downside -- hosting sucks (only some hosts will "support it" and even most of those require a lot of screwing around to get it working). Plus the lack of an array construct similar to PHP makes Python newbies a little queezy. But that goes away fast.

5. There are plenty of popular Javascript Frameworks out there, which one do you like best and why?

I've always been a big jQuery guy. At first, this was just because it was by far the simplest to get up and running with. Prototype and Mootools (the other two big boys at the time) had a significantly larger learning curve, so I went for jQuery from the start.

Then, by the time I knew my way around jQuery, the community was starting to take off, so new plugins were being released daily which is always exciting for a web geek like me, and it was quickly becoming the "standard" in that it was the drug of choice for more and more web developers, and the majority can never be wrong, can it? So I stuck it out for awhile, and along the way, I've really learned to love it. It's amazingly simple to use, does pretty decent in speed tests, has a huge range of functionality (including user contributed plugins), and John Resig is the man. How can the guy who ported the Processing programming language to JS be wrong?

6. If you were just starting out in the web development world, what skills would you want to acquire first?

I think even more important than learning the coding basics is learning the best practices of web developers. Anybody can learn how to communicate with a database in PHP, or make text bold using CSS, but very few new developers make sure to follow object oriented (and DRY) PHP principles, or close database connections, or use semantic HTML tags, or put scripts at the end of the page, etc.

In my experience, this stuff is not stressed in any intro course. It's usually more of a side note or a by-the-way. In the meantime people are getting hired and fired for the adherence to best practices, and graduates have no idea that they even exist. I was mentored by a well respected professor and web developer in college and later found out that he had never heard of SQL injection or semantic markup.

So for all you budding developers out there, here's a course plan. Spend some time learning the absolute basics of HTML, CSS, JS, and PHP (I mean like really basic, on the level of what goes in the title tag), and then look into frameworks for each. CSS and JS frameworks both give insight into cross-browser compatibility and separating presentation from logic, and PHP frameworks give insight into DRY principles, keeping logic separate from HTML, etc. Even if you end up hating frameworks, there is a lot to learn from them.

7. What do you like to do in your free time?

I dabble in guitar and some audio recording (in combination with a love/hate relationship with Ubuntu Studio) which keeps me pretty busy, and I'm engaged and have a Blue Heeler which is notoriously energetic. Whew.

Hope that helps! Thanks, Michael.