Jamon Holmgren

Transcript from Friday February 8th, 2019

# Q: How do you balance community needs and Infinte Red’s needs? — orta

A: Hey, nice to see you! I met you for the first time at the RubyMotion conference in 2014.

We do a ton of open source and pour a lot of time into both building open source tools as well as answering questions in our Infinite Red community Slack. The best way we’ve found to balance those is to make sure they align; if people know about our open source and like it, they hopefully will get in touch with us when they need actual consulting work. This makes our time investment worth it.

Despite that, it’s always a tough balance to get right.

My job as CTO has allowed me to spend more time doing open source lately and that’s been great.


# Q: Why choose React Native over other iOS/Android platforms? — Iggytoad

A: We started out doing native mobile app development. Back in those days we had a lot of clients who wanted iOS first and then Android maybe at some future date if their startup took off. But that changed about three years ago—clients wanted both platforms. So we started looking around for the best way to build apps using cross-platform technologies and React Native ended up being the most promising, so we switched over in the fall of 2015.


# Q: What the best place to start learning React Native and native languages? — MoustacheDesign

A: There are a lot of resources online—Egghead, for example. We also put on an Intro to React Native workshop at Chain React—not updated with workshop info yet because the designers are waiting on me… haha). I’m one of the instructors there and it’s a really solid intro. We also do on-site training for teams. I think the official documentation is pretty good, although as a member of the RN open source core team we’ve been talking a lot about how to make it better and my team will be working on that.


# Q: In this highly competitive sector you’re in, what do you feel makes Infinite Red stand out? — hodgef

A: That’s a great question! I think what makes Infinite Red stand out are a few things:

  1. We hire for great communicators, not just great coders. More projects fail due to bad communication than fail due to bad code. We definitely optimize for that!

  2. We are exceptionally experienced—almost all of our developers have 7+ years of experience. One has 39 years and was one of the signers of the original Macintosh!

  3. We are deeply involved in React Native and the open source community as a whole. We put a ton of time into it. So you know that you’re helping support the broader community when you’re a client of ours.

  4. We’re a great size for most projects. We’re big enough we can put together an effective team yet small enough that you still talk to one of the founders when you email us.


# Q: New React Native boilerplate seem to abandon redux-saga, do you have thoughts on why? — rostislavsimonik

A: When we created our newest Ignite-powered boilerplate (Bowser), just like all other boilerplate decisions we’ve made, we trial-ballooned the stack on a couple client projects first. What we discovered was that moving to mobx-state-tree reduced a lot of boilerplate code over Redux+Redux-Sagas, and our software engineers were satisfied enough to move that into our publicly recommended boilerplate. We’ve been building projects with it for over a year now and have had a good experience, so we intend to stay with it for a while yet. (Keeping an eye on GraphQL / Apollo while we’re doing it though!)


# Q: You said you switched to React Native in 2015, have you or do you plan to do a reevaluation with current technologies e.g. Vue Native — NZchill

A: That’s one of my jobs and I’m constantly evaluating other technologies. Vue Native, Flutter, even going back to Swift + Kotlin. But the benefit has to be there to justify disrupting my team’s built-up knowledge base and our deep investment into the community. We’ve done it before (in 2015) but it’s not easy. Plus, the React Native core team has been pouring a ton of engineering time into RN and we’re optimistic about its future!


# Q: In a native only tickets booking app, a large monolithic one with 1M downloads/month. Would you advice RN adoption? Testing the waters with a new RN app section, without disturbing the rest of the app’s development? For higher dev velocity with RN, and RNW adding Web as a 3rd target platform and further maximizing code reuse. — Garon

A: I would need to deep-dive a bit more into your specifics to be able to give a recommendation. Brownfield RN adoption isn’t as straightforward as greenfield, and there are some companies (like Airbnb) that have decided the pain wasn’t worth it. There are others like Squarespace that have had such a great experience that they even remodeled their office to change from separate web, ios, and android teams to one React + React Native team!

So I’d need more context, but it’s definitely worth considering for sure. I’m happy to chat more if you want to shoot me an email (jamon@infinite.red).


# Q: Hello Jamon! Thank you for doing this. (And Chain React! I loved the first edition :smiley: ) I listened to Building Infinite Red which is amazing, and my question to you would be: With such an important team size, how do you deal with the “Feast and Famine” cycles that most Freelancers or Agencies have to deal with? What would you say is your biggest strength when it comes to acquiring new clients? — Charles

