Yesterday, I finished my 2nd Nano Degree. As a typical Millennial, I have been having a quarter life crisis every two years starting in my 20s. This led me down the path of my first career change from a (wannabe) Actuary to a Data Analyst in 2015, and my first foray into online education which was, you guessed it, the Data Analyst Nano Degree.
I had a great experience and built a solid set of skills through the Data Analyst certification and I was even able to land job half way through it as a Data Analyst! However, I can’t attribute it all to the certification as I had 4 years of experience as an Actuarial Analyst and a solid base of Math and Statistics.
So, when I starting feeling that I was hitting a plateau in my current role, and, through some projects at work, realized that I was more interested in developing software products rather than producing data reports, I naturally turned to Udacity again. This time, I picked the React Nano Degree.
React, for those that don’t know, is a Javascript Library that was released by Facebook in 2013. It has quickly become one of the standards of front-end development alongside with Angular 2 and other Javascript frameworks. The big game changer that React brings to the front-end is it’s concept of a Virtual DOM and changing the state via that virtual DOM versus making direct changes to your web page. Without getting into detail, let’s just say that React made things way faster because of this.
Another really (like really) cool part of the React ecosystem is React Native. React Native is an altogether different project in Facebook but uses a lot of the same syntax and philosophy of React. What React Native allows you to do is to write plain old Javascript code to build Mobile apps. What this means is you can have one code base that can be used to make an iOS and an Android application. Think about it...before if you wanted to make an app, you had to hire a developer who knew SWIFT to make an iOS app and then a developer who knew Java to make an Android app. Now, you can do it with just React! Note: in practice, it’s not usually just one code for more complex apps as iOS and Android are truly two different platforms and you have to account for that. You can still expect to share a large amount of the code though which is still better than having two separate teams/projects.
I had heard about React and was interested in learning more, and I also felt that the Front End Development Nano Degree was too basic for me at the level I was at (I had been getting into developing on and off for about a year). Plus: I love getting value for my time and money, and I would in theory come out of this program knowing how to build both web and mobile apps! So, when Udacity launched the React Nano Degree, I felt this was the right time to dive deep into this subject.
Enough background, let’s get into the review!
Udacity focuses on project-based learning. You typically take a course that walks you through building a project, and then you do a project on your own using what you have learned. I really like this approach as this cements a lot of the knowledge and you end up with actual projects you can put on your resume/portfolio. As an information junkie, I love going through endless videos about different technologies, and giving myself a pat on the back for being ‘productive’, but if I have to be brutally honest with myself, I only truly learn by actually sitting down and doing the stuff.
The React Nano Degree program is broken into 3 projects:
The first project is building a Bookshelf app using React (duh). You have 3 different sections on your bookshelf page (currently reading, want to read, read). This is a good introductory project using React that allows you to use its powerful state change feature to build a dynamic app that lets you switch books from one bookshelf (state) to another. You also learn about React-Router which let’s you navigate to different urls on a React application (www.website.com/first-page, www.website.com/second-page etc.).
The second project is really the heart of the whole Nano Degree. It is a monster! Took me almost a month to complete (although others blazed through it…the challenge is understanding the Redux way of doing things). Building applications using React is great, but if you are going to be building any large scale applications, you will probably be using Redux with React. Redux is a predictable state container for JavaScript apps. What that means in layman terms is that it gives a certain structure to managing your React applications (specifically your state) that allow applications to scale without the code becoming chaotic.
The project specifically is about making an anonymous reddit style app where anyone can add/edit/delete posts and comments as well as up vote/down vote those posts and comments. The reason this project is such a beast is that it involves understanding how to perform all the CRUD (Create, Read, Update, Delete) operations using React and Redux. If you think about it, most major applications have these (display information, add/update/delete content/ forms etc). Consequently, even though this was by far the most challenging and painful part of the program, I came out of it learning the most.
Project 2: My React and Redux App
The final project is based on React Native. As I mentioned earlier, React Native is it’s own thing and, depending on what you are interested in, this might seem not that relevant to you, but I am glad Udacity included it! I was really looking forward to this part because I have always wanted to understand how development on mobile works and it did not disappoint.
The project involves building a Flashcards app where you can create Decks of cards which you can quiz yourself on (so, for example, you can make cards for a subject you have a test on). For the project, we just had to have buttons for correct/incorrect in the quiz but I ended up building a Tinder style swiping feature because…it’s such a cool animation ;). My thanks to Stephen Grider for this: https://www.udemy.com/react-native-advanced/
Project 3: The Swiping Feature :)
I had no professional development experience coming into the course but I had built applications on my own before and was familiar with ES6 and Github. If you are just starting out, getting comfortable with ES6 syntax before diving into React would make this a much smoother ride. Although, honestly you should not even touch React or any other library if you have no basic Javascript experience. It’s important to have a solid base built before getting into the ‘cooler’ stuff. Check out the Front End Development Nano Degree (you can even take the courses for free unlike those for the React program).
It took me about 6 weeks to finish the program, although this varies from student to student and how much time they can devote to the projects. The official timeline is 4 months and, unlike earlier programs, it is not a complete do it at your own pace kind of program as you have to stick to deadlines to keep pace with your cohort (the group you start the program with). I spent about a week on the first and third project each, and a month on the massive Project 2 as mentioned previously.
Overall, it was a very good program that gives you an opportunity to build actual applications using a wide variety of tools in the React Universe: React, React-Router, Redux, React-Native and so on. They are also supplemental courses on ES6 (the latest version of Javascript), Github, AJAX Requests (sending data from the backend to the frontend) as well as a course focusing on the career/networking side of things (you can get your Resume/LinkedIn profile reviewed and work on your interview skills). Udacity also has a great support network (aka Slack Channels) where you can discuss the project and ask questions. The review process is also pretty seamless and they generally get back to you within 24 hours (though sometimes they go over this depending on how busy they are).
I did not find a lot of cons but the content of the course is pretty densely packed, and, especially for project 2, could have been a lot more comprehensive. I saw a lot of students going to other resources to supplement their theoretical knowledge. Stephen Grider’s courses on Udemy were a popular option because they are cheap and packed with a lot of value. Even though the content could have been filled out more, in the end it forced me to go and look at documentation and figure things out on my own so I guess, intentionally or not, it helped me. (And frankly, it’s not a big deal if you have to spend 10 extra dollars on a Udemy course to get you through).
In the end, Udacity focuses on getting you to build real world applications to learn the concepts and, on this front, the program largely succeeds. I would definitely recommend it to anyone interested in getting into React and taking their front end game to the next level. And hopefully, I will get to use the skills I picked up in this program in future projects. Cheers! :)