Introduction and Beginner's Mindset
00:00:00
Speaker
This week on Developer Voices, we're talking with James Q. Quick. He's a software developer for FedEx, turned developer advocate for Microsoft, turned online teacher for himself. He teaches JavaScript. He's got a YouTube channel. He does boot camps. He does all kinds of teaching for newer programmers, including teaching them why they might want to get into this industry in the first place.
00:00:25
Speaker
And I think he's got three things to teach us. Firstly, there's that beginner's mindset. If you're just getting started in programming, what do you need to know? What does James think your long term indicators of success are? What's the mindset you need?
00:00:40
Speaker
Second, if you're more experienced, you still need to understand that mindset. You're going to be working with junior developers during your career and you're going to forget what you had to learn in the early days. You're going to forget how much you needed to know to get started. And to help them, we need to understand that mindset. Do a good job of mentoring people.
JavaScript: Rapid Changes and Debates
00:01:00
Speaker
And thirdly, as James is a JavaScript teacher, and JavaScript is about the fastest moving target in the industry, we talk about his top libraries we should be taking a look at, what's new and emerging and interesting. And what does he think of the whole JavaScript versus TypeScript decision? So this week, let's take a look at the opening of the programming career
Work-Life Balance and Personal Branding
00:01:21
Speaker
funnel. I'm your host, Chris Jenkins. This is Developer Voices, and today's voice is James Q. Quick.
00:01:40
Speaker
Joining me today is James Quick. James, how are you? Hey, doing good. Thank you for having me. I'm very glad to have you. In between shifts being a new father. Yeah, we talked about this. I've got maybe a newborn about one and a half months in the room with me. So hopefully she stays quiet. It's very kind of you to join us when your time is at a premium.
00:02:03
Speaker
So you and I actually have something in common, I think, which is all the good username handles on the internet have already been taken by an American football player. Nice. Yeah. That was like a branding struggle for me. So James Quick is first and last name, and then my handle on everything is James Q. Quick. And exactly like you said, there was a football player.
00:02:27
Speaker
in the United States football being American football. And his name is James Quick, went to the NFL to play professional football. So his SEO, like he just dominated James Quick from an SEO perspective. And my middle name is Quentin, a little fun fact, people usually ask me like what that stands for. So anyway, I decided to embrace the middle initial and now everything brand wise, like across any platform and personal website is always James Q. Quick to make sure that I am unique enough to be found on the internet.
00:02:55
Speaker
Yeah, I'm Chris A. Jenkins for exactly the same reason apparently. There's a Carolina Panthers linebacker. I'm not even sure what that means, but he's Chris Jenkins and he looks nothing like me. It's like 240 pounds or something. Right. Yeah, it's funny the things we...
00:03:11
Speaker
We have to think about when you look at branding, and I've talked a lot about branding and the impact that my personal brand has had on my career. And the fact that your personal brand, or at least my personal brand, is basically the most valuable asset that I own. And it wouldn't be that if it wasn't unique enough to be able to stand out on its own. So embracing that middle initial has definitely been a necessary step along the way.
00:03:33
Speaker
Yeah, and it's nice that computer science, it's not just a computer science idea, having unique IDs for objects, right? It works for us and us millennials and generations going forward on social. Yeah, absolutely.
Path to Teaching and Advocacy
00:03:47
Speaker
So I've got you in to talk about this whole journey into programming, because you've been helping a lot of people take their first steps into programming, right?
00:03:55
Speaker
Yeah, it's funny. There was never a time in my life until starting my career, which I'm sure we'll talk about, that I ever thought I would want to be a teacher. And I've realized that's the thing I enjoy most about all the things that I've done over the course of my career. So I've worked as a technical evangelist at Microsoft more recently, a more familiar title with people, maybe a developer advocate, basically working in the community
00:04:20
Speaker
teach people about the product, teach people how to build things, just kind of be a genuine member of community and engage with them and earn trust and that sort of stuff. And that can be, you know, I speak at events, I do workshops, I do trainings, I do individual consultancy and like one-on-ones. So there's a lot of different interactions that I've had kind of through that professional route.
00:04:40
Speaker
And then I've also been super active in community stuff here in Memphis when I was in New York City as well, just kind of being there at meetups, seeing what people are talking about, and kind of showing up where developers are. And then lastly, I've taught two rounds of a bootcamp called Launch Code. And they're based in St. Louis in the US. And they go to different cities to kind of run their bootcamps, typically like city or state funding.
00:05:08
Speaker
And so we did one here in Memphis where I live and then we did one during COVID virtually for basically like Fayetteville, Arkansas, which is a few hours away. And anyway, again, I had no thought of wanting to be a teacher ever in my life or career until I started doing the things that
00:05:27
Speaker
are teaching. And it's not like spending eight hours a day in a classroom like you typically think. You can teach people in a lot of different ways. Even being active on social media is a great way to teach people because you can share your knowledge and insights and things you've learned with people all across the world. And that's kind of what content has done for me and then the ability to have deeper teaching interactions through teaching bootcamps as well.
Teaching Beginners and Career Success
00:05:49
Speaker
What's it like teaching bootcamp because it must be a very different audience to the usual developer audience that we're used to chatting with. Yeah, there's you get kind of a different different set of backgrounds for people. Obviously, like some people have had a little bit of interest in programming before. Some people maybe took a class in college 10 years ago when they were in school. But the majority of the people.
00:06:13
Speaker
That i taught were starting from absolute scratch that i know programming didn't really know what it was and they just kind of hear about like a lot of people do. How the promise of opportunity in tech right like this is this is one of the industries that. More and more so does not require college degree you can go you can learn on your own although that's a certainly a difficult thing to do but all the resources are there if you're able to find them.
00:06:36
Speaker
But going through a bootcamp, it's so impactful because in six months to a year, people can completely change the trajectory of their career, right? They're completely switching careers. So not only making the switch, but also looking at what does that mean for them long-term or long-term. That means they have much higher potential salary, much higher potential benefits than industries that they had been in in the past.
00:07:00
Speaker
So the impact of that is huge, but it's kind of fun. It's definitely a challenge to start with people that literally have done nothing before. And I think it's kind of a good reminder for us that have been developing for 10 years or however long we've been writing code. It's a good reminder for us what that perspective is when you have no idea what a string is, when you have no idea what a for loop is and what these random characters mean in terms of code. So it's kind of a good refresher to get back in touch with what it's like to be starting from scratch.
00:07:28
Speaker
Yeah, that would absolutely scare me, because I'm not sure I could go that far back to bed and explain what a string is. A string has been part of my lexicon for decades. It is. Yeah, it's really tough. It also is really cool too, though, because you'll hear as it clicks with certain students, they'll express that understanding in a way that you've never thought about before. So like the way that you and I
00:07:51
Speaker
no strings now, the way that you and I think we remember learning strings and kind of having that aha moment, they could still have that moment in a completely different way, in a completely different understanding. And that just goes to like, people think about things differently, they understand differently, they've learned differently. So it does give you a bunch of different perspectives from, in this case, like these boot camps start with 160 people. And at the end,
00:08:14
Speaker
you graduate like 50 or 60 like it's kind of a get a bunch of people in and bring as many people to the finish line as we possibly can. But that's that many different perspectives that you have at every given stage and to see them like
00:08:26
Speaker
build confidence along the way. Like as they start to understand some things, there's still a lot of imposter syndrome. That's what we talk about a lot. But you see like the confidence start to build like as they get something and they can build on that, right? Like they're building that foundation that then makes it easier to learn more and more. It's really just, it's a fun process, a really, really fun process probably to those two courses being like two of the most impactful things that I feel like I've been able to do in my career.
00:08:53
Speaker
That's incredible. Do you think you'll be doing more going forward? I don't know. It's it's a challenge. So the one that I did was launch code. It's completely free. So it's based on funding. So they don't have to pay anything. And it's part time and it's not during the day. So the huge benefit of this, the reason it's so can be so impactful, I think, is because people don't have to quit their full time jobs. And if you look at like
00:09:15
Speaker
I've never since college, I've never been in a position where I couldn't be working full time and through high school and college. I was never in a position where I couldn't be working at least part time because I like no one's just giving me money to live off of. So that's the really unique experience with launch code is they can keep their full time job.
00:09:33
Speaker
It's not five days a week. It's two nights a week, three hours at a time. And then obviously they expected to put a lot of time into homework when you can. But it was just really, really wild to see people juggle full-time job, multiple kids, et cetera. So again, super special opportunity. It is a challenge for me at the time, like working full-time and then me going and doing those extra hours at night and then the preparation and then doing like meetups on a Sunday to do like office hours and things. It was certainly a challenge.
00:10:01
Speaker
And there's a ton of other things that are kind of on my plate from a content perspective. And we haven't quite touched this, but I do content creation full time in the web development, JavaScript ecosystem space. So I've got tons of different things that I want to do. I think like a lot of people and figuring out like what is the absolute highest priority is a challenge. But I will say, regardless of formally teaching in a bootcamp,
00:10:25
Speaker
again, certainly an opportunity. But one of the things I do want to build up more is just my personal course content that I can get in the hands of developers. And again, there's a level of scale there of like, a virtual thing at their own pace, you can you can impact as many people as sign up for the course and potentially have interactions with them and forums and discord and that sort of stuff. So anyway, long story short, it's definitely an option. It's a time commitment. There's lots of things that I would like to do figuring out and prioritizing all of those, especially now with newborn.
00:10:53
Speaker
It's kind of an everlasting challenge, I think, for the next many, many years. And when you're freelance, it's like, here's a blank piece of paper, define your career and choose what time to subtract. I've had a little bit,
Breaking into Tech Without a Degree
00:11:08
Speaker
not an awakening, that sounds really cliche, but I've been really starting to think about what are those priorities a little bit more the last month or so. Anyway, it'll be exciting to see what the next few years pans out, how it pans out for me.
00:11:21
Speaker
Do you think you're going to end up more talking to existing developers or like aiming towards new people coming into development?
00:11:30
Speaker
Yeah. I think I've got kind of like a few different categories of things that I talk about and teach and preach honestly to people. And there's, there's like the breaking into tech conversation. So it's like, what are the things that you could be doing? How do you prioritize your time going back to like, if you're looking to get into a programming job, there's a million things you could learn. How do you prioritize? Like here are the things that are going to give me the best leg up to get that first job and a successful career in tech.
00:11:56
Speaker
So that is certainly a huge part of my target audience. I definitely think there's kind of like the intermediate content level for me as well.
00:12:04
Speaker
But the interesting thing for me is I don't write code full-time now. And I've actually only done that for a relatively small portion of my career, because I've been in this technical evangelist and developer advocate role for the majority of it, which is a mix of having the technical expertise, but also focusing on the public speaking, the working with people, the relationships, the community building. So I'm not, like, I think I'm a very competent developer. I think I'm pretty good at what I do, but I also just don't have the experience that
00:12:33
Speaker
people that have been writing code every single day, production level software have for the last 10 years, right? So I've got a different level or a different set of experiences. So I don't think I see myself doing very much of like the advanced content just because I rarely ever dive deep enough to do that.
00:12:50
Speaker
But certainly a lot of time goes into breaking into tech from a technical perspective and a career perspective and like marketing yourself and all these things. There's definitely a good amount of content that I think goes towards the intermediate developer and the advantage that I have of not doing software every day for one project, for example, is I get to try out a lot of different tools and platforms and frameworks, which in the JavaScript ecosystem changes every day. So I do have this perspective of
00:13:17
Speaker
Here's kind of what the industry is doing, even if I'm not diving down into the advanced level. You end up going broad rather than deep. Yeah, absolutely. And that's fun because I get to experiment with a lot of different things that most people don't have the time to do. I really want to ask you what's on there, your JavaScript radar.
00:13:39
Speaker
But before I do that, I just want to stay on this topic of people getting started. You said you get 160 people whittled down to 50. And I'm wondering, is there a pattern to the background, to the mindset, what's going on in their life? Can you predict who the 50 are going to be?
00:13:56
Speaker
Yeah, that's a great question. So one thing I will clarify just a little bit is the idea of whittling down. So it's not us whittling down. It's just, again, because it's free, because it's a time commitment on top of most people working full time, it's just one of the hardest things people will ever do. It's a significant challenge from... Yeah.
00:14:15
Speaker
Most adults, I think we're just, we're not used to starting from scratch. We're not used to being at the bottom of the totem pole. It's like when you go from in the U S like eighth grade is the end of middle school and you go into high school, you were at the top of the school in middle school and now you're going to the bottom in high school. But as adults,
00:14:30
Speaker
We're just not used to doing that. And so I think a lot of the conversations that are really important that I try to stress is to make people feel uncomfortable to know this is common. This is expected. This is one of the hardest things you'll probably ever do in your life. It's challenging for everyone. Everyone is going through it. Everyone is struggling, even if and when you feel like it's only you. So I will say like you kind of looked at or asked about indicators for people.
00:14:58
Speaker
And this is part of my job as an instructor and I think just community in general is to help put people in position to feel comfortable to do this. But the people who ask questions is a significant indicator. Because what happens is you get in the snowball of you have imposter syndrome. Again, we can talk about it. I can try to address that and say it's common blah, blah, blah as much as I can.
00:15:20
Speaker
But you get in the snowball and this was me in college where I wouldn't ask the question first. And then a month later, you feel like you're way too behind to be asking that question from a month ago. But the thing you're learning now is built on top of something you should have learned a month ago. Yeah, so the ability to ask questions is is always a significant indicator from my perspective of success for people going through that journey.
00:15:44
Speaker
Yeah. Yeah. I have a friend and an ex-colleague who's great at that, even like late on his programming career. He is the first person to raise his hand, ask a question and risk looking ignorant. Yep. And that's, it's kind of one career hack for me that anytime I'm in a position to ask a question and I'll give it specific examples in a minute.
00:16:07
Speaker
I will find a question, a relevant question to ask so that there is the perspective of I have a question I'm scared to ask, but I forced myself to do it because I know I need to. There's also this additional perspective of let's say we have like an offsite for a team of 60 people or 100 people and you're in person and maybe you're not in the same room with those people on a very regular basis. Maybe you're working remotely like a lot of us do now, so you never get to see these people in person.
00:16:33
Speaker
the more visibility you can get for yourself for your career. And you don't have to be really selfish about this. You don't have to like do a dance or anything. Just like participate in the question or participate by asking questions. So if they have an open question for VPs and directors, people that don't know much about you, forcing yourself to have something relevant to stand up and just be a face that they recognize, I think is a little bit of a career hack for me for from a visibility standpoint.
00:16:59
Speaker
So far from a question making you look stupid, you think it actually makes you look makes you visible enough to be there's a positive thing to risk looking stupid. Absolutely. Yeah. And the reality is most of us.
00:17:13
Speaker
most of us are much more self-conscious about we say than the likelihood of other people judging us, right? Like we are almost always our worst critics. We almost are always hype up and over-hype the fears because that's unfortunately kind of human nature for us. So putting it out there,
00:17:31
Speaker
I think to your point, yes, you're almost certainly not going to look like you don't know what's going on. It's I think more likely that it's just going to raise some visibility to you as an employee in front of an audience of people that like maybe making hiring decisions for next roles or promotion decisions later on. And so that was a big thing.
00:17:52
Speaker
When I went from a technical evangelist at Microsoft where I had all this public speaking experience and I kind of found my voice, I was confident having that voice. And I went to a traditional engineering role at FenX. That was my hack in my career where I spoke up all the time. And when developers would like
00:18:08
Speaker
They would grumble about things that they didn't feel was right, like timelines or like this person leadership doesn't understand what's really going on. That would be my opportunity to go and speak up. And having that voice got visibility and I think earned respect for myself too. And this has never happened other than me that I know of, although I'm sure it has, but I ended up getting a skip level promotion.
00:18:32
Speaker
from a software developer role to an architect role. That was a mix of software development, but also then being able to communicate technical concepts to technical and non-technical people. And so me walking in with that voice and being comfortable with it, I think was a big part of that working out for me.
00:18:50
Speaker
Yeah, I can totally see that because there's always this thing in companies where there's a missing bridge between the technology and the people that don't understand technology. I guess it's related to the boot camp thing, right? Can you communicate in a way that crosses that divide? So do you think that questioning thing is... I mean, I can imagine a lot of people wanting, like, considering a tech career.
00:19:16
Speaker
and thinking, oh, I don't have a, I don't have a logical mind or I don't have a background in, I didn't like math or maths at school or something. But the ability to ask questions, you think that's the real key.
00:19:29
Speaker
I think in terms of, I think, so if you're going through a bootcamp, if you're looking to go into a bootcamp, I would do some free resources online, YouTube, free code camp, et cetera, to see if it's something that's the least bit interesting for you. Like if you kind of go through some very basic tutorials, you're like, okay, I can kind of see that. And then looking at investing more time and energy and potentially money.
00:19:51
Speaker
I think after you kind of have some of that interest, ideally, then that ability to ask questions is a significant indicator. And the reality is like, tech is a very broad word. I think I overgeneralize this a lot where I say tech and a lot of people do and they mean programming jobs.
00:20:07
Speaker
But there are lots of roles that are not just programming that I think the visibility for that could really help people as they're going through this too. Because if you go through a bootcamp and you're like, okay, I kind of enjoy this, I enjoy aspects of this, but I can't see myself working in a basement 40 hours a week writing code, which is the stereotype, right? That's what we stereotype developers as.
00:20:28
Speaker
But if you look at where I am in my career and actually where I started my career, it was this really amazing mix of there is the technical side. There is the understanding of code. There's the writing of code for demos and certain things. But also I get to be with people. I get to speak. I get to create content. I get to do video. I get to do podcasts. I get to travel.
00:20:47
Speaker
I get to do all these things that you don't typically think about with a traditional software developer role. And that's just one other aspect. There's business analysts, which approach it more from a business perspective, but understanding the programming makes you better at your job. There's tons of people that come from design backgrounds that can do specifically UI, UX, or specifically front end. Like you can find ways to use those skills to open up lots of different opportunities and kind of pick which one of those makes more sense
00:21:14
Speaker
for you. It's more than just writing code 40 hours a week like we think is all that's available. Yeah. So coming from the other side of it where I've been like programming as a kid forever.
Bootcamp Graduates vs. CS Grads
00:21:25
Speaker
There's never been a time when I've not been a programmer. I sometimes worry, I'm going to challenge you with this until you think that people coming out of boot camps just are left. Okay, you've built one or two websites.
00:21:39
Speaker
And now you're left on your own, you're probably not gonna have the experiences that give you the depth and the routes you're gonna need. Even if you're not a full-time programmer, you're just not gonna build the depth of knowledge it takes to be a designer that codes or a communicator of code. Yeah. Is there any way through that?
00:21:57
Speaker
Well, I can, I can kind of start by countering from, from my experience. And so the alternative to that, I think is going through the traditional computer science degree. Like you, you have an additional advantage of, you said you've been programming since 10 years old or however long it was for you. I don't know. But there's typically you're comparing the traditional computer science degree with people that don't do the traditional, they self teach or they go through bootcamp. And so for, for me,
00:22:22
Speaker
I went to a top university in the country. I went to a top 20 university in the country, an amazing school. I went through the computer science program, so I had computer science every day for four years. And when I graduated and had interviews, I realized I really struggled to be able to answer pretty basic questions about object-oriented programming and other things. And the reason was I treated that like school. I treated it like grades, so I got really good grades.
00:22:48
Speaker
I got mostly A's in computer science. I did really well from a grades perspective, but I didn't appreciate what I was doing. I didn't really learn the content. I didn't really learn how everything fit together. So I think, first off, you're potentially comparing bootcamp grads with computer science grads. And there's definitely advantages, I think, of both. I'll come back to that in a second.
00:23:09
Speaker
But it's not just a comparison of which path that you take. It's down to the individual. There are people who graduate boot camps, who learn the boot camp content, but also just from excitement and involvement in the community and doing extra resources. They're learning much more than I learned in my computer science degree. A lot of that is down to the individual. It's challenging
00:23:31
Speaker
to not have that degree, to then be able to communicate all the things that you know, or to get visibility for interviews and things because you don't have a university, for example, on your resume. But the other aspect of this is that journey never ends. So in a bootcamp, I think you're learning much more practical
00:23:54
Speaker
content or programming content than I learned in college. So the advantage that I have is I did data structures and algorithms. I did a, I don't know, like I didn't take a databases class, but I did like those core fundamentals of here's how programming works and the actual science behind computer science.
00:24:16
Speaker
You don't really do much of that in bootcamp. But what you do do is you learn how to build websites, you learn to use source control, you learn to deploy websites, you learn about full stack applications, none of which I learned in my degree. Yeah, so these are these are two different sets. And I look at it from this perspective of either way you go, your learning journey is never going to end. As I took my first developer role,
00:24:39
Speaker
I was good enough to get the role, but the amount that I learned in six months of being on the job is exponential. And it's the same thing for people who go through boot camps, right? Like if you're not only doing it full-time, but you're also paid to do it full-time and you're surrounded by a team, ideally, that is there to support you and teach you and kind of train you, where you are six months into that role, you're a completely different person. You're in a completely different trajectory.
00:25:06
Speaker
So I think it comes down to the individual and what they've invested into whichever path they've taken. And I think from a company perspective, you have to look at like, here's where they start, but what's their potential? You can't just write someone off because they don't have the experience yet in certain things. Maybe you can, but be open minded to the fact that like, look at what they've done and the time they've had and the exposure that they had. Imagine what they'll be able to do in six months as they see what real world software looks like on a daily basis.
00:25:34
Speaker
Yeah, especially if you're hiring junior developers, which is probably what you're doing for bootcamp people, is seeing the potential and expecting to train them. Absolutely. And it's a big responsibility, too, from the hiring company perspective. You have to have in place mechanisms to support junior developers. And there are lots of companies that aren't very good at that.
00:25:56
Speaker
a particular interest for me when I was at FedEx was I love teaching again, going back to like the background that I had had. So I when someone would join, I love to do onboarding and whiteboarding sessions with them and explain what was going on. Not all companies have that. And so they have to be intentional to support junior developers, or you're going to be in this position where junior developers stay a year.
00:26:16
Speaker
And they leave because it's a terrible environment and they're not really learning what they should be. Yeah, especially in the early days, you have to be looking at what you can give to them as well as what you can get out of them.
00:26:29
Speaker
So one thing I often wonder, right, is I think there's something very noble about getting into programming to pay the bills, right?
Finding Fulfillment in Programming
00:26:37
Speaker
There is absolutely no shame in putting food on the table and if you can find a better career, go for it. How do we, as the people in the career and as educators, say, look, this is great. Not only can you earn a decent living, but look at all these fun things you can do with this power.
00:26:54
Speaker
How do we bring them across from it just being about money to realizing what they've actually got? Well, I've got a slightly different perspective than a lot of people have because in most people say, I think exactly what you said. Like if you get into tech and programming just for the money, that's great. And I do think that as well. But I also have the perspective for me.
00:27:15
Speaker
of work-life balance and happiness is number one priority for me. Now, I do have an advantage of being in tech. I can still have these other things like vacation and money and all these things and be picky about what my work-life balance and enjoyment is. But I do encourage people to at least consider that. I think that should be a part of
00:27:35
Speaker
the thought process going into tech is that your happiness is still very important as well. Ideally, you combine both of those, right? And that's why I like to talk a lot about, and maybe going back to answer your question of being in tech, being in programming is not necessarily just writing code 40 hours a week. I think showing people what different types of roles are, what different types of day-to-day obligations are and engagements are, and showing them that, again, it's more than just
00:28:04
Speaker
what you've been doing in your bootcamp, or at least it can be, I think that helps open up people to different perspectives on what their potential, what a job looks like. Yeah, yeah, okay, I can see that. Because one of the great things about programming is it can take you in so many different directions, right? Absolutely. And nearly all kinds of companies need programmers, you can be in all kinds of sectors as well. And I think
00:28:30
Speaker
Like being in, I call it again, like generally being in tech. I'll share a quick story about my wife. So she had been in hospitality for all of her career since we graduated. Her mom has been in hospitality for 20 years. And that's what my wife grew up seeing. Like she would go and work with her mom doing something at the hotel that she worked at.
00:28:53
Speaker
That's what she was used to. She was always very successful in terms of like, she was very good at her job. People had a lot of respect for what she did. They would come to her with questions. They would, I don't know, they would respect her a lot, but it was in the hospitality industry, which can be very limited in terms of money, in terms of vacation, in terms of honestly, appreciation from a benefits perspective.
00:29:14
Speaker
And so it, um, it ended up that there was an opportunity at the company I was working at at the time, all zero for an event, uh, basically an event plant events and sponsorships coordinator position on the team that I was on. And so she interviewed, it worked out and overnight my wife tripled her salary went from two weeks vacation to unlimited vacation went from no stock options. And that never even being a possibility to stock options and employee stock purchase program and all these things. And that's what I like to share with people is.
00:29:44
Speaker
you can probably find a way, even if it's not writing code 40 hours a week, you can find a way, if you do research and kind of stay with it, to break into tech and open up all the benefits that we talk about for money and general benefits and happiness and travel and all these things. You can find a way, I think. And so I love sharing that journey because it's not just from a programming perspective, it's just breaking into the right opportunity.
00:30:09
Speaker
And I say this a lot too, I think for people in their careers, whatever, whatever you do, whatever your job is, however much money you make, I can guarantee you if you search hard enough, you can find another opportunity doing a similar job, enjoying it the same, if not more, but also make more money. So like I talk about work life balance and happiness being my number one priority. There's no reason that money being second shouldn't be a significant factor. And those two things can't go hand in hand with each other.
00:30:39
Speaker
Yeah. Wow. I feel like we're getting, uh, we're sliding away from our usual topic of motivational speaking. That is, I didn't mention this earlier. That's kind of the additional, especially from a public speaking perspective, the additional like type of content that I see myself doing more of is more of the motivational stuff. Okay. Sorry for going down that rabbit hole. That's fine, but I am going to drag you back to tech because I have another core question for you.
JavaScript, Python, and Bootcamps
00:31:06
Speaker
Why is it do you think that nearly all of these boot camps focus around JavaScript or Python? Is it just where are the jobs or is there some other reason?
00:31:17
Speaker
Yeah, I think it's, I think it's just ease of getting started. So when I look at, I started in, in college having no experience and kind of chose computer science on a whim. Like I didn't know what to study and they asked and I said, computer science, sure. And I had Java. And so to work with Java, it's an object oriented programming, which you can't write a line of code without it being inside of a class. So just to,
00:31:39
Speaker
just to try to get to the point of what is a string or how to log something out to the console. You can kind of skirt past it, but you're at least exposed to this concept of a class. So at the start, you just kind of, okay, that code's there. I have no idea what that code does. And for me, I just ignored that for years, going back to not really appreciating what I was doing. The fact that it was a class, I just completely ignored and would go to write a function and do something in that without understanding what classes were.
00:32:07
Speaker
Yeah, so Java JavaScript and so not Java JavaScript and Python are both the ease of getting started is substantial and significant. And I think that's a really big factor. The other thing that's particularly useful for me about JavaScript is you can you can use it to do stuff really quickly like any browser.
00:32:28
Speaker
So it's much different than just logging something out to a console. That's valuable. But being able to see something potentially move on a web page, combining that with HTML and CSS. Yeah. Wow. Like that's significant. And the last thing I'll add about JavaScript is it can do kind of everything, right? Like you can do your core web development, HTML, CSS, JavaScript. You can do back end with Node.js. There's tons of different frameworks. You can do mobile. You can do IoT. You can do kind of everything with JavaScript. And so I think
00:32:57
Speaker
the ubiquitousness of JavaScript, in addition to the ease of getting started and the ability to kind of see, see interactions for the or see something happen based on code, you're right. Those are kind of the three big ones that I think about specifically JavaScript, Python having a lot of the benefits to just like ease of use and popularity. Yeah, yeah.
00:33:17
Speaker
I'll add one of my own to that list which is the great thing about JavaScript is you can share it with non-programmers so much more easily. I can send my code, I can send JavaScript code to my mother just by saying click on this link and she will run the code without ever knowing what running code means. And that's a good point because in college to do Java we had to download Eclipse and there was actually this one
00:33:44
Speaker
one homework assignment that I thought was passing just because my editor didn't call out any errors. Turns out it just, it wasn't running at all because of an error that I just didn't see and in Eclipse. So I like submitted this assignment and got a bad grade. And I was like, it literally doesn't, like, how would I know that it didn't work? Like it seemed like everything worked because it didn't tell me that it didn't. So there's, there's additional tooling and stuff that goes into setting up something like Java as well.
00:34:11
Speaker
Yeah, yeah. There's a lot of ceremony and overhead. That language in particular is famous. I sometimes think if you surgically removed my brain, the remaining spinal cord will be able to say public static void main.
Modern Tools and Languages
00:34:28
Speaker
So this leads us into the JavaScript world then, because it's one of those languages where it's constantly in flux and it feels like even if you programmed JavaScript three years ago, you kind of come back to it as a newbie again, right? So give me your quick top three things in the JavaScript world that excite you at the moment.
00:34:51
Speaker
Yeah, so one is a framework called Astro. And so Astro typically is kind of lumped into the static site generator category. So statically generating sites became very popular in something called the JAMstack a few years ago. JAMstack stands for JavaScript APIs and markup. And a lot of its priority was to build web pages statically. And so that means if you have
00:35:15
Speaker
Like a blog, for example, instead of the traditional way that it had been and the way it worked in the past was you visit a blog page. It would send a request to the server. The server would go to the database to get the content. It would create the markup, the HTML, and it would send it back to the browser.
00:35:31
Speaker
With statically generated content, what happens is your website knows at any given time, here's all the content. It can go and query all the content when you build it and deploy it, and then go ahead and just generate all of those pages as HTML so you're not having to go to the server after that.
00:35:48
Speaker
And Astro was kind of thrown into that category, although it can do everything that these other bigger frameworks can do. It can do API endpoints. It can do SSR, which is server side rendering. It can do all of these things. And it's really just, it's, they've got an amazing team. It's really optimized for
00:36:05
Speaker
certain use cases specifically for static content for performance that doesn't ship JavaScript to the browser by default has integrations directly or support directly for markdown and MDX for like authoring your content.
00:36:20
Speaker
So there's lots of really good things about Astro. I think it's really neat. I think what they've done in the last couple of years is really incredible. And I'm actually like, I'll do a shameless plug. I'm working on a course to learn Astro at Astrocourse.dev. So that obviously has been one of the things that's been super top of mind for me. Okay. And is that course aimed at like
00:36:40
Speaker
bootcamp level, post-bootcamp, regular jobbing developers? Yeah, so the expectations from my end would be kind of a solid foundation in HTML, CSS, and JavaScript. You don't necessarily have to have experience with a framework, I think.
00:36:56
Speaker
a framework experience would help something like React or Angular view or whatever it is. I think that would help, but not required. It is a pretty ground-up approach of some people are going to be learning what a framework does for the first time, but then you'll dive into a lot of the specifics and benefits of Astro itself.
00:37:14
Speaker
OK, see if you can persuade me quickly. I've been using Gatsby for my website, which is in the same category. Is there a reason I should consider switching? Yeah, there's actually a couple. So Astro does not ship JavaScript by default. So what happens with Gatsby and Next.js the same is
00:37:34
Speaker
It can do statically generated content, but when it sends that down to the browser, it's also sending JavaScript to do rehydration. And so rehydration is interactive JavaScript on the browser that can do things if you want or need it to, like adding comments or loading additional comments or loading additional features or whatever.
00:37:52
Speaker
So you still get the benefit of having that HTML that comes down. But with Gatsby, with other frameworks, typically you're going to have this rehydration JavaScript, which takes up some amount of space and time. I think some of us are really, really picky about that. And the reality is JavaScript can be sent to the browser relatively quickly. So in some cases, it's not a huge deal. But by default, Astro does not send JavaScript.
00:38:19
Speaker
In addition to that, if you need the JavaScript, you can do that and you can do it in a very selective way. So you can load JavaScript in specific parts of your application and you can also load it intelligently. So if I have a comment section where I want to load the comments dynamically for a blog post, I can have a component for the comments.
00:38:36
Speaker
that's on that page, but I can tell it to not load that JavaScript unless the user actually scrolls down there. Because what happens is a lot of times in websites, we load a lot of JavaScript for portions of our website that never get used. So you can actually intelligently kind of load in this JavaScript using Astro Islands. So this is the ability to determine where you can think of islands on a web page of being interactive JavaScript, and you can determine when and how to pull that JavaScript in if you need it.
00:39:05
Speaker
That's interesting ideas. It's like lazy loading on view based demand. Yep. Yeah. And there's different, there's different ways you can, you can eagerly load it. If you know, it's going to be something that people are going to come down to, or it's on the top part of the page or whatever, but, but yeah, exactly. Okay. I should have a look at that.
00:39:25
Speaker
And there's another one I'll throw out at you. So the way that you're able to do the interactive JavaScript, if you would like, is you can use existing libraries or frameworks. I won't debate the verbiage here, but you can use React components. You can use Felt components. You can use Vue components. You can use Lit components and a few other ones that I don't have as much experience with.
00:39:48
Speaker
But for me, the components that I've written that I needed more JavaScript interactivity with, I've used Svelte. I love Svelte. It's one of my favorites. And so inside of Astro, you can use kind of your favorite JavaScript library framework and take advantage of the Astro ecosystem while leveraging the existing experience that you have with those other frameworks.
00:40:08
Speaker
Okay, because I think Gatsby, which is my point of reference here, it's fairly highly wedded to React. Yes, absolutely. Why Svelte? Why should I consider that as my front-end framework?
00:40:20
Speaker
Yeah, Svelte is much simpler for a lot of things than React. So if you think about doing a traditional form in React, you use use state. And so you have to bring in React hooks to do that. You have to then kind of wire up that state to the,
00:40:39
Speaker
to the inputs to define which input that state is connected to. You then have to have an update function that says when this input gets updated, go in and update the piece of state. So there's a lot of boilerplate code to set up what is basically two-way binding of you have a piece of data. If the data changes, the UI changes. If the UI changes, the data changes, et cetera.
00:41:01
Speaker
And so the way you do that is you just define a variable inside of your component. And that thing is now interactive. So you can you can set up two way binding with one directive on an input in Svelte and not have to worry about additional use state or like update functions, etc. It just kind of works. And it's people will tell you this. And this is a big way that I would sell it as well.
00:41:25
Speaker
For using a framework, it's the thing that feels closest to HTML and CSS and JavaScript, like the Nilla JavaScript in comparison to anything else. And that is really pretty beautiful.
00:41:37
Speaker
Are we seeing the pendulum swing back from dynamic bindings across through virtual doms? Is it swinging back the other way again? Well, things are switching very frequently. I mentioned the idea of the JAMstack a few years ago being very popular, and it's had a really big focus on static content. And that hasn't necessarily gone away, but what we realized as an ecosystem when we were doing all the statically generated content
00:42:06
Speaker
They're still really significant use cases for leveraging the server as well and so we're now in that sense when you back to the server from a lot of different perspectives we have server side rendered content for things that are updated more dynamically or if you think about scaling out a massive blog you're probably not on every build build gonna generate.
00:42:26
Speaker
50,000 blog posts pages, right? That would make your build so much longer. So leveraging the server for that, leveraging the server for authentication, for example, to prevent users from getting to a page if they're not logged in, instead of loading that stuff on the client in client JavaScript, where you have that loading state every time. So you load an application, and it has to take a second before it knows in the browser whether or not you're authenticated to view that page. So you have that loading state.
00:42:55
Speaker
And oh, so going back to your question of potentially talking specifically about forms, I think we're also seeing a resurgence of using the browser for what it is instead of what we changed it to be. And what I mean is browsers by default handle form submissions, right? Like I mentioned this idea in React of doing a form submission,
00:43:19
Speaker
where what we're doing is tracking all the state inside of React and then making a fetch request to our backend, getting a response and updating the UI. But lots of frameworks now are going back to the idea of doing traditional form submissions to the server.
00:43:34
Speaker
Something like Remix really made this popular. Next.js now, or actually, sorry, at a higher level, React has React server actions. And so Next.js is leveraging that in a beta stage right now to have kind of your traditional form submissions like we had and used every day 10 or 15 years ago. But now they're doing it in a more modern way to take advantage of a lot of the things that we've learned. So there's definitely like,
00:44:03
Speaker
additions and benefits to what we're doing. But it is funny to see how we've gone from one side to another and back and forth, maybe several times and what we consider to be best practices as we get better and more opinionated along the way. Yeah, we definitely get more opinionated. Hopefully we get better. Yeah, maybe maybe debatable about the better but
00:44:25
Speaker
OK, give me one more recommendation from the JavaScript world, because this is, I think, even more in flux than front-end frameworks. What's the build tool we're supposed to be using right now? I've been using Yarn for years. Yeah, I've never been opinionated about this. I've always used NPM just because that's what I started with, and I never felt a pain point to go anywhere else.
00:44:49
Speaker
So I use NPM versus yarn and then from a build tool perspective, there's a lot of things like Veet is now the most popular thing. I think Veet is built on top of VS Build and they leverage
00:45:02
Speaker
maybe Go, but not JavaScript behind the scenes. So a lot of the build tools leading up into the last couple of years in the JavaScript ecosystem were also built in JavaScript. JavaScript for super performant things is not the most performant of languages that we could use. So Go and Rust are a couple of the big options that people are using to build developer tools to emulate what we already had, but much, much faster, which means your build times are faster, your dev environments run faster, et cetera.
00:45:32
Speaker
And i'll even caveat that a little bit more to the point of because i leverage frameworks that are doing that work for me i don't care like i don't need to know like i've done research just out of curiosity and having the free time to go and dig more into them.
00:45:48
Speaker
But I don't really need to know a whole lot about how Veet works or what it does, or that I'm using Veet versus anything else as long as it's updated and it's giving me the obvious benefits that other frameworks are. And frameworks are very competitive. They're iterating on how do we get faster? How do we get better hot module reloading and all these things?
00:46:09
Speaker
So for me, a lot of my perspective is I don't care because it's going to do that stuff for me and it's going to do that stuff way better than if I try to set it all of it up myself. True, true. But does that not naturally seduce you across to this language that's not JavaScript, but seems to be doing this thing better?
00:46:28
Speaker
It's just use case. Rust and Go don't have the popularity of JavaScript. They don't have the usage. So if you look at job opportunities, there's a lot more job opportunities using JavaScript. You can also use JavaScript to do a lot more things. We talked about this earlier. You can do it for front end, for back end, for IoT, for mobile, for desktop applications, et cetera. You can't do that with Go and Rust. And I won't over speak on what they can do because I'm not
00:46:55
Speaker
intimately familiar with them, but everything that that I'm familiar with is kind of either back in code and or code that can run on your machine like a build process, for example, like we kind of talked about. And so I think those are its augments, right? Like it changes
00:47:13
Speaker
It changes what the ecosystem looks like because the tooling is better, but it doesn't change my need and or desire and enjoyment of writing JavaScript for the stuff that I do. Just the surrounding ecosystem gets better because those languages enable better performance. That's fair. In that case, I have to ask you one last question, which is, um, what about TypeScript then?
Advocating for TypeScript
00:47:38
Speaker
What's your take on TypeScript?
00:47:40
Speaker
a huge fan of TypeScript. It's actually really funny. I had never written any JavaScript until about 2016. I'd never really done anything web related until 2016. And so my experience up until that point was C sharp and Java. So we talked about that a little bit earlier. Very strongly typed languages, object oriented languages. That was how I was used to writing code. And I started to break into JavaScript
00:48:06
Speaker
And it terrified me because you could especially at the time you could do whatever you wanted and the tooling wasn't there at the time to tell you not to you can just do it and then the browser would like it would work or wouldn't and you would find that out relatively quickly, but not as quickly as if the ID told you yeah, and so I remember using sublime and notepad plus plus at the time and the only IntelliSense that I would get.
00:48:28
Speaker
was it would give me IntelliSense for words that I had already typed in that document. If I created a variable and typed that word, I would then get IntelliSense for that later on or autocomplete, but I wouldn't have IntelliSense for the DOM APIs, for the back-end Node.js, libraries and APIs for NPM packages. There was none of that, at least as far as I knew.
00:48:47
Speaker
So it was basically like the Wild Wild West. And now we've gotten so much better. And a lot of that comes from even if you're not writing TypeScript yourself, the things that you use on a daily basis are using TypeScript. And so you're getting that IntelliSense inside of your browser or inside of your editor. VS Code is probably the most popular and that's what I use. Like you get a ton of IntelliSense and VS Code because the things that other people did, they use TypeScript or they define TypeScript types for the things that they work with.
00:49:14
Speaker
And then from a writing it yourself perspective, I don't want to underestimate the time it takes to adopt TypeScript. For me, it was easier because it was going back to things that I was used to in terms of C-sharp and Java from a strongly type perspective. For other people that have only written JavaScript, that's a whole new world. And so I don't want to undersell. It's a learning experience. It takes time to adopt. You get in situations where you're spending more time debugging
00:49:43
Speaker
TypeScript warning or error that you just don't understand yet upfront because you haven't done it before but
00:49:49
Speaker
the benefits of that, the IntelliSense, the error catching before you run code or the warnings in the editor before you actually run the code to say, hey, you can't pass that property here or you can't do that with this with this object because that function doesn't exist or whatever. Those things are super, super valuable. And for me at this point, anything that I do, unless it's unless I'm specifically trying to do it as quick as possible for a demo or it's a different audience.
00:50:15
Speaker
almost everything I do from a content perspective and things I would build myself are leveraging TypeScript. Nice. Yeah, I'm probably whenever I'm in the JavaScript world, I'm in the TypeScript world. Would you put that in front of a bootcamp audience or do you think that's too soon?
00:50:31
Speaker
I would, I think it's, again, it's all about priorities. I think TypeScript is definitely one of those topics that's in contention. Like it's a high enough priority to potentially be in a bootcamp. And then it's up to the bootcamp to kind of decide out of the things we could do that are reasonable and would be valuable, which ones make the most sense.
00:50:50
Speaker
And so the bootcamp that I taught the second round, we actually used angular and angular was one of, I think the first, like actually the first framework to have TypeScript just kind of be the default and angular is by, um, Google and TypeScript by Microsoft. And so.
00:51:06
Speaker
I was going to say that Microsoft like made it that way, but I don't know what made Google decide that it would be TypeScript by default. But anyway, it was TypeScript by default. And so they actually learned TypeScript or some of TypeScript by using Angular. But you think about like, what are all the different things that they could potentially learn? Do they go to back end? Do they learn about automated testing? Do they learn TypeScript? Do they learn about deeper UI things? Do they go deeper into source control? Do they go into data structures and algorithms? There's all these things.
00:51:36
Speaker
I wouldn't definitively say TypeScript should be. It depends on the overall curriculum and the time and the strategy and that sort of stuff. But definitely one of those topics that I think is big enough to be in contention to be in bootcamp curriculum. Yeah, and that whole course design is a whole other topic to get us. That's one of the things I find most fun about developer advocacy. So here's a thing I want to teach, but which parts do I teach and in what order?
00:52:01
Speaker
But we'll have to leave that for another day because I know we have fathering duties to get back to. So James, thanks for joining us. Absolutely. Thank you for having me. Cheers. Catch you next time. Thank you, James. I'll put links to all those libraries in the show notes, and I'll also put links to James's Astro course if you're interested in taking that and his YouTube channel if you want another place to subscribe to. You can check those all out from the show notes. We'll be back, of course, next week with another developer lending their voice to the conversation.
00:52:30
Speaker
I'll tell you a little production fact about this podcast. Every week I look through the list of recorded unbroadcast episodes and try and decide what goes next naturally. And I'm thinking right now we've got a really good one about building distributed systems and implementing your own distributed consensus algorithm for fun. I might go with that one just for the contrast, you know. This episode has been at one end of the rabbit hole, that one will be right at the other end. So maybe we'll do that.
00:52:58
Speaker
If you want to catch that episode, grab your pointers and jab at the subscribe button. If you've enjoyed this episode, then jab at the like button too so we know. And if you know someone who's thinking about getting started in software, maybe jab the share button for this one and send it to them. And then go and have a lie down because that's a lot of buttons and a lot of jabbing. Until next time, I've been your host, Chris Jenkins. This has been Developer Voices with James Q. Quick. Thanks for listening.