What does HackerNews think of what-happens-when?
An attempt to answer the age old interview question "What happens when you type google.com into your browser and press enter?"
It reminds me of:
https://github.com/alex/what-happens-when
and how many of today’s CS-degree holders would barely understand any of it. As someone who has also “grown up with all the technology”, I’ve learned and experienced all that. But as a percentage of “software engineers”, there’s fewer and fewer that do every day.
> I am tired of all this idiotic circus.
Here is the most important lesson you learn in college in a nutshell: You aren't as smart as you think you are and there are a a lot of things you don't know you don't know. If you're used to being the smartest person in any group of 30 people, then college can greatly humble you. College was the first time in my life where I was in a room and it was clear I was not the smartest person in it, maybe not even in the top half.
College, in my experience, helps diminish the Dunning-Kruger effect greatly.
I've interviewed a lot of people for SWE and performance greatly correlates with college. I never asked particularly hard questions and they were always very pragmatic questions, not ivory tower stuff. Many of the best staff engineers/managers I've worked with had masters degrees. It is more often than not graduates that make core systems.
The way you write shows that there is a lot you don't know you don't know and that you are considerably overconfident in yourself, particularly before you have a portfolio of externally validated useful software to backup your claims of how good you are.
Pragmatically:
A CS degree sets you up with a lot of information that would be useful for interviews (and understanding how things work) in an organized and systematic way.
Big O notation, basic data structures, basic algorithms, basic data structure manipulation with algorithms. Intuition about these things.
After basics, engineering courses take you on tours of important systems and protocols and touch on why they are the way they are not just what they are.
If I say "recursive backtracking" do you know what that means? That's a first semester topic and just about every company in the valley was doing interview questions that used it. Do you know test and set? Do you know why it is important? Do you know the three way handshake? Do you know why it is the way it is? Exponential backoff? Can you implement DFS/BFS in 5 minutes? Dijkstra's? Have you heard of dependency injection? Do you know why it's important? Entropy? Hashing? Buffer overflow? SQL Injection?
How much of this do you understand? https://github.com/alex/what-happens-when
> I love my own original interpretation of CS foundations and concepts.
You take this as a point of pride, but having a shared language and understanding allows you to communicate with and leverage other people.
I can't speak for the level of education you are around, but there exists good education that is definitely worth seeking out.
Wow, I had no idea who came up with that question first. (see, e.g., https://github.com/alex/what-happens-when ).
When was the first time it was asked? Where?
Having gone through undergrad and grad school for CS, I think part of it comes not truly realizing or accepting just how much knowledge you get from taking ~45 college courses . It's taken years for me to learn a reasonable breadth and depth of this subset of computer science, (and there's way more I don't know than I do know) and I struggle with the fact that I seem unable to boil all of that into the "a-b-a-b" pattern the author describes. Start doing the thing you want to be doing (e.g, making a web app), and learn just enough of the bits you need to keep on that path. But it's much easier said that done when you're starting from scratch.
It's like the pervasive interview question of "What happens when you type google.com in your browser and hit enter?"[0] Well, a lot... where do you start?
I love hearing of stories like this. Similar line of thought to my personal favorite interview question: ""What happens when you type google.com into your browser and press enter?" (Answer in as much depth as you like.)"
I always thought that this is a good question to ask https://github.com/alex/what-happens-when but then again probably not for all roles. It's good because even if the interviewee has seen the question, you can really gauge how much they know.
- "Any command line interaction is decidedly more involved than the typical user plugging in a cable."
Right. "The typical user plugging a cable". I expect the user to become a "typical user" after learning how to choose and use a cable, and getting acquainted with his hardware and software. One is not born a typical user, as you seem to imply (plugging a cable is not a complex task). It is. Everything is complex. Using the command line is complex, and then you factor your "typical uses" into aliases or scripts.
Or maybe you curl | bash scripts from the web, and then cry when they fail / your box catches internet aids.
Or you use an ipad for all the computing you do, and expect things to just work.
See: a typical everyday usecase: https://github.com/alex/what-happens-when
Did the user write "oogle.com" instead of google, and got malware? ....Inexcusable, as you said? Should it just work?
I say: "why did the user write oogle.com? Did he want malware?"
Simple stuff.
https://github.com/alex/what-happens-when
Would love to see Knuth's Challenge setup in a repo for collaboration.
HN Discussion on the above link:
I wonder where that line is drawn. A person using their browser, clicking a link to load a web page initiates a hundred different automated routines[1]. Is that not automation? Is it then automation to have a click initiate another click or two more clicks? Where do you draw the line?
Sometimes the questions aren't even related to data structures or algorithms. I'm OK with those because at least you can somewhat prepare for them. I've once had an interviewer ask me obscure questions about Netscape 6 (this was 2016 btw).
> I much prefer “homework” projects, even if they involve me working “for free”, because I feel like they ask for actual programming skills rather than the “guess the algorithm” lottery of phone screens and whiteboard coding.
Me too but when you're interviewing with 3+ companies at the same time while working at your current job, it gets difficult. There was one time where I had spend my Saturday afternoon maybe 6-8 hours completing their "homework" project. I got a call back from them a few days later for a follow up interview and they flat out didn't even bother to ask about the project I had completed for them. What was the point?
Tech interviews suck.
It doesn't address the 'progressive layers' issue, but it _does_ include a TOC.
I have been asked this question before, and my answer was definitely biased towards the networking parts (DNS, TCP/IP, HTTP/S, certificates ...), and I provided absolutely no detail about keyboard/mouse/monitor I/O, parsing or rendering.
what happens when you... https://github.com/alex/what-happens-when
I think the question "How does a toilet work?" is much like the question "What happens when you type 'google.com' into your browser and press enter?"[1] I'm sure I have a sufficient understanding of the general idea (e.g. flapper and siphon, or parsing and DNS lookup), but I'm well aware I couldn't reproduce or accurately describe the whole system/process on my own.