REACTing to a New Platform Software developers often construct custom approaches to learning new technologies and platforms. When I decided to learn React Native in 2017, I realized that there are some common gleanings we as developers and business leaders can take away from the process of learning a new technology, no matter what language or programming paradigm we are attempting to learn. I will be referring to my specific experience of learning the React Native platform, but these principles apply broadly to learning technology in general. These helpful strategies to learning new technologies can be summarized as follows: do your research, plan your approach, ask for help, and don’t prematurely decide you’re done learning. Technology Research is Key Research is an essential part of the developer’s day-to-day, so you may think that the first take-away outlined above is redundant. In learning React Native, I found that doing research around my research was a key to success. What I mean by this is that I wish I had looked into the quality of the documentation for React Native before diving into said documentation with the assumption that it was all up-to-date and accurate. I am not picking on React Native here, I have found similar issues with Angular, Vue.js, GoLang, and several other platforms. I would recommend that before you browse the “Getting Started” section, you look into Stack Overflow or the Github issues of your chosen language or framework to determine if the documentation is robust, easy to read, and up to date. Whether it’s reading into the details of documentation or making sure the technology you’re learning will meet your business needs, gleaning one is: do your research. Plan to Plan Planning is another seemingly obvious tip, and it is related to my suggestion for researching more than you think you should about the application. When doing my research for React Native I had the task in mind of building a podcast application. I found that to start a React Native project, I would need to choose between two flavors of React Native: Expo (a wrapper around the native architecture that provides the developer with lots of extras and easy-to-use native components) and React Native “core” (just the raw React Native code, which allowed for more freedom, but was harder to learn and thus presented more pitfalls.) I chose to go the Expo route, as it seemed easier to learn in a short timeframe, and most of the documentation, and a lot of the React Native community suggested it. What I did not realize was that Expo did not allow for background audio. This meant that as soon as my potential users switched focus from my podcast application to another application, or if their phone display went dark, the audio would stop playing. A satisfying podcast application this does not make. I thought I had planned out my project and taken everything into account, but two months into the project I had to refactor the entire application to use the React Native “core” approach, which supported the background audio option. This resulted in more hours worked, less stability (for a time) in the application, and far more stress than was necessary. My second piece of advice when learning a new technology is: do extensive research before writing one line of code. Always Be Open to Asking For Help Asking for help is a divisive topic among software developers. I find that sad, as some of the best learning and advice I have ever received came directly from asking a more experienced and senior developer for help. When learning a new technology it is absolutely crucial to be open and willing to admit you don’t know what you’re doing. When I realized that my podcast application was in trouble, I experienced a fair amount of panic and stress. Had I just wasted two months of my life building something that I was going to have to scrap? Were those late nights and long weekends of coding all for naught? Fortunately I knew that reaching out for help was the only way I was going to get out of this one. I started by asking for help from the React Native community, and was happy to receive feedback almost immediately: “No, there is no way you can do this at this time.” Rejecting Defeat and Embracing Help After that crushing defeat, I started asking other developers I knew what they would suggest, and after a few hours of back-and-forth with the React Native community, I had my solution. I learned that there was a way to convert my existing Expo-flavored application to a React Native “core” approach which was relatively painless in comparison to starting from scratch. I would never have figured that out from the documentation on my own without reaching out and asking for assistance. If a developer never learns anything else, I highly recommend learning to ask for help early and often. Being a Developer is Being a Student Every Day After learning that my application needed to be refactored and spending the time doing so, I figured I had been through the ringer with React Native. What else was there to learn? So I continued on developing the podcast application, and it turned out pretty slick. I implemented some features I was really proud of, and I learned a lot from the developers I reached out to for help. My beta users began reporting they were running into storage issues, and for some reason their applications were updating without their permission, but I figured this must be some oversight that would be easily remedied. After all, I was now a React Native expert. After a few days of looking into why my users were having these issues, I learned once again that being a developer and being a student are synonymous. Both of these issues were tied to my ignorance of how the React Native ecosystem works. I used the previously mentioned newly acquired skills and quickly found the solution to my users’ problems. If you’re learning a new technology, I cannot stress enough that you cannot assume you’re done learning. Ever. Development Develops Over Time In learning any new technology, taking the humble and eager approach is always best. Do more research than you think you should, allocate more time and resources to planning (trust me, you will save said time and resources on the latter end of the project), ask for help early and often, and never stop learning. If you follow these simple steps, you might just find that learning a new technology or framework is fun, easy and beneficial. Devs are Humans Too Are you a developer that wants to know more about Shift3 Technologies or our educational arm of Bitwise Industries, feel free to reach out at [email protected]. Every developer is different and learns at their own pace. Don’t be afraid to explore outside help to sharpen your dev skills to find the solutions that work. If you’d like to learn more about applications, explore our guide here. Ryeker Herndon is a Software Engineer for Shift3 Technologies. When he’s not working to find solutions to REACT challenges, you’ll find him in Idaho with his family, hiking the mountainsides with his wife and three kiddos.