AMA with

Tyler McGinnis

Educating at TylerMcGinnis.com. Google Developer Expert. Former Director at DevMountain. Creator of Udacity's React Nanodegree.

January 24th 2018, 7:00 pm

Ask me about:

  • All things JavaScript
  • ReactJS
  • Firebase
  • Redux
  • React Native
  • Contributing to Open Source
  • Dev Life
  • And more…

Elsewhere:

Shout out

Tweet

This AMA session is over but you can still ask questions to Tyler McGinnis on their Hashnode profile.

Hi Tyler, Thanks for the AMA. Do you think React Native is worth learning in 2018? I have read articles that state there aren't many advantages of using the same codebase for both Android and iOS apps.

2nd Q: Why shouldn't one learn Swift and Android to build apps in 2018? 🙂

Hi Linda!

Q1: Absolutely. Before I went full time on my own stuff I worked at a really small startup building a React Native app. Being able to re-use 90% of the code between platforms was a huge competitive advantage for a startup strapped for resources. What's interesting is I believe most of the React Native development that's happening right now is by the Expo team and the stuff they're pushing out is pretty incredible and I don't see it stopping anytime soon.

Q2: I have a really close friend who worked at Apple for a bit and now works as the Director of Education for a really popular developer bootcamp. He's a Swift developer but is convinced React Native is the future. It's not really that you shouldn't learn Swift or Java (because learning is always a net positive), but if you just want to build an app, it's just unnecessary.

What was your range of income in USD for 2017?

~$300k. The majority of that comes from other investments and not my courses.

Hey Tyler, thank you so much for the AMA!

  1. What's your favourite JavaScript Test Framework and why?
  2. What are your top 5 libraries for building using React Native?
  3. How was your journey to where you are today as a developer and an educator?
  4. I see some stickers on your laptop. Can you share a full photo?

Cheers. 😄

You're very welcome. Thanks for the questions.

1) I try to only give advance for things I feel like I'm adequately educated on. Testing isn't one of them. I usually redirect all the testing questions I get on testing to Kent C Dodds. He has a special kind of love for testing.

2) Expo is more of a toolchain rather than a library but it's so good I'm going to cheat and pick that as my first choice. Second is React Router. Do I think it's ready for production React Native apps? No. But I LOVE React Router on the web and I think with a dedicated animations lib, it could shine on native too. Third, react-native-vector icons for obvious reasons. Fourth, React Native Router Flux. I started using this project really early. Like, really really early (https://github.com/aksonov/react-native-router-flux/issues/2). At the time I didn't love it but it's grown a LOT since then and even though I don't personally use it, I think it deserves more love than it gets. Last is react-native-hyperlink because it's simple and does what it says it does.

3) Oh man that's a big question. It started off with just writing blog posts. What I found was that if I really wanted to learn something, the most effective (and quickest) way to do that was to write about it. This is still the foundation of anything new I learn. I try really hard to minimize the time between learning a thing and writing about it. There are a few people who hate on this model because apparently only experts should have permission. I think their intentions are pure but I strongly disagree with their premise. From there I spoke at a few meetups and found that I really enjoy talking about technical topics as well. At that time I met John Lindquist (from Egghead fame) at a meetup. They helped me get my start with screencasting (for which I'm so grateful. Love egghead). I did that for about a year then decided to go out on my own to get a little more freedom. And, now we're here.

4) That's actually a pretty old picture and both the laptop and the hair is gone. My current laptop looks like this (you can go here to get a free sticker too) - https://tylermcginnis.com/sticker

Thank you so much for your responses. 😄

How did you get started with React?

Hey Romario! Good to see you over here. I have a principle that I live by and that is find people who are smarter than you and copy what they do. In 2014 a lot of the developers I looked up to kept talking about React and how great it was. At the time I was doing a bunch of NG stuff but decided to make a hard pivot and focus entirely on React. It worked out pretty well.

For the record, a bunch of those developers are now starting to talk about ReasonML...

What are the few takeaways after teaching programmers for so many years? 🙂

What a fantastic question. I actually gave a talk on this a few years ago - https://www.youtube.com/watch?v=WTCuTOgp3tg.

