January 25, 2017
January 25, 2017
You might’ve already read that I’ve recently taught a university course of React Native. There was a big contraint: my part of the course was really short —I had only two days.
In the end, it turned out that university students are used to achieving impossible learning goals. The course is scored on the basis of project assignments that the students work on by themselves for two weeks. 70% of them managed to hand in a working application, most of them surpassing my expectations of what can be achieved with only two days of guided introduction and two weeks of solo work.
But I hit some quirks in React Native ecosystem itself that make it difficult to teach it in such a setting. And that’s what I wanted to share here.
I remember back in the days when I was teaching Ruby there were two questions I always dreaded:
As a part-time professor, I don’t have neither the time, nor the access to configure all the machines in the classroom however I want. If anything else, it’s because other professors need to be able to conduct their own classes there as well. So the process starts in August (actually in September, nothing happens in August in Spain) with collecting the requirements for my class. Then system administrators install it and in October I can test the setup that I’ll use for my classes in December and March. Slow, but simple.
Then someone comes in November and adjusts “one small thing”. Of course, something breaks, they fix it by reinstalling stuff, but only at the computers they touched. Come December, half of my class is running different React Native versions. And then there are students who come with their own laptops running Windows, or Linux. „I already have node installed”, they say naively. Oh, if it were that simple…
Bottom line is that React Native setup is tedious, annoying, and error-prone. Definitely something you don’t want to go through by yourself when you’re just starting out. It needs either supervision of somebody who did that before, or the trained instincts of a developer who treaded such waters before and knows how to push through this drudgery.
This is you, drawing a UML diagram of a working React Native installation.
One of the big selling points of React Native is its possibility to write cross-platform code. So in order to both learn it and to be able to appreciate its possibilities you need to learn all of the following:
So, in order to write a Hello World application and to be able to judge whether this technology is something that will be useful to you, you need to at least brief familiarity with all of the above.
There isn’t really a way around it.
Another solution to limit the amount of concepts that you have to introduce in the beginning is to use a bootstrapping framework, like Ignite. The benefit here would be that students start with an already working application that they extend to add the functionality that they need. Redux is much easier to understand when you have a usage example provided inside your own application.
If, after reading all of the above, you still want to learn React Native, I’ll be doing teaching a course in Berlin in April. Feel free to send Brains & Beards an email to get to know more about the details.
If you liked this post, why don't you subscribe for more content? If you're as old-school as we are, you can just grab the RSS feed of this blog. If not, why don't you subscribe to our newsletter to stay in touch (fill in the form just below). We'll let you know from time to time when something interesting comes out.
Alternatively, if audio's more your thing why don't you subscribe to our podcast! We're still figuring out what it's going to be, but already quite a few episodes are waiting for you to check them out.
If you've read all the way till the end, it's probably a safe bet that you'd enjoy discussing topics like this one on an everyday basis. Why don't you apply to one of our open positions? We'd love to have you on our team!
Clicking "I want to know more" you consent to processing your data by Brains & Beards sp. z o.o. for marketing purposes, including sending emails.