I get the occasional query from young programmers about what stack I think they should learn or focus on. Mostly, the answer is situational. But we can elevate the response to dogma ... maybe that would be fun. I have a bias towards full stack. I recognize a specialist path exists, but I think it should be the ambition of the few (and they will know when they are "chosen). Even then, they would benefit greatly from the stack. Here's what I think everyone should add to their toolbox:<p>1. "Almost doesn't need to be said" category: html, shell (i.e. bash), uml, familiarity with <i>multiple</i> tools (editors, IDEs), some server knowledge.<p>2. A scripting language: In 2013, I guess the best candidates are Ruby and Python. In my book, Python gets the nod.<p>3. Web skills: And by web skills, I really mean competency in javascript and css. Understand naked js and css. You need to at least "get" jQuery. Digging deeper here? My vote goes to LESS for css and Angular for a js framework.<p>4. Java: I put Java in a category all by itself. This is the hammer in a programmer's toolbox. Understanding how to really design, write, and deploy Java applications is probably the single biggest step any programmer can take. Lots of people don't really like Java ... but they know it well enough to know why. It just informs so much in 2013. And if you work in the enterprise, its pervasive.<p>5. SQL: By sql I don't mean just crud statements. Know more. Much more. The db is behind everything. Knowing how to access it properly and efficiently will inform your ability to design db structures and your code (whatever language).<p>6 (Bonus) One more thing: Competency in the above makes you a useful corporate drone, a cog in the machine. We all want more than that. Pick one more thing: a framework (RoR, django, web2py, spring, play)? another language (scala, would be my pick)?<p>TLDR - Basics, Python, JS/CSS, Java, SQL, ? = future