JS Party – Episode #218

Web development for beginners

featuring Jen Looper

All Episodes

Jen Looper from Web Dev for Beginners and Front-end Foxes joins Jerod and Ali to discuss the exciting (but also intimidating) prospect of getting in to web development in 2022! Where should you start? What technologies should you focus on? Is it better to go all-in on a framework or stick with the fundamentals? Stuff like that!

Featuring

Sponsors

Sentry – Working code means happy customers. That’s exactly why teams choose Sentry. From error tracking to performance monitoring, Sentry helps teams see what actually matters, resolve problems quicker, and learn continuously about their applications - from the frontend to the backend. Use the code JSPARTY and get the team plan free for three months.

Square – Develop on the platform that sellers trust. There is a massive opportunity for developers to support Square sellers by building apps for today’s business needs. Learn more at changelog.com/square to dive into the docs, APIs, SDKs and to create your Square Developer account — tell them Changelog sent you.

Fastly – Our bandwidth partner. Fastly powers fast, secure, and scalable digital experiences. Move beyond your content delivery network to their powerful edge cloud platform. Learn more at fastly.com

Notes & Links

đź“ť Edit Notes

Transcript

đź“ť Edit Transcript

Changelog

Click here to listen along while you enjoy the transcript. 🎧

Hello, hello, everybody. It is Jerod, your internet friend, and today we are talking web development for beginners. So whether you’re a youngster just looking to start your career, or someone more established, who’s transitioning from another industry, or perhaps you’re just somebody that other people other people often ask “How can I get into web development?”, we hope this episode will help you on that path.

I’m in a privileged position today, because I’m joined by two experts. One is our very own Ali Spittel. Hey, Ali, how are you?

I’m doing good. We got a ton of snow in Denver overnight, so… I’m watching the snow come down while we’re recording this.

Very nice. How much?

So I’m guessing it’s like three inches.

Very nice. We have not been able to enjoy hardly any snow in Nebraska this year, which we used to get dumped on regularly… So it’s kind of been a strange winter. Well, on topic, Ali - you’ve been an educator for many years, up till today. Can you give a little bit of your background just on the teaching side of things?

Yeah, for sure. So I would have been an education minor in college if I didn’t drop out to become a software engineer, and I did my shadow semester in a local middle school, teaching math… And I’m actually still a licensed teacher in New York. It hasn’t expired yet. Which is pretty funny.

[03:54] Actually, in school I was a teaching assistant for the Computer Science department, but then outside of that I worked at General Assembly for about three years, and at the end I was their faculty lead for software engineering in New York, and was also a distinguished faculty member. So I’ve taught a lot of people how to code, both through that program, and then afterwards through content creation as well.

So that’s kind of my teaching background. I’ve seen a lot of people transition into the industry, all different ages… And it’s really awesome to see those students now. I have one former student who’s on my team at work, and it’s just so cool to see that progression.

That’s awesome. It has to feel good to have somebody that you helped break in to actually be on your team with you.

Yeah, for sure, for sure.

Well, we are also joined by a very special guest, Jen Looper, who is a principal education developer advocate lead, which is a mouthful, but you can shorten it to PEDAL, I noticed… She puts the pedal to the metal at Microsoft, you might say… And also the founder of Frontend Foxes, which is a non-profit created to help women learn frontend technologies. Jen, welcome to the show.

Oh, thank you so much. It’s a pleasure.

And you’ve been doing educational things for many years as well. Do you wanna give a little bit of your teaching background?

Sure, yeah. It’s an interesting path, because it’s not so much focused on software engineering, but I thought that since I was 16, and I went to France, and I fell in love, I was gonna be your favorite French teacher. So that’s my background. I went all the way through and got my Ph.D. in French.

Oh, wow.

And through that we have to do a lot of teaching, we have to support ourselves by being TAs every day in class while you’re teaching these kids. I had the 8:30 section so I had the clear team, so lot’s of motivation throwers. Well, there used to be language requirements, so you had to; so you had a captive audience, but…

There you go.

I also taught little pre-school kids when I was in college. I earned extra money by being a teacher in the pre-school. My specialty is the 3-year-olds, the purple room, those are my kids. Right now I joined – well, I went through a software development industry as a career path for 20 years, and then I became a developer advocate within the last seven years. Through that process I realized that I’m particularly interested in creating amazing educational experiences for people. So like you mentioned, I’ve founded Frontend Foxes, which was formally known as Vue Vixens, and we designed a curriculum to help people who identify as women feel comfortable in the industry, feel welcome. We’ve opened a bootcamp, actually, during the pandemic, because we realized that running around to conferences and doing workshops wasn’t gonna happen anymore… So we relaunched as a bootcamp, and just graduated our third cohort. We’re gonna be opening a new cohort in the summer.

Apart from that, I love to teach all different levels, and I’m actually teaching in the computer science program at Boston University Extension School, which is called The Metropolitan College. I teach CS 601, intro to web development, HTML, CSS and JavaScript.

And then we tack on a little Vue at the end, because that’s fun. [laughs]

Gotta mix some fun into there.

