

Ask HN: MVP - minimum viable programmer - stickhandle

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
======
suresk
I think this is a good start if you are saying "minimum viable web developer".
Plenty of programming doesn't involve the web.

In the context of web development, though, I'd add/change:

1\. Decent familiarity with HTTP.

2\. Fairly good Linux skills. I guess this may not be applicable if you want
to stick with the .NET stack, but most developers are going to use something
like RoR, Node, Java, etc in their lifetime and those, for the most part, are
hosted in Linux environments.

3\. I like Java more than the average developer, and agree that it can be
really useful for getting your foot in the door at a lot of places, but I
don't know that it is important enough to be required for the MVWD.

------
andymoe
Minimum viable [web] programmer.

An base understanding of TCP/IP and networking is pretty important in this
context as well.

