from making books to making websites
October 5, 2012 7:17 PM   Subscribe

Looking for a path to front-end web development as a career

I work in book publishing as a production editor/copyeditor/project manager-type person. I'm feeling burned out and in need of new challenges, and I'm thinking of re-training myself as a front-end web developer.

I taught myself HTML and CSS for ebook production, and I find that I really enjoy structuring documents and doing markup. I've also dabbled in a couple of programming classes over the years and had an aptitude for it, although I never really did anything useful with it. I can imagine how my skillset would be useful in a web environment, but I need to bone up on some current, in-demand tech skills to get in the door of a new industry. Ultimately I'd be interested in exploring content strategy, information architecture, UX design, but I suspect that I need to put in some time on the basics first.

I figure I need Javascript, and to get a personal site or two up as portfolio pieces. What else should I have in my pocket to take me from "no relevant experience" to "worth the trouble to train"? Python? PHP? Drupal? Ruby on Rails? Is actual coursework necessary, or is learning on my own just as good? Assuming I really focus on this, and work on it solidly in my spare time, I'd like to get up and running within 6-9 months.

A couple of caveats: I don't want to be a web project manager. Owning the schedule and coordinating everything is probably my least favorite part of my job. I'd rather do the work than give someone else a deadline to do the work. I have a good eye for design, but I'm not visually creative enough (nor skilled enough with Photoshop) to be a web designer. We'd like to move to a smaller market area, where I'm guessing the available jobs will be more generalist in nature, so nothing too specialized or esoteric. I also have schemes of starting up my own thing, but for now I'd like to be in a position to be hired by someone else, ideally a startup or agency with good quality-of-work-life, nothing corporate or sketchy.

I'm especially interested in enabling technologies that help put it all together -- like git, for example -- but that I might not have heard of as someone who doesn't do this stuff for a living (yet!).
posted by anonymous to Work & Money (9 answers total) 11 users marked this as a favorite
 
It's hard to really say what you should do as it's going to depend on where you want to work and what sort of position you're going to have. The more things you know, the better, but whether Python or Rails is going to be more useful varies entirely by the position you're looking at. This is a little bit like asking: "I want to be a mechanic, should I learn to fix Fords or Toyotas?" where the answer is, "Do you want to work at a place that fixes Fords, or a place that fixes Toyotas?" In fact, being abe to say *why* you chose to learn Python over Ruby or vice versa can be as appealing to people who are hiring as just knowing the correct technology. Also, neither Python nor Ruby are "front-end" technologies for web development.

This is an industry that cares a lot more about what you can accomplish than where you went to school, but it's also an industry that expects you to know the sort of things they teach in schools. If someone asks you to do a recursion problem, they don't care if you learned the solution in school, or if you learned it on your own, but a lot of those sort of formal-ish interview questions are the sort of thing that's easier to learn in school.

I actually ask people this question in interviews:
Part 1) Given an arbitrary web page, write javascript that will highlight all instances of a given string.
Part 2) Given your solution to part 1, write the "unhighlight()" function that returns the page to its original state.