So lots of educational resources today… I’ve done a little bit of teaching myself, or tried to at least, and it was probably like eight or nine years ago, maybe up to a decade in terms of seriousness, and I think the challenge is – there’s some things that have stayed the same, but there’s also new challenges today. I’m curious, from you two, who have a more modern perspective and have been actively doing these things, when it comes to people getting into web development in 2022, what challenges are people facing that perhaps they weren’t before, or maybe they’re just the same old challenges that everybody faces? What’s the most challenging part about web development today?

I’ll go ahead and just kind of jump in the deep end here. I think that there’s this double-edged sword of availability, and that’s a question of - everything now is online; everyone is online, everyone is doing everything, in giant programs and bootcamps and everything else, and it’s very hard, I think, for people to kind of focus their efforts and decide on what’s gonna get them from step A to step B in their career. Or even what career path they wanna pursue. Ali, I’m sure you have thoughts on this…

[08:07] Yeah, for sure. I think that especially like maybe six year ago one of the biggest issues was shiny object syndrome, with the frontend space evolving so quickly… And I think some of that has stayed around, too. People saying “Hey, I want to learn frontend development”, and then they start learning vanilla JavaScript, and then they see somebody on Twitter saying to learn Vue instead, and then they see somebody say React, and then they know Hello World in eight different frameworks, but can’t really build anything. That’s something that I think a lot of people have to deal with.

I think there’s just this inundation of information, too. There are so many different resources, so many different paths… Even the decision between a CS degree and a coding bootcamp and self-teaching. And then once you’re inside one of those paths, which permutation of that do you choose, of “Which coding bootcamp?” or which set of resources for a self-taught developer do you use? I think all of that is a very challenging thing for people getting into the field; instead of there being a very clear-cut path, there really is not.

Yeah, definitely. And I was thinking - to add on to what you were saying - that there’s also this junction between what’s taught in a standard four-year program of, you know, the battery of classes that’s taught, as opposed to what you’re gonna do in the industry eventually, or what bootcamps are doing because they’re a little closer to industry a lot of times. So I’ve seen folks graduating from extremely prestigious four-year universities and they don’t know how to build. It’s amazing to me to watch…

It’s sort of the paradox of choice, because we have now this abundance of choices, but now the actual choice-making becomes what blocks you, or what confounds you, or frustrates you. And I like this as opposed to the alternative before, because there used to be a dearth of resources, and what I learned in university was not applicable to what I was going to be doing back when I was at university. I went the four-year degree path, and I didn’t know how to build stuff afterwards… Well. Or actually much at all. And maybe that’s just me, but probably not.

I think it’s different strokes for different folks, but maybe you two who have these different backgrounds and have educated and tried and talked to a lot of other people, can you explain maybe as best you can what path makes sense for what kind of people, or kind of learners, or circumstances? I know there’s so many different circumstances. But is a four-year degree for a certain subset of humans, whereas a bootcamp is for another subset? Or is there a way you can help people make that decision?

Well, that is an 800-pound gorilla, I’ll tell you, because people are – especially at this moment in the pandemic, where education has been completely disrupted, the value is really being seriously questioned of how much to get into debt for these very expensive programs… And I also went through the four-year degree, admittedly in a completely different degree path, but… People are really starting to question how much they’re willing to pay for these kind of four-year programs.

I kind of feel if you are absolutely sure as an 18-year-old that you want to be a software engineer, I’m not sure that I can advocate that four-year experience. Ali, what do you think about this? This is maybe controversial…

Yeah, so the path that I always recommend to folks is to start with free resources and make sure that they’re actually enjoying programming first, and it’s something that appeals to them… Because when I was teaching at a coding bootcamp, I think a lot of the marketing was like “Hey, you take this class and then you become a software engineer.” And that’s not really how it works. You have to do the work, and you have to be willing to put in that time and learn the things that you need to within that course. So you really do have to know that you’re going to enjoy doing this. And it doesn’t have to be like “This is the love of my life. I’m so passionate about this.” Passion is overrated. But if you hate writing code, and you don’t understand it at all, it’s probably not something that you wanna spend the next 30 years of your life doing.

So start with free resources, see if you like those… I think freeCodeCamp - you’re wearing the T-shirt, Jerod… Start somewhere like that, and see if you like it first. And then from there you have three different paths. I think bootcamps are kind of the middle ground between being self-taught and a four-year degree, or even a two-year degree. There are a lot of programs that are doing like a master’s degree for folks who didn’t have a CS undergrad; so I think that’s another option as well.

I think weighing the options of what is the most important to you - is it getting to a job quickly? In that case, a bootcamp is probably the way to go, because you’re probably going to be able to learn the most quickly there. It’s gonna take longer to self-teach or take a CS degree.

But then there’s also the opportunity class too, of taking one of those. The cost is often prohibitive to people. There are a lot of really great free programs, but also some of them do cost a lot of money. I know that there’s this growth of income-sharing agreements too, which can often be predatory… And then if you want something really prestigious on your resume, probably going the CS degree. Unfortunately, the way that the industry is, a lot of companies still do gatekeep a little bit, and so for some companies and some roles, depending on what your goals are, doing a CS degree is going to be the way to go… Though I have also seen a ton of people be successful self-teaching, but you have to be super, super, super self-motivated in order to do that.

