5 ms·
I tell every junior colleague two things: 1. There is software engineering, and then there’s working at the digital factory. 2. A good way to set yourself on
by omginternets 5y ago
I tell every junior colleague two things:
1. There is software engineering, and then there’s working at the digital factory.
2. A good way to set yourself on the path that leads to the former is to get intimately familiar with the HTTP protocol. A good way to start is to reject fancy frameworks, and to get comfortable reading RFCs.
Being the guy who really knows HTTP is a powerful career move. Becoming that person almost inevitably kicks off a virtuous cycle that steers bright/motivated devs well clear of writing REST endpoints for the rest of their working lives.
- urthor 4y agoIt does feel like the barrier to entry for that kind of deep knowledge career is increasing these days. Maybe it's because I live outside the United States, but it seems like it's much harder to build a "pathway" into work that demands that intensive, deep understanding of engineering on computers. At least one that'll pan out in my 9-5. The supply of problems that require deep knowledge vs framework Kung Fu... my impression from ground level is they're tilting more towards GitHub martial arts every year. The supply of companies outside the United States with a deep interest in these topics is sparse, to say the least.
- pc86 5y agoI don't think I can really articulate why but this smells a lot like the "real programmers use [neo]vim" or "real developers write C++" kind of gatekeeping that was pretty widespread and even expected/accepted a few decades ago, but really has no place now. 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.
- omginternets 5y agoI see what you mean, but you’ll note that I’m neither saying that it’s the only way, nor am I saying that it’s required. What I’m instead doing is trying to cultivate a deep understanding of one’s tools and protocols, which is absolutely the hallmark of a competent engineer. I concede that this may superficially resemble the aberration you describe, but insist that it’s actually very different.
- blagie 5y agoMy experience is that to do any kind of engineering and most kinds of science really well, you need to have a deep understanding one layer down and one layer up. 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.
- bennysomething 5y agoThat's a good way of looking at domain knowledge "one layer up". I'm have been terrible at this in the past and I have been making an effort to improve. Business knowledge seems to provide the most leverage, especially in fields like finance. 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)
- omginternets 5y agoRespectfully, if you think http is unimportant or uninteresting, then you don’t know it very well. It’s exceedingly interesting from a linguistic point of view, to name but one; the notion of verb + complement of the object is fundamental to http, and sheds light on where it tends to be the _wrong_ choice. This inevitably leads to non-trivial design discussions. 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.
- mattgreenrocks 5y agoWell respected and compensated engineers usually have a depth of experience that extends beyond their REST framework. That’s what the parent was advocating.
- peterangular 5y agoIf I'm hiring a SWE that will touch anything web I expect them to know the basics of HTTP and to be capable of referencing/digesting an RFC. It's a common interview question for these roles to outright ask, "how does the internet work?" gesturing to a whiteboard. It's a reasonable stance to take. 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.
- zozbot234 5y ago> how does the internet work? It's like a series of tubes. That's why SWE work involves so much plumbing and getting deep into all sorts of $#!+.
- eastbound 5y agoWhile Internet is a series of tubes, SQL is a sewer: You need a lot of layers to interact with it because it’s very dirty. Real engineers have Liquibase over Hibernate and completely hide SQL from developers. Also it’s extremely slow, I don’t know why old people like it. That’s why NoSQL works better when you have large databases, like a thousand documents or more. 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).
- tester756 5y agoWhy would you need to be capable of referencing a HTTP RFC? Are you doing something fancy with HTTP?
- thombles 5y agoWould it count as “fancy” to find out whether header names are case sensitive? Plenty of useful things in there.
- andrewprock 5y agoIf reading RFCs is a gate, then it is a pretty bad one. They are public, free, well known, and generally well written.
- antifa 5y agoAlso unnecessary to read for 99% of webdev work.
- superdisk 5y agoWhy is gatekeeping always considered to be a bad thing?
- antifa 5y agoGatekeeping is not always a bad thing, but OP implemented a clear sample of the No True Scottsman fallacy to draw a rather arbitrary and mostly useless line to put themselve in the imaginary "real programmers" group.
- commandlinefan 5y ago> real programmers use [neo]vim" or "real developers write C++" Real programmers know how to do both even if the don’t do them exclusively.
- pc86 5y agoThe idea that you're not a real programmer if you can't use a specific editor is idiotic.
- commandlinefan 5y agoThe idea that not knowing something makes you smarter is idiotic.
- pc86 5y agoFeel free to quote where anyone here is saying not knowing something makes you smarter.
- Consultant32452 5y agoI find the best path, for me, is to be the guy who knows HTTP pretty well but I don't let anyone else know. Once they find out I know things I get tapped to fix all the old problems instead of build new problems, then I have to leave because the work becomes miserable.
- scarface74 5y agoYes and I tell junior developers the only way to be good is to know assembly language like I had to know. /s