Don't just get mad at some tech, dig in and learn!

Joel Clermont (00:00):
Welcome to No Compromises, a peek into the mind of two old web devs who have seen some things. This is Joel.

Aaron Saray (00:08):
And this is Aaron.
A couple days ago I told you, Joel, I don't know if you remember, "I guess this project's finally going to make me read the documentation," for this particular tool I was using.

Joel Clermont (00:25):
Yes, I remember that.

Aaron Saray (00:26):
I could pick on multiple different technologies that you sort of don't know or you think you don't like or whatever. But it was one of those situations where I was like, "You know what? I think I'm actually going to have to read the manual and get into it." Not just a tutorial or not just skimming through it and trying to find the things that I'm interested in.

Joel Clermont (00:48):
Not just the quick start.

Aaron Saray (00:49):
Yeah. I mean, quick start would be a lot more than I read to begin with anyway. I just kind of jumped into like, "I'm sure I could understand this. Give me the reference." Which kind of brought me back to this joke that we always have where every time there's a new major Laravel version, I read the whole manual. It used to be a day or two and now it's taking a week. I don't know if it's because I'm getting older or there's a lot more stuff in Laravel.

Joel Clermont (01:18):
Not a sustained time but just a little bit here, a little bit there over a couple days. But, yeah, it's grown. There's a lot of features in there now.

Aaron Saray (01:24):
It just kind of got me thinking about it. It's one of those things that I do to make sure that I stay a little bit more current with the technologies as I sort of identify something that... Like, if I really don't like it or if I can't seem to do it fast enough, I'm like, "Well, this must be something that I need to learn then."

Joel Clermont (01:48):
Well, I can relate to that. I mean, the pendulum has swung different directions for me because I used to be, "Oh, I just want to learn everything."

Aaron Saray (01:57):
I remember.

Joel Clermont (01:58):
I would kind of dive too deep into things that I just never was going to use. I won't drag out the laundry list of things that have littered my career of things I learned and got excited about and then promptly never used again.

Aaron Saray (02:12):
I remember. Oh, I won't name it, but I definitely remember one particular one where I was like, "You just need to stop." You're like, "No, it's the best thing ever."

Joel Clermont (02:22):
I know, I've learned. But there are times where, for us especially, we'll join a project and it might not even be a whole technology. It might be a package; it might be a way of organizing code. There's different things we bump into where you just sort of realize, "Oh, I don't have a lot of experience with this." Maybe for no particular reason other than I've just never needed it before but now, oh, I need to learn this. So, what's a good way to do it? Now you said you like reading the docs, that's not a secret to me because I've known you for a while. I don't think most people maybe take that approach. Maybe I'm biased and am I saying more people are like me? I don't know. Is that a thing people do? Think everyone thinks like them.

Aaron Saray (03:06):
Yeah. I mean, I know that people don't read the manual in the way that I usually do but I also think that manuals exist to be read. You know what it's like working on a project that doesn't have a manual right when you need it.

Joel Clermont (03:18):
Oh, sure.

Aaron Saray (03:18):
Then you're just like, "How does this even work?"

Joel Clermont (03:22):
Well, let me pick kind of a broad example but one I think that is an interesting topic. And that is JavaScript, the language. The reason I think this is a little interesting for... Well, there's two things. I think there's a group of developers, and I would maybe include myself in this, that just feel more comfortable doing backend work. "Oh, I just like PHP, I just like writing code and not thinking about the front-end," whether that's JavaScript or CSS, or all the browser quirks. The more I say this, it's like it's probably because I was burned starting at kind of the birth of the web and how bad it was. I just sort of developed scar tissue. But let's just take JavaScript and maybe CSS too.

Aaron Saray (04:09):
I would say it's more CSS with you, but okay.

Joel Clermont (04:11):
That's probably fair. I have an idea in mind, but what would you say is the "manual" for JavaScript? Does anything jump to mind? Like, if you were going to start a blank slate today and learn JavaScript, where would you go to "read" the manual?

Aaron Saray (04:27):
Well, I literally had the answer in place for CSS.

Joel Clermont (04:31):
Oh. Okay, go for either.

Aaron Saray (04:31):
But now I'm going to keep it on JavaScript. No, I don't want to even give you that answer. Well, I guess probably that book series, You Don't Know JS. I haven't read that in a long time but I seem to remember it was one of those open-source style books where you could read it or you could pay, or a combination of the two. And I don't remember, maybe it's a bad recommendation. Like you said, where would you go? That's when people ask, "Oh, how do you start to learn PHP?" or whatever. I don't know how you do that now, I know how you do that in 2000.