A: Thanks for being here, for being at Chain React 2017, and for listening to Building Infinite Red! It’s an honor!

Feast and Famine ... whew ... you really need to listen to season 2 (currently being recorded). We talk a lot about that! But just to give you something—we have found that it’s really important to take marketing seriously. And not just rely on word of mouth, which can be fickle and cyclical. We have an awesome marketing consultant (hey Robin C!) who has done a great job building a marketing strategy for us that doesn’t just involve open source.

Once you have a sales pipeline that is fatter than your ability to service it, you no longer deal with feast or famine. Instead, you have abundance and the ability to pick and choose who you work with.

So, my advice is to put more time into marketing than your team size might indicate. You want to oversize your input pipeline!

That was an intense 25 minutes—grabbing coffee, so feel free to shoot over some more questions when you’re ready!


# Q: I’m in the process of learning about entrepreneurs and their ventures, specifically the founding team formation. How did you find/recruit the founding team of Infinite Red? You seem to have a pretty diverse group of people working for you, it looks great. — Iggytoad

A: I started my business in 2005, just me. In 2014-2015 I was almost ready to shut it down because it was so stressful, but I met Todd Werth and Ken Miller at a conference in San Francisco (the same one I met @orta at!) and we hit it off. They had a very similar business and were facing different stresses. Over the next 6-9 months we chatted a lot, worked on open source together, and eventually decided to merge. We even ran our businesses as if we were merged for a few months to see if it would work out. Then, in Paris (yay) we met and decided to pull the trigger. It’s been an amazing partnership and I’ve learned a lot from those guys. You can learn a lot more by listening to building.infinite.red!


# Q: For someone who has been developing a lot in React, but has no experience in App development, would you suggest jumping into React Native or first getting my feet wet with Native App development — lewisedc

A: I’m a fan of incremental adoption whenever you can. I think going from React to React Native is a pretty natural step, and would recommend that. You can do a ton without touching native code. When you’re ready, it’s best to follow some tutorials and sort of ease into it. Native code is fun! But it’s also a lot to learn all at once. Trust me—I did that (web to native code). It took a lot of study and trial and error.


# Q: Starting team is always struggling how to balance costs. Do you have some recommendation how to setup initial team roles, How much should they and when invest into marketing. What are some lesson learned, Or what would you do differently if you had to do it again. — rostislavsimonik

A: I think more importantly than team roles is to have a constant conversation and be willing to be adaptable. I started out as Chief Operating Officer but moved to CTO recently. It’s more about establishing trust, working together to find agreement and consensus and understanding, and eventually the roles will become more apparent. Don’t get too married to any particular role because things may change. You’ll find that if you do this, everyone will end up in the role they’re best suited for.


# Q: Working out: when did it “click” for you..The balance between physical fitness, family life, and work. It seems most people with “classically sedentary” jobs say they don’t have the time. How do you make the time/ what steps did you take? How did you see that prioritizing fitness also improved other areas of your life? — Anon

