The Agency Dilemma, Part 1
Eric Lamb is the developer of professional and enterprise grade ExpressionEngine add-ons. Founded in 2009 Eric’s company mithra62 aims to be a leader in ExpressionEngine add-on development and has a reputation for stability, usefulness, and being highly configurable. Check out Eric’s popular ExpressionEngine add-on Backup Pro.
My experience working for web agencies, as an employee, has been interesting . I have never worked at an agency without incurring huge scars along the way. At the same time, I’ve always left them better than I came. And not just better, but leaps and bounds better than where I would have been otherwise. The scars though; the scars can run pretty deep.
I’m a firm believer that every professional web developer should work at a web agency, those companies that only do client-driven web development, at least once. It’s a rite of passage. Designers, programmers, producers, and everyone in between should all, at least one time in their career, work for a web agency. I’m not talking about freelance or contract; be a bona fide and emotionally invested employee at an agency. The experience is simply invaluable. The variety and pace of the work raises your game so high, so fast, I’ve yet to meet a developer who wasn’t better for the experience.
Before I started working for my first web agency, back in 2004, I was a cocky little jerk (this is a recurring theme in my career by the way). I had spent 3 years working in-house as a web developer for an also-ran company in the fitness industry, building out random and nonsensical “brain children” for an eccentric, though well intentioned, CEO. I thought I was just the best thing ever.
We would spend months, with a team of a dozen people, building out each idea the CEO came to us with. The amount of quality assurance and oversight was staggering. If something, in the end, didn’t work, we’d scrap it and start over. Deadlines were flexible to put it mildly. Still, we were convinced we put out quality (even if no one knew it existed and most people didn’t) and I even always went home at 5:30 every day to boot.
At the time, I was basically a glorified designer/copywriter with minor coding tasks to keep me busy and out of the way (and my code wasn’t even very good). I did a lot of HTML (hurray for Dreamweaver!), ASP, UI design, and lots and lots of copywriting. Looking back, it’s clear to me that I was only allowed to do more than copywriting because it kept me happy and out of the way. Oddly, I really thought I knew my stuff with that level of experience.
But the pay sucked, and it gets old answering to every whim of your (let’s call a spade a spade) crazy boss, so I decided to hit the bricks. Looking back now it’s clear I didn’t know anything but, at the time, I was so full of myself I could do no wrong.
About a year later (after freelancing and learning all I could about PHP) I got a job at a web agency. This place was sick. It was everything you’d imagine a web agency to be like in Los Angeles.
We had video game and movie companies as our clients, some freakishly talented people to work with, a variety of music blaring from everyone’s computer, beer every Friday, and a soda fountain and stocked munchies in the break room (unlimited Coke? Woot!). We’d even get free video games, movies, concert tickets, and all the technical books you could want to read.
In terms of perks, to someone at my level at the time, this place was nerdvana. But there’s more to a job than the perks and pay; the bosses expect you to get stuff done. And the work is where an agency provides its real value for a developer.
In most agencies I’ve worked for, and with, the pace and volume of work is like nothing I’ve seen elsewhere. Going from an in-house job, to freelancing, to an agency was a shock to the system in terms of expectations and what was actually possible. Thinking I could work from 9 to 5 was met with smirks and chuckles. Everything had to be done ASAP and there was a never ending line of stuff to be done.
Previously, I would take a couple days to sometimes weeks to perfect something and deliver it. Saying, “No, it’s not ready yet” was always acceptable and rarely challenged. Now, everything had to be done immediately, and usually concurrently, with every push back being challenged and scrutinized for any bullshit. It was overdue yesterday so late nights became the norm. But the work was so much fun I never really cared about that. Doing interesting and engaging projects and tasks for clients and products I actually liked and enjoyed made it easy to get in the zone and focus.
I found out early that multi-tasking was a must. Being able to keep multiple details about multiple projects in your head at the same time, always to be asked about on a moment’s notice, is an extremely valuable skill. Working at an agency forces you to do this. It’s just part of how things worked in my experience. Yes, ideally, you’d never, ever, ever, ever, never ever interrupt a developer while they’re in their work, an agency has no flex for that. Communication is non-negotiable.
The work was amazing though. The variety of tasks always kept things interesting and fun. For example, one day I’d be working on a system to only allow 3 plays of an mp3 in a random range of every 20 to 30 minutes (no clue why that range but I hardly cared). Another, build a distributed system to track link clicks and image views across all social networks and websites the agencies community managers posted to (with absurd metric possibilities). Another day would be to build an image gallery generation script to take uploaded images and automatically group things up in HTML for browsing by the clients, resizing/cropping to perspective and exif pulls.
There was a never-ending supply of that exhilaration we all feel when doing something cool. It becomes an incredibly addicting high to chase and agencies have a never-ending supply of that drug.
Every day there was client work, IT issues, system administration, and, especially, tool building. Looking back, for me as a programmer, it was the tool building that really kept me interested. The client work was alright, but a website is a website is a website. Building most websites, to me, is kind of boring. The tools, though, those were the real motivation and fun. In terms of growth as a programmer the majority came about from building tools.
Being exposed to the business logic for image gallery systems, link shortening, data mining, social networks, e-commerce needs, content management systems, and even web statistical analysis was invaluable to me professionally. It really beat the fundamentals into me and all within my first year. Considering that pretty much all programming is just variations along a common theme, this exposure and experience gave me a huge leg up later in my career.
For people at my level (at the time) there’s another aspect to agencies that’s noteworthy: the mentors. I met my very first mentor while at my first agency. This was a guy who could code and who had no qualm with showing me everything he knew. The importance of a good mentor for a healthy career cannot be understated regardless of discipline. Thankfully, agencies have a steady supply of smart people who are more than willing to share if you’re trying to learn.
But there’s a dark side to agencies. They can also be soul sucks that can easily bring out the worst in people. In the next article I’ll go into my experience working with a contender for the worst of the worst agency in Los Angeles.
Eric Lamb is the developer of professional and enterprise grade ExpressionEngine add-ons. Founded in 2009 Eric’s company mithra62 aims to be a leader in ExpressionEngine add-on development and has a reputation for stability, usefulness, and being highly configurable. Check out Eric’s popular ExpressionEngine add-on Backup Pro.