You’re not gonna have an instructor pushing you along, or anybody looking over your projects to make sure that you’re going in the right direction. You have to do that all yourself, and that can be really difficult for a lot of people. So if you’re going that path, I would highly recommend getting as involved in industry events and the community as possible, so that you do have somebody to look over your code and say “Hey, thumbs up/Thumbs down.” I think that’s really valuable as well. I don’t know, that’s my two cents, is that all of these are paths that are super-valid, they’re just different.

I am seeing a little bit of loosening in that requirement for the CS degree, thank goodness. I know at Microsoft we’re loosening that considerably, which is nice to see. I think geographic location is still a challenge for a lot of folks, and that’s just really unfortunate. So it’s interesting to see some bootcamps – with Frontend Foxes we’ve had two Africa cohorts and a LatAm cohort. So what we try to do is we have a local teacher to staff these… So we try to give opportunity worldwide.

But yeah, the bootcamp thing is really interesting. It’s been interesting to watch it evolve, because these predatory programs have kind of popped up, and they’ve actually hurt programs like ours… Because people will ask us, “So what’s the catch? It’s free, but what’s the catch?” But you have to be a little bit savvy and just kind of jump around and make sure…

Landing a mentor is really helpful, if you can find an industry mentor to kind of help bounce ideas off of, or give suggestions on your career path and maybe help steer you towards the right program for your learning style.

I think that is really good advice. Is there any actionable steps towards mentorship? Finding a mentor often is the hardest part of that whole deal. Actually, even approaching a mentor can be hard as well, but… Is there places where mentors go to mentor? How do you find that if you don’t know somebody personally?

Yeah, I actually was physically cornered in a conference… [laughter]

Well, that’s one way not to do it… [laughs]

No, it worked. I mentored the lady for a year. It was fine. [laughs]

Oh, it worked. Okay, that’s one way to do it, I guess…

[15:59] Yeah, yeah… It was alright. But of course, that’s easy to do in an in-person conference; you can talk to people and ask. It takes a lot of courage, but I think just asking… Nowadays I’m guessing – well, meetups are opening back up. Boston Vue.js is back in person. So honestly, I think that’s still the best option. If you can find a way to meet industry people and then say “Hey, could you spare an hour a month so that I could take a look at my resume, take a look at my LinkedIn, and at my projects?” That sort of thing. Go with a plan and try to place yourself in the right location.

Yeah. Ali, any thoughts on mentorship?

Yeah. I would say that oftentimes in my experience having one mentor isn’t the way to go. Instead, try to find a panel of people; and you don’t need to necessarily have this conversation, like “Be my mentor.” Instead, you can get on one of these Discord communities and Slack communities - there are so many of them that are out there - and you can ask them questions and get advice that way. It’s much less of a big ask for a lot of people to help you incrementally, rather than one person to do it all the time. I know that so many people cold-DM me on Twitter and ask for mentor ship, and it just would be completely unsustainable if I were to say yes to those folks.

My big advice always for people trying to career-transition is to think about your previous career and what you liked about that and what you didn’t like about that. So if you’re already working in the healthcare industry, do you like that industry? Because if so, you’re gonna have so much institutional knowledge if you become a software engineer in that industry once you transition. And so I think keeping that in mind when you’re looking for a mentor is really important, too.

What are the things that I want from my future career, and who is out there that has those things, and how can I get the best information from them, so that they can guide my career in that way?

Also, you don’t have to have like a year-long mentorship relationship with somebody either. You can just have a one-time coffee chat, and that’s a much smaller ask, and can be pretty high-impact as well.

It’s true, yeah. I think putting a little time-boxing around it is a smart idea. I’m sure you had the same experience, Ali… You know how much time that you have to spend. And as a mentee, making sure to say thank you. It’s always nice.

Yes, definitely. And make it a two-directional relationship, too. Don’t have it be like parasocial, parasitic type relationship. Give back in some way too, that’s like not monetary; share your learnings, share your advice. You have some valuable contribution as well; the more mutual that a relationship can be, the better. And I think that goes for networking in general.

Break: [18:50]

So we covered where to start with regards to freeCodeCamp, bootcamps, colleges, self-taught… And I think that was some good advice from both of you on that front. Hopefully, that helps some people out trying to make that decision. But how about content? How about tech? How about the decision-making process? Should I learn Ruby on Rails? Should I learn Node.js? Should I learn React? What about Angular, what about these frameworks? Should I start with the fundamentals? To framework or to fundamental?

I think you both have takes on this… Of course, Jen and the folks at Microsoft have a whole curriculum on getting started, so surely there’s some opinions there. But if you were to speak very plainly about the best path to getting started once you’ve decided, what kind of technologies or fundamentals should people be focusing on first?

