Look to this day, graduate. The third and final project was building a mobile flashcard app using React Native. This is not a technical blog entry, by the way. It’s very high level and mainly serves to finish out the blog trilogy. You can pretend it doesn’t exist like I do with the final Matrix movie.
https://github.com/mcstrings/mobile-flashcards
Here’s a pedagogical tidbit I picked up. The most helpful thing I heard/read throughout this online course was when someone said something to the effect of, “It’s not that hard. With a little effort you’ll get it. There are a lot of new concepts, and it may be confusing at first but it’s not difficult.”

Somehow, that put my brain in a very receptive, open mode. It put things into perspective, because it felt difficult at the time. But when I told my brain, “You know, Brain, you’re a lot bigger than state management and asynchronous side effects. It’s all going to click at any minute. It’s just a matter of time. Here. Have some caffeine.”
Real talk: I got restless around the holidays and did some last minute traveling. I had a job offer and a start date, so I figured I could mini-splurge. I was going stir crazy.
While I was pedaling up a snow covered hill on a fat tire bike in Vermont, I got a ping on my phone. It was a notification from Udacity saying that the project was due. I didn’t really read the message before dismissing it, though, because in my mind I still had two weeks.
Long story short, I procrastinated until the very, very last minute. I had to re-immerse myself. Annoying. It was a bit of a slog. I chose not to use Redux, which would have been easier after all of the boilerplate was in place. I passed props around like a side dish at a particularly chaotic Thanksgiving dinner. I should have used Context but I shied away from the newness.
Once I started to get into the flow, I realized just how much I had to do. Navigating through the flashcards, the score, and the notification. I actually sent a query to Udacity support asking about an extension. Stress. But two more long days and nights and everything came together. I threw a hail mary, everything fell into place, receiver in the end zone, and touchdown.

While I was in a theater in NYC with my family waiting for “Avenue Q” to start, I got this on my phone; it’s the notification for my flashcard app actually working. That was a relief and a half.
How to do a lot by doing a little
When you code, you build up a mental model in your head. It’s a house — no, a city — of cards.
When you step away for a while, those cards are going to fall down and if you’re going to get back into it, you have to start over. Like if you were putting together a 2500 piece puzzle and midway accidentally knocked it off the table and on to the floor. Some puzzle pieces will still be connected blobs but the effort and the starting over and all that work — oy, the effort.
The trick is, whether starting fresh or picking up the pieces, small tasks. Break big tasks/features into small tasks. Psychologically, I just was not feeling it, so I had to break those small tasks into microtasks.
Motivation levels were scant, so my first microtask was to get a React Native project started and show “Hello, world” on a screen — any screen. In this case my iPhone (since the Android emulator is quirky and temperamental).
That’s literally the simplest thing you can do. Type “create-react-native-app”. That’s how I jump started my brain. Then for good measure I changed the default “hello world”ish text to something else, anything else, and that was microtask one complete.
React Native
I’ve never built a mobile app before. There’s a lot to set up: services, apps, packages, install an app on your mobile device, use a simulator.
Mobile development is a strange bird. React Native is a way to code once and make apps that run on iPhones and Android devices. It has its limitations but its a lower barrier to entry than buying a Mac, learning Swift, and XCode, or learning Android Studio. You just use your React skills, JavaScript, and janky CSS, and boom. Mobile app.
Okay, that’s a lie. You also have to learn the React Native elements/components. It’s a lot. And Expo. Don’t forget about some of the Expo utility libraries.
AirBnb used to make a big deal about their mobile apps being built using React Native, but they stopped using it not too long ago in favor of developing natively. Gotta do what works for you, although changing your development stack like that is a big deal for a company with a very active, visible product.
Tech bloggers sometimes gloss over the pain involved, not only with changing things mid-stream, but convincing managers and execs that it’s worth the effort to change things mid-stream. That is no small feat.
Is it worth it?
So that’s it. It’s a wrap. The obvious question is, was it worth it? Is Udacity’s React Nanodegree worth a $1,000+?
Well. It’s worth it if you can afford it. Here are things I liked:
- Structure
- Good introduction to concepts and making use of them (like ES6 and functional programming)
- Some free supplemental classes (Promises, ES6, etc.)
- Projects that incorporate the knowledge well
- Encouraging solid developer skills and habits
- Coding practices
- A certificate to put on my resume
- I learned a LOT.
Here are things I did not like:
- They stopped using Slack in order to build their own discussion/forum tools that are not ready for prime time.
- It was practically impossible to have a sense of community due to the chaos, including cohorts starting at different times in the same area.
- There were no mentors in the main class discussion area.
- There was no reasonable way to build a local in-person study group. It’d be like throwing a message in bottle.
An immersive class or bootcamp would be more effective and would ingrain the skills a lot more, but you’re also talking over $10,000 for one of those. If you do go that route, do an in-person class.
Or if you’re a hardcore self-starter who will build quality projects from start to finish for github posterity, you don’t need a class. The proof is in the pudding.
Keep learning.