AMA with

Ryan Florence

Founder of React Training and Creator of React Router

19th October 2017, 6:00 pm

This AMA is over!

Thank the host

Message from the host 馃挰

Hey! Let's do this!

Hey Ryan. Do you think that you'll ever use anything other than React (or an evolution of React) to build UIs again? If not, what do you think prevents React from evolving to that thing?

Hi C.!

Hmm ... the only reason I'd never use another UI lib again is if I stopped building UIs. It's inevitable that something more interesting to me will come along.

But, the staying power of React has been extraordinary. Individuals and teams continue to pick it over and over and over, which I've never seen before. Personally I used to carry around a "bag of misgivings" about the tech I was using to build UI. React's bag is very, very small.

So, yeah, I'll use something besides React eventually--which may just be an evolution of React or something totally new--but I'm not looking for anything new right now, pretty happy with it even after 4 years.

It's silly, but I still get excited when teaching our fundamentals workshop. React is a lot of fun.

What's the best career advice you've ever received? And by whom?

I like this one.

Alright, so I used to be securities licensed and sold retail finance: mutual funds, insurance, etc.

I had a sales manager then named Mickey, a bit large, tall, southern good ol' boy. Spoke with the accent you'd expect. When he said "Ryan" it sounded more like "Ron" or "Rahn".

Rahn, getting the sale is a lot like getting a date with a girl. Your chances go WAY UP if you ask.

That has always stuck with me. I say it to Micheal often whenever we're working a contract or trying to get in the door somewhere.

A second phrase that has influenced my career a lot was from my direct manager when I was in sales. He'd regularly say:

It worked so well, I quit doing it.

That is to say, sometimes we have an idea, and it works so well, we forget that the reason we're being successful is because of it. Eventually you don't need that thing anymore because of your success, at which point, the success starts fading and you eventually think "What the heck? What's wrong?" and you realize you quit doing the thing that made you successful.

This makes a lot of sense for marketing/sales strategies, but also code. I often get really lazy with tests. They work so well, I quit thinking I need them cause "the app has been stable for a long time, these tests are a waste of time."

The tests worked so well, I quit writing them. Months later, the app is a wreck.

Hey, Ryan. Still Mookie Proofed?

PFFFFFFFFFFTTT Hey Dustin. Long time!

(For anybody following along, Dustin is an old high school friend and loyal fan of Mookie Proofed--my high school band.)

Hi Ryan, Thanks for doing this AMA.

What are your thoughts on React going MIT?

I think its great I can just move on to the next question and not talk about the React license anymore 馃槣

How did you decide what price to charge for your online courses?

It's always easier to come down, so start as high as you're comfortable!

I always think about our pricing as value based, and I definitely think our online advanced course is worth $250 if you're a few months into React and want to level up.

Consider this: if you make 100k/yr as a developer, that's only 5 hours of pay.

Learning how and when to use those patterns on your own will definitely cost your boss more money than that.

It's been a year and a half since I started learning javascript (and programming at large). I've never made something end to end. It demoralises me. I think I take too much time to learn, and no matter how much I persevere, I seem to give up at the end. I have clear ideas, but I'm not able to put them in practice. Is it normal ? What could I do more smartly?

"Learn" less, code more.

Build stuff until it works, don't worry about if its "right" or "good" or "fast" or "secure". Just make it work.

