I can't work under these conditions
February 14, 2011 7:03 PM   Subscribe

I'm a web developer. I feel like I'm not living up to my potential, not getting the opportunity to apply my abilities, and drifting into a career dead end—and it's bumming me out.

I've been doing this professionally for about ten years, at a variety of companies. I'm pretty good. (I do LAMP and jQuery stuff.)

Two things have been bothering me:

1. I want to build great sites. And I know I can. But the assembly-line model of conventional web shops does not produce great sites.

Great works are the product of careful design, continual refinement, and multiple revisions and rewrites. No desktop software company expects to get everything 100% perfect on the first draft—that's ludicrous. You're lucky if the first draft get things 85% right.

Leonardo didn't crap out the Mona Lisa fully formed. He did studies and sketches—probably lots of them. Some didn't work, and were aborted or discarded. Some had the kernel of a good idea, which was refined and elaborated upon in successive drafts. Eventually, he figured out the problems—and solutions—well enough to execute his masterpiece.

And yet, in the world of web development, that 85% first draft usually ends up being the final product. If it more-or-less works on the outside, no one cares that it's a pile of kludges under the hood, destined to become an unmaintainable mess. It passes the tire-kicking test, so let's bill the client and move on to the next project.

I'm not saying that my first attempts are useless crap—they aren't. But they could be so much better. I know I'll never reach that mythical 100%, but I'd like to at least have the chance to try for 98% or 99%. Being forced to settle for 85% drives me crazy.

It doesn't help that web development, as I've experienced it, tends to be a rather haphazard process. Requirements change midstream. Things get shoehorned in at the last minute. Features get added because they placate the client, not because they're good for the project. Expediency trumps long-term integrity. Non-technical folks make decisions that have technical consequences. And so every project becomes a big ball of mud.

2. It seems like custom code has become increasingly unfashionable these last few years. Everyone wants Wordpress (or Joomla, or Drupal). And I've noticed, with some alarm, that people who barely know how to program are now billing themselves—and getting hired—as "web developers". So if you can cobble together a few flaky, off-the-shelf Wordpress plugins, and write a few lines of code that you don't even really understand, you're a web developer?

But I digress. These CMS platforms are popular for a reason, and they have their place in the world. That's fine. Heck, I use Wordpress myself.

But this isn't the kind of web development that I want to do. There's no challenge to it. It's certainly not advancing my skills—if anything, it's a step or two backward. It makes me feel like one arm is tied behind my back—and it makes me really nervous to think that I'm standing still (or even sliding backward) while the rest of the world is surging ahead. I started a new job as a "PHP Developer" three months ago, and I've barely written any code since I've been there. Where is that going to leave me in five years? In ten?

(As a freelancer, I found a reasonably brisk market for custom Wordpress plugins, but that's still [usually] pretty basic stuff.)

I want to be writing the Wordpresses of the world—or similarly rich, dynamic, custom codebases. That could mean working on a packaged software product, or working to continually refine and expand XYZSite.com.

To say all of this much more succinctly: I guess I yearn to be involved in something that's more "Real Software Development", and less "slapping a few scripts together to create an interactive marketing brochure". I have the chops to do it, but I have no idea where those jobs even are, let alone how to get them. Help? These jobs do exist somewhere, right? Obviously, Twitter and Facebook and Digg and Mint.com and Etsy and so on aren't running on off-the-shelf software. How do I get a job building stuff like that?
posted by ixohoxi to Work & Money (14 answers total) 12 users marked this as a favorite
Obvious but correct answer: apply for jobs at twitter, digg, mint.com etsy, facebook, google, etc. You want those jobs? There they are. Most of those companies post their job listings online. You want to work on sites where *the site itself is the point*, not an advertisement for some other thing. So apply at places where their main product is the website.

"It doesn't help that web development, as I've experienced it, tends to be a rather haphazard process. Requirements change midstream. Things get shoehorned in at the last minute. Features get added because they placate the client, not because they're good for the project. Expediency trumps long-term integrity. Non-technical folks make decisions that have technical consequences. And so every project becomes a big ball of mud."

That happens everywhere, to some degree or another, on web products and otherwise.
posted by tylerkaraszewski at 7:15 PM on February 14, 2011 [2 favorites]

What's stopping you? Start working on a project mornings or nights or weekends . Put it on github. Show it to people. Keep refining it. When it's as great as you want it to be, put it on your resume and send it off to one of those companies.
posted by miniape at 7:18 PM on February 14, 2011 [2 favorites]

1) Get involved in wordpress and other projects to feel a sense of belonging in a developer community surrounding products you admire