This is one question I could take a few days and really dive into an answer - but I'm just going to wing it :)

The first is that, no matter how much people love your courses, you'll have gatekeepers. People who think you should only be able to teach something if no one has taught that thing before or you're already an expert in it. I've been doing this for so long now that I do a pretty good job at ignoring these people but it makes me sad that people new to teaching might take their words to heart.

Second, beginners are way too hard on themselves. Programming is hard. React is hard. JavaScript is hard. It's all hard. Everyone thinks this is all a big race. The problem is there is no finish line. What takes one developer a day to pick up might take another 2 weeks. On a timeline where the end is when we die, everyone can win if they're persistent.

Third, you can never create the perfect resource/blog/course that works for everyone. The goal is always to create as wide of net as possible and provide support for those who still land outside your cast.

I'm sure there are more but that's all I got right now. Thanks for the great, thought provoking question!

I Want to build web apps do I really need to know react can I get by with other technologies such as html css python and just enough JavaScript?

Definitely. In fact, I think the tribes we create in our community have a net negative effect. If you're happy with what you know and the apps you're building, cool. With that said, I believe progression is a fundamental aspect of human happiness and there's a big risk both to your career and the apps you build if you settle with what you already know. Never feel pressured to learn the cool new thing, but also don't encourage those who are building the future.

What do you think about REST API and GraphQL existence? Isn't the latter gonna replace the former?

I wish I was more educated on this topic but unfortunately I'm not. As I mentioned in a previous question, I try to only give my opinion when it's an educated one and with this topic, it's not. Definitely have GraphQL/Apollo on my "to learn" list this year though.

Hey Tyler, thanks for the time. What helpful open source projects could you recommend in React/Redux, React Native. And how to approach contributing to them in a productive manner?

Great question.

React Router is a great codebase if you're looking to study. What's interesting about React Router is there aren't a ton of changes being made to it because it's mostly "done" (as much as software can be).

For contributing, I'd say any project that you use and are interesting in. The best PRs come from personal uses cases you run into. Build stuff then let that guide you to what libraries you should help out with.

Hi Tyler, big fan of your courses. Just switched from monthly sub to yearly sub!

My questions are:

  1. Are you going to have courses outside of the React ecosystem and if so, what are they?
  2. What's your go-to stack for production quality web-apps?

Cheers :D

Hey!

First, thank you very much for the support. It truly means a lot to me.

  1. Yes. Assuming unlimited time and resources, I'd have some courses on Vue, Reason, and more beginner focused JS stuff. The problem is the time part :) My biggest focus right now is the new Redux course (2-3 weeks out) and the Universal React course. Once those are out, I'll sit down and decide what's coming next (most likely one I mentioned above).

2) React and Firebase. Redux if it's needed.

Hello Tyler,

Many thanks for making this AMA. Two questions:

Q1 - What type of recording equipment do you use for the react videos on your site?

Q2 - How do you host your videos? Some course website online, or one you made? If course website online, please let me know which one. If one you made, then how did you make it and what technologies did you use?

Thanks!

You're very welcome.

1) For my courses (and soon the Podcast) I use the HEIL PR40 mic. It's a little pricey but it's fantastic. That connects to a Tascam US-2x2 USB Audio Interface. I use Screenflow for my screencasting stuff and Final Cut Pro X for my headshot stuff.

