Joel: Welcome to No Compromises. A peek into the mind of two old web devs who have seen some things. This is Joel.
Aaron: And this is Aaron. As a programmer, I find that it's difficult to use the word know. Not N-O, K-N-O-W. Know.
Joel: Oh, boy.
Aaron: Because when do you know something? You know what I mean? Like, when you're familiar with it, you've used it, you're a specialist in it. What do we mean when we say know, especially as technical people? So I can give you a really concrete example. I know TypeScript but I don't actually know it. I mean, I do but I don't. Do you know what I'm saying?
Joel: What I'm hearing... First of all, when you said as a programmer I immediately went to user story mode. I'm like, "Oh, what's the requirement here?" But, yeah, I think there's actually a term for this that I used to know, but I was researching it... You remember me, I had my whole phase on learning.
Aaron: Yeah. How'd that work out?
Joel: I learned everything. That's the man I am today.
Aaron: Except for this one thing that you're trying to tell me. All right.
Joel: Except the thing I forgot that relates to this. But no, there is a progression of knowledge mastery, would be the term that's used. Where there's points at which you don't even know how much you don't know, right? But to your point, I think when I say I know Laravel, I'm comfortable with it, I'm confident that if I sit down to use this tool I'm going to make good decisions because I've done it enough times. Also, I think because I've run into enough problems doing things the wrong way that I've built up these opinions of what the right way to do something is. With TypeScript, to go back to your specific example, I definitely know the syntax, I've used it on projects. But I haven't used it to an extent that I feel strong opinions... strong opinions isn't even the right word. But I don't feel like I have the well-worn paths like I do with PHP and Laravel.
Aaron: Yeah, I would agree with that. I think one of the things for TypeScript too is I kept looking at it as like... I think about TypeScript as the Webpack world, but now we've moved on to things like Vite and stuff like that. But it always seemed to me that it needed to be configured or something like that, now it's just another thing in my chain, another compilation step. I was like, "I get it." I've even went so far as defining parameters to my JavaScript methods as objects with all the keys filled in and their default values and stuff to try to get around using the tool that's made for this.
Joel: Just out of curiosity, did you feel any of that resistance with strict types or anything in PHP? Or because there was less ceremony it just... Is it the fact that this is a new tool with new configuration options? Or is it just the strictness of types and having to deal with those error messages? Or was it both of them?
Aaron: I don't know. I mean, that's a great question, I'm still even struggling with it now. It's like I know that using TypeScript for me is one Google search away, Vite TypeScript. That's all I have to do. And that's all and it's going to be a short article that's mainly ads that tells me how to do it. Like, I know I can do it. I just, I don't. And yet, do I know TypeScript? Because I've written it and I don't not understand it. I've written interfaces, I've written different things. As you can tell, I'm having a hard time talking about it because I don't know it. But should I say I know it?
Joel: Yeah. I mean, with an asterisk maybe. I don't know. I think maybe the bigger issue is it feels like an imprecise word, "Oh, I know this technology." Because there's so many different degrees of the person that attended a two-day workshop. Which was me at one point, I went to Front End Masters and I attended a workshop on TypeScript and it was great. I'm like, "Oh my goodness, you can do all this or that?" And then I didn't really know it at that point, I was familiar with the syntax. So maybe it is just kind of a generic word in English that doesn't really convey enough information. That's why I feel uncomfortable using it with something that we're not 100% technically proficient in.
Aaron: Yeah. I know that a lot of people will say, well, then you can just say you're familiar with it or maybe you should say how many years of experience do you have in it. But again, that's along those same lines as like I could say that I have many years of experience. Because I remember when they started applying TypeScript to Angular.js, I think even. It might've even been the first one. And I was like, "Wow, this is something I should probably learn," and didn't. But I could read it and see it in all those different things. So I'm still struggling with, is there another word we should be using? Like, I can read TypeScript, but I don't know it.
Joel: Are you fluent?
Aaron: But I've written it.
Joel: You know, we use that with spoken languages. I'm conversational or I'm fluent, or I am native. There's all these different proficiency levels.
Aaron: Yeah. I'm two months in on Duolingo on TypeScript.
Joel: That's right. I can say, "Where is the library?" in TypeScript. Well, it is an interesting topic. Oh, just putting the learning thing aside. Just focusing in on the specific technology of TypeScript, I should like it because I see the value of it. I really do like using types in PHP. You know me, I've gone nuts and done really strongly-typed languages, like in functional programming, and completely geeked out over that. I completely get it but here we are, where we have our Laravel standard project template that we use as a point of reference. We don't actually use it to bootstrap projects, but we look at it. And it's got all of our best practices and there is no TypeScript in that template. Because it's just not something we've gone all in on but I think we should. I think, Aaron, you, and I should commit to knowing TypeScript. What do you think?
Aaron: I mean, I already know it. There's a lot of anxiety and stress in our world. A lot of people are stressed out about specific things. Like, "I get my bills paid. Do I have a place to live? Do I have something to eat tonight?" But I don't think they understand the extreme stress that we went through as kids trying to use the rotary phone or type in the pad and not typing fast enough or swinging the gear fast enough that it timed out and said, "The number you've dialed is not," whatever. You know what I'm talking about?
Joel: I did not remember any of that until you started saying it, but yes. I don't remember it with the touch tone.
Aaron: Oh, I have flashback to that.
Joel: It was a thing with touch-tone?
Aaron: Yeah, I think so, right? I mean, unless you had fancy phones. You probably had fancy phones with your heated floors.
Joel: All right. There we go.
Aaron: But the touch ones that weren't... Because there was two types to touch and one where you could dial the number and then press call or the ones before that. So that's the one I'm talking about, like when you pick up the phone at a dial tone and you press the buttons.
Joel: So if you start dialing the number and then you forgot the four digits and you run and go get something and you'd come back and be screeching in your ear?
Aaron: I mean, so you clearly haven't done this because of the way you just described it. Oh, Joel.
Joel: What?
Aaron: You wouldn't type in the numbers and then run and go get the rest of the numbers. You would've hung up the phone by then because you know it's going to time out because it happens to you all the time. Because you're not that fast at these things because it's, I don't know, you're... It's before the internet, okay?
Joel: That's right. You forget how forgetful I am though. I make the same mistakes multiple times in a row.
Aaron: Yeah. I remember using the rotary dial phones and just knowing that you had a friend that had a zero or a nine in their phone number. You almost just didn't want to call them because if it was like 9009, I'm just like, "I guess I'm just not going to call them." Because for those who don't know, that've meant sticking your finger in the rotary thing and twisting it almost entirely all the way around and then letting it go, click, click, click all the way back. No time for that.
Joel: Just let that friend-
Aaron: You don't have time for that. You need some expert assistance applying TypeScript to your project?
Joel: As you just heard, we cannot help you. But if you need help with Laravel and PHP, we are your guys. Check out our website nocompromises.io.