It’s always a very interesting topic to think about, because there’s so many “What if…?”, there’s so many caveats and concerns and different paths that you could take. What we did at Microsoft is we all got together as a team, and so we’ve shared our experiences on what would be the best curriculum that we could create for someone who wanted to be a web developer. And it really turned into more of a frontend web development course, which is the web dev for beginners. And we decided that we weren’t gonna tackle frameworks at all. We weren’t gonna touch on even – you know, still a lot of curricula tends to lean on jQuery, some of these older techs… And I admit that I learned jQuery before learning the fundamentals of JavaScript, and I’ve regretted that for 20-something years, because – yeah, as a self-taught person with no clue what I was doing…

I was just gonna ask real quick, what do you regret about that?

I think that understanding fundamentals will help you understand why people are creating the frameworks, what problems they’re trying to solve; so it’ll give you a deeper understanding of what’s going on that caused these frameworks to be created. So that’s what we did… But the innovative thing we decided to do with that curriculum, other than the format, which is – you know, we did it on GitHub, we did it for 24 lessons straight through, kind of with this understanding that a college might pick it up for 12 weeks… We interspersed it with quizzes to warm up the brain and to kind of cool down the brain after each lesson.

We were really careful about inclusive language and visuals. I’m a visual learner; a lot of us are. So we wanted to have lovely sketch notes interspersed all the way through to make sure that we’re taking care of those kind of learners. But in terms of the design of the curriculum, we focused on fundamentals first. We have some lessons on getting started with JavaScript itself. But even before that, we tackled accessibility. So that was kind of an interesting thing. We led with accessibility, and that was the right decision, because it gets your mind into this idea that as a web developer your number one task is to design for everyone; to build for everyone who might access your website and your assets.

So we started with that, and then went to some JavaScript fundamentals, and then we started tackling projects. We went with a project-based approach for the rest of the curriculum. So you can build a little [unintelligible 00:23:27.24] you can build a typing game to practice event-driven programming. You can build a – let me see what’s the other one… There’s a space game that gets pretty complicated. It’s like Space Invaders… But by the end you’re building a bank. And it’s not like a little bank, but it’s like the squirrels’ bank for nuts kind of scenario.

So we quickly transitioned from these fundamentals and accessibility into project-based learning, heavy on the visuals, heavy on the challenges, the quizzes, the knowledge checks. That’s kind of the design we went with. It’s not true project-based learning, which is more open-ended, because it’s very hard to assess that sort of thing, especially when it’s not instructor-led… But that’s kind of how we really tackled it. And no on the frameworks for this iteration.

No on the frameworks so how long is that curriculum?

That’s 12 weeks, 24 lessons.

[24:20] Okay. So Ali, on your side, maybe even what happened at General Assembly; I’m not sure what their style was, or what you think about starting with – maybe you wanna get into a job yesterday, and the job says “Must know React.” So would you maybe start with React, and just learn it so you can get the job? Or would you slow down to the fundamentals? I’m actually torn on the subject.

Okay, so my advice always is to look at job descriptions as you’re starting to learn. So do a regional search in your area, look at the jobs that are most interesting to you and are most beginner or entry-level friendly, and take notes of the things that you’re seeing over and over again; if it’s Python, or JavaScript, or React… And you can kind of make a curriculum for yourself based off of that.

This is super-important, because if you’re living in like – okay, I used to live in Chicago… And if you are just looking at general-purpose programming resources, you’ll probably hear that jQuery or Ruby on Rails is long dead, or whatever. But in the Midwest - it’s lagging quite a while for a lot of the –

Probably a decade, yeah…

…big cities, right? [laughs] I used to live in Chicago, which is why I’m using that as the example. So the tech stack might look different than it would in San Francisco, or New York City, or something along those lines. So that’s one of my first pieces of advice, is to think backwards from that. Also, it’s very valid to learn programming not to get a job, but as an addition to your current job. My partner is in finance, he has no interest in being a software engineer, but he has to learn Python for work. I think that’s something that we’ll see more and more in the future as well. So I just wanted to preface that. But if your goal is to get a job, which a lot of people who are learning web development it is, look at those job recs first, look at what they’re asking for.

I also always recommend learning the fundamentals first. General Assembly is a full-time program, and probably much more than full-time as well, where you’re doing a normal 9-to-5 in the classroom, but then you’re expected to do homework assignments and projects on top of that…

Immersive is what they call it. Immersive.

Exactly, immersive. Or a bootcamp; it kind of implies a lot of work.

Right.

And that’s just what you have to do in order to learn in that short amount of time. But it starts with 2-3 weeks of the fundamentals, and then three weeks of either a JavaScript framework or a backend framework, depending on the program… And then either a JavaScript framework or another backend framework, and then the last unit is the same. So you’ve got four units, you’re learning four separate things. The first unit though is always the fundamentals.

I think that’s something that I personally think is important, is to know what a loop is first; to know what a class is. That’s going to help you so much when you’re learning that framework, because most of these frameworks are just JavaScript under the hood… So being able to understand what is that framework and what is the underlying thing.

That being said, I know that a lot of people have been super-successful in the industry going straight into frameworks, and that’s mostly what I did, too. I was a backend software engineer first; I was focusing mostly on data science pipelines. And then I was thrown into frontend development because my company kept having turnover with frontend developers. That’s the only reason I learned frontend stuff.