2) I use teachable.com (which is fantastic if you're wanting to create your own courses) and they handle pretty much everything I don't care to think about. Video hosting, user management, etc etc. All of my courses right now are on https://tylermcginnis.com/courses. You can find some free stuff on my blog at https://tylermcginnis.com/blog.

What would be your advice for a person who wants to talk in Tech conferences if he is entering into coding today?

You're going to get rejected, like a lot. That's normal. For every 30 conferences I apply to, I get accepted to maybe 1 or 2. Those odds are going to be worse for someone just starting out. The good news is there are hundreds of conferences out there. If you have a proposal you really like, treat it as a numbers game and blast it everywhere.

Will you ever grow your beautiful long hair again?

"You should grow your hair out again" - Kenz. 2 days ago

"Ok." - Me. 2 days ago.

What are your thoughts on the crypt-currency? Do you think it is a bubble? 🍺

At the risk of this answer not aging well...

Crypto is at an interesting spot right now. Stripe just dropped BTC and more and more people are realizing there may be better alternatives to what BTC provides. The problem is BTC has so much market share.

Here are my fairly uneducated opinions/guesses.

Assuming the entire crypto market doesn't get killed from regulations or Tether...

XLM will thrive as it has a real product and a real team behind it. If I put on my conspiracy hat I'm predicting Stripe adds support for it, Reddit uses it to power Reddit Gold, and Coinbase adds it in 2018. I think those YC ties run deep.

ETH will continue to grow and will eventually beat out BTC.

Others I like right now are VEN, ICX, NEO.

"Coins" backed by real teams and real products will thrive. Everything else will die. The problem is I hope the ones with the real teams and products aren't brought down by the imminent doom that's going to happen with all the sketchy coins dying.

So, is it a bubble? Yes. But so is student loan debt, the national debt, etc etc etc. The more important question is when will it pop?

Hi Tyler, Thanks for this live. What do you think about to use React, Node on the Back-end and Firestore as database? Do you have experience with this combination? I am about to create a Web App and mobile app (may be react native) and I am really thinking about to use this combination. And My acknowledgment from React on the web will also help me in React Native. Do more with less time.

That's a fantastic stack and the one I would choose today if I needed to be as productive as possible. I've never created a Web app that's used on both web and native, but I imagine if you structure things right, you'll be able to get a lot of reuse (at least from a logic standpoint). Have you looked into https://github.com/necolas/react-native-web? I don't have any personal experience with it but I've heard good things.

Somebody asked this question to Alex Russell, in his AMA, and it is very interesting. :)

If you get an opportunity to build a new blog in 2018, which tech stack you will use and why? How will you start?

I have two answers here because there are two angles I could take with this.

Developer Tyler: Reason (reason-react) with Firebase and their new cloud functions. All signals are pointing to Reason being the "next React".

Business Tyler: Gatsby. It would minimize the amount of time until I could start being productive (from a business standpoint).

For the record my site uses Gatsby today...

Hello Tyler, Thanks for the AMA How does your normal working day look like?

I live in the mountain so this answer depends on the time of day. I'll answer in the context of right now - January.

If it snowed last night. Wake up around 8ish. Answer emails. Check Twitter. Mostly mindless stuff. Around 9-10 snowboard for an hour or two. Come home and work the rest of the day.

If it didn't snow Wake up around 8ish. Answer emails. Check Twitter. Mostly mindless stuff. Do yoga/workout for a bit. Work until around 3-4. Snowboard for an hour or two. Come home and work the rest of the night.

I'd expound on that more but there's really nothing special.

Hi Tyler, What languages do Google Developer Expert's use? American Fido

Hey! All languages. Most of them really like Angular since it's a Google thing, but I'm holding it down in React land just fine.

Hi Tyler, Thanks for the AMA.

What programming advice would you give to a 20yr old Tyler today?

Start. I didn't start programming until I was 21 :) Regardless, this aligns nicely with the advice I give everyone starting out. First, be patient. It's a marathon, not a race. There will be people who learn faster than you and that's OK. Programming isn't like sports. The window you have to be a "good programmer" is the rest of your life. The only metric you should care about is consistency. If you're consistently progressing, you're fine. Second, find people smarter than you and copy what they do. If they're all talking about React, check out React. If they're all talking about Vue, there's probably a reason for that. Third, write to understand. Blogging has been by far the biggest driver in my understanding of a concept. If you get to the point where you can break something down into an intelligible blog post, you'll know that thing.