Joel Clermont (05:05):
Okay. Those books aren't quite that old but it was the era of when ES6 was coming out and there was all sorts of new concepts. There were kind of small books too that would go deep into one topic, but it wasn't like a 600-page book. I think they were more 50 to 100 pages or something like that.

Aaron Saray (05:26):
Well, when we say JavaScript too though these days it's usually people. It's rare that someone's like, "I need to learn JavaScript." They almost always say, "I need to learn React," or Vue or something.

Joel Clermont (05:35):
Oh, sure.

Aaron Saray (05:37):
So, you should definitely know JavaScript, the underlying technologies for all those different things, but you'll also learn some of that while you're reading the manual or following the exercises or the tutorials for React.

Joel Clermont (05:50):
Yeah, for a higher-level framework on top of it. Those books are good, I read them and I'm probably the sucker that paid for them too because that's just how I am. Like, "Oh, I can read it for free? I I'll pay 30 bucks instead. Why not?"

Aaron Saray (06:05):
No, no, no. I think when people write books, you should definitely buy their books. Especially if they're about validation.

Joel Clermont (06:10):
That's right as an author. But what I thought you were going to say is the Mozilla Developer Network because-

Aaron Saray (06:19):
That's what I was going to say for CSS.

Joel Clermont (06:21):
Oh, okay. Well, they have I think an equally good intro to JavaScript, right? That walks you through super basic stuff. Like, here's how you declare a variable but all the way through.

Aaron Saray (06:32):
I know they have that, but I could see in your face you were just drooling and ready for me to say that. So, I was like, "I'm just going to throw them off and say something totally different."

Joel Clermont (06:41):
It's okay. Well, now I get to say it and I get to sound smart.

Aaron Saray (06:44):
You're welcome.

Joel Clermont (06:46):
But that is a good reference and of course, that's free too. Although I think now, they have a pro version or something where you can pay for it. But that's sort of more just to support Mozilla in the mission. But I found those useful. I'm trying to think... I didn't actually finish reading it all the way through, I think I kind of sporadically pick and choose.

Aaron Saray (07:06):
Well, I'll share one of your stories that I'm not sure if that you want to share but I'm share it for you.

Joel Clermont (07:12):
I appreciate that.

Aaron Saray (07:13):
This is going to go back to CSS. A couple years ago when we worked together a lot on some front-end stuff. I remember you just getting, I wouldn't say angry, but annoyed at CSS and like, "How do you do this rule? And this is stupid, this doesn't make sense." And I'm like, "It does though. You just have to know how it works." I mean, I couldn't think of a better answer to, well, if you know how it works, then it works how you know it works, than when you know how it works you know how it works. I couldn't seem to give anything worthwhile. But like, "Oh, I don't like this." I'm just like, "Did you learn it?" Then I remember that you finally are like, "I'm going to take it next week, or month, or whatever it is, and do all these different CSS challenges." And Joel is the kind of person that likes to do little games online to-

Joel Clermont (08:03):
Yeah, I'm hands-on.

Aaron Saray (08:04):
... little hands-on learner and stuff. And I get that but he is doing all these different things, I'm just like, "Ugh, just read the book." But I mean, what book, right? But I saw that you kind of identified that as something that after complaining to me and knowing that I wasn't going to be one of the other backend developers that say, "Oh, yes, CSS is-

Joel Clermont (08:25):
That's right.

Aaron Saray (08:25):
Because there's a lot of people that do that. You can find people bashing things. I'm like, "No, you can't tell me something is the worst until you've really spent a lot of time with it." And I'm guilty of the same thing, I've felt that about certain things. That's why I was like, "You need to learn it first and then you can tell me if it's horrible or not." Joel took his time to start learning it. It was a beautiful thing to watch my little padawan growing into a full-fledged CSS development master.

Joel Clermont (08:49):
Yeah, that one I did complete the whole section in the Mozilla Developer Network docs, MDN. I couldn't remember if I did JavaScript, but that one I did. And honestly, it was super useful. I know on this podcast we often talk about mental models but that's what I was missing... There's a bunch of systems in how CSS was designed. You can argue, "Oh, that's dumb," or, "that's historically a mistake," or whatever. But whatever, if you understand it then there's far fewer surprises than if you go in there and you're looking at... because what I was doing, I think a lot of developers do this, is, "Oh, here's a list of properties, I think vertical align should do this." You know what I mean? You're trying to intuit based on maybe a property name or different things like what it should do.
Without understanding the mental model underneath, it about like, "What's margin versus padding?" That's a simple one but if you don't know that and you're just trying to guess at it through trial and error, yeah, it's going to be pretty frustrating. One other thing I just want to bring up, and I'm not showing a product here. But I've long had this era, this idea being a hands-on learner of building some sort of learning product to... There's all these different... there's science behind it, right? The brain science, how people learn is kind of... There's fundamental ways memory is formed and things like that. But anyways, there is a tool called... Oh, I'm going to forget the name now, I think it's executeprogram.com and it's awesome. It doesn't cover CSS, it doesn't cover PHP. They do have a module, a few on JavaScript.
But it's really well structured and because I like the teaching style. It's short little nuggets. Like, you're encouraged to not just binge three hours of reading something. You do one or two lessons, and then the next day when you come back before you start the next lesson, it's like, "Hey, do you remember this from what you learned yesterday? Do you remember this from what you learned a week ago?" And it sounds stupid but stuff that I would get tripped up on, I don't anymore. In fact, they have one on regular expressions and I feel I know regular expressions probably better than 90% of developers just because of that short little modules.

