Video: How We Think About Fullstack’s Javascript Curriculum

By: David Yang

In this video CEO and Co-Founder David Yang talks about our fullstack JavaScript curriculum, how we think about it, make updates and continue to keep it fresh.

Hey it's David Yang, CEO of Fullstack Academy and today I’d really like to answer a question that I hear a lot from students is how does our curriculum change and how do we think about curriculum at Fullstack?

Review: Why We Teach Fullstack JavaScript

Fullstack Academy was one of the first JavaScript only bootcamps. A bootcamp that taught JavaScript on the front-end where people are seeing in the browser, on the server-side what we call the back-end and actually even on the in the database.

So why do we teach full-stack JavaScript? I have a longer video that talks about the various reasons, but we’ll do a quick overview. 

One is that JavaScript's always been a language that web developers have to know. They have to know JavaScript because JavaScript is really the only game in town when it comes to what's going on in the browser, so if you want to deploy code that does anything in someone's browser, which is most web applications these days you have to be doing JavaScript. 

Now there's been tons of attempts to create transpiled JavaScript. Google has something called Google Closure, and Google Java Web Toolkit and you know people have really been trying languages that compile JavaScript for years but over time people have realized that you always feel like you're in a bizarro world if you want to do JavaScript. If you want to integrate with a full component library of the JavaScript world you have to eventually be writing JS. 

In 2009 JavaScript really started taking off. Around 2012, 2013 there was a technology created called Node.JS that really allowed JavaScript to run on the server-side as well, and it was a really interesting server-side language because it handled concurrency quite well. And it really solved the problem that a lot of sites were having – how do we add real-time and real-time components to our front-end infrastructure. 

“[JavaScript] really solved the problem that a lot of sites were having – how do we add real-time and real-time components to our front-end infrastructure.”

Around that time there's also a database technology created called MongoDB that made it very easy to connect from Node.JS to a database you could store JSON objects, you could write queries in JavaScript syntax. And even the tool used to enact MongoDB was also mostly using JavaScript syntax. 

So around 2012, 2013, JavaScript came into its own as what we call a fullstack language and the idea of a fullstack web developer became possible. And if you want to hear more check out my video on why Fullstack teaches fullstack JavaScript.

Software Programming in the Context of Development on the Web

And really pedagogically it's just—you know pedagogical, is when you think about teaching, when you think about student learning—it's just very nice to teach one language. Because web development, you know we're not just teaching software language programming; we're teaching software programming in the context of development on the web. 

Right, so you have to both learn how to program and all the different ecosystems you need to interact with; how do you connect to databases, how to generate HTML, how the HTML gets sent to the browser, how the browser interacts, the Document Object Model, how to move things around on the client-side. 

So you have to learn more than just JavaScript. You have to learn how JavaScript interacts with all these ecosystems and, it's nice because you all have to learn one language and students get really good at that language. 

“You have to learn more than just JavaScript. You have to learn how JavaScript interacts with all these ecosystems”

One thing I tell students and employers is that they should test that our students are very deep in JavaScript because you know if they can get deep on one thing, they can get deep in something else. Right? 

If you study a whole bunch of languages, you go to a bootcamp where maybe you're learning Python and JavaScript, Ruby on Rails, some Java, right—it's like you’ll have a little breadth, but you have very little depth in any one of them. I just, I mean it's... in

any kind of budgeting of time, it's just impossible to create that depth across all those stacks. 

And so I tell employers, you know, test for depth and then trust for breadth, right? And with one language in twelve weeks, students can go really deep. 

Curriculum Change 1: Angular to React 

So you know, that’s the philosophy around why we teach JavaScript, and now I will tell you a little bit of other changes that have happened over the years.

When we first started the immersive, we chose Node.JS, we chose Express—ExpressJS, which is the tech server-side JavaScript framework, and we chose Angular and I think Angular was actually the first popular client-side framework. 

The reason that Angular became very popular is that ... it very much appealed to the people who came from the Ruby on Rails world.”

It was in the second generation of frameworks right, there was obviously things before that, things like a Prototype, Dojo but the reason that Angular became very popular is that I think it very much appealed to the people who came from the Ruby on Rails world. It had everything out of the box, it made a lot of… all the pieces work together, pretty well, and it solved most of the problems people had with front-end development. Really, “How do I connect the data that I have with updating things that our clients are saying?”

So we started with Angular 1, and with Angular 1 it was actually, it was a pretty good choice, a lot of companies hired for Angular 1, a lot of companies really said, “You know what? We're going to develop our applications on the Angular technology stack.” 

And even today we still have companies that come to us and say, “We have a big Angular 1.X application, do you have people?” Unfortunately we say ‘no’ now, because around 2014, 2015 we switched to React.

