I didn’t start programming until I was 30. Before that, I was doing all kinds of random things, like working at restaurants and in real estate. My father owns a clothing store here in Mississippi, and I would often work there between jobs.
About nine years ago, we wanted to build a website for my dad’s store. We hired some local developers, and I thought the fee—a couple thousand dollars—was crazy. We never got the results we wanted, so I decided to build it myself. I had zero tech knowledge at this point, but I had taken an HTML class in community college when I was 17.
Eventually, I found my lowest barrier to entry, which was WordPress, and was able to get a lot done without actually writing any code. I made some customizations with PHP, CSS, HTML, and even a little bit of JavaScript. Soon we began making more sales online than in the store. That was a really incredible moment for me because I felt like I had failed at everything else in my life up to that point. For the first time, it felt like I found a career path.
A two-month sprint, and a year of inspiration
I didn’t have much on my resume, so it was pretty much impossible for me to find a job in the southeast United States, let alone Mississippi. I decided if I could find a job anywhere in the country, I’d take it. I ended up getting an interview with an L.A.-based company. I flew there on a Friday, and got the job. They wanted me to start that Monday, so I did.
I went from using WordPress to open source tools, because my new company was using Node.js, Apache Cordova, and early versions of Angular.js. I remember seeing someone open the command line for the first time—something I’d never done in Mississippi. I thought it was the coolest thing ever. I didn’t realize how many developers were on the command line. They were like the hackers I’d seen on TV.
My wife and my son joined me two months later. And a few days after that, I was fired. I didn't immediately realize it but I was underqualified. It was really tough. We had just moved our entire life across the country. But the good thing was, I had learned so much in those two months. I owe my entire career to the people I met there. I had no idea what it actually meant to be a developer, and they gave me a glimpse into that life.
I took all that knowledge and applied it to my resume, then got back out there to try and find some contracting roles. We ended up staying in L.A. for about a year, and I slowly built up my skill set. I was good at building pretty basic single-page applications and simple web applications with APIs.
From there, I felt competent enough to move back to Mississippi and start getting work remotely as a contractor. We didn’t have developer conferences and meetups in Mississippi, so I didn’t know they existed before I moved to L.A. During that first two-month job, my colleagues took me to my first meetup. Seeing people take time out of their day to teach others was so inspiring to me, and I took that experience and tried to duplicate the feel in Mississippi. No one here had seen anything like it. I rented out a pizza place, got pizzas and a salad bar and some drinks. It was maybe $200, and 15 or so people showed up.
Learning React Native for himself and the community
In 2015, I started my second real software developer job at SchoolStatus. Around the same time, React Native came out. SchoolStatus wanted to build a mobile app using Ionic, which is another good option for building cross-platform apps in JavaScript. But during prototyping, we tried both Ionic and React Native, and we liked React Native much better for our project. Instead of rendering HTML elements in a web view, React Native renders actual native UI elements, giving apps a more polished and native look and feel.
React Native had been out for a few months at the time, when we shipped our product to the app store. It was early in the ecosystem, so there weren’t a lot of guides or tutorials yet. Any time I learned something new, I’d write a blog post about it, go on Stack Overflow, hang out, and answer all the React Native questions. Doing this consistently for a year, I became known as an expert in the community.
During that time, I noticed we were writing the same code over and over at SchoolStatus. We had our main app and were prototyping a few things, but we had the same general structure for buttons, title tags, and images. So I took a week and put everything into a library and open sourced React Native Elements: a UI library for React Native mobile apps. I didn’t spend a ton of time building it, but I wrote really clear, concise, and easy-to-understand documentation with UI screenshots. And it took off.
I was blown away by the reception because it wasn’t complex. The idea was to have a component library to build a basic user interface, and the developer had complete control to update color and size. It’s still around today and it’s still one of the most used UI libraries for React Native with 20,500 stars and hundreds of thousands of downloads per month. Even AWS uses it.
I maintained the project for a couple years, then I handed it off to other maintainers. We’ve gone through maybe three maintainers at this point. They’ve done almost all the work and really kept it alive, recently launching a new website. It’s really cool to see people get involved and then find new opportunities because of it. It’s one of the reasons people love open source. You learn, you meet people, you find opportunities.
Breaking out of a rut to find new (Amazon) energy
Once I became known as a React Native expert, people started reaching out with consulting work, so I eventually built a website called reactnative.training. I took all my blog posts and put them on Medium so I could publish them, then added them to the website. Then I created a GitHub repository called React Native Training, and added that, along with my React Native Elements.
About a year later, I was in Seattle doing a training at Amazon, and had the opportunity to follow up on a Twitter conversation I had with the AWS mobile team. They ended up offering me a job to work on a new project they were building, AWS Amplify. I was so grateful for the opportunity because I was getting a little bogged down with the training. I wasn’t really learning or growing, and this was my opportunity to get paid and still learn something new.
When I joined AWS, I didn’t shutter the doors of my company, but I stopped taking new clients. I immediately felt energized and refreshed on my first day at AWS because I was diving into so many new things I knew nothing about. It excited me, and was exactly what I needed.
When you’re running your own business, you’re always doing paperwork or catching up, because you just have got to get it done. You’re not going to get paid if you don’t. There were still stresses, but it was a lot more freeing.
Channeling creativity and putting yourself out there
When I actually sit down and think about it, I’m proud of how I built my career, and want to help others who might be struggling with the same kinds of challenges I did. It’s hard to know how my life would have turned out if I’d actually had a proper education. I’ve worked with really great people who didn’t go to school. I’ve also worked with really great people that had a formal education. Everyone has their own way of approaching things. These days, it’s pretty well-known that even if you did go to college, everyone’s a self-taught developer. Because what you learn in school often doesn’t translate to the real world.
Creating things and putting them out there consistently seems to result in positive things for my life and career. Before I started doing anything in public, I was progressing slowly. But no one really knew who I was, and no one reached out asking for help. When I started writing and open sourcing and being involved publicly, things got so much easier.
If you have an idea, write it down or put it on a blog and publish it, even if you don’t think anyone else is going to read it. Being able to write a book and teach other people was really rewarding (I probably had the longest foreword because I wrote about the dozens of people who helped me along the way—but I was so proud to be able to thank them).
Putting your creative work out there is a positive force. A lot of times, it feels extremely uncomfortable, but being okay with that is something you just learn to do over time. It’s hard to say what will come out of it, and it’s often random. Maybe a cool meeting with interesting people. Maybe nothing. But sometimes it’s a chance to help someone, or an opportunity to make money. You just have to be vulnerable enough to put it out there in the first place.