2) Build your own products, toys, weekend things.. it'll be like training for you to deploy initiative and be fast at making your own features and eventually products

3) Apply to software companies, not just companies that build software
posted by the mad poster! at 7:22 PM on February 14, 2011 [1 favorite]

Are you using PHP for all your stuff? If so, part of the reason you feel like you are in dead-end situations with below-average developers is because that is what the PHP community is like*. Learn Ruby or Python.

Additionally, consider that it's not inevitable for sites to devolve into a mess after just a few months. Learning to build sites that accommodate change gracefully is a skill you can work on, and it doesn't necessarily take much more effort than building a quick-and-dirty version.

*Which is not to say everyone who codes in PHP is a below-average or behind-the-times programmer, of course. But the community as a whole, sure.
posted by inkyz at 7:29 PM on February 14, 2011 [1 favorite]

I was writing a longer response but basically I think you're in the right line of work but in the wrong place.

If you haven't contacted a career coach before now, now is the time to do that.

I see your Big Ball of Mud and raise you with Cognitive Distortions, which are liberally scattered through your question. Coaches, people who have been there and done that, people who can listen to your whole problem and work with you to get to a better place -- that's what you might need right now.

Otherwise it's just words in your head, and negative ones at that. Spinning tires.

You'll get it. Good luck.
posted by circular at 7:39 PM on February 14, 2011

Mechanical engineering is similar...the engineers want to design the most elegant and efficient thing possible (over-engineering), the sales guys want to sell a lot (over-committing), the production guys want to build (even if shutting down the assembly line for awhile could help). Your desire for excellence is balanced by the need for practicality. That's why I'm now back in school and am trying to do a side project or two as well. If you can explain to the customer that coding more elegantly will get to better product in fewer hours, then do that.

I couldn't find the Joel on Software blog post about this, but here's his blog anyway.
posted by sninctown at 7:44 PM on February 14, 2011

Maybe you want to look for jobs at Agile shops - places that are truly Agile. Start networking and find out who the Agile champions are in your community, and ask them where you ought to work.
posted by KokuRyu at 7:51 PM on February 14, 2011 [1 favorite]

I have been exactly where you are. This is the nature of most contract work, unfortunately. The solution, for me, was to use the somewhat-boring contract work as an opportunity to build skills, and then use those skills to move to someplace that was doing cooler things. Basically, you want to work someplace that's run by technologists who are really passionate about what they do, which tends not to describe your run-of-the-mill web shop. You have a few options, there, though:
  • A high-end firm is one. There are firms that only work with high-profile clients, who tend to have sufficient budgets to do cool shit, and have sufficient reputations that they can reign in their clients' insane requirement drift, and "fire" clients who don't get it.
  • Startup land is another. Lots of startups need programmers, and these days, lots are run by really competent folks, many of whom are doing good work. It's risky, though.
  • There's also some cool work to be done, these days, in the non-profit space. This arena is smaller than the other two, but it's where I ended up, so I wanted to mention it. Web technology is doing more and more to help non-profits do organizing and outreach, spread their message, etc., and there lots of non-profits (like the one I work for) that have specific mandates around technology, and funding to get cool technical things accomplished. And you get to feel like you're making a difference, as a bonus.
Anyhow, if that's where you want to go, now is the time to get yourself ready. Learn new technologies. If projects come along that present the opportunity to explore something you haven't done before, tackle them. Expand your palette beyond PHP, if that's the bulk of what you're doing, now (web development is a field that, more than most, rewards autodidacts). Go to meetups and user groups and meet people doing cool shit in your space, in the city where you live; many such meetings here in DC involve people announcing that they're hiring coders. And if you have questions about any of it (particularly the non-profit stuff, since I love it), feel free to memail me.
posted by andrewpendleton at 8:18 PM on February 14, 2011 [1 favorite]

I have to agree with both KokuRyu as well as inkyz. I've only in the last few years started moving to a more Agile model, and unsurprisingly that has coincided with getting a job that lets me work with Ruby (Merb first, now on Rails). It's tough to get used to at first, but it makes SO much more sense if you want to be developing the way you're talking about (well, somewhat more so at least—development is development and I think comparing it to da Vinci is kind of problematic, within the context of modern industry, but I digress...I get your point).

And this happened after spending 3-4 years in, as I would call it, PHP hell. I'm not going to get too far into it other than to say that I hated PHP from the moment I began working with that language to the moment I stopped. I would say also that it completely baffles me as to why the major CMS systems people use today are written in such a ____ language, but I do know: it's insanely easy to get PHP code running on Apache, and every half-baked ISP in the world runs that combo. It's also insanely easy to start writing code in PHP. I could go on about PHP but I shall not. I will say, though, that Ruby (as well as Python from what I've seen) is a language that is just really beautiful and well thought out in a way that PHP is not.

