Interview With A Sr JavaScript Dev | Prime Reacts
Recorded live on twitch, GET IN
Reviewed Video
• Interview with Senior ...
By: / @programmersarealsohum...
My Stream
/ theprimeagen
Best Way To Support Me
Become a backend engineer. Its my favorite site
boot.dev/?promo=PRIMEYT
This is also the best way to support me is to support yourself becoming a better backend engineer.
MY MAIN YT CHANNEL: Has well edited engineering videos
/ theprimeagen
Discord
/ discord
Have something for me to read or react to?: / theprimeagenreact
Kinesis Advantage 360: bit.ly/Prime-Kinesis
Hey I am sponsored by Turso, an edge database. I think they are pretty neet. Give them a try for free and if you want you can get a decent amount off (the free tier is the best (better than planetscale or any other))
turso.tech/deeznuts
Hot take: "Once you know everything, it is easy"
Well, i could see that "solving the problem" is the hard part, once the problem is no longer hard then you just have to type the logic out. There are plenty of people where using arrays are hard, but once you know how arrays work it's trivial.
It becomes irrelevant since you know you can build anything with what you currently use anyway. Once you know the tool well, then you know that everything is yet another permutation of abstraction on the same base JS language. If I need to write a complex UI in plain JS, then I can happily do that as well, I used to output thousands of lines of that thing.
0 kelvin
IDK man it looks like a very big iceberg
aka "skill issues" :D
"2024 is the year of serverlesslessness" - died
“How do you get a Javascript piece of code under 1MB?” The fact that this a real question that people actually have to ask hurts my feelings.
No wonder websites and browser caches are bloated if you need over 1 MB for each website. For a lot of projects and sites you could fit well within 1 MB with both backend, frontend and all styling.
@@jan.tichavskyreal
If you want to do that, then you raw dawg some plain JS. I used to write thousands of line of that thing and it was still tiny. Or at most react with no other dependencies, those can be painful.
@@jan.tichavsky what is runtime?
@@Leonhart_93 You know whats most infuriating? It's when you see something like jQuery or something being used to do the most trivial s**t ever, and the only reason it's used is because a) it was the first thing that came up on Google and b) the person has little clue about Vanilla JS and the DOM... It's a new version of Cargo cult programming, but now instead of including something that does nothing, you include something for every little piece of work that needs to be done.
The JS ecosystem gives me so much PTSD that if I see a json file I just rename it to .lua
Or yaml lol
@@blackace72 Or toml. I use Rust now btw. 😉
Rofl
haha!
or .plist
"Push on save" got me good 😭
didn't know the mad villain was in chat ✊
@@jameslund6781 RIP DOOM and dont forget ALL CAPS when you spell the man name
I push before I save.
I realized after returning home from a three week cross-country driving journey that I needed to organize my tasks, but my kanban instance has been broken for a few months, so I thought "I should make some kind of app". Then I realized that I didn't have 20 hours to spare before getting shit done, so I thought "I should just use an Android to-do app". But then I realized that fixing my phone was one of the tasks and might involve a data wipe, so a to-do app would not work (and besides, they all suck). Finally, I had an epiphany: I grabbed a piece of paper and a pen. This mental clarity would not have been possible had I not given up writing JavaScript.
ah yes the P&P (pen and paper) stack
@@nikolaygruychev2504flexing the PP stack on these hoes
Just use Trello?
@@georgehelyar I needed something portable that did not rely upon my phone. Trello would not work.
But what if you want to view the paper at your pc and on your phone at the same time?
I will admit that I googled a bunch of the things he mentioned, mostly because a part of me didn't believe that some of them were actually real. I then realized that I honestly had no interest in using any of them or really reading the docs for curiosity's sake, closed the browser tab, and moved on....
an afternoon well spent
it's all real 😢
Dammit, when I saw the title I thought you actually interviewed the guy, which would have been amazing. Imagine Prime interviewing him while he remains in his character as js dev, that would be top content right there
Idk but the T3 stack sounds pretty good to me
T3 > T4
It’s time for the T5 stack Theolo
@@LaughableTundra T5 launching in T minus 5, 4, 3, ...
Sounds... unbiased
T3-3 stack. The extra 3 is for Summer.js, Spring.js, and Autumn.js. Who needs Winter.js? 🤢🤮
Javascript people are now not just frogs, but fully cooked in the sauce it seems.
So, sincerely asking what's the solution? Switch to Go ?
@@mazharansari7813 concrete answers always require context. but typescript exists, and is almost always preferable to raw JS.
@@mazharansari7813 Rust and compile to webassembly. :)
@@blarghblargh Typescript isn't a replacement for JS it's just an overlay for type checking lol
@@mazharansari7813 the solution is to never listen to webdevs, they're compromised
We need to make ligma.js as the final JS Framework.
Ligma is the best!
ligma what ?
It would never work, somebody would fork their sugma.js from it in the space of a week
Job Requires: 10+ years of ligma.js and vanilla ligma.js
Pronounced "ligma jiss"
and thats exacly why i wanna as far away as possi le from web development and front end.
This lmao
Who said anything about frontend here? lol
"You've heard of 8 minute abs? Well heres my idea: 7 minute abs!" Thats what the t3/t4 stacks immediately made me think of
His monologue at the end is 100% correct. Literally got my current job by talking about a crappy hardware project I was working on to solve something in my life, nothing to do with the software job the interview was for.
Love the take towards the end of the video. Just do what keeps you coming back.
The "Don't write this down, it will be different next week" ten minutes into this insanity was so amazing. It is at times like this I am happy I am a C dev professionally. We just upgraded to C23 at work. With that we got like 4 new really cool things (some of which I had already learned to love from coding Zig in my free time), and like 2 interesting things that I am not sure what I think about yet. That is it for like 10 years. Then we just go ahead and write software (and try not to create any memory issues or UB, I know I know...).
The best way to write C is to write it in sex-pressions use LISP macros with quasiquoting to generate your C code and then if anyone gets suspicious show them the C-code derived from S-expression tree. Also the next best way is to write code in say Python/c#, and then run a Python -> C cross compiler, as you can edit your program while its still running in Python.
The solution is simple. Almost painfully so. Just use the same tools you have been using for the past few years. They work just fine, nothing is all that better or worse about other new stuff. The language is the same, everyone just adds their own flavor of abstraction on top. Ignore everything new and shiny, they just distract you from mastery.
If you use any npm package over a week old you get a million CVEs reported though. If you use the new ones the vulnerabilities still exist but they haven't had time to get reported yet so you can make snyk stfu for a few minutes.
@@georgehelyar I was talking about frontend JS, the framework craze is about frontend. And there aren't significant security concerns when designing an UI, all of that depends on the requests themselves which can be a completely separate matter. For frontend I like to go as pure as possible, the more bloat you add, the more that bundle size increases needlessly.
@@Leonhart_93my comment was mostly a joke, but actually if you use a security scanner like snyk, the number of CVEs you get in modern frontend is insane, because a hello world app is hundreds/thousands of packages. The joke was that it's basically impossible to get rid of them all but if you keep updating you can keep ahead of the scanner. Or just use jQuery or vanilla JS (or wasm)
13:00 "don't write this down, next week this is all going to change" had me spit my coffee out. Lmao!
I just find it fascinating that every single new JS framework is always just compromised in some way. Like, it works all good, but then you encounter your first "bubble gum solution" the framework has to use to do its thing. Then another. Then another. So much of JS libraries feel extremely hacky and like they're going to explode any second.
That's exactly a problem with an open source environment where everyone thinks "I can do better", instead of consolidating.
@@Leonhart_93 Yes /kinda e.g the npm has nobody who really looks and kicks out trivial implementation and then every one reference this implementation and then in the next iteration everyone creates their own packet manger which makes dependency hell worse. Its just so since roughly around 2008 web development is a buzzword and marketing circus unlike any other software development . Web development had since then the tone of that some devs want to cave out their own space in it with tools , frameworks and so on Open source make this very easy . Why they doing this ? Because a LAMP stack even a highschooler can use and would be for more then 90% of the internet good enough. Even Wikipedia one of the most visited sides still runs on it
This is the perfect analogy lol. But dam…how do you make a fast, optimized websites for people with MBAs that think websites are magic lol? You really don’t have a choice but to make a glass cannon website held together with some gum unless it’s your own website.
Very good advice. I've been building a project for the past three years. Sticking with it consistently has changed who I am so much that I can't even begin to compare what I knew starting out to what I've experienced in these years. I used to leave a lot of projects unfinished, jumping on many different tangents. But once I stuck to this particular passion project, it really started to pay off. (By the way, the project will soon go public and hit v1.0.0!)
I dunno, I just use Laravel. It has everything I might need. I just upgraded my projects from v10 to v11 and it took under half an hour.
How many thousands of files do you start with on an empty project? I have just a dozen myself.
@@jan.tichavsky In the new v11 skeleton, very few.
@@jan.tichavsky That's why newer versions of Laravel are moving towards a "batteries are opt-in and not included by default" type of approach. I am not sure if this is already the case in version 11 or if it will come in a later version. But Taylor Otwell already said that this is their goal.
@@Voidstroyer it is. 11 even removed api routing together with sanctum
Backwards compatibility and maintenance is so underrated. Though I hate wordpress backwards compatibility is what they do right. You rarely have to change your plugin just because of a new Wordpress version. Laravel does it right as well.
Really appreciate the reflection at the end. Very often I get the urge to really try to learn and know about everything in the dev world... and I forget that it's just as imposible as useless.
I've been waiting for another one of these since you reacted to the first one!
try picom for screen tearing?
that will never happen lul
he will switch to sway in February 2022
I can't believe he's not able to sort tearing out in the longest time. It's not that hard, just read the Arch Wiki, all the info is there, and work even on non Arch based distros.
I am embedded systems engineer and my new hobby is web apps. At work, I debug very low level issues, designing my own graphics pixel by pixel, etc... For my hobby project I use JS, React and Strapi. All I do in that project so far is to read documentation and figure out how to plug in things, what library to use, etc... I have fun, but I feel similar to 10 years ago when I was just using Arduino libraries, very far from knowing why it is the way it is.
re: rolling your own auth -- I did the same when I was just a hobbyist. Not hard at all, and I'd rather spend time learning the fundamentals than the idiosyncracies of some service like cognito.
The analogy of the boiling frog is perfect. To try to combat this I have been learning how to build website/apps limiting myself to tech that was available at a certain time period and progressively adding newer and newer technologies. Hopefully this will help me understand the "why" of each abstraction layer that has been added over the years.
"don't write this down it's all going to change next week anyways"
Link to video in description leads to wrong one (2 years ago, not the 2024 version)
I also watch this video before and I am watching it again becoz I was waiting for your review of this video
100% agree on understanding the protocol before using the first library you see Especially since there are now so many implementations
Thank you my good Sir for the eye-opening advices at the end of your video ❤
lol the end xD conflict .. solved .. struggle ..
Amazing advice. I’m a senior CS student and have been doing web dev on my own for around 8 months now. Abstraction will hurt you if you don’t know what is going on behind the scenes
Hot take I would rather go to a job with old technology but reliable, good documentation and community. Than a job which is unfamiliar with the technology they use. The one of problem with JS is that everyone wants to be the next innovator.
I find it funny but understandable how shortly after the quip about chat's views on Sentry, I get a Sentry ad.
idk its faster to ship and iterate so why not? tech stacks are part of coding, web has deeper stacks bc its the most used and needs to meet a lot of different requirements. a framework does the work of figuring out the right degree of modularity and separation of concerns, it gives you a way to look at a project that could otherwise be completely undoable with resource constraints
when i started programming, i thought I was goin to have my head down while typing out php or javascript to create websites. now, its more about picking the right package/framework and managing dependencies and breaking changes and working around package limitations. for reference, I learned on LAMP stack, then learned MERN.
My god this is exactly my life as a dev and I have only been working like three months in the industry. Like EXACTLY my life.
“We push on save” is my spirit process
Man I'm still waiting for the drizzle docs xD
To anyone looking to role their own auth, there’s an amazing chapter in “Let’s Go” that details how one would go about it using Go. After reading the chapter Auth just made sense and it’s no longer scary.
learning how stuff works is always a very good thing to do. be careful not to fall into the noob trap afterwards of rolling your own auth in production.
that video cemented me not doing modern web dev. sticking to plain js.
General knowledge is the best kind of knowledge because if you have it, you can add specificity easily, but to infer generalities from specificities can often be impossible or best case - really, really, REALLY hard. That's why most times someone manages to do it (like Newton, Einstein, Darwin ets.) they get immortalized.
What every interviewer wants to see: Passion
as a beginner hobyist with 1 month of experience, choosing a framework seems like the most vibes based decision you could make. Like sure react is the most popular but vue sounds cooler and thus wins. I havent gotten into any framework yet except rawdogging js,css,html but when i do its probably gonna be vue because it just sounds cooler, svelte sounds nice but difficult for some reason, the vibes are confusing if you will
zustand is real. We use it for work and I thought it was made up too. Apparently it's just German
just means "state", as in application state.
can confirm, it's just the German word for state (only this kind of state, not a nation-state)
That name is so meta 😂
It can also mean 'a (not insignificant) mess', or a deteriorated mental state. Make of this information what you will.
@@dragons_advocate Yes it can also mean that something was never meant to last 🤓 like in the video
"Prisma blocks the package, just like this companies HR Dept." 😂
Great video!
I’ve been teaching myself game and desktop app dev. JavaScript really scares me.
I once sat in a meeting with the Senior and Lead once. They were planning for a new project and they were discussing all these new technologies that I haven’t even heard of and some which I heard but haven’t used. Suffice to say, I was sitting there staring blankly at the whiteboard. I have never felt that out of place ever 😂
"Support any database...If you know how to write the adapter". That made me laugh lol
ending message was golden
solid advice
Two of my favorite KZheadrs in one video. What could be better than this?
"Dont write this down, next week all this will change. " 😅 this got me
The Boiled Frog analogy applies to Senior vs Junior devs as well. Very good analogy and also describes many of the challenges facing junior developers today. That's why bootcamps are in general harmful for training engineers as they tend to neglect the "why" of why things are done the way they are.
true. also, many unis suck because they don't actually require you to practice programming. there's no shortcut that lets you avoid actually getting your hands very dirty.
@@blarghblarghit's the opposite problem with CS degrees - CS degrees are almost always theoretical - too much time is spent on why, and very little on the how. It is like teaching fluid mechanics to some one training to be a plumber. the ideal practical course would have both - building programming intuition, while also supporting actual application of a trade skill.
@@OpinionatedSkink So sad no one yet actually made systematic education this way. Only people that could learn both are people that both go to uni and self-educate(or if they learn theory by themselves - self-education is enough, even though uni gives higher quality theory). Sadge.
Isn’t the danger with rolling your own user/password auth really subtle bugs? Things like timing attacks and stuff like that?
The ending seems so based!
I implemented OAuth 2.0 with Authorization Grant flow, for our company and it turned out all right,! No third part libraries or services
As a person that has been happily programming as a hobby for two-decades now and has exclusively worked on desktop apps and video games... this is why I don't care to enter the industry at this point. There's no paycheck that could ever be big enough to make me give a crap about all of this stuff. I just want to make useful programs and fun games.
What happens at a job is often also different of what job post states and recruiter checks.
Missed the live, was authoring t5
What does the "t" stand for in t5?
@@budkinThor
Was really hoping the end would be “The sigh-agen”
Rn im making a my own version of grep in go, it finds files, finds things in files. Can replace those patterns in files. Very fun. I hope I never become a webdev. Seems like most of the things you learn are inconsequential.
"making my own version of grep in go" "I hope I never become a webdev. Seems like most of the things you learn are inconsequential." Hm, interesting.. I think both of the things from the above 2 quotes are doing something equally inconsequential but are aimed at doing something because you like doing it. It may or may not help you. With that said, it's up to the person to fall into framework hell and get overwhelmed with it, not people who write the frameworks. You can get by and do just about anything with 1 or 2 libraries and ignore all of the buzzwords, and I think that's relevant in everything not just Javascript. It's important not to take meme videos literally. He's making jokes, and does with many different things outside of webdev/javascript.
Oh man, the moo tools hit me hard.
Finding something you actually want to make is the best advice you can get for learning and just coding daily. For getting a job, the thing you want to make should demonstrate your abilities to solve business problems. Since that's what they're hiring you for. If what you want to make also does that, best of both worlds. But if you're just learning or having fun, don't worry about that. Making a portfolio of projects the solve business problems is like lifting for a competition. Building projects to learn or have fun is lifting to be healthy. You do it differently for different purposes.
dude I'm pretty sure that's the wework in Berlin Mitte
I was wondering when you'd react to this. 😁
I would love to see Oauth done from scratch in these 50 lines of code. Not that I doubt that it can be done, I think it could be done but I've never worked in an environment where that was even an option. I think it would be cool basically.
Why 50 lines of code? Just do it in 200 and do it better.
Depends what you mean by doing oauth. Go to authorize URL then get code and go to token URL is pretty easy, but you need a server to actually do the hard part. Fortunately, that server can just be any oauth provider e.g. Microsoft or Google, and then you don't have to store passwords etc either.
@georgehelyar Pfft, first they have to show that there is ANY chance in hell they can replace even the bottom feeder devs. Nothing, and I mean nothing of what they've shown currently is capable of even touching 5% of that, everything is so very bad when they need to handle more than 10 lines of code at once.
"We push on save" :D
I only started 2 years ago, with AlpineJS. I was writing production code immediately since I was UX with devs that were slow and shit. I think picking something small that works and going from there is fine. Coming in immediately to "make app" is stupid, and causes you to overextend and pick random things that make no sense and you don't know what anything is for.
I started on Visual Basic, modifying the Snake game. I probably never would have gotten into programming if this was thrown at me.
'i wasted a bunch of time reinventing the wheel and why you should too'
Prime is hands down the best motivational speaker. Period.
JS under 1 meg? Use vanilla with minification on final product, CDN external libraries if any are used (preferably as few as necessary), and enable output compression on server config. Even better, minimize JS use to as little as absolutely necessary, including preferably replacing backend JS with something more performant and actually built for server-side processing.
Kai's recent interviews with actual founders are brilliant. Highly recommended.
For behavioral interviews, I started making everything up. It felt glorious
without a diagram just a simple list of the stack of ~5 or so libraries is pretty great. and the miracle is theyre all mostly interopable with each other
No matter what people say, reinventing wheels is lot's of fun and a great way to truly learn fundamental concepts.
We push on save
Hypothetically if I made a game engine/rendering system, how would that come across when applying for jobs unrelated to games/rendering?
Just by itself? Trash bin. :-/ Need a GitHub portfolio so people can see your versatility.
Serverlesslessness - brilliant! In reality, loads of job descriptions require frameworks first and then language knowledge.
i've been doing my oauth over half career.
Quasar mentioned!!
Hot tales are just “don’t be lazy understand your stack better”
My comment mentioned! Let's goooo!!
Thank god I did not took the JS/TS route when I was choosing between JS/TS and Python
Lol, "the InterviewerGen" at the end got the like. I don't even...
JS is just awesome!
I've been doing webdev for about a year and I don't feel like a programmer, I feel like a customer of the company with the programs I use, programs written by programmers
Primes take at 20:00 was spot on. The last 2 jobs I've worked within the last 4 years both ran .NET 4 + jQuery.
best of both worlds, thought the non programming person in charge humming the hanna montana inteo song
1st world JavaScript problem. Back in Soviet Russia ... Ahem back in Kenya, it does not matter how easy clerk, vercel so long as however is paying sees > $3 You got to make it work in a shared hosting plan , which in my experience, you roll out your own everything cause external libraries are not compatible with the Node env in cPanel But sadly the delusion from the west has crept into the east, had an internal who literally asked paraphrasing.. "How do you deploy without Vercel & do auth without next auth? Can't we convince the client to pay for Vercel?" I'm happy to report that we had a lengthy the talk about ssh, scp, ftp, pm2, cookies & sessions etc etc I'll have to put a good share of blame to code camps where in 6 months you graduate as a senior developer with dollar signs on your eyes.
"get the oauth library".. me: he talkin about fetch?
Tbh it's absolutely the same in the backend / devops world. Almost none of the libs, tools or frameworks I used 10 years ago are still available or a good idea due to continue using. Only language itself prevails but that doesn't mean much because it also changed.
and this is why i will literally in any language from scripting to embedded to oop to functional to assembly but never anything that has JS in it
damn I think I held a meeting like this a couple of days ago XD
Thanks flip, never doubt our love for you.
is flip just prime with a hat on?
I'm a JS dev with 15+ years experience. I rolled my own auth back in the day. The problem these days is (team) scale and people outside your scope. You ever tell a seccy with a scanning tool that their flag has no access to anything? Throw in a client that has a contract with security assurances rolled into it (which in reality are mostly just box ticks and have no real world significance, but they can see a red X.) In short I too understand why Clerk and oAuth are necessary :)
I prefer rolling my own auth. It's not that complicated.