This was one of our first big changes, and it's definitely those things, where it was the first time I understood the inertia of curriculum. And I think that one of the great things about bootcamps is that we put in a lot of hard work to change our curriculum to keep it up to date with the industry. 

And, the thing that really excited us about changing to React is one, we saw the

industry was moving there. But two, it really is a much smaller and nicer framework for students to learn. 

“Angular is like a built-out Lego kit, whereas React is a lot of small bricks”

I had the mentality of Angular is like a built-out Lego kit, whereas React is a lot of small bricks and you can kind of build things creatively and I think it's much better as you're learning to get small components and you can come to compose rather than a very complex thing you have to learn together that only fits together one way. So, we really liked that about React.

It was a bridge for a lot of JavaScript programs into this more functional way of thinking. Right away, you know you have a functional component to React. And React really was that gateway drug to functional programming for a lot of programmers, and I think was the… and our students really liked it because they got to use small components composed well. 

That was our first big change, and it was painful because we had to rewrite the entire curriculum. Me and a couple of our instructors spent a Christmas holiday really diving deep into React, working with people in industry, building out little test bits here and there, until we got something that we really liked in our curriculum.

I really think the thing that we saw with Angular and React, is that React had a way of blending HTML, CSS and JavaScript that broke a lot of the tested ideas in software development. So one of the one of those tested ideas is that we should separate the concerns, use different technologies to solve different problems. And, that separation often times results in people thinking: “I will have HTML to describe the structure of my documents, I'll have CSS to describe the style of my documents, and JavaScript to describe the interactivity of my documents.” 

You know that was a nice separation right because you could give the CSS and HTML to your designers, you'll give JavaScript to your programmers and have them interact with the server-side using that JavaScript code.

What React said was that, as we as we build more complex applications, we're going to have to rethink what really are the boundaries between code, because this component that's doing a lot of server interactivity, it's interacting with the client, it's changing style based on the ways different things that are happening. The person who's working on this component has to think about all those things to really kind of create a valid component. 

And so React really just threw all those things in the same pile and said our components are going to be a mixture of HTML, a mixture of JavaScript, and now increasingly a mixture of of CSS… of the styling capabilities of HTML. 

And so really it was changing from, “Let's think about HTML, CSS and JavaScript as the boundaries” to “Let's think about components and how components interact with each other as a boundary,” and a component is really an amalgamation of HTML, CSS and JavaScript.

Curriculum Change 2: Mongo to Postgres

The second big change that we made in our curriculum was switching from Mongo to Postgres. 

And it wasn't a necessary change. Mongo is still something that is very fun to use. It still solves problems in a very interesting way and it still probably is easier to interact with JavaScript whereas with Node.JS then Postgres, in the sense that the impedance is lower—you have a JavaScript object, it’s very easy to get to JSON, it’s very easy to store that JSON into a Mongo document store. 

The reality is that, one, Postgres added a lot of these Mongo features so the ability to store JSON blobs, the ability to search inside JSON objects, and at the same time it brought in all the good SQL features that really most applications are still using, and most companies still like them. The idea of normalizing data, thinking about how data is structured, and how it interacts and the tools that SQL gives you versus the tools that Mongo gives you – it's just... it's a good exercise to be able to think that way. And we decided to switch back both to really expose students to that and then and just feedback that we were getting from our employers and our alumni had that you know Postgres and SQL is still a very valuable tool to know in industry.

CSS and JavaScript Frameworks

The final change I would say is that we're seeing a lot more CSS and JavaScript frameworks. 

For a long time we used a technology called SASS and SCSS, which was a CSS preprocessor, and again this goes back to the idea that there is a separation of CSS, React and HTML. Now really we're seeing more the design, the styling being brought into the React components and having JavaScript own that.

I think we're starting to see where—this idea of having everything as React components and JavaScript owning the entire thing—we're starting to see a few places where that boundary is causing challenges for web development teams but it really has been something that started 2015 and it just gotten stronger.

You know we oftentimes get questions: what do you think about Vue.JS, what about the new Angular technologies you know the new Angular 1,2, 7; Ember.JS... there's a whole bunch of virtual DOM-based JavaScript frameworks. 

“You have to have very good reasons to not choose React in 2019.”

So React has really just—I would say—won the fight if you're gonna build a front-end application heavily focused on interactivity, a single page application, then really React is the best solution. You have to have very good reasons to not choose React in 2019.

Programming Languages Context Switching

And finally you know I want to talk a little about the context switching of other programming languages. I think we've actually tried a 12-week immersive where we incorporated Ruby on Rails and JavaScript. 

And I think there's a lot of bootcamps out there that teach Ruby on Rails. It was one of the first dominant programming bootcamp coding languages. And to be honest I came up in the Ruby on Rails world, I love working out of it for the years that I did. 

