It would be wrong to review a Course without taking a look at the trainer. I mean, lecturers don't just walk into class and start teaching. They at least introduce themselves.
This course was created/instructed by Stephen Grider. Stephen is a pretty descent trainer with a total of 17 courses and over 200,000 students on Udemy, at the time of writing of this review.
Stephen has courses on a wide variety of topics. To mention a few:
- Node JS: Advanced Concepts
- Go: The Complete Developers Guide
- Ethereum and Solidity: The Complete Developers Guide
There are many more on React, React Native, and other topics as well.
As you will notice in my review on this course, it starts from the very basics of setting up a React Native development environment to initializing your first project and moves on to build on top of the knowledge acquired.
No React Native knowledge is required
Now, time to get to the important details.
To start as off let's take a look at the content of this course. Some like thinking of this part of the review as the executive summary.
This course is going to populate your brain with a lot of knowledge on React Native. Here are a few notable topics.
Loads and Loads of Setup
React Native setup:
The course goes into a lot of detail on setting up your React Native development environment. You don't have to worry about your choice of operating system as this part is covered for both OSX and Windows set up. A moment of silence for Linux die-hards, like me. But since Linux is Unix-like, some of the OSX setup will be relevant to you.
I haven't seen many courses that actually take students through ES Lint set up like this. It's a really vital development tool, almost every serious project you'll work will have a linter and it would help a lot to learn it from the beginning. To avoid text editors wars, this is also shown in 3 of the most popular editors: VS Code, Atom, and Sublime.
It most likely sounds funny reading a React Native course review and finding React as a notable part of it. In most parts React Native uses React to build mobile applications. So the importance of React can not be over emphasised. This course, on numerous occasions, dives deep into React, explaining important concepts like components, prop types, rendering, etc.
Styling is one of the most important parts of mobile development. If you have used a poorly styled app you would know. FlexBox is the Swiss army knife for UI designs on mobile, especially for React Native. This in essence makes FlexBox a core part of development in React Native. With such importance any React Native course would not be complete without FlexBox.
This course opens the pandora box that is FlexBox and tries to explain how it works. In the duration of the course some of the popular properties of FlexBox will be looked into and how different values of the properties affect positioning of elements on mobile. Some of the properties looked at to great detail include:
FlexBox is, however, not limited to just this, there are many more goodies in FlexBox, some of which are used in this course whereas others you'll have to learn on the go.
User input is an integral part of applications. It is used to take in user data (like gestures, taps, keyboards, etc) and process it to display an expected output. With this in mind you understand the importance of user input, especially in mobile.
The biggest pitfall most people find themselves in is trying to build mobile inputs like the way we build web-based inputs. This course handles that, taking you through how to build and style your inputs for native mobile applications.
FireBase is one of the most amazing platforms to use in your apps. If you haven't used it, you definitely need to try its awesomeness.
FireBase is a platform for building iOS, Android, and web apps that provides automatic data synchronisation, authentication services, messaging, file storage, analytics, and more.
Lucky for you, in this course you'll get an opportunity to get started with FireBase. This course goes into step-by-step detail on how to get started with FireBase, signing up, setting up a new FireBase project, and most importantly setting up FireBase for your React Native project.
However, you will not get to go through all the amazing features of FireBase. This course only goes through authentication using FireBase, so for more info you will have to learn on your own or find a different course. The FireBase docs are a great place to start.
Redux is a project that provides an easy way to centralize the state of your application. Redux is a pretty important library, especially when building front end applications. As your application grows there is need to have a robust state management system, which Redux does superbly.
You can read more about Redux in Stephen Grider's Quora answer on what is redux and who uses it?
The library is pretty confusing at first, but this course tries it to tackle it and simplify it as much as possible. As Stephen states in the course, his aim is to:
"Master the confusing terminologies and put plain English definitions to all different parts of the library."
This course has one of the best Redux explanations I have come across. Your Redux knowledge can literally get from "0 - 100 real quick" with this course. Well, Redux has quite a steep learning curve so maybe not quite 100. Stephen, however, takes time to dive deep into the working of reducers and actions separately, explaining in detail how each of them work and how they interact with each other to affect the store. Pretty cool and an excellently detailed explanation of the same.
Navigation is another vital component of mobile applications. Here is what the React Native Docs have to say about navigation
Mobile apps are rarely made up of a single screen. Managing the presentation of, and transition between, multiple screens is typically handled by what is known as a navigator.
Free eBook: Git Essentials
Check out our hands-on, practical guide to learning Git, with best-practices, industry-accepted standards, and included cheat sheet. Stop Googling Git commands and actually learn it!
With this explanation you realize the utmost importance of navigation in React Native. This course takes on this topic head on, going through the importance of navigation and how to build it in your app. Like the instructor says, this is one of those topics that explaining using words and diagrams doesn't work. You have to actually build things with it.
Navigation can be quite tricky thus the importance of having step by step guidance while building one.
There are quite a few navigation libraries out there, and this course uses react-native-router-flux to implement the navigation. However, this library is currently not the best option available, but that is something I'll talk more about in the Critique section of this article.
Most courses tend to over look setup and assumes the students can do that on their own. Actually, most of them just provide links to the setup documentation for the various platforms. This course, however, takes time to take users through the very important step of setting up and on different platforms to ensure the student understands and gets started successfully, irrespective of their platform of choice. Although I'm sure Linux die-hards will debate this.
The importance of FlexBox in mobile can't be emphasised enough. I'm happy to see this course has taken its time to ensure learners get the best grasp possible on the concept and implement nice interfaces using the same.
As mentioned earlier this is one of the best explanation of Redux I have come across. The course takes time to simplify the terminologies of the library to plain English, which is incredibly helpful.
This is a very important part of development using React, as well as other frameworks. Using props to write components that can be re-used, which is something that is demonstrated in this course.
I am sure you have come across courses or online tutorials that just show some magic and give absolutely no explanation of what is going on. Well, this course is the complete opposite of those. To quote the instructor:
"I am a big believer of understanding every last cut line of code that gets written."
- Takes time to explain each library/dependency and why its being used.
- Explains every command you will run and what it supposed to do.
- Takes time to re-write generated code to explain what the generated code does.
- Explains every bit of code you'll write.
- Dives deep into the working of JSX, using the Babel transpiler to explain it.
This course takes time to go through navigation in React Native and does it exceptionally well. However, the course doesn't use the currently recommended navigation library by React Native. React Native Router Flux is used to implement navigation in this course, which is a popular navigation library, but React Navigation is a far more popular one than the others and is currently recommended by React Native docs.
The use of this library is most likely because by the time of creation of the course React Native Router Flux was the most popular option then and React Native didn't have a recommended navigation library.
This course is titled as "The Complete React Native and Redux Course" but it misses one essential part of React Native. Publishing applications. This is sometimes one of the most challenging parts of developing an app, moving from development to production. It would have been lovely to have such a detailed explanation for publishing in either the Google Play Store or Apple App Store.
As I wind up on this review, here is my overall take on the course - Stephen is a very good instructor that ensures that students get to understand every bit of code. He takes his time to explain in detail important concepts for developing React Native applications like FlexBox, FireBase, React, and Redux.
This is an amazing course for anyone that wants to get started with React Native or if you want to brush up on the topics covered in the course.
However, I will say that it's not entirely "complete", you will have to take time to check out other resources for publishing and diving deeper into FireBase and FlexBox to be able to smoothly go from getting started to publishing your app on App Store or Play Store.