Hacker News new | ask | show | jobs
by mitchellh 4359 days ago
A lot of the comments here are about age, ability to learn, etc. All valid, but I'm going to switch it up and give a different point of view, because this is very close to something I was discussing with some friends recently, because three of us eating were what I'd call "advanced" developers and one of us was a "scrappy PHP guy."

Our backgrounds are LAMP (isn't everyone in web?), and we were discussing that despite technology getting "better" (quoted because that itself is arguable, but for the sake of this comment, accept it), the learning curve to getting something out the door using "modern techniques" has a terribly steep learning curve.

I learned web programming when I was 12: slap some Apache + mod_php (a couple package installs away), FTP up some PHP files, and BOOM, you had a website that was scalable to most needs. I learned PHP by pretending it was HTML and not really understanding the PHP. It was easy that way.

Python, Ruby (Rails), JavaScript (Node) are not easy that way. You have to actually understand some things: web serving, HTTP, cookies maybe, GET vs POST, etc. I probably went years without knowing what any of those were, and still strung together stuff that worked (for my use cases: family websites, small business websites, etc.).

And then it doesn't stop there, that's just at the language level. Now you have a choice of databases, you have these PaaS things that are sometimes great and sometimes not great, you have shared hosting and VPS still but you also have fancy new IaaS things, you have people rambling on about configuration management, and now people are starting to throw the word containers into the fray.

In short: for the programmer who just wants to get things done (maybe not correctly, but correct enough for them), things seem to have gotten worse. Much, much worse.

And I admit (or believe) that it has, but I argue that it is worse _temporarily_. And worse (worse for a certain type of programmer) _necessarily_.

First, LAMP is still available, still heavily used, and still easily learn-able and deployable. The issue is that apps done so cavalierly are prone to maintainability, scalability, and security issues. As the web has grown, we've learned some things about how to improve that. For maintainability, we introduce some concepts like testing, and language constructs like classes. For security, web frameworks help mask the really low-hanging fruit security issues that usually cover you in most cases unless Mossad is after you (then you're fucked anyway). And for scalability, we've leaned towards horizontal scalability for various reasons.

Now, each of these things can be poorly bolted on to existing programming styles. But in general, to do it correctly, a lot of things had to be redone from the ground up. Low-level components had to be rebuilt. Examples: web frameworks, safer languages (in that they're harder to make dumb mistakes in), configuring servers, deploying apps.

I argue we're still at that very low-level stage. The old "learn PHP like it is HTML and deploy some stuff" programmer just isn't comfortable at the low level we're currently treading through. But as the low level components stabilize out (over many years), eventually the tools will become higher level and will become easier.

I don't do any frontend, but from the sidelines it looks like the same way: there are dozens (more?) package managers for frontend and it looks like people MIGHT be starting to stabilize to a few, but it still might be years before we see anything super stable.

Of course, technology will always be moving forward. So as things stabilize, someone will be working on the next thing. But I hope that that next thing is a higher level problem. As we figure out how to build secure, scalable, maintainable web apps, maybe we can move higher up the stack to make this stuff more teachable without understanding everything.