I'd like to complete my skills to be able to bill myself as a full stack programmer. I believe I'm close, but I am missing the front-end. I've written many a RESTful web service, but primarily as an API or debugging interface to our gear which is primarily installed in large carrier or enterprise networks. Not public facing, so pretty has never been an issue.<p>So given I can do the server side of web, in Java, Python or even C - which skills should I work on to flesh out my front end skills? Do I need to have the ability to make things pretty? Or is just functional good enough - and then a designer can take over from there..<p>Any suggested frontend frameworks, libraries? I don't want to jump from one cool library to the other. I prefer to pick a framework or library and stick with it - learning it more or less inside out.<p>Thanks for any input.<p>As for background.. I'm a seasoned C programmer, lots of system programming, device drivers, low level network programming. Web has worked itself into what I do, and I'd like to complete the picture right onto the front end.
For what it's worth, I now describe myself as a full-stack developer even though I cannot make something pretty. I see that as a designer's job, and while a front-end specialist should be able to whip something up in photoshop, I think that it's perfectly reasonable to say that your part of the work ends with something being functional.<p>It's almost essential to be familiar with jQuery for in-browser Javascript development these days (I'm not sure of its market penetration but I'd be shocked if fewer than 33% of websites use it). There's lots of cool new libraries on the front end with various pros and cons, but jQuery is a really good start.
I (and I think this is a pretty popular perception) consider a "full stack" developer as someone who has thoroughly mastered at least 1, and is familiar with at least 1 or two other approaches from each layer in the following list:<p>Web Layer: Javascript (and/or one of its many frameworks like jQuery, Backbone, etc), Ruby, etc.
Server Layer: Django, Rails, Cake, Node, etc.
Data Layer: Postgres, SQL Server, etc.<p>All of that stuff you can learn for free on-line. Come up with an idea for a website that involves storing and manipulating data and can handle large numbers of people using it simultaeously. If you can make the whole thing by yourself, you are a full-stack developer. If you can't, figure out what the missing piece is and learn it.
You are getting good advice from everyone. Learn HTML (and the HTML5 specifics) and learn how to use jQuery, javascript and css. Every front end dev needs to learn css and be totally comfortable with it.<p>My 2 cents on starting with javascript/jQuery: learn how to select items by id, using css selectors etc. Then learn how to get and set values of different input types, setting css properties, showing and hiding elements etc. All this is basic but will give you a good start. Also good to learn how to properly use ajax and jquery to and populate list boxes or something just for practice.<p>Learn how to use Firebug and the browser tools like Chrome dev tools to debug javascript and css issues. Get familiar with Fiddler or similiar tools if you aren't already.<p>Just some idea's on things you will always find yourself using or needing to know so you can figure out how some library is working which helps you debug.
Learn about HTML5, CSS3 and a little bit of Javascript, enough to understand and utilize jQuery like what bartonfink said. This is as front-end as front-end gets for web development.<p>Do not worry about design or templating, knowing a bit of Photoshop/ Illustrator is good, but it should not be your priority considering you can buy high quality templates from ThemeForest.net for $10 - $30, or even hire a designer if your budget allows.<p>Also, you may want to consider working with a web framework to make your life easier, like Django or Flask.<p>This is from someone who comes from a similar background as you. My background was in C, C++ and Objective-C, and I do mainly embedded systems and low level programming. It took me a few weeks to learn HTML/CSS/JS and another few more to get comfortable with Ruby on Rails, and 1 year later now, I can basically build and prototype any web application I can think of.