The Ruby community is not without its flaws, but the general vibe is one of programmers passionate about thinking hard about the right way to develop in a professional setting. There are a lot of Java programmers in there too who have learned from all the mistakes—and more importantly, the well-done things—that the Java community did regarding web development (much of which is still light-years ahead of PHP, but tough to get up and running so it has a much higher learning curve and people are less inclined to touch it). So there is just a lot more experience and skill in the Ruby community—generally speaking—I believe. And Agile development, especially the focus on test driven development (TDD), has completely shifted my perspective on how well-built code can be. It's just a completely different way to work.

I don't mean to suggest these things don't exist in the PHP world. But the PHP world is much more heterogenous and it's more of a crap-shoot knowing where you're going to land work-wise. And the major frameworks, as far as I've seen (Drupal, WP), are just really painful ways to develop. They do not encourage beautiful coding, bottom-line.

So I will echo other posters: you just need a new gig. Maybe you need a new language—I would shift if I were you. But at the least try going with a shop that does, say, cake dev and focuses on test driven development. Good luck. It doesn't have to be this way.
posted by dubitable at 8:33 PM on February 14, 2011

Are you sure you want to be doing web development? I think I was in a similar situation maybe 5 years ago - burning out on web stuff and went into a totally different area of software and never looked back. There are a lot of places that do cool stuff.
posted by H. Roark at 9:27 PM on February 14, 2011

I'd say you should get more active in a community (or 2). I don't know a lot about the Wordpress community, but Drupal has a thriving community of developers. Attend Drupalcon, meet people, and get your name out there. If you are active and involved (and good) enough, a lot of possibilities will open up (Acquia, for one, does great stuff with Drupal).

I've met other coders with similar complaints as yours. One way to get past it is to surround yourself with talented people who are doing what you want to do.
posted by coolguymichael at 6:35 AM on February 15, 2011

I found this a really interesting question; I'm not a web developer, but more and more, my career puts me in close proximity to web coders, developers and designers, and I can really understand where you're coming from. I started off as a tech journalist on a magazine, progressed up the ranks, and as I was the one on the team who showed most interest in the web, got quite involved in the redesign of our site. Later, when the company I worked for bought a bigger site to combine with our magazine, I got the chance to edit both. A lot of times I would have ideas for features - some small, some big - and I found it very, very difficult to get them implemented.

As a company, we had one approach to building websites and if you wanted to do something that didn't fit that, or didn't have backing from an advertiser, or the promise of a quick return, then it wouldn't happen. At times, it was tremendously frustrating. I looked to my favourite sites on the web - Metafilter, Reddit, Flickr etc etc - and got really wound up about the fact I wasn't involved in stuff that lived up to them.

I think the first thing I'd say is that a lot of people suffer from what you're suffering from. The speed with which the web innovates, the brilliance that's out there, the way network effects make the great stuff overwhelmingly popular, it makes it hard to live with if you're not involved in that.

Secondly, I think part of what made me unhappy during the worst periods was my own impatience. You've got to bear in mind that when you see something successful on the web you're often seeing the result of years of work, and of lots of struggle. If you're in the middle of the work/struggle period, then it can be good to remind yourself that it takes time.

However, it only takes time if you're on the right track. I stayed with my company; worked hard, lobbied internally about the changes we would need to make to do really good digital work, and I feel like my messages have got across. I'm now in charge of putting a new team for working on tablets/mobiles/eReaders, and we have good budget for it, supportive senior management etc.

Not everyone is going to get the chances I got though, and so maybe a change of company is what you need. If you want a big challenge, then a startup is what you need. Other options are your own projects - during the lean years, when my work wasn't fulfilling, I always had digital side projects - blogs, Flickr projects, bits of hacking here and there - to have an outlet. There's always people who can do one aspect of something (writing, desiging, developing) who need someone to do the other bits. I myself am looking for someone to help me do some web dev for a project I'm putting together, for instance. Meetup, Hacker News, Forrst, Dribbble are good sites for finding likeminded people...
posted by Sifter at 6:58 AM on February 15, 2011

It sounds like you would really like the challenges the world of startups has to offer. More agency, newer and better-thought-out technologies, and a lot more problem solving.
posted by squasher at 7:31 PM on February 15, 2011

Want to work for Apartment Therapy? Just came across this job posting.
posted by squasher at 11:36 PM on February 15, 2011

« Older APN? What? I did that.   |   Apple wireless network -- how many nodes? Newer »
This thread is closed to new comments.