7 ms·
You can actually see this with new frontend devs. They know only full SPA frameworks, they have never seen a dump of an HTTP message, headers and verbs are abs
by BiteCode_dev 3y ago
You can actually see this with new frontend devs.
They know only full SPA frameworks, they have never seen a dump of an HTTP message, headers and verbs are abstract things to them. Hell, many of them don't know you can have fully functional websites with zero JS, including payment, video, login, etc.
I started to write an HTMX tutorial (https://www.bitecode.dev/p/a-little-taste-of-htmx-part-1 https://www.bitecode.dev/p/a-little-taste-of-htmx-part-1) because I noticed a lot of young coders don't understand what to do with it. They read the tweets saying it's nice, but when they look at it, it makes no sense to them.
It's really fun because I now remember how some senior coders looked at me, knowing nothing about compilation. I was struggling with Python packaging because before wheels, it required compiling a lot on linux, and it failed often. For them it was obvious: just install the headers, look you need the dev packages, wait, you don't have gcc?
Nowadays I happily patch nginx source code and compile it manually, but it took a lot of work to learn a minuscule chunk of what all those guys knew by heart.
Because they started with assembly.
- ilyt 3y agoAsk a full stack JS developer to make their app use a proxy and they will get nervous breakdown
- ksec 3y ago>You can actually see this with new frontend devs. They know only full SPA frameworks, ...... Around I guess 2017 or even 2016? I used to think this is some sort internet troll comment about people never seen a dump of an HTTP message, until...... >Because they started with assembly. It wasn't necessary starting with assembly or something low level. ( Although that certainly helped ) We have less entertainment, more time, and no Internet ( for most part ). Things also dont work all the time. And we have to spend time figuring it out ourselves. That is where all the knowledge comes from.
- BiteCode_dev 3y agoHaving to figure it out is not specific to a generation. My generation had magazines and forums. Then came out google and SO. Now chat gpt. The difference is where you start figuring things out. Before, you needed to figure things out at your level, because it was the immediate area of mystery. Now this level is generally solved, you need to figure things out at a different level: - filter out the mass of irrelevant information, the out dates one, and the one from spam - understand how all those complex abstractions interact. We have good resources on how each work individually, but the carthesian product of the monsters we build with them, we obviously don't - debug some things that don't work when the magic fails, way below your level, or behind a service, where nobody is looking The problem before was scarcity of info, lack of standardization and roughness of systems. Now it's abundance, opacity and too much sophistication. But everybody still have to figure things out. Just no the same challenges.
- notarobot123 3y agoIt's fair to say that these are different kinds of "figuring out" though. Learning by trial and error is distinct from learning how to find and synthesize information and each lead to very different outcomes over the long-term. I'd argue that the "find and synthesize" generation have an advantage within contemporary software paradigms because of their experience but, without deep knowledge of the foundations they are building on, they might be disadvantaged when it comes to imagining/creating new paradigms. Then again, first-order thinking seems to be easier when you're not marred with the traditions and conventions of the past so maybe this isn't actually a disadvantage.
- Sakos 3y agoTrial and error is a fundamental part of how we work as human beings. There is no learning or understanding without it and no "figuring it out" without it. So that dichotomy between "trial and error" and "find and synthesize" doesn't exist. They are the opposite sides of the same coin. You can't have one without the other. Finding and synthesizing doesn't do you any good if you're unable to meaningfully apply it or understand what you're applying and what you're applying it to. Trial and error also doesn't do you much good without the ability to back it with knowledge and to find the relevant knowledge.
- userinanother 3y agoAgree with everything except out of date info. The old stuff is the good stuff you can’t find anymore because Google thinks you don’t want it. the newly generated SEO ai shit is what you need to filter out
- cratermoon 3y agoJudging solely by the date of publication is not the best criteria for filtering. For example, Vannevar Bush's article "As We May Think", published in 1945, is the oldest dated item in my reference library. Conway's Law comes from Melvin Conway's 1968 paper. David Parnas' 1972 paper "On the Criteria To Be Used in Decomposing Systems into Modules" still applies.
- pictureofabear 3y agoThe "less entertainment" and "more broke things" is probably the critical piece of the environment. This makes valuable anyone with long attention spans and immunity to boredom. For me, it has taken some habit forming (and habit prevention), but I have learned so much in the past 10 years since giving up gaming and social media. HN is an occasional vice though...
- pjmlp 3y agoSpeaking as one of those guys, the first computer I programed on was a Timex 2068, a reality check is discussing industry events and noticing a bunch of clueless faces among junior devs.
- josephg 3y ago> they have never seen a dump of an HTTP message, headers and verbs are abstract things to them. When I was teaching programming, I had a fun party trick whenever we got to HTTP. I'd fire up netcat (in listen mode), then connect from a web browser and "serve" a website by hand. I'd show the students the HTTP request that came in, and just manually type out a simple HTTP response and they'd see it appear live in the browser. Its pretty magical. And once I'd shown them that, I'd write (by hand) an HTTP request to wikipedia or something to show them how its symmetrical. Of course, real websites increasingly do HTTP2 over TLS or something. So unfortunately its not as "real" as it once was. But if wide eyed look on my students faces is anything to go by, it was a great lesson.
- fatnoah 3y agoNot quite the same, but I remember sending emails via telnet. I showed that to a younger dev who was somewhat blown away by the fact it wasn't via some REST API.
- hotpotamus 3y agoYes, I actually remember another tech showing me how to type "get / http(whatever)" into telnet to check a browser and that is when a lot of things clicked into place. Basically it was the realization that computers are just sending text back and forth at blindingly fast speeds. Obviously I had some sense of what was going on before, but that was the demo that did it, and I had to learn it on the job because no one at school ever did that, which I find sort of backwards - school should be where you play with that sort of thing, but I suppose we all learn differently. The email telnet thing was also a good learning experience. Gmail's servers are fun because you can see the designer's cute messages; if you forget your EHLO, they'll throw an error (or at least they did years ago) that it's polite to say hello first.
- user3939382 3y agoHELO
- Winsaucerer 3y ago
- sarchertech 3y agoI started writing a book for exactly this reason. https://www.networksfromscratch.com/ https://www.networksfromscratch.com/ It will take me 10 years to finish it at the pace I’m going though :)
- raddan 3y agoThis is great! Thanks for the link.
- asmithmd1 3y agoVery nice intro. I like how you introduce networking layers. It seems you are starting to go down the path of explaining how computers and servers work - and that is certainly daunting. Maybe just stick with networking and introduce more of that and how real world systems (T1 and Ethernet) are just changing voltages at some point - and can be swapped in or out because of network layers. Then build up packet switched messages TCP, Telnet, HTTP
- gavinhoward 3y agoOh, please, oh please! Get that thing done as fast as you can! And for once in my life, I'm actually going to sign up for your email list because I want to know when this thing is done!
- kaba0 3y agoWith all due respect, this is some elitist nonsense. Sure, a frontend dev who strictly works on that won’t know much about, say, the OS layer. But they don’t have to, it’s not part of their job in any way. There is no shortage of young people that work on areas that makes them require deep knowledge of many different layers of the stack, it is simply not necessary for every IT-related job. But one can absolutely pick it up if they want to.
- leptons 3y agoI once worked with a back-end dev who didn't know what RAM was. He knew C# and ASP.NET but couldn't point to RAM on a motherboard or explain what it really did. About all he could describe it as was "temporary storage". Their lack of basic knowledge of how computers work really showed in the crap code they wrote. It was no wonder it was their code that ate up all the RAM on the server because they never put much thought into the hardware it was running on. I know this is anecdotal, but there are plenty of devs just like this out there.
- slmkbh 3y agoI talked to a guy who "managed software development", and when I asked him about the resources om their developer machines (some kind of VM), he got angry at me when I laughed nervously when he didn't know what RAM was. No wonder a lot of modern software is terrible.
- paganel 3y ago> but couldn't point to RAM on a motherboard or explain what it really did. To be fair, the last time I "opened up" a computer and changed its RAM was about 10-12 years ago, and since that time I've only worked on a Mac Mini and on a laptop meant that "opening up" computers became a thing of the past.
- leptons 3y agoThis was years ago, in a Windows shop, everyone had a desktop PC. Not important that the guy didn't know what was inside his desktop, but it's the lack of understanding of the server hardware his code was to run on that was the problem. In all servers and desktop PCs ~10 years ago, RAM comes as DIMMs and would be easy to locate for anyone with a passing interest in computers. I'm not talking about Apple know-nothing fanbois here.
- DrOctagon 3y agoThis is not a FE thing. Plenty of BE devs who don't know HTTP from their arsehole.
- galangalalgol 3y agoDon't forget us over in hpc and embedded! What are these web things, and why do have stacks of them? But more seriously, I'm a very experienced systems programmer but I like stuff like eframe and trunk because it lets me serve up a gui I write in rust like it was a native app as a wasm page without having to know anything at all about web stuff or how many stacks to put the web thingies in. Perhaps someday the wasi will bypass all the js and html deep magic I don't understand, but not yet. I rarely do any of that, usually my abstractions are container layers, a libc, and then a kernel between me and registers and dma. But that is a lot more layers than you'd think. I can't even understand the boot process on a modern machine with tpm. And i have no clue how many processors or controllers are in my computer. Every usb controller has an entire arm core in it, mice and keyboards have 8051 running c-ish code someone somewhere wrote, there is no bottom to the complexity.
- Akronymus 3y agoI am technically q full stack dev and I don't grok how aspnet core actually generates the web requests. It's layers upon layers of magic to me. Similar with mediatr, I know conceptually that it "just" checks for the right classes in the loaded assemblies. But still feels like some weird incantation to use, to me. And I have such huge knowledge holes across all layers. Sometimes i feel my lack of knowledge to such a degree, that I question whether I should even be a programmer.
- devonkim 3y agoI don’t understand how front end devs can get so far without learning how to use the developer tool console now standard in every major browser. How can one not learn about a POST vs GET when things like request caching and back button complications are a reality? I hit these issues as a senior backend dev fumbling around with front end so many years ago so I have a hard time understanding how that isn’t even close to the experience kids these days get.
- jtuente 3y agoToo much trial and error and throwing everything they know at it until it gets close enough to the desired look. I have one co-worker that has taken off after I showed him how to use dev tools and another that's still trying to guess their way through the problem after showing them how to use dev tools.
- devonkim 3y agoI’ll never forget the time a network engineer escalated a ticket of his to me on the infrastructure side (think L4+ support) that a developer threw his way saying that his web pages were loading really slowly and that this was a high priority, high urgency project. I asked how they came to the conclusion that it was something related to the cloud infrastructure rather than something else? They said the developer didn’t really know besides to ask “network people.” So I get on a webex with the parties where even a VP is on there because his product launch is on the hook and then I ask the developer to open developer tools to which he responded “what’s that?” I think I had to mute myself for a bit while I screamed for a while that this was what qualified one to be a senior front end engineer at the company. So I stepped through and got the network transfer chart and pinpointed that all traffic was coming through quickly except there was a big initial delay while doing DNS look-ups that was super slow to get the first byte. The network engineer on the call was stunned that such a thing existed and thanked me for saving him a ton of grief because he got a LOT of ticket like this one. This wasn’t in like 2010 when Firebug was just coming out and people still used Firefox as a rule, this was like 2015 when dev tools was in every shipping browser approved for corporate use by a technology laggard company. So the moral of the story is just blame DNS first.
- MSFT_Edging 3y ago> Nowadays I happily patch nginx source code and compile it manually, but it took a lot of work to learn a minuscule chunk of what all those guys knew by heart. I'm about half a decade into my career and I've recently tried to take note when I hit milestones or achievements, even little ones. I was helping an intern with a tool and it didn't have support for what we needed it for. Since the tool was open source, I just cloned it and patched it to add support for what we needed. When I told the intern this, he couldn't comprehend that I was so blase about modifying this tool that seems like witchcraft to him. But what I quoted, I feel deeply. I've worked with so many people with so much knowledge they can't possibly communicate it, and I'm only starting to really understand the tech around me. I didn't think anything of patching the tool at the time, but its important I look back so that the younger version of me can see the progress I've made.
- flatline 3y agoI have worked with interns and young devs just out of school who are sharp as tacks. I had an intern a few years ago, the first task we paired on was to figure out why our MySql connections from Qt were misbehaving. We stepped through the application code, the Qt code, found where it was failing, and ended up backporting a Qt patch from upstream to fix it. Yes, I gave him some guidance, but once he caught on he was able to navigate this complex mess of C++ code across a few technology stacks and effectively reason about it and make changes. A lot of CS skills are generalizable. Knowledge is one component you pick up with time. A good education, self-taught or otherwise, should allow you to drop into any sort of code and be effective without much spin-up. College covers CPU architecture, assembly, networking, operating systems, web, algorithms. This is not esoteric stuff, it is very standard and you can get it all in class or from textbooks free online!
- iforgotpassword 3y agoThat's one in a hundred CS majors today in my experience.
- kaba0 3y agoThat’s an underestimate, and is it really that unexpected given the huge interest in CS? Previously there was an implicit filter that only the most skilled people could make it into this new world, that was just being built. Now that it is built, and everyone wants to enter - of course the average quality will decline.
- steve_adams_86 3y agoI’ve worked with around a dozen interns/co-ops, and only 2 stood out to me. The rest often made me wonder if they could reasonably handle this kind of career. I hope they could! It’s tough if you feel a degree of responsibility for their success. Mentors are one of your greatest assets early on (and arguably later as well), and to try hard to have them succeed and thrive only to see them languish on trivial tasks is awful. I think part of the problem is that CS education where I live is awful. The kids come out of school expecting real work to be wildly different than it is, and it hits them like a brick wall.
- noodle 3y agoYou can see this with a "new" ANY dev, because there are only 4 years of college and far more years are required to learn the increasingly complex technology environment. I graduated with a Computer Engineering degree, did assembly, C, microprocessor design, computer vision, and know a good bit about lower level stuff, how memory works, how networking works, etc. All the stuff people in this thread seem to be lamenting the lack of. But I was also a shitty employee fresh out of school because I didn't know anything at all about modern software development because there was absolutely no time to learn that stuff as well. I still had to spend a lot of time getting good before I was worth anything, just as these "new frontend devs" will, as well.
- ThrowawayR2 3y ago> "* I didn't know anything at all about modern software development because there was absolutely no time to learn that stuff as well.*" Yeah, but modern software development is trivial to learn, particularly in comparison to a computer engineering degree. You see "developers" here on HN gloating all the time about how they didn't need any post-secondary education at all to get their jobs; these frameworks are literally designed to be usable even by minimally skilled coders. You were in a much better position having to learn modern software development after a computer engineering education rather than having to learn the rudiments of computer engineering on the job after getting an education in modern web development.
- noodle 3y ago> modern software development is trivial to learn LMAO c'mon. This basically undercuts anything else you say here. Go teach your grandma react and see how trivial it actually is.
- tight-ship 3y agoRoad workers laying out asphalt don't start from chemistry first principles either.
- emptysongglass 3y agoYour articles are so helpful: great Python guidance and now HTMX? What's next, React frameworks? ;)
- BiteCode_dev 3y agoI can last years with only Python, so those little detours won't expend as far as React. It's more likely that I will do something like "a full web app from installing the OS on a fresh laptop to coding it to hosting it on server". It would also be more beneficial: plenty of tutorials for individual techs, rarely they teach you how to integrate them together and go beyond the toy example on localhost. But for that I need a better platform than substack. Therefore that's not going to happen anytime soon.
- meiraleal 3y ago> I started to write an HTMX tutorial (https://www.bitecode.dev/p/a-little-taste-of-htmx-part-1 https://www.bitecode.dev/p/a-little-taste-of-htmx-part-1) because I noticed a lot of young coders don't understand what to do with it. They read the tweets saying it's nice, but when they look at it, it makes no sense to them. I agree with you but HTMX? That's a big abstraction layer. A good one but still, not really a way to avoid layers of abstraction. Pure JS makes more sense.
- BiteCode_dev 3y agoThere are already plenty of good resources for pure JS, I have no added value here.