It's just the context switching which is very painful. And if you can imagine, Ruby and Java are very different languages. 

If you can imagine the idea that you'll spend six weeks, six to eight weeks, learning Ruby, you finally get comfortable in it and all of a sudden your instructors are saying you know what, now change how you think about a lot of these things as we're going to React, or as we move into JavaScript and these could be painful transitions. I think often of our students got confused. They were just getting comfortable with one thing to move to something else, so I still think it's worthwhile for bootcamp grads and bootcamp students to study other languages. 

I just don't think it's great to do that in an intensive immersive experience where you're also learning a lot of ecosystem technology. 

Curriculum Framework: Keep Inline with Industry

Now when I think about, what is a framework, how do we, and why did we make these changes, and how do we think about these changes. I think we almost have two conflicting, and well, two orthogonal ideas that are sometimes in conflict and sometimes mesh very well. 

One is that we want to keep in line with industry. I am under no illusion that we can push the industry I'm not going to say that you know if Fullstack adopts Vue.JS, then the industry will. I think we're not there, yet, but I definitely think we have to follow where the industry is going and when the industry really kind of consolidated around React, it was very exciting for us to do that because I think, I've always been excited about React when students saw it, when it was first released. 

“We don't want to teach technologies just for its own sake, we want to teach things that will get students jobs.”

But we had to wait for the industry to get there before we felt comfortable saying okay now let's teach our students this technology, right? We don't want to teach technologies just for its own sake, we want to teach things that will get students jobs.

Curriculum Framework: True to Good Ideas in Coding

The second thing is we want to be true to good ideas in software and software engineering, and in coding. So when I think about things like React being more functional, being more

isolated, having a nice component-based architecture and really separating concerns, well, separating concerns by components. It's always appealing to us when we can make choices where we get to go down both roads right where the industry is there and also where we give students smaller and more composable building blocks where they can use our creativity to combine it and connect them. 

Really those are the two things that we always think about when we say should we introduce this new idea to our technology, to our technology stack. 

What is Coming Up Next? TypeScript

Another thing students ask is: “What do we think is coming up next and what are the next thing to integrate into our curriculum?” 

When I think about that, I think the obvious thing to me right now is Typescript. This is just a funny story, I interned at Microsoft back in 2000 and I sat down the hall from this gentleman named Anders Hejlsberg

And what was interesting was that people told me, you know, you're in the presence of a legend they said, “When you walk down the hall, if you can peek in and see what he's working on, he's working on the future.” So even from a very young age I've always been very impressed by this gentleman named Anders Hejlsberg at Microsoft who happens to also be the author of Typescript. 

I think what Anders Hejlsberg saw and what he heard from his Microsoft developer community is that, “Look, we have a hundred thousand, five hundred thousand, a million line applications written in JavaScript.” 

We just can't continue to build and scale these applications without more ways to structure and connect the thinking around the different parts of the code. So Anders Hejlsberg had this idea of, “How do I take some of the capabilities of static typing languages where we can specify that this parameter is going to be a parameter integer, this parameter is going to be a string and this function can return this?” 

So if you call it you should expect to get this thing how can I take some of these benefits of static typing and make it work in an ecosystem that's already as vibrant, developed and large as JavaScript and out of that came Typescript. 

“Typescript has won, and it's won really across both the startup world the enterprise world.”

I think that as companies build increasingly large JavaScript applications they're going to have to find tools that help them, you know, make sense of it all, and Typescript is one of the best tools there's also Flow, but in my mind Typescript has won, and it's won really across both the startup world the enterprise world.

What is Coming Up Next? GraphQL

The next technology that I'm really excited about is GraphQL and I think GraphQL really does

something similar. It says you know you have technology on the front-end technology in the back-end and they have to communicate and that communication you know it always starts

out very nice, but over time it can get quite complicated. All these little edge cases of you know

what I need you to send back this piece of information or I need to send you this piece of information and you get all these special edge cases. 

And what GraphQL does is it says, “Let us create a structured way for the front-end and the back-end to communicate and also for the back-end to send back data that the front-end in the way the front-end is really looking for it.” The adoption on GraphQL is a little bit more challenging than Typescript so we're not seeing it as quickly adopted by enterprise as Typescript, but it's something that I think really helps students. 

It meets our criteria of things that companies are adopting and also things that help students think in a different way and in a better way of software engineering.

All right, so that's how Fullstack thinks about curriculum, thanks so much. If you're interested, of course, check out FullstackAcademy.com to learn more about how we do things.


Interested in learning more about coding?

Get our free Road to Code Guide & Course Syllabus

Hold Tight
Your personalized Road to Code is ready to view