A: I think it really clicked for me when I realized my body was starting to ache and have pains where I never used to have pains. I realized just how damaging my sedentary lifestyle was to my body. So I started working out with Ryan Linton (who works for me). He was really amazing—knew a lot, was patiently encouraging, etc. After about a year, maybe 18 months, we stopped working out together due to different schedules, but I had the tools I needed to continue. I also built a home gym (https://jamonholmgren.com/gym) that makes it so I really don’t have any excuses!

After getting in shape, my body no longer hurts, I can dunk a basketball again (at 37 years old I think that’s pretty cool), and I can play with my kids without getting exhausted. I now look at weightlifting as a vital part of my week.


# Q: How do you feel about the ecosystem of third party libraries out there for what are essentially core features of most modern mobile apps, e.g., navigation, image caching, video capture, and so on? Our team sometimes struggles with the immaturity of these libraries, and it occasionally makes me wonder if we’d be better off building our own native extensions. Additionally, the more diverse our application becomes, the more fragile it seems to be during RN upgrades. Is that something you’ve encountered? — Joe Lafiosca

A: Someone asked me recently what the biggest pain points of React Native were, and I said "Third party libraries—wildly inconsistent quality." This is definitely something we deal with on a regular basis at Infinite Red.

The second is React Native upgrade fragility. We also deal with that.

The core team (facebook + open source) is very aware of this, and there are steps being taken to improve the developer experience.

On the Infinite Red side, we get around this with Ignite. We have a shared set of "blessed" libraries that we know work (and if they don’t, we know how to work around them). Every RN release, we all share the burdens equally in getting things updated.

I will be speaking more about this at React Finland in April!


# Q: Hi Jamon! Hope you’re well. Awesome that you’re doing a Q&A.

I’m going to finish my Bachelor’s degree in software development, and I’ve got most of my knowledge (about a year and a half) in Javascript / React.

I would really like to contribute to open-source projects, because I think there’s a ton I can learn from reading other people their code as well as making my GitHub profile more lively which, I imagine, would help when I apply for my first job in July. However, I find it extremely daunting to start contributing to open-source projects because I don’t feel like my skills are developed enough.

Do you have any advice for someone, like me, that wants to contribute but is afraid to? — Floris

A: I totally understand where you’re at and am very glad you asked this question. I think the best advice would be to figure out an issue or library you’d like to work on, and then see if you can get a more experienced person to pair with you on the fix. This will help you understand what all is involved. There are lots of developers on Twitter who are willing to help new people integrate into open source.

If you want, just message me (on Twitter, probably) and I can help "signal boost" to get you an experienced pair programmer.

We could use some help testing pull requests with React Native WebView if that’s interesting, so take a look at that! I’d be happy to pair with you on that.


# Q: Hi! How do you test apps on mobile devices? do you have your own farm or do you use a service? — nico

A: It really depends on the client. We have done a variety of services. We have a new client starting in the next couple weeks that wants us to implement Appium on a device farm, and I’d like to see how that goes before I answer more fully. Hopefully it goes well and we can write about it at our Medium publication, shift.infinite.red!


# Q: How do you approach regression testing on mobile apps for long term projects? — rostislavsimonik

A: We generally do end-to-end tests with Detox and snapshot tests using Storybook. In fact, I just met with Zol, one of the maintainers of Storybook, and there’s a lot of interesting work being done there. But I think this part of the developer experience is really underserved for React Native developers.


# Q: Where do you think Android performance ranks in pain points as it relates to RN as a whole? How does this affect the clients/users satisfaction in terms of the end product you deliver? — Gabe

Gabe: Also... Discord has chosen not to use RN on Android because of perf issues but loves it on the iOS side. Have you seen this happen with any other organization? Clients? etc

Android performance does tend to raise its ugly head regularly. We have had clients who aren’t happy with Android performance and have had to put extra work into that. However, you tweeted recently about how the RN team internally at Facebook has been working really hard on Android performance ( @EliWhite I think wrote about it?) and I’m excited to see how that goes. I suspect at this point next year it’ll be a very different story.


# Q: What can you say for us "young" developers out here who are working on their own startups and dont have any kind of mentors. What is the best way to keep up and improve? — mickeyb

A: Find a close-knit community! Reactiflux, the Infinite Red Slack (http://community.infinite.red/), or others, and share the burdens there. Ask questions, be vulnerable.

Also find people you admire or find interesting and follow them on Twitter (ahem https://twitter.com/jamonholmgren). And don’t be afraid to reach out via Twitter DMs too.

Finding a community is really amazing and something that will help you a lot.


# Q: What is the biggest risk you see and somehow you are trying to address within react-native platform ? — rostislavsimonik

A: There are a number of big risks.

One is the risk of Facebook losing interest. The counter to that is Microsoft and Amazon have been investing very heavily in React Native, so they could easily pick up the torch. Also, it doesn’t seem like FB is losing interest at all—if anything they’re doubling down on React Native.

Another risk is something better coming along. I think that’s a possibility, but remote at this point. The amount of work that would need to be done to build the community, third party ecosystem, user base, and more is nontrivial. But of course that’s something we keep our eye on.

Another risk is the Apple-Facebook war turning ugly and Apple banning all React Native apps. I think if they did this they would face a big backlash from Microsoft and Amazon, so I’m not too worried about that.


# Q: You have probably been involved since the v0.10 - 0.15 releases I’m guessing? How far as RN come since you’ve been there since nearly the beginning?! — Gabe

A: React Native has come a very long way, but honestly the core concepts have stayed pretty consistent throughout. Which is impressive! I think it just keeps getting more stable and sophisticated. I do think TurboModules and hooks will have major impacts on React Native and am really interested to see how much it evolves before 1.0. (More on the roadmap)