[27:54] So I was jumping straight into writing jQuery and React immediately upon learning frontend development… And I think that that’s valid as well. It’s not the path that I would personally choose if I were to go back in time. It’s not how you learn the fundamentals first… But it is valid. And I think bringing that up is important too, that different people have different journeys, and just because you went in a slightly different path than somebody else doesn’t mean that you don’t know that thing.

And even different starting places, because you got thrown into those frameworks, but you knew what a loop was. You knew what variables were. You were already a programmer.

I was already a professional software engineer, yeah. [laughs]

Yeah, exactly. So you’ve already heard all that. Sometimes when you’re like “Okay, these are what a variable declaration is”, and scoping of variables - a variable scope is a fundamental concept that most humans on Earth don’t know about.

Yeah, totally.

So you come to things at different phases, and some people have different backgrounds… Even somebody who is in finance has probably written some scripts and stuff, and then they wanna pick up Python - well, they’ve already started to figure out how to not repeat themselves, and they already tried to “Well, why do I keep typing this? Okay, I learned how to do a loop.” And then you come to Python and you’re like “Okay, I get it. Loops.” But other people are starting completely fresh.

I think it’s important to know your audience as well. In the extension school it’s a very different type of learner. Most of them are already employed, so they’re trying to boost their career by getting that master’s degree… But it’s hilarious, because I have a lot of Java developers who are like “Look at this crazy frontend stuff, Jen… What are you doing?!” [laughs] It’s a very different perspective. It’s a lot of fun. We have a lot of fun… Making fun of each other.

Well, it’s interesting that Ali brought up that lag in the technology motion, or what do you call it…? Relevance, or whatever it is, in the Midwest. Because when I was teaching – so we would do the fundamentals, HTML and CSS first; this is like the first week or two. And then JavaScript basics. But then we would try to go from there to kind of a full stack, and allow you to build your own dynamic website just at a basics level. And for that I used Ruby on Rails. This is back 2013-2014. And it went well, people learned… And in Omaha, Nebraska, which is where I am, we very quickly saturated the Ruby on Rails open positions market. We got people jobs for the first class, and then it was just like “Well…”

Actually, in Omaha, Nebraska back in 2014 if you were doing full-stack or even backend at all, it’s Java. Like, that’s what it is, it’s Java. So you’re teaching a technology that the market really hadn’t caught up to yet… So there’s definitely that mismatch. So I think that’s reallly good advice. I think, Ali, what you’re saying, if I was to summarize, is like you need to be very goal-oriented.

Exactly.

Like, what’s your goal is the first thing you’ve gotta figure out, and that actually drives everything from there.

Yeah. Something I would always tell learners is to have their reason and write it down, because learning is much more difficult than people think it is. It’s not this linear trajectory where you start gaining knowledge and just keep progressing. Instead, there’s lots of peaks and valleys, a lot of ups and downs, and really challenging parts, and bugs that you aren’t going to solve for quite a while… So having your reason written down is something that’s really valuable, so that you can keep coming back to that when you are having more difficulty. And I think having the tech stack that you’re going to need is an important piece of that as well, because at the end of the day if your goal is to get a job, and then you’re learning things that aren’t going to be applicable to that, it’s going to be pretty hard to keep yourself motivated. If you instead have this finished line in mind, I think that’s usually more productive.

Break

[31:43]

So in addition to the actual topic you’re trying to learn, whether it’s Python and Django, whether it’s the fundamentals of HTML, CSS and JavaScript, there’s all these other things… Like, “How much time do I spend learning my text editor? Should I be a VS Code wizard? What about Git? What about GitHub? When do I learn how to use GitHub? Is that important right away? Can I wait till later? And where do I learn these things?”

I noticed, Jen, that in your Microsoft’s guide/curriculum there is some GitHub topics in there as I scroll through the table of contents… So that’s just another – I mean, it’s a big one, is Git, and collaboration… But there’s like thousands of these things. “What about the command line? I heard there’s this thing called Deno… It’s like, they rearranged the letters of Node. Is that important?” There’s all these other things.

So when it comes to ancillary tools that won’t necessarily be like the main thing you’re building with, but they’re gonna be tools along the way, how and when do you decide to pick up those, or what to focus on there?

Yeah, great question. I forgot that we lead not just with accessibility, but we also have an early lesson on Git and GitHub, and how to use it, because we’re expecting people to be building projects, and they need to kind of be up to speed quickly with that, to kind of get it out of the way and get everything hooked up.

Interestingly, for our bootcamp we bumped that right up to the front, per our feedback; people were saying “We wanna get our tooling ready to go.” Because our bootcamp is only six weeks. It is very short, actually. Two lessons for six weeks. There’s only so much you can do. But they wanted to get their tooling straight and around, so we had this kind of suggested tooling. But again, of course, it depends on your stack. Per feedback, we also added a little lesson on the CLI, because we were starting to look at Vue in the last lesson…

