Angular to React: Fullstack Academy Updates its Curriculum

By: David Yang

## React-ing to the Market

Fullstack Academy has switched from Angular 1.x to React throughout our immersive curriculum. We believe this change improves both curriculum relevancy and career outcomes, and we are already receiving positive feedback from our graduates. This shift applies across all our campuses and programs (including Fullstack Chicago and the Grace Hopper Program).

# MEAN to the NERDS

This means that in 2016 we've converted from the MEAN (Mongo, Express, Angular, Node) stack to the NERDS stack (Node.js, Express, React, Databases using SQL).  When we first started Fullstack Academy, we were excited about how we could respond quickly as technology changed and the market moved.  We want our students to enter the job market with the most up-to-date skills and also with very solid CS fundamentals. We believe this switch lets us improve on both of those aspects.  

# Right Place/Right Time

Here's why we think React is the right technology at this time:

1.  The developers of all the major libraries (React, Angular, Ember) have converged on the idea of using virtual DOMs (React, Angular2, Ember's Glimmer) as a high-performance abstraction for describing and storing application states.  We also like JSX as a templating language as opposed to custom syntaxes like Handlebars or Angular's $parse service.

2.  The React ecosystem has converged on a same set of standards - React, React-Router, Redux, and Webpack+Babel.  While people are still releasing daily posts about JavaScript fatigue, we're confident that things will stabilize around something similar to this.  You can check out Facebook's create-react-app for a great starter kit on all these technologies or FullstackAcademy/bones for our own take on a starter kit.

3.  React is smaller library than Angular and has a better learning curve for adding new capabilities like routing and state management.  Even without Redux, React is a powerful library that does a lot out-of-the-box.  You can start with React (and JSX) and develop pretty sophisticated apps before having to add other libraries.  

4.  React's abstractions are easier to comprehend than Angular's.  This is not a knock at Angular - Angular is an amazing technical achievement that one could argue accomplishes a harder task than React.  However, we believe that React's abstractions are less "leaky."  For example, JSX is easier to mentally model than Angular’s $parse, and React components are better than Angular directives — it's harder to mess up performance with React's tree-diffing than with Angular's $digest loop.  The React community’s focus on using functional programming concepts allows us to continue teaching advanced concepts like immutability.

With JSX it’s great to keep our students writing Javascript (.map(i => fn(i))) as opposed to understanding things like "for as in items as item" as they would in Angular.  The gain in readability of the Angular syntax is quickly negated by the mental weight of understanding, referencing, and debugging an entirely new language for students.

5.  Redux is awesome.  A very small library (2K lines of JavaScript) that encourages good functional programming practices.  Single source of truth and deterministic (replayable) mutations to that state are a great way to create maintainable apps.  Redux also happens to map well to the types of real-time, collaborative projects (and games) that our students like to build during their capstone projects.  We’ve also seen students excited by the ideas in FRP and are looking at integrations with RxJS/BaconJS.

6.  The automated testing story in React is easier and more fun than in Angular.  The focus on functional components, virtual DOM, and modules simplifies writing and maintaining tests.  While testing was a big emphasis in Angular 1.x, and it had lots of good facilities for supporting testing and mocking, they always felt a bit heavy to our students.

7.  We're seeing many of our hiring partners moving towards React and there's a pretty good migration strategy from Angular 1.  Even our engineers inside Fullstack are migrating our large learning platform codebase from Angular1 to React and using libraries like ng-react and react-router to ease the migration path.

# Some questions we considered:

Q:  What about Angular 1?

A:  We're still seeing lots of interest in Angular 1.x developers and there are a lot of companies with very large Angular 1.x codebases out there. Many of our alumni are working with Angular 1 and happy with it.  We also are keeping our extensive Angular 1.x curriculum for students who want to see how the applications that we build in React would also work in Angular.

Q:  Why not Angular 2.0?

A:  We thought about this a long time, but there were a few too many bridges to cross.  While we really like TypeScript, I don't think its adoption has picked up enough to add it to our list (it's on our radar though).  Also, we're not seeing as much excitement or stability around Angular 2.0 from our partners as we are about React.

Q:  How long do you think this technology mix will last?

A:  Our Academic Team still spends a significant amount of time programming, and based on our recent experiences, we think this mix will be stable for quite some time.  That being said, even tools like React-Router are constantly in flux (a version 3 and version 4 with different architectures are being developed right now).  We think the Redux/React combination will be pretty stable for some time.  One thing we really appreciate about Redux is how it encourages the developer to separate Redux from React itself - this makes it easy for us to let students build their own state management or transition down the road to something like MobX.

Q:  What other technologies are you looking at?  

A:  The JavaScript ecosystem is very exciting right now - other technologies that we're tracking include TypeScript, CSS modules and GraphQL.  We're constantly working with our Hiring Partners and Technical Advisory Board to understand demand around these technologies and when it will make sense to migrate.

At Fullstack we're  always looking for ways to improve our students learning and job search experiences, and we're really excited to be making this switch.  The JavaScript ecosystem is incredibly engaging right now in terms of how fast it's improving its tooling, practices, and capabilities.  As instructors, we strongly believe that one of our key roles is to continuously curate. If thinking about the pedagogical differences of React versus Angular excites you, we'd love to have you as an Instructor.  (If you're interested in learning this stuff to build the future of web apps, please do apply!)

Interested in learning more about coding?

Get our free Road to Code Guide & Course Syllabus