Being intimately familiar with HTTP is fine, reading a lot of RFCs is fine, but there are plenty of well respected, well compensated, influential engineers who do neither, and have no need for either one.
Being intimately familiar with HTTP is fine, reading a lot of RFCs is fine, but there are plenty of well respected, well compensated, influential engineers who do neither, and have no need for either one.
I concede that this may superficially resemble the aberration you describe, but insist that it’s actually very different.
The HTTP comment seems off-base. HTTP is neither particularly important or interesting as a protocol. You can spend a half-hour with netcat and have a few conversations with your web server, and you're set.
The concept more broadly is spot-on. The "I don't need to know [x] to do my job" crowd is universally mediocre at their job.
For a programmer, the set of things one layer down is important, be that cache/memory hierarchies, low-level programming, operating systems, databases, compilers/interpreters, or otherwise. So is one layer up, which is usually business and product understanding.
I'll also mention: Mediocrity at one's job is okay. There are plenty of wonderful people who have work-life balance and do interesting things outside of their job, and just want a pay check. There are people happy to be working on systems I'd be miserable working on -- payroll, banking, inventory, etc. -- and I'm glad they're around. A few of them are among my favorite people too.
My problem is I find the knowing the lower level stuf way way more interesting. Heck I'm doing a udemy course on network programming which arguably won't help my career, I just have a secret shame about not really knowing networking. (Plus it's really interesting)
And comment about netcat happens to be exactly what I’m condoning.
As for mediocrity, sure. But it should be voluntary, not imposed by a lack of options.
HTTP has no interesting theoretical basis, and doesn't really generalize to much. Like most early internet protocols, it's kind of random and ad-hoc, with incremental hacks and improvements like keep-alive added later. You can pick up any RFC -- POP, IMAP, or whatever, and get just as much out. That's not nothing; they're worth knowing, but here's a short list of protocols and data standards which which have a theoretical basis which will teach you something deeper:
- git. Brilliant data standard.
- SQL. And relational database theory.
- SGML. Yes, the original. Much juicier than XML in design.
- Cryptographic protocols. Pick up a copy of Applied Cryptography, and read the chapter.
- A survey of the early RPC and object embedding protocols (OpenDoc, OLE, etc.)
- TCP/IP
- Any of the various compression and/or error correction protocols.
- Printer standards, especially PostScript
- Video, audio, or image compression standards.
.. and so on.
Some of those require months of study.
Overall I agree with your gate-keeping comment - that's how people interview/hire. I disagree that it "has no place" - if I'm hiring a mid-to-senior engineer that's web-capable I am 100% gate-keeping to make sure they have an intimate understanding of HTTP + are capable/comfortable reading RFCs.
It's like a series of tubes. That's why SWE work involves so much plumbing and getting deep into all sorts of $#!+.
Also, React is not slow at displaying tables. If it’s slow, you can use plugins to hide cells which are not in the viewport.
(Old farts like me manage a billion records and display tables of 7k rows x 100 columns in a webpage in mere milliseconds, a joy that React developers will never understand. Why do you need more than 10 lines if you have pagination, they say).
Are you doing something fancy with HTTP?
They don't have to read RFCs in bed before sleep, but they should at least know the gist of what they contain.
Interview 0:
"I expect them to know the basics of HTTP and to be capable of referencing/digesting an RFC"
Interview 1:
"All devs should be up to speed on the mysterious world of character sets, encodings, Unicode, all that stuff"
Interview 2:
"Any real programmer can reverse a string in C without a buffer"
Interview 3:
"I expect anyone working with k8s to understand the cgroup fundamentals."
Interview 4:
"No really. What is html5?"
Real programmers know how to do both even if the don’t do them exclusively.