Hacker News new | ask | show | jobs
How should I decide on learning front-end vs back-end development?
4 points by markzuckerwho 5009 days ago
Hi HN,

So here's the quick story. For the longest time I have wanted to build this idea that I had, so finally instead of looking for a dev I decided to learn how to code -- turns out I kind of enjoy it.

I have been using Codecademy (don't hate, it's actually good) and thus far have completed the Web Fundamentals (HTML, CSS) track, and am 50% done with the JavaScript Fundamentals track. My question is, where do I go once I'm done with these courses? I'm only 16, so I can see the potential to get a job in this field, but I don't know if I should do back-end or front-end. Do I just need to try a back-end language and decide what's for me? Are there enough jobs available for front-end designers/engineers if I went that direction? If I wanted to do front-end, what languages/libraries should I learn, and vice versa for back-end?

5 comments

You asked frontend or backend so I'll give you my answer, but this just comes from my personal experience over the past 10 years as a software developer, nonetheless I think its fairly true for the industry at large and will be for some time to come. The short of it - do backend. Why? Basically, if you know Software Design patterns, Java, C(++), a server side scripting language or two like Ruby or PHP, in tandem with some Frameworks, you can always get a Job - at least in my experience. I've lived and worked on several continents (US, South America, Europe) making software and its always been very easy for me to get a Job (my language skillset is C/C++/Java, Ruby/Jruby, and Javascript). I have collegues and friends that are frontend/UI designers and though they also always tend to be able to find jobs its not as easy because the demand is lower.

To go about learning "backend" I'd say start with c and java. Knowing c will force you to understand how your computer works at a very low level, and java will give you a solid understanding of object orientied programming and software design patterns. Stick with javascript too, because its only getting more important and you can do both Backend and frontend with it - also for someone starting out I think its a really easy language. I wouldn't say learn such and such framework, just read lots of source code and build you own apps, and make sure you're having fun and know you'll always keep learning.

Lots of luck!

I started learning to code more seriously about 6mo ago, so I know what your shoes feel like :)

There is simply a ton of stuff out there, and following a 3 year plan to cover 15 different languages and frameworks just seems intimidating as hell. Though I agree that it's all important.

My advice it to come up with a simple project idea and go and implement it - it doesn't even have to be a 'product' per se, just something fun that will function as a goal for you to work towards. As an example, my first project was making a simple twitter-like feed where you can make posts on a page, they go to a database, and then come back out on the front end dynamically. This might take a great hacker 20min to make, but I think it's a great first project because it lets you see and really visualize how the database<->server<->browser loop works. And I think getting the concepts driving things is really the key.

Another great idea is to pick some web service you love that has an API and try to build something fun with it - start with just figuring out how to make a GET request, parse the response, etc, and then build up from there.

CodeAcademy is fun and great to start with, but I think because the problems are all structured for you, it shelters you from having to do the most important thing - figure out what you need to know to solve your problem, and how to learn it. If you pick a small project and spend a lot of time on google and stackoverflow trying to find out how to get each step to work, you'll learn a ton, but you'll also learn how to become really resourceful when you're trying to solve a problem. And as for what languages to learn, I think the cool thing is your project will end up driving what you have to (and want to) learn.

I'd also add, as an aside: you're 16, so stop worrying about jobs!! Just do stuff that's fun and keep learning, and it'll all work out.

Jobs are plenty for both BE or FE.

For back-end, read an overview of Python/Django and Ruby/Rails syntax and how these work and then analyse which one you can understand intuitively.

Whichever language/framework you choose get in to the lower level details and you will master the things.

For FE, after HTML/CSS start with Graphic/Logo designing(With Photoshop/GIMP or wait for thanksgiving and you will get lots of deals on Adobe products) and UX principles.Again see if these things come to you naturally.

After doing little bit of both you should be able to decide yourself which one(FE/BE) is better for you.

All the best!!

Why choose? Its not like its not possible to understand the full stack and you've not even gotten to and age where most folks would be starting college. Work through the various web frameworks (Bootstrap, Node, Django, Rails, ...), then look at the API systems that people have setup, then move on to Varnish / Nginx / Apache followed by CGI scripting, databases, and Python / Perl / Go / Java back ends. Should be able to get to all of that by the time you're 19 maybe 20. Follow what ever is the most fun / engaging / thrilling.
Like ChuckMcM, do/learn everything. Why? Because once you start learning you will realize how everything seems to look alike. For me front end is a lot like back end in terms of structure and organization. Messy code can exist in both sides. Plus setting up a server is no harder than learning a framework API, it just requires that you do it. That's it. I would also add that you go and learn some embedded stuff like the arduino. It will really open up your mind to hardware and allow you to understand what is behind the software. I started when I was very young (bit younger than you), and wasn't comfortable coding until years had passed. But once I reached a given point in skills I realized that there were no limits as to what I could build. You will achieve the same if you don't quit.

Good luck.

Learn both. I did. Just build a freakin' website and don't stop learning.