7 ms·
No. This is the absolute wrong direction. In effect, you're giving a third-party absolute control over your code and your ability to work on it. You're also di
by rglover 4y ago
No. This is the absolute wrong direction.
In effect, you're giving a third-party absolute control over your code and your ability to work on it. You're also disconnecting the developer's mental model of how all of this stuff works (arguably why there's so much bad code floating around). Eventually, that will devolve to people not knowing how any of this works and the industry will collapse.
It's an abstract line of argumentation related to this, but Jonathan Blow nailed it on this idea a few years back: https://www.youtube.com/watch?v=pW-SOdj4Kkk https://www.youtube.com/watch?v=pW-SOdj4Kkk
- smoochy 4y agoI was reading your comment and thought of Jonathan Blow's talk. Without even clicking the link, let me guess, that's from Moscow's 2019 conference? EDIT: yes, it is. He has a very important point there. I recently went on Twitch to see what young devs where coding. One (rather smart, I must say) young lady was creating a simple sign in/sign up page, but there's a twist: with React. Upon me asking, why wouldn't she just code it in plain HTML, she responded with a question: "but how would it connect to the API?". So there you go, ladies and gentlemen. I don't really know what to do about it, but I don't believe we're a bunch of old men yelling at a cloud (quite literally - AT A CLOUD), especially that I don't think we're that old.
- rglover 4y agoYup
- rglover 4y ago> I don't really know what to do about it, but I don't believe we're a bunch of old men yelling at a cloud (quite literally - AT A CLOUD), especially that I don't think we're that old. I'm working on it: https://github.com/cheatcode/joystick https://github.com/cheatcode/joystick. The tl;dr is that I'm offering a full-stack framework that takes advantage of vanilla JavaScript and HTML in a front-end framework combined with a plain ol' HTTP back-end using Node.js. The APIs abstract just enough to make you productive but not so much that you can't reason about how it'd work without the framework. The long shot of the project being to keep the mental model of "how the web works" intact while reducing the burden of doing everything from scratch.
- c0balt 4y agoYour project looks interesting. Do you plan Typescript support with stubs vor smth similar?
- rglover 4y agoThanks. If I do, it won't be supported beyond the compiler/build tool (no official recommendation of using it w/ limited support). It's an unpopular opinion, but I view TypeScript in the same light as I do the OPs assertion about cloud-only development. It's adding yet-another-layer that has some merits but often leads to overcomplicated messes that reduce productivity/add confusion. I'd rather petition for some sort of structs/arg typing to be included in ECMAScript proper (in a similar fashion as to what happened with a lot of Jon Resig's jQuery DOM selection APIs making their way into ES6).
- heavyset_go 4y agoAs to you last point, there are proposals to bring typing to ECMAScript right now.
- heavyset_go 4y agoYour*
- com2kid 4y agoThe funny bit being react uses regular browser APIs for network requests! Nothing was even gained, just call fetch!
- kevlened 4y agoTrue! Though the funny bit is you don't need an API at all (at least not a json-driven one). A form post is even simpler.
- bryanrasmussen 4y agoWhat if the API she wants to call doesn't have a form based version? Suddenly she needs to change stuff on both backend and frontend, and she might only be allowed to touch one of those ends.
- mwcampbell 4y agoI think the best solution to this is to eliminate the division of labor between back-end and front-end, for the majority of applications that don't actually require deep specialization in either. As DHH put it, integrated systems for integrated programmers [1]. [1]: https://m.signalvnoise.com/integrated-systems-for-integrated-programmers/ https://m.signalvnoise.com/integrated-systems-for-integrated...
- shkkmo 4y agoI think this is a question about becoming dependant on abstraction rather than where the abstraction is run. I don't think that being "in the cloud" makes abstraction that much more pronounced. You can have manually configure dev VMs in the cloud or automatically configured dev VMs locally, the later will probably use more abstraction.
- chrisweekly 4y agoYeah; knowing about the HTML form tag apparently qualifies you as a senior web dev.
- onion2k 4y agoConsidering how many web developers get that particular tag wrong I'm not sure that's actually as unreasonable as it first appears. The number of forms out there on the web that are really just used as a way to group collections of input elements, with no consideration for an action, a method, browser native validation rules, fieldsets, a legend, etc makes me wonder if people actually know HTML at all. Every React, Vue, etc form I look at the source for gathers up input into state and then submits it with a fetch, replicating, but also often breaking, the accessibility and functionality built into the browser. So yes, maybe being able to implement a form tag in HTML is the mark of a senior dev.
- corrral 4y agoI'm very much on the "this shit's too complicated, we should fix whatever's making us not use the standard features and tools instead of piling this garbage on top" train, but I think a valid defense of doing things in Javascript that could be done in HTML is that, as soon as you need to do any e.g. form validation in JS, it may be simpler to just do all of it there. The accessibility issue is, of course, a solid counter-argument to running too far with that line of reasoning, and is part of why I'd much rather we put 1/10 the effort we do to constantly re-implementing basic HTML features into unfucking HTML standardization so we can finally have elements good-enough that we don't need to pile JS on top to get what ought to be built-in functionality. But, that's a whole different skillset from programming, and requires far more organization than thousands of devs all independently, or in small teams, working on yet another NIH version of an image upload input. :-/
- anyfoo 4y agoI see web development is still trying to make something fundamentally ill-suited for its task work by stacking shoddy layer after shoddy layer on top of it, just like it did when I left web development 10 years ago and went back to system programming. System programming also has its warts, but at least most of the time you don't feel like you're working against the machine.
- rolisz 4y agoI had a similar experience with my sister in law who is getting her programming degree this month. When I asked her what was her final project and some details about it, she told me the entry point to her frontend was Angular. When asked how it was served and how it got to the browser, all i got was confused looks. When I showed her that the first thing that gets to the browser is an HTML file that then loads Angular and her application, her mind was blown.
- rco8786 4y agoI had a similar experience with a family member. When I asked them how their keyboard strokes appeared on the screen, all I got was confused looks. When I showed them that the first thing that happens is a hardware interrupt, her mind was blown. Seriously, it's okay that people don't know the ins and outs of every little detail. Abstractions are useful, until they're not. And then when they're not, you go figure out the level below. Even the most advanced, most skilled front-end devs spend 99.99% of their time not caring that the browser loads an HTML page.
- Mordisquitos 4y agoI think your analogy would be valid if the previous commenter had, for example, asked their sister-in-law how the browser interprets the JavaScript it receives, or how it builds the display from the DOM. Now that would be asking about irrelevant and unnecessary levels of detail which are best abstracted away. However, knowing that the process starts with the browser receiving HTML over HTTP is essential to understand what's going on, even if you know nothing about the details. If I may, a truly similar experience regarding keyboards would be this: I had a similar experience with a coworker. When I asked him how the code that he types appears on the IDE on his screen and not on that of any of our colleagues' screens, all I got was confused looks. When I showed him that his keyboard is wirelessly connected only to his computer, which runs the IDE, and his computer is then specifically connected to his own monitor via a cable, his mind was blown.
- rco8786 4y ago
- ericmcer 4y agoI started in 2008 and I would be hopeless at certain things that I am sure were essential 20 years prior. Thinking React is essential to make an API call is a bit scary, but a future where we just click a few buttons and connect to a hot reloading syncing dev env with all the dependencies and transpiles obfuscated, seem inevitable, and it will be so reliable that we forget or never even learn how it works under the hood.
- aliswe 4y agoI've met such (male) frontend developers before, totally clueless when it comes to the DOM and how it works. Not putting any judgment in that really, tbh, because the React development model is superior for anything non-trivial (like a signin form). In this case though, I believe she isn't confused as to how to call the APIs, maybe not even as to how to handle the response with JS and update the DOM. I think the question sounded more like you're not allowed to use Javascript at all.
- WorldPeas 4y agoI'd do it if said platform was FOSS and self-hosted, but until then, I'm staying in fort localhost
- 1shooner 4y agoGitpod would meet those requirements: https://www.gitpod.io/blog/opensource https://www.gitpod.io/blog/opensource
- c0balt 4y agoSame here, maybe GitLabs "web IDE" will one day support this by, e.g., pairing a vm or container to each session, and adding extensibility. Though given the massive monster that GitLab is already it might take some time (and $).
- dx034 4y agoCode-Server can be self-hosted for free, so that would fit your requirements.
- HideousKojima 4y agoBasically the same idea as this article about how current college students in CS programs don't really have any conception of what a filesystem is: https://www.theverge.com/22684730/students-file-folder-directory-structure-education-gen-z https://www.theverge.com/22684730/students-file-folder-direc... At least Android and iOS taking over the consumer computing world has given me job security until I retire!
- MikeDelta 4y agoOne argument that I hear is that all these abstractions allow the developer to focus on delivering products and not worrying about the nuts and bolts of the underlying system, but in my experience the best and most efficient developers have been the ones who know how the systems work.
- rco8786 4y agoThose things are not mutually exclusive though, at all
- MikeDelta 4y agoThey are not indeed, just sharing my anecdata that the best ones I have come across happen to know much more about the details. I am sure one can find good and efficient devs that know very little about the underlying system and are very capable of using the available abstractions and frameworks. I just happen to find the first group better.
- numpad0 4y agoArticle claims the practice is adopted by Google, Facebook, Tesla, Palantir, Shopify, GitHub. That tells a lot!
- namaria 4y agoYeah no wonder big tech wants developers to depend on them.
- IHLayman 4y agoThank you for posting this. I know that is expressed most succinctly with an upvote, but I wanted to reiterate, because you were able to express something I wasn’t able to quite put my finger on but have felt for a long time. I was hoping that the feeling that many new coders didn’t know what they were doing could be attributed to me just telling them to get off my virtual lawn; I can see that my fear is possibly justified. The video is great too; I hadn’t seen that before, and it gives some examples of what happens when that generational transfer of knowledge is not carried out, not just within a discipline but also across a civilization.
- rglover 4y ago> I know that is expressed most succinctly with an upvote "Brevity is for the weak." - Maciej Cegłowski
- dx034 4y agoI just spin up a VM at Hetzner (or another low cost cloud provider) and code on that. I don't give up any control but can still use a much more standardized environment and easier switch between machines.