Hi Tyler, what do u feel about updating state via the callback method. Example, this.setState({count: this.state.count +1}, () => { if(this.state.count % 2 === 0){ this.setState({countType: "even" .... }}) It looks a little "hacky"? Does it suffer from any performance issues? Is there a cleaner way to do this?

First, whenever you're updating the state based off the previous state (like count in your example), you'll want to use functional setState.

this.setState((currentState) => ({
  count: currentState.count + 1
}))

If you don't, you'll most likely run into some issues. https://medium.com/@shopsifter/using-a-function-in-setstate-instead-of-an-object-1f5cfd6e55d1

Second, I don't love that pattern. Can't you just calculate if it's even before you setState?

this.setState((currentState) => {
  const newCount = currentState.count + 1;
  const countType = newCount % 2 === 0 ? 'even' : 'odd'

  return {
    count: newCount,
    countType,
  }
})

Hello Tayler can you recommend your favorites books ??

Of course.

Deep Work by Cal Newport American Kingpin by Cal Newport A Beginner's Guide to Constructing the Universe by Michael Schneider Principles by Ray Dalio

I'm sure there are more but those are what come to mind. Here's my full bookshelf at the moment.

https://user-images.githubusercontent.com/2933430/35354734-4c856058-0108-11e8-8558-db74035c1b88.JPG

Hi Tyler,

Thank you for the AMA. One of the new stuff that came with ES6 is WeakMaps and WeakSets. A part from the fact that keys/values can be garbage collected, do you find any practical use to these constructors in your daily Javascript routine? If yes, what are they? Thank you,

TBH I never use those. I don't know if that's a good thing or a bad thing but this question made me add something to by "study" list.

Hi Tyler, always learning from your courses. 1) In you opinion what´s the median income of a remote (anywhere) React developer?

That's a really hard question to answer because there are so many variables.

SR I'd say $90K. Mid level I'd say $70K JR $30-50K

Those are as close to guesses as you get though.

Hi Tyler, I enjoyed your course "React Foundations", It is really well put and building blocks of react are well explained. I like the your approach in explaining concepts. I was wondering if you are planning on making a course on "Advanced React Topics", best practices etc...

Hey! I have a soft rule that if something exists and I don't think I can make a better version of it, I don't make it; I just reference that thing rather than creating my own version of it. With that said, I don't think I could make a better version of what Ryan Florence has made in his Advanced React course (https://courses.reacttraining.com/p/advanced-react-free). This may change in the future, but as of right now that's my answer :)

Hi Tyler : Are you into Cryptocurrency and blochchain bubble? Would we see Smart contracts and other related courses on your website?

I am! I would absolutely LOVE to make Blockchain related courses. The problem unfortunately comes down to economics. It would take me 20X the time to create a Blockchain course than it would to create a course on something in the React ecosystem, for example. The learner in me wants to say screw it and go for it but the businessman in me won't let me do it. Maybe in the future though!

Hi Tyler,

Thanks for the AMA. I have a few questions for you if you don't mind.

Q1 - You mentioned in your response to Sunil that you have other investments. What are those if you don't mind sharing? Stock market, or crypto?

Q2 - Would you mind sharing what your courses bring in monthly in USD?

Q3 - I saw you have a partnership with Udemy for a nano degree. How did that partnership come about? Did you seek it, or did they seek you?

Q4 - What are your thoughts on MobX vs Redux for state management in React? Would you recommend state management at all?

Q5- Do you have any thoughts on pros/cons of using RxJS with React?

Q1. First let me say everyone is a genius in a bull market. So in no way do I think my returns are because I'm special. It's mostly just really, really lucky timing. I take a pretty passive approach to investing. Stock market wise the S&P 500 (SPY), Amazon, and Facebook make up pretty much my whole portfolio. Luckily for me, all of those have had really great returns the last year. Will that continue? No idea. Crypto wise I really like XLM, VEN, ICX, and ETH. Assuming there's not a huge crypto crash this year (which there probably will be 🤷‍♂️) I'd say those are good bets.

Q2. I'm usually pretty open about sharing finances (obviously), but I think it's in my best interest to keep this one on the DL. Sorry!

Q3. It's Udacity not Udemy (often confused). They sought me out cause they had taken my React Fundamentals course and at the time I was working with Michael and Ryan of Thriller and React Router fame.

Q4. Both are great. I'd recommend state management if you get to the point in your app where you go "hm. I think I need Redux/MobX". I typically always start out with just React though.

Q5. Any thoughts that I would have would be uneducated so I'll just not answer this one :)

Thanks for the questions!

The cover photo used in this AMA has been taken from this source.