## 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.
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.
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?