Aaron Saray (11:09):
You're more modest than a 100% of the developers.

Joel Clermont (11:14):
That's right, yes. No, I truly do. I think because it's a neat blend of talking about those concepts, like in Regex there's character classes, like. "Well, what is that?" But then it sprinkles in weird edge cases because anything has weird edge cases. In JavaScript, looping over an array in different ways will do different things. Just weird edge cases that can happen. But it's that mix of the deeper mental models and the way it's presented along with like, "Oh, just watch out for this, watch out for that." I like it. Anyways, I'll get off my soapbox and I'll buy it. I found that one really useful.

Aaron Saray (11:52):
Yeah. I mean, that makes sense for different styles of learning. I know that not everyone learns the way that I do too and not everyone should because, ugh, it's horrible. But I think that the whole point though of all this is that you kind of keep an eye on things that are challenging you or making you angry or whatever like that, and then determine if it's a real thing. Like, "Oh, I don't this because of X, Y, Z." Like, how I thought about Laravel facades for a long time because the name reminded me of... Oh, not the name, but the implementation on the surface reminded me of some static method stuff that I wasn't familiar with compared to how it really actually works.

Joel Clermont (12:32):
Oh, sure.

Aaron Saray (12:32):
It's the same sort of thing, is like once you took time to look at it you're like, "Maybe I still don't like this or maybe I do or whatever," but at least now I understand it. And it's the same thing so if you're running into issues with CSS or JavaScript or just PHP in general, identify that and then find a resource. Because, I mean, the last thing I'll say here, I don't want to go too soap-boxy as well, is when people say, "Oh, I can't find anything to learn X, Y, Z." It's like, "How hard did you try?"

Joel Clermont (13:06):
Right.

Aaron Saray (13:06):
Because the internet is now full of everything.

Joel Clermont (13:11):
Yeah. There's never been a better time to learn period but specifically learn technology, web technology. It's like there's an abundance.

Joel Clermont (13:26)
Aaron, have you ever in your life worn a bow tie?

Aaron Saray (13:31):
Oh, yeah. Absolutely, I have.

Joel Clermont (13:34):
Well, I have a question about a thought I've had about bow ties. But I want to hear the occasion first if you're willing to share.

Aaron Saray (13:42):
I mean, it was a clip-on.

Joel Clermont (13:43):
Okay, that's fine. It doesn't have to be a tie.

Aaron Saray (13:45):
When I was a cute little Aaron boy I would go to church and wear bow ties. I'd get all dressed up and have my dress shoes on, I'd have my dress pants, a pocket full of candy, dress shirt, bow tie, another pocket full of candy and then I was good.

Joel Clermont (14:06):
Okay. Well, I just had this thought the other day... and I wasn't thinking of the little boy bow tie but that's a good use case. But I'm thinking the guy wearing a tuxedo, a fancy black tie bow tie. There's two times I see people wearing them. You're getting married or you're a waiter at a restaurant. It just kind of felt weird to me, this elegant thing those two different occasions feel very different. And now you threw the little boy going to church and it's like, what is the common thread with this bow tie?

Aaron Saray (14:41):
Well, let us just remind everyone that not only do you have heated floors in your bathroom.

Joel Clermont (14:46):
Oh, come on.

Aaron Saray (14:47):
You go to restaurants where the waiters wear bow ties and tuxedos. How rich are you?

Joel Clermont (14:53):
Have you never been to-

Aaron Saray (14:55):
You need to stop buying our books, Joel has way too much money.
Consistency is key. Whether it's releasing more than 90 episodes without missing a single date like we have. Or working on your development project and making sure you have good test coverage.

Joel Clermont (15:11):
Well, if you'd like to work with reliable, dependable developers like us, head over to nocompromises.io and book a call today.

No Compromises, LLC