Hacker Newsnew | comments | show | ask | jobs | submit login
Is it better to specialize or become proficient in backend and frontend?
4 points by tommaxwell 1019 days ago | 8 comments
A couple months ago I started learning how to code, and started with the front-end (CSS, JS, etc). However, I've reached a point where I am not sure what I should be spending my time on -- should I try and pick up frameworks like Backbone and Node, or start learning a backend language like Python or Ruby?

I guess a better way of framing it is, will employers not hire somebody just because they don't have experience with a specific framework, or will they hire on growth potential (the idea that you can pick it up quickly)?

I think it depends on the job you're looking for.

Want a job at a big company? You'll definitely want to be really good at a smaller number of things.

Want a job at a startup? You'll need to do everything from marketing to design to every type of programming.


Exactly what I came to post.

It depends on a variety of factors, but most notably -- what you enjoy working on. 10+ years ago, I hated working with Javascript (and it wasn't nearly as pervasive), so I refused to learn it, which meant that I didn't have to do any work in it for any prolonged period of time.

On the flip side, Javascript has really turned itself around now, and I feel somewhat disadvantaged now (though working towards greater proficiency.)

If you want to be a front-end developer, you needn't really have more than a cursory understanding of how a backend works, what variables you get out of it, and what you expect to put into it. You should know how template rendering works, and beyond that, you're kind of exempted from the rest.

Many of the best designer / front-end engineers I've worked with were fairly ignorant of what happened on the server side, but that didn't stop them from kicking insane amounts of ass.

There's a trade-off, generally. I consider myself a 'full-stack' web developer, which means that I can build every aspect of a web site from the database (or NoSQL db) to application layer to the presentation layer to marketing to SEO. It won't be as pretty as if a designer had been involved, but it won't be disgusting either -- but that means that when there are jobs for front-end engineer, I am again disadvantaged because I don't quite have the depth of knowledge required for a more focused position.

My core competency is in Python, but often, when I get around people who focus on Python exclusively, I feel behind the times compared to them because I am 'wasting' time making sure I follow updates to CSS, HTML5, Javascript, etc.

I don't hate any of this, mind you, but the "mile-wide, inch-deep" category opens a lot of doors while simultaneously closing others. Same thing with the "inch-wide, mile-deep" type of learning that specialization will get you -- you are now very qualified for a particular kind of work, and less qualified for other types.

In practice, we all know that someone competent in one area can generally adapt, so the limitation is really only so damning as your ability to convince somebody that you could 'pick it up' regarding a new topic, but it's whether or not you want to. At least for now, it's a buyer's market in the job force, so you should have plenty of opportunity to entertain offers and pick from those that suit you best, so there's not really a wrong answer. Whether or not that will change the future I can't say.


Whilst you need to be more of a generalist in a startup, you also need greater depth of experience. Having a small amount of experience in many different areas is unlikely to get you a job in either area. Better to be good at something you enjoy and then broaden your skill base into other areas.

Based on your question, if you already have some front-end skills and JavaScript knowledge, then you might find NodeJS a good place to start with the backend. At least you don't have to learn a new programming language and its best practices.


There are front-end only jobs (HTML, CSS, Javascript). I imagine these positions would require programming with Javascript as well as some basic familiarity with Jquery and other front-end frameworks.

Some jobs require you to know the full stack - everything from front-end to back-end SQL.

And some jobs are for back-end development only - with back-end languages python, java, ruby, or PHP. If you use python or ruby you should learn the associated web frameworks as well (Python+Django and Ruby on Rails being the most notable).

It depends on what you want to do. Do you want to code your own websites or work at a dev agency? -- You need to learn the full web stack. Do you want to work for a hip startup? -- you should probably learn a back-end language and a web framework and build a project website with it. I'd recommend either ruby on rails or python + django.


This is a very funny question to ask actually. Shouldn't you be doing just what you like to do? Is your question more like- 'What will get me a job?' well, both of them. Or, 'What will get me a better pay?' well, both of them. Please don't do something you suck at, simply because someone told you to.


Have to agree! You need to gain some experience in both areas and then chose based on where you feel more at home.


It won't hurt learning a bit of backend as well, especially if you're considering learning a frontend framework like Backbone. It will give you a deeper understanding on how your frontend code interacts with the server. I'd start by learning how the request/response cycle works, how to setup your dev environment and how to create simple API's that feed your frontend with json. If you're into python I'd suggest the excellent Flask framework (http://flask.pocoo.org/). It's extremely lightweight and the documentation is superb.


Learn both then specialise in the one you like better. Regardless of which you end up choosing it will make you a more valuable developer.


Applications are open for YC Winter 2016

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | DMCA | Apply to YC | Contact