So that is a tricky question. It depends on the length of your program, the goals that you’re trying to accomplish, the stack that you’re looking at… For our machine learning curriculum we decided early on that we’re just gonna be focusing on Jupyter Notebooks, and hopefully you can run them locally, so the datasets are gonna be small… So working with the VS Code team to get all those pieces in order. That was a major concern.

I think for short programs like ours, I think that minimizing the amount of toolchain that people are expected to master, and focusing on the concepts I think is a little easier… And also whether it’s instructor-driven or not is another thing that they could have. So… Lots of concerns.

I know when I taught it was like, “Here, we’re getting going, we’re coding stuff. Now share it with everybody else”, and it’s like “Let’s take a day off and talk about Git.” And then I said “Here are six things you need to memorize.” And it doesn’t matter how it works. Don’t even worry about how it works. Just memorize these commands and type them in, and everything will be okay. And it was mostly true, for at least a short duration, because if people got stuck, I could help them through it. But Ali, what’s your experience, specifically with Git and GitHub? Because Git is a very complex, or – it’s a hard thing to wrap your head around. It’s a power tool, let’s just call it that.

Yeah… I saw some tweet at some point that was like “Git is this thing that on a daily basis you have three commands to memorize that you use over and over again”, but then under the hood you realize that it’s this complex graph data structure with an immense amount of things that you could do with it… So Git is super-complicated.

What we always did was day two we’d have a basic Git and GitHub tutorial, so like add, commit, push, and the very, very fundamentals… Because they would turn their homework in via GitHub. And I think things like that where you are modeling the real world as much as possible within the classroom is really valuable. Submitting a pull request every time you had to submit your homework, so you got in that workflow. I really value that.

[36:13] That being said, Git can get really complex, especially when you’re working with multiple people… So we would have a group project near the end of the program and we’d do another lesson on Git then. So they got to have that knowledge reinforced, but weren’t super-overwhelmed by it right at first.

So I enjoyed that piece of it, but I also think that there’s some value to need-driven learning. And hey, I don’t know everything about VS Code, but I’m now realizing that my life as a developer would be easier if I had Git stuff in-line, or something like that in my text editor, and then learning that as you need it, instead of pausing to learn about it at the very beginning, if it’s not something that you need yet, especially when you’re self-teaching.

When you talk about need-based learning, it makes me think about need-based development in the first place, and I think the power of having a real project to be working on; even if it’s a fake real project, but one that you actually care about. That seems like something that helps people get over the hump. Because one thing that is true about software development in general, and web development also, as a subset of software development, is that it’s actually really hard, and we need to just say that… Because you’re gonna hit bumps, and you’re gonna hit walls. And some people will power through those walls and other people won’t, and that’s just the way life is. But I think having something real that you want to exist, or that hopefully somebody else wants to exist and you wanna altruistically do it for them, or whatever those circumstances is, having a real project that you want to see into the world helps you get through those moments. Because you will get stuck, you will not know what to do, you will accidentally delete a file and not know the Git command to bring it back… All this kind of stuff is going to happen. And that kind of stuff can just be a deal-breaker, unless you’re just driven by something that’s extrinsic to that. Do you guys think that’s true?

Yeah, I think that this is the way that we’ve always focused our teaching at Frontend Foxes. The goal of that program is really to make people visualize themselves as a developer, and think about “Maybe I could do a thing. Maybe I could use that thing to build on another thing.” And we’ve had tremendous success with grandmas coming in and learning, or somebody’s girlfriend, some famous developer; it’s like, “This is my girlfriend. Teach her something.” I’m like, “Okay. Honey, sit down.” [laughter]

I love it.

And we use tooling to make that happen. We use CodeSandbox. So that’s a brilliant tool… You don’t have to worry about install fest at the beginning of every workshop.

Right.

After an hour-and-a-half you’re gonna have a pet liking app done in Vue, and it’s a beautiful thing. And here’s where I break my rule about teaching fundamentals… [laughs]

You know, with our Frontend Foxes content it was always Vue. Now we’re changing a little bit how we run the bootcamp. But initially, because we were tightly connected to that community we built a pet liking app with Vue. Here it is, by the end of it you’ll have a CodeSandbox link, and you can tweet about it, you can share it, and people will like it.

Well, there’s something to be said about an appetizer, right? Something that shows you “This is what’s possible” in a short amount of time, and then it gets you excited and gets those wheels turning, and maybe you’re willing then to take the next step. So in that regard, I think it’s not like breaking your own principle to say “Well, we didn’t talk about variable hoisting”, but it’s like, in a matter of an hour-and-a-half build something that’s pretty cool… And you don’t know exactly how that thing works, of course; you don’t know anywhere near exactly how that thing works. But it does work, and it is yours, and that’s empowering, and usually it’ll excite the people that it excites, and get them to take the next step.

[39:50] Something I see a ton with new learners too is they get caught in this cycle of doing a tutorial, and a tutorial, and a tutorial, without actually building anything, and they feel like they have to understand the topic a hundred percent before they move on… And that’s not really productive, because the difficult part about programming is not the syntax or even all the conceptual stuff, it’s the problem-solving and putting all those little puzzle pieces that you’re learning together, to build something functional.