I will never ask you where you learned (or didn't learn) how to answer it.


The best way to get good though, is just to practice. If you want to build websites, get out there and build websites. The problem with this approach, as opposed to one where you work with people or take formal classes, is that you almost always do certain things *completely wrong* in ways that are still technically functional, but tend to be very slow, messy, error-prone, or otherwise. This brings up another interview question I might ask:

Implement autocomplete for a text box. That is to say, given a text box on a web page, and a list of autocomplete-able terms, show the matching terms from the list beneath the text box (this is exactly like what the Google search box does when you start typing into it, i.e., when you type "meta" into the box, it shows "metacritic", "metallica", "metaphor" and "metacafe"). You have the complete list of terms available to you ahead of time. This is a question that is easy to do functionally but wrong.

Disclaimer: I very much work in Silicon Valley and have connections to both "startup culture" and the corporate software world. If you are looking for jobs at small shops in the midwest or something, things might be different.
posted by tylerkaraszewski at 8:06 PM on October 5, 2012 [3 favorites]


If you don't have experience with this already as a preliminary you should try to get hold of as many different sorts of web server software as you can and play around with installing, configuring, and administering/monitoring them. Probably database server software too if it seems relevant.

Stuff like UX design is pretty distant from that—and chances are that you'd have IT guys to do it for you—but it would be a good exercise to gain perspective, it's a precursor to setting up a development machine for any of the programming languages you mentioned (apart from javascript perhaps, which you can experiment with in flat files, but you'd still really want a webserver), and if you were in a small enough startup where roles blur you might end up actually needing to know how to start from scratch setting up a production server and have some idea of best practices.
posted by XMLicious at 8:16 PM on October 5, 2012


There is someone at our very small software shop (mostly Rails) that started with no tech skills and has been building them up as she works. She started originally as a tester, from there she's been learning HTML/CSS and starting to do some front end work, and she's beginning to learn Javascript and Rails, and how to write/fix automated tests for new features. So coming in as a tester/QA person might be a quick way to get into someplace where you can be working on real projects and building your skill set quickly, especially if you can find a place that values training. I don't think you need to go back to school, she hasn't, and there are tons of really great resources/tutorials online right now that are inexpensive or even free. For example, net.tutsplus.com, peepcode.com, and www.codeschool.com and gitimmersion.com.
posted by snowymorninblues at 8:17 PM on October 5, 2012 [5 favorites]


Maybe you could create a "mashup", using javascript to manipulate data from public web service APIs and synthesize cool stuff. You can do pretty impressive work without needing any database back end, which is handled by the other languages and frameworks you mentioned. You could learn a huge amount of AJAX and layout stuff that way.

We'd like to move to a smaller market area, where I'm guessing the available jobs will be more generalist in nature, so nothing too specialized or esoteric.

For what it's worth, most small website gigs can be solved with a content management system like Wordpress or Drupal rather than a full-blown web app framework like Ruby On Rails. Not only is it easier, it's the "right thing" since you can hand the final product to someone less technical for maintenance. With your existing HTML/CSS and past programming aptitude, I think you could get to marketability in 6-9 months like you hope. If you want to move up to bigger markets and more novel types of interactivity, you will have a solid foundation.
posted by scose at 8:18 PM on October 5, 2012 [1 favorite]


One piece of KEY advice:

To get work in 'websites' I found that I often was working for friends and acquaintances. So: YOU MUST KNOW what the going rates are and how much you should fairly charge. This is hard to figure out with web/creative work, but you NEED to do this or you'll get ripped off.
posted by titanium_geek at 11:17 PM on October 5, 2012 [1 favorite]


Memail me, and I'll send you a sort of training manual on this topic that I wrote to get several students up to speed as web developers.
posted by Monsieur Caution at 12:14 AM on October 6, 2012 [1 favorite]


From experience, I'd say:

1. Learn JavaScript, at least well enough to be able to code a "zim, zam, pow" script (or whatever they're calling them now...the one with even and odd numbers) from memory. Yes, you may be tested during an interview.

2. Same goes for HTML and CSS. Know how to format some basic stuff without tables.

3. Come up with some kind of portfolio, even if some of it is unpaid spec stuff (i.e. just make a couple of "fake" sites or ads to show your chops)

4. Be adaptive. Familiarize yourself with the new hotness, as well as established environments. Learn enough about all those acronyms to be able to say you have at least "some familiarity" with them all. (php, SQL, LAMP, asp, etc.)

5. If you'd rather get by on looks vs. technical abilities, be sure to have a very portfolio, and keep in mind the differences between print and web.

6. Show off your typesetting skills! It's a pretty good bet that most web designers don't know shit about typesetting, so don't be shy about pointing out your strengths in that area, and explaining how it still kinda matters.
posted by ShutterBun at 1:11 AM on October 6, 2012 [1 favorite]


I take it you are coming from the angle of having little to no programming experience beforehand? In that case, I would recommend learning Rails through something like Code Academy. Rails is incredibly easy to pick up for beginners, as is Django.

For beginners, JavaScript is a bit harder to pick up. It helps to have a solid background in rudimentary computer science and a few programming languages under your belt first, especially if you're going to delve into the murky world of server-side JavaScript. You can probably pick up enough to do some jQuery effects, though, which is sometimes all that's expected of a front-end developer.

I also recommend you pick up some skills in compiled CSS "languages" like SASS or LESS. If nothing else, they will save you from having to write straight CSS. Also, learning about Modernizr and how to polyfill features on older browsers is essential. The first question you'll get when interviewing for any front-end job is going to be about cross-browser development and testing.

It really depends on how programming you want to do, actually. Do you want to just handle converting a PSD to HTML? Or do you want to be involved in iterative work like developing a product for a client and building in features that they want, which might entail more of the programming side of things?
I don't want to be a web project manager. Owning the schedule and coordinating everything is probably my least favorite part of my job. I'd rather do the work than give someone else a deadline to do the work.
The ugly truth is that everyone is their own manager. "Managing up" is extremely common, especially in software-related fields. Managers are notoriously bad at understanding the complexities of software and lazy ones promise impossible things to their superiors and then hand off the work to the lowly developers. You will learn one way or another that getting involved in the planning process and scheduling your own work is pretty much essential to getting the work done on time and maintaining a sane work/life balance.

As for UX/IA/content strategist, I've never quite understood what any of these roles actually mean. Design has its own specialties – interaction design, graphic design, brand design, etc. So you could pick up some design skills according to your interests, but I'm not sure how that would help your front-end career. UX is getting closer to product design.
posted by deathpanels at 1:29 AM on October 6, 2012 [1 favorite]


Do you know which market/area you want to move into? Different cities tend to favor different technologies. It's not programming but educational technology/instructional technology ends up attracting a lot of former editorial types (or teacher types) that want to do more with technology (though less programming unless it's multimedia or moodle programming). I definitely try to figure out some professional organizations and people on twitter/etc to follow that might start to get you familiar with language in the fields you are interested in.
posted by ejaned8 at 8:04 AM on October 6, 2012 [1 favorite]


« Older I'm aware that networking and meeting people is...   |   Scanning many old, thin pages Newer »
This thread is closed to new comments.