How to switch fields to web development/coding?
March 10, 2015 3:50 PM   Subscribe

I'm thinking about switching fields into web development in the near to mid future, but have a few questions about skills and code portfolios. I'd also like any general advice you all have on how to do this as someone with basic programming skills, but no specific knowledge of web development.

So that you know my background, I have previous coding experience (C, Java, MATLAB) from my undergrad engineering degree/comp sci minor, but nothing specifically in web dev/internet applications (other than really basic HTML).

How do I go about switching over from my current field?

Specific questions I have by category (sorry for the stream of consciousness questions):

1. What skills (technical and "soft skills") must I have on my resume? (i.e. without these it's getting tossed)

2. What skills would be an extra benefit to learn? What's the amount of time I should study these new skills before job hunting?

3. I've been working in non-programming fields since graduation (3 years or so).
Will this be an issue? If so, how can I mitigate this/show that I'm actually looking to switch?

4. What should a good code example portfolio and/or GitHub have?
Assume I'm starting from scratch on this.
What types of code examples? How many examples should it have generally? Will it be an issue if all the code examples are relatively newly made when applying to jobs?
posted by Chicoreus to Work & Money (8 answers total) 41 users marked this as a favorite
Best answer: Javascript, restful API development, some database knowledge (MySQL is fine). And a live website to point to, preferably one that does something useful for somebody besides yourself - many a volunteer project for a non-profit?

Languages and platforms come & go; Ruby on rails was big a few years ago, these days it's Scala or Node. Familiarity with the LAMP stack is still probably a good starting point on the server side, but the pendulum has swung back to fatter clients, in the form of JavaScript single-page websites and Android and IOS apps.

Honestly, your biggest problem is convincing someone that you know how to code, are good at it, and enjoy it. That's why I emphasize the need for a substantial project. It'll also get you in shape for the interview process.
posted by mr vino at 4:08 PM on March 10, 2015 [2 favorites]

Would you consider mobile development? Android apps are written in Java, and Android devs are very much in demand. I think a couple of apps in your portfolio would be enough, and new doesn't matter. People just want to know you can do it.
posted by the_blizz at 4:18 PM on March 10, 2015 [1 favorite]

Best answer: The above sounds about right. I would add that web development teams are typically divided into front-end and back-end specialists. There is a lot of talk about "full-stack" but in reality on Earth I have never met anyone who was expert in both sides. Regardless, Javascript is a good bet because the advent of Node means it's being used on both the client and server these days.

As far as code samples, I find no one really cares anymore, for whatever reason. It can't hurt, and some places make noises about wanting to see your Github, but most interviews I've had in the last 5-10 years come down to answering trivia questions (if it's for Javascript, you'll be asked "what is a closure?*", 100% guaranteed) and doing exercises on a whiteboard.

*Answer: a closure is something that is asked about in interviews and a way to cause memory leaks

posted by drjimmy11 at 4:19 PM on March 10, 2015

Best answer: The company I work for has a fairly strenuous hiring process for developers. Here's what it looks like:

1) Send us a fairly trivial example of object orientation, to our spec. If this seems acceptable, you'll move on to
2) Come in for an in-person interview and skills test. Skills tested include knowledge of SQL, basic complexity theory, basic knowledge of subject/observer, some basic vocab, being able to tell what will happen if you do this:
var i,j=0;
while(j<5>   j++;
  for(j=0;j<5>     doAThingWithI(j);
3) Done! Education and experience are only semi-relevant; some of our best hires have been fresh out of school, and one of our worst was a 30-year veteran. Knowing ALL of that stuff makes you a slam-dunk hire. Knowing some of it gives you a shot.

So to answer your specific questions: We don't hire people who don't show some CS knowledge. The specifics of the knowledge aren't that important, it's the background and the breadth. But you won't go far wrong learning some SQL (MySQL, Postgres or whatever). Be able to write a closure in Javascript if you want to be flashy. Know the difference between an inner and outer join. Know what Order(N) vs Order(N^2) means. Know how inheritance works.

And if you're in or interested in moving to the Boston area MeMail me and I'll send you our application.
posted by contrarian at 5:01 PM on March 10, 2015 [1 favorite]

being able to tell what will happen if you do this:

a compiler error?
posted by thelonius at 5:09 PM on March 10, 2015 [6 favorites]

Best answer: I taught myself front-end development and landed a job in the field a little less than a year ago (after a brief search) with an unrelated degree. I've also participated in hiring new developers since then.

When I was job hunting, I found this video helpful in providing some direction: What Are The HTML5 Skills Employers Are Looking For? I like a lot of Jesse Warden's other videos, too.

His broad points are:

1. Javascript: It's important to be solid on the fundamentals. Understanding closures, variable hoisting, context, type coercion, prototypal inheritance, etc. are essential if you're going to be developing an application in JS. These aren't just buzzwords and you can't handwave this stuff.
2. MVC framework: It doesn't matter which one, just learn one and understand why they're used. I had a little experience with Angular and got a job working with backbone.marionette.
3. CSS framework: He says it doesn't matter which one but IMO everyone is using SASS.

He goes into additional beneficial skills in the video.

I've been working in non-programming fields since graduation (3 years or so).
Will this be an issue?

It wasn't an issue for me. If you demonstrate that you know what you're doing in the interview, and you've got some code to show off, I don't think most companies care.

What should a good code example portfolio and/or GitHub have?

It should have good code -- commented, well-formatted, well-structured, adhering to best practices, easy to follow, etc.

How many examples should it have generally?

I don't think "how many" is really an issue. Go for quality over quantity. My portfolio basically consisted of two web sites, one of which was very simple and was mostly design work, and the other of which was closer to a simple app with a lot of JS.

Will it be an issue if all the code examples are relatively newly made when applying to jobs?

Not at all, IMO.
posted by ludwig_van at 5:37 PM on March 10, 2015 [4 favorites]

Best answer: Learn the basics of HTTP. Also get a grasp on basic web development concepts like sessions, cookies, DOM, and REST.

Aside from specific, building and improving your own projects is really important if you're coming from a background where you maybe did some coding but always in the service is done other goal (e.g., modeling, stats, etc.). This is the software engineering side of CS. Get a handle on what version control does and try to understand more than just the surface details of git. Learn what a unit test is and how and why to write I them. Preferably you could work with a partner on a project where you're both pushing and merging code and writing tests for your changes. That shows you could pick up the workflow at any software company pretty well which is often a problem for folks coming from non-traditional backgrounds.
posted by deathpanels at 7:22 PM on March 10, 2015 [1 favorite]

Also, not to be pedantic, but you can't "write a closure" in JavaScript. Closures aren't a pattern, they are a feature of the language (and exist in lots of other languages). You can create a closure with a specific purpose using a pattern such as the immediate-invoked function expression but technically you have created a closure every time you create a function in JavaScript (which is pretty much anytime you do anything useful). And yeah, that is totally part of my interview questions. :)
posted by deathpanels at 7:34 PM on March 10, 2015 [1 favorite]

« Older Looking for good hiking/walking movies and...   |   March Madness bracket conundrum Newer »
This thread is closed to new comments.