So I very much agree that you should always have a project going, and that you shouldn’t go more than one or two tutorials without implementing your knowledge from that. When I was teaching full-time, something that we always did was “I do, we do, you all do, you do.” So what I do is I talk about a concept. Or I show them diagrams; I code something myself. We do is we do a code-along, so we all build something together. You all do is doing a group exercise, because I think it’s really valuable if you’re in a classroom to learn from other people in that classroom. And you can mimic this in Zoom as well if you’re doing something virtually. You can do breakout rooms and assign people there. And then the final part is to do it individually, so everybody can master that concept themselves.

So always be building something, and you can really implement this yourself too when you are learning by yourself as a self-taught developer, too. So you can start with a blog post on a topic, and then watch a YouTube video on it, code along with the person, then you can build a project… And those steps are going to bring you so much further than just doing a tutorial and not digesting the information from it.

And then maybe hackathons play into this as well. You can follow up on your intermediate learning by joining a hackathon, and then working with people to “you all do”, to all work together and create that thing. It’s great practice.

Yeah, especially if you’ve been isolated, having other people – I mean, you learn so much just by coding with somebody else, even if they aren’t ahead of you in the game. Now, if they are ahead of you, you’re gonna learn a lot. It’s like playing a sport with somebody on your team, or even against you, who’s just way better than you. You just have to learn fast, and so that happens, I think, at hackathons. I’ve certainly learned a lot myself in that way. But yeah, collaboration and working in a group…

What about the people that say “I don’t have a project. I don’t have any ideas. I just wanna be a programmer, but… What do I build? I don’t know… A Facebook for dogs? That sounds lame.”

No, it’s not lame. Maybe that’s amazing.

Yeah, it could be cool… But even that, like – let’s just hypothetically say “Okay, I wanna build Facebook for dogs.” I would suggest no, because if you think about what Facebook is, it’s like 35 web projects. Maybe scope it in a little bit. So you need some help with scoping, and having it be something you can achieve. Because on the other end of that motivation for a personal project is just the utter despair that you’re in when you realize “There’s no way I’m ever gonna get this thing out that.” That can kill your motivation, too. So Ali, what do you tell people “What do I build though? I don’t know what to build. I’ve got nothing to build.”

That’s a great question, and it boils down to the individual a lot of the time. I think you hinted at this earlier - building something that you care about or are excited about will make it so that you stick with that thing… So if you’re building just a Twitter clone after Twitter clone – to-do list after to-do list, which is a very common one, it is going to get boring at some point. So instead maybe having a big project that you’re working towards, that you care about, for some reason. Maybe it’s an app for a charity that you care about, or if it’s an app for a hobby that you have, that you care about. Or some application that you had the idea for but it doesn’t exist out there. I think that stuff can keep you much more motivated than building just like another to-do list.

It’s funny, I just had this conversation at the Boston Vue.js meetup… The gentleman was saying “I don’t know what to build”, and my first question was “Well, what are your hobbies? What do you like to do? Can you turn that into an interesting app?” So we talked about his photography interest. But in terms of motivation, that’s an important thing. I actually also pointed him towards Code for America, because maybe you can join a Code for America cohort and then work with people to really solve problems. These folks are building real applications. In Boston they built an app to show where fire hydrants are, because when it snows, nobody can find the firehydrants, so they geolocated them and…

…made instructions on how to dig them out. So this kind of stuff. And this is useful. It sounds a little bit silly, but it’s actually quite useful when your house is on fire.

[laughs] I like that one. So that leads to another question which broadens things a little bit… There’s also open source. So if we zone in on the subset of folks who are trying to get hired, and whether they’re transitioning or brand new, I guess that doesn’t matter so much. But there’s different things that they’re told, or that they think, and one of them is like “Okay, I need to work on my GitHub profile. I need to have open source contributions. I need to have a cool dotfiles thing. I need to have good Twitter threads.” Whatever these things are; some are more important than others. [laughter] Where does open source fit? Is it something that you should just put off and forget about for a little while? Should you be involved in open source from the start? Because it’s an intimidating world, open source. It’s a big one.

Yeah, there’s a lot you can do in open source. I’m hesitating on this question because there’s this push for a lot of communities to go forth and contribute. And it’s like, the amount of spam – because I manage these huge repos now on the Microsoft account, so that’s a big, prestigious thing, to have your contribution accepted into a Microsoft repo. That’s nice. But things like Hacktoberfest… Fortunately, they allowed us to opt in and opt out of Hacktoberfest, but it’s extremely rough for maintainers when we get loads and loads of low-quality contributions.

What I’ve pointed people towards is looking for folks who are looking for translations. Our Microsoft student ambassadors are from all over the world, and they’ve been really helpful in helping us with translations on our curricula. So that’s a nice way to contribute. Or to go and do a check review of it, and put your name on it as a reviewer. Or to help us write some of those quiz questions, those kinds of things.

So I think open source contributions are awesome, but you kind of need to look for where your help is – I wouldn’t say needed, but where people are looking for help.