Find a workflow in your life you want solved. Maybe its a simple shopping list app ( or a pregnancy contraction timer ( or a people counter (, just build something you want for yourself and don't stop until its done, even if its butt ugly inside and out, you'll feel great when you finish it and its useful.

On it! 馃挍 Thanks Ryan!

When you tried Vue the other day, was there anything you saw that you wished was available in React? I know you love React, I give you props for trying out Vue. I'm one of the people who really like both.

I think vue appeals to a different audience and is a great fit for some teams. People say "right tool for the job" but the job is same, its more "right tool for the team".

Expressing UI as code instead of a template will work on some teams and be a disaster on others. In those cases, templates are perfect.

Component composition is great.

I love using render callbacks, but do you think that perhaps we can come up with a more natural syntax for this pattern?

I don't quite have an idea what it might look like yet, but may be something more fitting for xml/jsx-like syntax?

I'm wary of any new syntax for a specific pattern like that. If we did come up with something, would it apply to the the normal "event" or "action" prop callbacks?

<button onClick={() => /* not really different */}/>

I've found it feels less syntax-crazy when you use a prop named render instead goofing around with children.

<Thing render={() => (
  <div>More Stuff</div>

// vs.

  {() => (
    <div>More Stuff</div>

That said, if you use children and skip JSX completely it's totally natural, it's just a normal looking callback:

fs.readFile(path, (err, data) => {
  // callback!

let e = React.createElement

e(Fetch, ({ error, data }) => (
  // callback!

I sometimes think I'd rather use e than JSX. Imagine this code block w/o JSX, would actually look pretty clean:

How do you balance teaching and coding?

If you get too deep into one, you can no longer really do the other very well, right? Which do you find more fulfilling?

Yeah, that's a hard balance. I think React Router keeps us grounded as technologists instead of just teachers. We have a lot of use-cases that come our way that we have to work out, so we're exposed to all the new stuff and have to figure out how it fits.

Indeed, having a popular OSS project definitely keeps you grounded in real world use cases. I can attest to that!

Hi Ryan, how did you get into React training? How did you know the demand was there?

I was training our teams at Instructure on React and put the repo on github. It was the first result when you searched "React training" and people started emailing me, asking me if I could train their teams. I just turned them down, having no idea how much you can charge for training.

Then, Tyler McGinnis asked me to run React Week at a local dev bootcamp, and Frontend Masters asked me to do video for them.

But it wasn't until I was at the after-party of React Conf with my friend Brian Leroux (guy who made phonegap/cordova) that I decided to do it. We started talking about his workshops for phonegap he used to do, I asked how much he charged, and then I calculated in my head how many workshops I'd have to fill up to quit my job. I knew I had to give notice when I got back to work on Monday.

Michael and I had been working on Router together a lot and had become pretty good friends through it. We chatted about partnering and away we went. This was late January I think? Our last days of work at our old jobs were April 1st. (Protip, end on the first day of the month so you keep an extra 30 days of health care).

How did you know the demand was there?

I guess you never really do. My old job would have taken me back so my biggest risk was racking up credit card debt for a couple months. Seemed worth it.

It all worked out.

The question now is, how long will the demand be there?! 馃し馃徏鈥嶁檪锔

Hi Ryan,

Regardless of your paid training, will we see you in a live coding session on Youtube? I'm not interested in the material you're selling, but I would love to watch you code something again while you comment on what's going through your mind.


Unfortunately I have to pay the bills, so it's hard to find time for that sort of thing, but I've got a lot of things I'd like to put out there. I actually have a document of notes on little free videos I want to make.

But when the choice is something that puts money in my pocket and something that doesn't, I'm gonna go for the money 馃槄, at the moment, the revenue generating activities are consuming my time!

If you had a magic wand that would instantly and elegantly solve any of react's weaknesses, how would you use it?

Make it so fast that shouldComponentUpdate wasn't a thing at all and then context wouldn't be "broken".

If I can't get a faster horse though, I'd like a car, but I don't know what that looks like.

You make learning both enjoyable and entertaining. When did you first realize you had a gift for teaching tech?

All growing up I loved performing. Whether it was on stage w/ my punk rock band, or wakeboarding past the beach and throwing a few flips to get some cheers. I served a proselyting mission for 2 years for the Church of Jesus Christ of Latter-day Saints and was told often I was a great teacher. I was a TA in college for my Economics professors. When I sold insurance/mutual funds I taught people about financial growth/risk etc. My first software job I was a trainer and implementation consultant. So my whole life I've been teaching/performing.

So I don't know if I ever realized I had a gift (if I even do?), I just know I've always enjoyed sharing what I know, and trying to entertain people. There are a lot of social situations that make me uncomfortable, but being on stage trying to make somebody laugh or think is my happy place.

I asked this in the Reactiflux AMA you did a long time ago, but what's the state of React30? It was my all-time favorite react podcast 鈽癸笍

Oh, Sean ... hard times.

Michael basically spearheaded that thing and we'd love to do it, but it's hard to make the time. Running a business, especially one that plans events, takes a lot of time. Also, we've both got spouses, kids (I have 3, he has 4), and community/church responsibilities. Mix in our travel schedules (we each travel 2 or 3 times per month) and we're just out of time for the podcast :(

We recorded one a few months ago but the guest was basically in a cafeteria and the audio quality was just too terrible. Maybe one day it'll come back, but at this point myHopes !== high.

How did you come across ReactJS? What's the story behind learning React and starting React Training? :D

I came across React like everybody else, saw it announced and thought "that looks dumb."

Then my boss rewrote the infamous "dbmon" in React and the speed improvement was mind blowing.

I answered how I got into React Training in another question :)

Hi Ryan, thanks for the AMA.

what would be the better way to handle back routing with RRv4? it would be nice to check when is a back transition so we can flip animations or something like that.. any thoughts?

The browser doesn't tell us (and therefore we can't tell you) if they clicked the back or forward button, so not really something we can do right now.

We have some ideas on how to track some data to know which button they clicked, but we've never gotten it bullet-proof.

How do you balance "work time" vs family time?

I've got a spouse and three kids, and I think all four of them are awesome. Working from home can either help or hurt this balance. Traveling absolutely makes it worse.

I like to be around during "the crossroads". When my kids leave to school, get home from school, go to piano/karate/soccer/dance whatever. I'll regularly take my kids to their activities like piano, and then kick back in the back of our minivan with my laptop and get work done while they're busy w/ the activity. When they're done, its fresh on their mind and we can chat about it as we drive home. The thing with kids is they don't put effort into remembering anything when you ask "how was piano?" or "how was school?", but if you ask when its fresh, during "the crossroads", you actually get to have a conversation. So I do whatever I can to be around for that.

Also, think about how much unproductive time most of us spend around co-workers during the day (lunch, wandering the company kitchen looking for cookies, smash bros). I get to spend that time w/ my family. Just this morning I helped my son get to the shrine in the northern Labyrinth in Zelda BotW.

Traveling is the really crappy part of this though. We do all of our workshops at the end of the week, Thu-Fri or Wed-Fri. That way we can coordinate less and bank on dad being around Sat, Sun, Mon, Tues, and sometimes Wed.

My wife is also awesome and gets babysitters most weekends, so we get to keep being friends even when life gets busy.

Finally, we take a lot of vacation to make up for all the travel. Michael and I take off the entire month of July! We're lucky to have really flexible jobs so we can be to all the things our kids do, like school presentations, birthdays, etc.

The hardest thing though is when you've got code in your head and it needs to get out. I go into this terrible mode where I can't pay attention to anything around me no matter how hard I try. My family is pretty good at letting me do my thing and working 24/7 until its done, as long as I take enough time off afterward to help get the house back in order!

Tyler McGinnis joined React Training, then pretty soon after silently went solo. What happened? (you said "ask me 'anything'")

Hey, haha.

Tyler is still a great friend and everything between us is good.

I think in January it'll make more sense why we split. Short story, we wanted to take React Training one way, it wasn't working as we'd hoped, had some new ideas, then moved forward with them.

Hi Ryan, I am Professor and I will start teaching ReactJS. What's the best way to start learning?

The react docs,, and one of our workshops.

What is the best resource to learn React TDD?

I'm not really into TDD, maybe ask Kent C. Dodds :)

Why do you think developers adopted ReactJS so well? I remember when React was new people were crazy about Angular. What changed?

I don't know for sure. The people I'm close to were generally all sick of either too much indirection and limitations with angular/ember or too much plumbing with jQuery/backbone. React hit a sweet spot, it got rid of the hardest part (reliable DOM updates) without taking JavaScript out of your hands.

Hey Ryan. What editor are you currently using?

Atom. My front-end vim plugins were causing problems and I figured that the cool kids aren't going to be keeping vim stuff up to date, so I went to atom. I'm still sad, I haven't thought about my editor in YEARS, but now I have to whether I'm in vim or atom.

I'm mostly adjusted to atom though, vim-mode-plus has closed the uncanny valley enough that I'm productive again w/o thinking about my editor.

I hate thinking about my editor!

How do you manage your to-do list in term of tools, process, etc?

I built my own little thing, forgive the initial data, was a joke with a friend:

On its own, probably doesn't make a ton of sense, but with some explanation, its really awesome. Helps me track not just "todos" but what I want "to be".

I find working on becoming something, rather than doing or achieving stuff brings me far more fulfillment.

Other than that, google inbox "snooze" feature is amazing.

Hello sir, how would you describe the road map that led you from your hello world program to where you are now? Thanks!

What's your favorite lifehack?

Hi Ryan!

How is your day going? 馃榾

I have 2 questions for you:

  1. What's a non technical skill/practice that has helped you the most in your career? (that fellow devs often don't realise/ignore)

  2. What are your personal goals as a developer and human?

Hey! Good! I'm getting hungry.

  1. Sales. You're always selling. We all forget that we are literally selling our labor as suppliers in the labor market. So don't forget to negotiate your salary. You're selling your ideas on how to architect the app, the UX, whatever. You have to be able to sell you and your ideas. I'm glad I started my career in sales.

  2. I have a list of what I want to be actually :P

Here it is, straight out of my life planner thingy that I built:

  • Present, Kind, and Helpful Spouse
  • Gentle, Fun, and Strong Dad
  • Dependable, and Creative Business Partner
  • Anxiously Engaged Latter-day Saint
  • Physically Active/Capable
  • Charitable

Sales is something I struggle with. I know it matters so much, but it also feels awkward af 馃檭

Thanks for sharing!

I sure like managing state with setState. But for data like entities and business logic in general you have to keep that stuff in one place, not across components.

How do you get that data to all the places that you need? Should context become a first-class react feature instead of a "dangerous experimental" one? I can think of so many uses for context... but kinda reluctant to use it all over since it has this status of being reserved until you "really-really-really" need it.

Or maybe something crazy like throwing that data into portals? :)

Passing props deeply seems to make all the sense even for complex widgets, but not for any app that's medium-to-large in scale.

Then came everdimension to him, and said, Ryan, how oft shall my co-worker pass props down a level, and I forgive them? till seven times?

Ryan saith unto everdimension, I say not unto thee, Until seven times: but, Until seventy times seven.

Redux is a great way to get stuff deep too.

Is React 16 ready for enterprise project or still under minor development tweaks ? has been running on it for months, so if you get more traffic than they do you might want to do your own testing 馃槆

that's true :P

Hi Ryan, I鈥檓 building a react application where you list song tracks fetched from an api. I鈥檇 like to know what鈥檚 the best to to improve the performance when doing remote requests. also best practices to help troubleshoot when the data is not being rendered between views. Thank u!

Sorry that's a bit specific. Good luck!

Hey Ryan!

How do you see the present and the future of components packaging and distribution, specifically regarding their non-JS dependencies?


Hi Ryan, I'm guessing you may have written about this before but I couldn't find it on the internet. Can you tell us how your programming education and how you first got involved in open source software? Then how did you become the "react guy"? Thanks

My dad invested in an ISP when I was a kid. So I had a homepage at an started putting HTML up there (there was no CSS or JavaScript). Back then you could view source and learn. I was lucky to be on the web as it was being invented: I remember when IE first supported CSS, when mozilla showed up, I got developer previews of macromedia shockwave flash, ms frontpage, etc.

I spent my time playing/recording music w/ my band and building websites for us and our friend's bands.

Then I left on an LDS mission where you don't have a computer. Two years later I got home and went to college, forgetting all about building websites. It was SO DIFFERENT from 2000 to 2002. Suddenly "view source" was full of craziness, JavaScript got big, CSS had great support in IE6 (don't laugh, it was amazing) etc.

It wasn't until 2005 that my wife needed an online portfolio or printed portfolio for her photography degree that I got back into it. A printed portfolio was going to be $200, so I busted out Notepad.exe and built her a website instead. It was hilarious. She'd ask for features, I'd say "not possible" and then the next day I'd figure it out and show her.

From there I got involved with MooTools just by publishing my code to github. A few of them noticed and invited me into the secret #mootools-dev channel. That group of people basically taught me how to program and got me contracts and eventually my first full-time job with The rest is history.

I don't know if I'm the react guy, but being loud on twitter about stuff you're excited about helps you become something like one :)

How do you "discover" and assess new patterns in such libraries like React?

Throughout the past few years, we've seen cool and exciting new patterns like Higher Order Components, render props, function-as-children, and now render callback functions; despite having access to the relatively simple and straightforward React API docs, I still find it interesting and sometimes mind-blowing that devs find these new ways of composing components.

How do you personally discover potential new patterns? How do you assess patterns that other people have found/created for viability?

Uh ... I think just writing lots of code, and reviewing lots of code, and sitting back and thinking about it.

render props, function-as-children, and now render callback functions

That's all render props :)

Speaking of, I saw Cheng Lou do that in React Motion and thought "WHAT THE CRAP IS HE DOING?!"

Then I sat back and thought about it and realized how cool it was to be able to share state that way. With more thinking/teaching/coding I feel like I've found out how/when/why I would use it.

I dunno really. Just experience?

I am a graduate in CSE. But, I developed an interest in writing and I hold 2 years of work experience in technical content writing. Presently, I feel like I am wasting my technical knowledge and I would like to make my career in software development. Would it be possible now, with 4 years of a gap after graduation?

I graduated in economics and then sold life insurance before becoming a developer.

The cool thing about code is you don't need anybody to give you coding experience, you can get it yourself. Build something awesome, show it off and you'll get interviews, show it off at interviews and with any luck, you'll get a job.


I've interviewed tons of developers, I loved hiring people who came to us with some enthusiasm about something they had built at work or home that was awesome.