Wednesday, September 4, 2024

pieter levels is a hero of indie web dev

I lightly edited this transcript from Pieter Levels and Lex Friedman on the Lex Fridman podcast:
I'm seeing a revival now. People are getting sick of frameworks. Like all the JavaScript frameworks are so like, what do you call it? Like wieldy, so it takes so much work to just maintain this code and then it updates to a new version. You need to change everything. PHP just stays the same and works.

Yeah, can you actually just speak to that stack? You build all your websites, apps, startups, projects, all of that with mostly vanilla HTML... JavaScript, jQuery, PHP, and SQLite. And so that's a really simple stack, and you get stuff done really fast. Can you just speak to the philosophy behind that?

I think it's accidental, 'cause that's the thing I knew, like I knew PHP, I knew HTML, CSS, 'cause you make websites and when my startups started taking off, I didn't have time to... I remember putting on my to-do list like 'learn Node.js', 'cause it's important to switch, 'cause... This obviously is much better language than PHP, and I never learned it. I never did it, 'cause I didn't have time. These things were growing like this, and I was launching more project and I never had time. It's like one day, I'll start coding properly and I never got to it. -

I sometimes wonder if I need to learn that stuff. It's still to do for me to really learn Node.js or Flask [or] React. It feels like a responsible software engineer should know how to use these, but you can get stuff done SO fast with vanilla versions of stuff.

Yeah, it's like software developers if you wanna get a job and it's like, you know, people making stuff like startups and if you want to be entrepreneur probably maybe shouldn't, right?

I wonder if there's like, I really wanna measure performance and speed. I think there's a deep wisdom in that. I do think that frameworks and just constantly wanting to learn the new thing this complicated way of software engineering gets in the way. I'm not sure what to say about that, because definitely like you shouldn't build everything from just vanilla JavaScript or vanilla C, for example. C++ when you're building systems engineering is like, there's a lot of benefits for pointer safety and all that kind of stuff. So I don't know, but it just feels like you can get so much more stuff done if you don't care about how you do it.

Man, this is my most controversial take, I think, and maybe I'm wrong, but I feel like there's frameworks now that raise money. They raise a LOT of money. They raise 50 million, 100 million, 300 million dollars. And the idea is that you need to make the developers, the new developers, like when you're 18 or 20 years old, right? Get them to use this framework and add a platform to it. Where the framework can... It's open source, but you probably should use the platform which is paid to use it. And the cost of the platforms to host it are a thousand times higher than just hosting it on a simple AWS server or a VPS on DigitalOcean, right? So there's obviously like a monetary incentive here. We wanna get a lot of developers to use this technology and then we need to charge them money 'cause they're gonna use it in startups and then the startups can pay for the bills. It kind of destroys the information out there about learning to code because they pay YouTubers, they pay influencers, developer influencers is a big thing... And same thing what happens with like nutrition and fitness or something. Same thing happens in developing, they pay this influencer to promote this stuff, use it, make stuff with it, make demo products with it. And then a lot of people are like, "Wow, use this." And I started noticing this 'cause when I would ship my stuff, people would ask me, "What are you using?" I would say, "PHP, jQuery, why does it matter?" And people would start kind of attacking me like, "Why are you not using this new technology, this new framework, this new thing?" And I say, "I don't know, 'cause this PHP thing works and I'm not really optimizing for anything, it just works." And I never understood like why, I understand there's new technologies that are better and there should be improvement, but I'm very suspicious of money. Just like lobbying. There's money in this developer framework scene. There's hundreds of millions that goes to ads or influencer or whatever. It can't all go to developers. You don't need so many developers for a framework, and it's open source. To make a lot of more money on these startups.

So that's a really good perspective. But in addition to that is like, when you say better, it's like, can we get some data on the better? Because I wanna know from the individual developer perspective and then from a team of five, team of 10, team of 20 developers... Measure how productive they are in shipping features. How many bugs they create, how many security holes result.

PHP was not good with security for a while, but now it's good.

In theory, in theory- Is it though?

Now it's good.

No, now as you're saying it, I wanna know if that's true because PHP was just the majority of websites on the internet. Is it just overrepresented? Same with WordPress? Yes, there's a reputation that WordPress has a gigantic number of security holes. I don't know if that's true. I know it gets attacked a lot because it's so popular. It definitely does have security holes, but maybe a lot of other systems have security holes as well. Anyway, I just sort of questioning the conventional wisdom that keeps wanting to push software engineers towards frameworks, towards complex. Like super complicated sort of software engineering approaches that stretch out the time it takes to actually build a thing.

Man, 100%. And it's the same thing with big corporations. 80% of the people don't do anything. It's like- It's not efficient. Your benchmark is like people building stuff that actually gets done and like for society, right? If we wanna save time, we should probably use technology that's simple, that's pragmatic, that works, that's not overly complicated. It doesn't make your life like a living hell.

And use a framework one that obviously solves a problem, a direct problem that you-

Of course, yeah, of course. I'm not saying you should code without a framework. You should use whatever you want. But yeah, think it's suspicious. And I think it's suspicious. When I talk about it on the Twitter, there's this army comes out. There's these framework armies.

I wanna ask the framework army, what have they built this week?

A couple thoughts -

yeah, some of the coding practices encouraged by early PHP *were* terrible (automatically converting CGI params to variables).

And honestly, I don't think Vanilla JS is is that bad to build with relative to jQuery, with a site like You Might Need jQuery you really can get done what you need to do. (Honestly I should look into what CSS libraries Levels uses - the shallow stuff is like 80% of the perception a site.)

Finally, I'm not quite as suspicious about the "follow the money" aspect as Levels is - or at least I'm more aware of the peer pressure aspect, that it feels like so many engineers have really learned to love their chains in terms of complexity... maybe it's a path to better job security somehow, maybe opinionated frameworks scale better for larger teams? But to me, it always seems to get in the way of getting things done in a way that's productive in the short term and maintainable over 5-10 years.

Levels view about the money involved reminds me of this 20 years old essay from Joel "Joel on Software" Spolsky, Fire and Motion. The first half is about the intermittent trouble of getting started being productive in a workday, but then he pivots to his time is an Israeli Paratrooper, where he learned the trick of Fire and Motion - keep moving and keep firing to make the other guy keep his head down. He writes:
Think of the history of data access strategies to come out of Microsoft. ODBC, RDO, DAO, ADO, OLEDB, now ADO.NET – All New! Are these technological imperatives? The result of an incompetent design group that needs to reinvent data access every goddamn year? (That's probably it, actually.) But the end result is just cover fire. The competition has no choice but to spend all their time porting and keeping up, time that they can't spend writing new features.
Sometimes it feels like the "flavor of the month" frontend webdev is a victim of some of that - along with engineers who are more interested in HOW something is done than what actually is done.

No comments:

Post a Comment