My thought is that when you are a professional software engineer, you are reading code so much more than you are writing code, and you’re very infrequently working on a greenfield project. A greenfield project is a project that you’re starting from absolute scratch on. You get to run npx create-react-app or whatever… You’re rarely, rarely doing that as a professional software engineer. And when you’re learning, it can be really difficult to have projects to look at. So even if you’re not gonna contribute to open source, I think testing yourself to understand an open source repository and be able to navigate the code within there and make changes to it is a super-valuable skill to have, because in the job you’re going to be much more working with other people’s code than starting from absolute scratch. So I think it’s a really valuable skill from that angle.

When I was working at a coding bootcamp - and maybe this is an idea for instructors or learners to do this themselves - I would do like a musical chairs app project where everybody would have four hours to work on a project, and then it would rotate, so that project would be given to somebody else, and they’d have to continue it on…

Oh, no…! [laughs]

…and then we’d trade it off to somebody else again. That makes it so that you actually have to document the project and integrate yourself onto somebody else’s code… Because if you’re just reading your own code and adding to it over and over again, that gets you so far, but you’re not gonna be doing that in the real world most likely.

You can also look for the “Good first issue” tags.

Yeah, that’s another good one.

Very cool. Well, this is coming near the end… Any final thoughts? I know we could probably talk about this subject on and on, just as people can learn web development on and on… Of course, we’ll link up the web dev for beginners course that is put out by Microsoft totally free, right, Jen? There’s no catch, you don’t have to–

[48:03] Yeah, no catch at all.

…you don’t have to have an Azure account, or something. It’s just out there.

I take unmarked fifties. Nah, I’m just kidding. [laughter] It’s all MIT-licensed, and this is interesting, because folks are taking it and spinning it into their learning management systems, and teaching it. We also have machine learning for beginners, data science for beginners… AI for beginners is coming soon…

…and then the IoT for beginners is also available. That one is really, really detailed. If you love IoT, definitely go to IoT for beginners. It’s super, super-cool. The theme is farm to table; so you start with the soil moisture and air quality, and you get all the way to cooking. It’s really fun.

Very cool. I’ll also take a chance to give another shout-out to our friends at freeCodeCamp, who have (I think) done a service to the world by putting out tons of awesome curriculum for free, as well as - if somebody needs the motivation and already likes video games, they now have a role-playing game in which you can learn development by playing an RPG, which sounds super-cool and motivating if you’re already motivated to play video games… So check out freeCodeCamp.

Of course, there’s lots of other resources out there, but those are two good starting places. And like Ali said, I couldn’t agree more with this - try that stuff first. Low-cost, zero-cost… Find out if it’s something that interests you. Because I think everybody should try programming, and I think everybody should understand how computers work, to a certain degree, and how the internet works… But I do not think software developer is a career for every single person; it may not excite you. I know we like to say “Everyone should be a developer.” Well, everyone should try development, I think, and find out if it’s for you. But you might as well do that for free, if you can, and then pick your path from there. Ali, any final thoughts from you before we call it a show?

Yeah, I would so agree with that, that at this point in history, even if you have no desire to become a full-time software engineer, having programming as a skill, an additional thing on your resume or an additional thing that you have in your toolset is so valuable. That’s how I became a software engineer, is because I automated my old job when I was not coding as a job. I was doing data sciency, manual stuff. So having that skillset can help you so much, even if it’s not something that you’re interested in doing full-time.

We’ve had a few people write in to us over the years who are not programmers and still listen to our shows, and said “Hey, I’m a layer, and I automate all these lawyery tasks, because I learned how to write some shell scripts, and I learned a little bit of Perl… And now I’m like a super-lawyer, because I can get my job done so much faster than everybody else, because I know how to automate my machine.”

We have a friend who’s an actuary and has contributed to the Changelog.com transcript repo because he learned to program, and he’s a better actuary because of that… So any tangential or related profession, which - hey, let’s face it, now they’re all tangentially related to software - you can have super-powers in that line of work by learning these things, even at a surface level.

And learning these software packages well can kind of enhance your own career path in interesting ways that you’re probably not thinking of. Neither of my daughters are developers, but one went through a game development bootcamp and now she’s working at Lucid Motors, with their VR headsets that allow you to have that driving experience in their showrooms.

My other daughter is in finance, and she taught me stuff that you can do in Excel that I had no idea. [laughs] So it’s wild.

Well, Excel is the most used programming language on Earth, so… It’s got that going for it. Anybody who knows how to use Excel basically is a developer at this point, at that deep level. It’s a crazy tool.

Awesome. Well, listener, thanks for listening. All the links to all the things are in your show notes, so definitely check those, and check out web dev for beginners. Jen, thanks so much for coming on the show, thanks for putting us out there for free. I guess, thanks Microsoft for allowing you to work on this, and all the people who are involved. These really do look like great resources for people, so we really appreciate this as a contribution to the community.

Thanks so much. It’s my great, great pleasure, and it’s what I love to do. Thanks for watching and starring and listening.

There you go. Well, on behalf of Ali Spittel, and I’ve been Jerod Santo - this has been JS Party, and we’ll talk to you all next time.

Changelog

Our transcripts are open source on GitHub. Improvements are welcome. đź’š

0:00 / 0:00