How I’m Preparing For My Career Transition Into The XR Industry I promised myself I wouldn’t work this weekend. My extended family is visiting, and I wanted to be fully present and show them a good time. Of course, due to COVID-19, a good time involves staying safely indoors, cooking and eating good food, and other wholesome activities such as watching movies, arts & crafts, and reading & writing. I’ve been meaning to reflect on my interview preparation process for a while now, and some peers have been asking me about it, so I figured hey, why not -- let’s knock this out. Please forgive the lack of polish on this single-pass word vomit of an article... I’m on vacation and watching Netflix in the background. I have a self-imposed two hour hard-stop so let’s get to it. Hi, I’m Eric Before I dive in, a little about myself: I graduated as an Economics major from UCLA in 2012. For the majority of my career since graduation, I’ve worked as a program manager at a global industrial conglomerate that makes products that are probably keeping the building you’re in from falling apart in some capacity. Roughly three years ago, a good friend of mine bought a PSVR headset and invited me over to try it. It was a revelation -- something clicked in my heart and I knew creating immersive experiences was what I wanted to make my life’s work moving forward. I had always made little digital things growing up: documentaries, short films, websites, video games, music videos, animations... XR seemed to be the ultimate multi-medium that melded all of my creative hobbies together. A limitless playground. Ever since that day, I’ve been building a variety of VR/AR experiences on nights, weekends, and PTO. Some highlights include releasing a VR game called Hooplord onto multiple VR platforms, winning $25,000 at the AT&T 5G Hackathon 2019 for a mobile VR tool called Multistream, and creating a collection of hand-tracking tools and prototypes called Handbox. I’m currently polishing a mobile AR experience that’s under wraps, preparing for technical interviews, and wrapping up a handful of projects in my current job. Once those are all done, I’ll begin actively applying to XR Engineering roles. My current ETA is October, but who knows where the wind blows... or rather, when the wind will blow. Whatever. A Disclaimer Please take everything in this article with a grain of salt. I’m still in the process of transitioning into the XR industry professionally, and I come from a non-traditional background, meaning I’m not a new grad with a CS degree. I’ve also been fortunate enough to have kept gainful employment during this pandemic, and have saved enough to make sure me and my wife can have a roof over our heads for a while even if I lose my job. This sense of security has been essential in my journey, at the cost of speed and work-life balance. Juggling a demanding full-time PM role means I have to scrap together whatever time I can, which ends up averaging to 30-40 hours a week dedicated solely to my XR passion, and around 70-80 hours a week when combined with my current job. Luckily, the hours spent on XR don’t feel like work, but this is definitely unsustainable for the long haul (please take care of your emotional health!). Everyone comes from a different path -- my hope with sharing this article is to help anyone who might be in a similar situation, or has similar aspirations. Disclaimer aside, I do have confidence that I will inevitably find a good fit once I start actively putting myself out on the market later this year. I’ve had a fair amount of recruiters reach out to me unsolicited, and a near-100% response rate to the applications I’ve sent in for openings that I didn’t think would last until I was ready. Nothing is guaranteed, especially given the global pandemic and economic depression, but I believe strongly in the power of sweat equity. It’s currently August 16th, 2020 at the time I’m writing this, and the XR industry is still largely passion-driven. I believe prolific XR creators can reliably find a professional role for themselves somewhere, if that’s what they’re explicitly aiming for and are willing to relocate. Skill Specialization It took me over two years after I started this journey to choose what I wanted to specialize in for the foreseeable future. When I first started building XR experiences, I took a breadth-first approach. I wanted to have at least a fundamental understanding of all of the major pillars of experience development: production, narrative, design, engineering, sound, art, marketing, publishing. Hooplord gave me a way to touch on all those areas. If you have a chance, I recommend making a project that will allow you to get your feet wet in multiple crafts. Although I knew I didn’t want to go deep in most of these disciplines, I wanted to learn enough to relate to and communicate with collaborators who did. Over time, I realized that I enjoyed the design and engineering processes the most. I kept going back and forth between the two, and eventually made a firm decision to hone in on engineering. There wasn’t any single ah-ha moment, just a lot of soul-searching and building things to unveil what made me the happiest. Why do I feel so strongly about the necessity of perceived specialization before applications? I had a lot of subconscious anxiety about this, as I knew that it was ill-advised to come off as a generalist for entry-level roles in the tech industry. Companies are trying to maximize the impact of their employees, and they want someone who will seemingly fit perfectly into the role they are trying to fill. In this economic climate, I did not want to give them a reason to think that I wasn’t that person. I consider myself a self-sustained studio, but I will be marketing myself as solely an XR engineer. I’ll still be bringing all those other skills to the table, only AFTER I get hired. Why focus on the hiring practices of large tech companies? The industry still orbits around a handful of tech giants, and it’s hard (but definitely not impossible) to find stable employment elsewhere. If going indie is your thing, then I don’t think specialization is as important. As for me, I want to have a reasonable chance of affording a house and kids in the next decade. There are times I wish I discovered XR earlier in my life, but I don’t think having regrets is productive or healthy. Once I decided on engineering, I laser-focused my resume, cover letter, and portfolio around it as much as possible, despite my PM background. I’ve had multiple industry veterans review my profile assets and have received positive feedback about this level of focus. I still have a lot of work to do updating and polishing all of those assets into a final state before sending in applications, but I believe perceived specialization is the right approach for maximizing expected value throughout the interview process. Be Relevant It’s common knowledge to build and showcase projects & open-source contributions when targeting engineering roles. I believe it’s especially important for the XR industry that your projects and contributions are relevant to the field and role. In contrast, hiring managers for general software engineering roles at big tech companies tend to look for problem solving ability and technical communication skills -- domain and language knowledge can be learned on the job if you demonstrate enough potential in your engineering skills. From what I’ve seen and heard (and honestly, from common sense), XR engineering roles require all of the above. There is so much specific domain knowledge in engineering XR experiences that it can’t be overlooked, and the field is interesting and competitive enough to attract top talent. I imagine this is the same in other specialized “hot” engineering fields such as AI, ML, and big data. Besides projects and contributions, I’ve learned a lot from being an active participant in my local XR community and entering hackathons. I was even fortunate enough to win a couple awards in my latest hackathon last year (back when in-person hackathons were still a thing pre-COVID). I’ve received a lot of interest from recruiters because of my extracurricular activities, and I think it’s an important part of my value proposition to potential employers. I didn’t do these things because I wanted clout, I did it because I’m passionate about XR and wanted to immerse myself in it more deeply. I strongly believe and have personally experienced that demonstrating true passion is a big factor that recruiters are looking for in candidates. Get Your Name Out There I’ve always struggled with self-marketing. I don’t like to bring attention to myself, and have always kept a tight circle of friends. I even abstained from all social media (besides LinkedIn for professional reasons) for most of my adult life! However, once I decided that I was going to make this career transition, I knew that I would need to market myself and get my name out there somehow. Last year, I made an Instagram, Twitter, Github, and portfolio and slowly increased my activity on them over time. I’ll be honest, I found it exhausting to navigate and use these platforms, so I basically didn’t do that for a while and still don’t do it nearly enough. It’s something I still need to work on. My advice to other people like me is that you should try to get over this digital social anxiety as soon as possible and just get started, like literally ASAP. I promise that your utility out of these platforms will grow over time, you just need to plant the seeds. A caveat: don’t let it consume you. The work comes first, which leads us to the final and arguably most important part of this article: Technical Interview Preparation If you’ve made it this far, congratulations! Here’s an overview of how I’m currently preparing for technical interviews. I’ve spent countless hours on researching the industry and trying to uncover its hiring practices. Not surprisingly, there are no standard conventions yet but there are some clear patterns that will increase your chances of not getting blindsided during a technical interiew. From what I have gathered, here are the six areas of preparation that are likely to come up in a technical interview for XR engineering roles, in order of likelihood:Very Likely Data Structures and Algorithms (aka DS/Algo) Behavioral / Projects Overview Decently Likely 3D Engine Knowledge (Unity or Unreal) 3D Math (namely Linear Algebra) Somewhat Likely Object-oriented and System Design (depends on seniority of the role) Language-specific Knowledge I spend about 60% of my preparation effort on Very Likely categories, 30% on Decently Likely, and 10% on Somewhat Likely. By the time I send out applications, I want to feel fairly confident in every area -- I say fairly, because I don’t think it’s reasonable to be completely prepared in all of these areas (especially with how varied the interview process still is from company to company for different XR roles). I’m starting to get close to my self-imposed time limit on this article, but thankfully the rest of this topic is straight forward. Here’s what I do to prepare: work hard, fail fast, high-level review, and rest. Work Hard Following the release of Hooplord, I’ve spent roughly 2 hours everyday doing practice problems on DS/Algo. This is pretty much non-negotiable for me. I take a day off each week. There are a lot of learning resources out there, and it comes down to personal preference which one would be most effective for you. I recommend doing some research on this -- there is a ton of information on this topic on the internet. CTCI and LeetCode is a good starting point. I could write a whole other article about why I think this is a flawed yet necessary hiring practice based off of my own experience with it, but the gist of it is that I’ve become a much faster and fundamentally-sound programmer because of my preparation. It’s really frustrating at first: it took me over an hour per LC Easy problem at first, three months later, now I average less than 20 minutes per LC Medium. If you stick to it, it’ll get less painful, and dare I say it, more fun. Also, I started on a physical whiteboard and only graduated to Coderpad after two months. This was an essential part of my process, as it forced me to be precise on my syntax and commenting. Plus, once I was able to use a keyboard, it felt rewarding finally taking the training wheels off. I spend anywhere from 10 to 30 hours a week inside the engine/IDE (Unity/C#/VS is my stack) building stuff, depending on how busy work is that week and other various factors. This keeps me warmed up on the practical applications of 3D engine knowledge, 3D math, object-oriented design, and language-specific knowledge. However, the focus of a project can be sporadic depending on what I’m building or prototyping, so I still allocate dedicated time for those topics too: I spend roughly 5 - 10 hours each week on what I consider the ancillary technical areas: 3D Math, OOD/System Design, Language-specific Knowledge. This includes watching YouTube videos, reading textbooks and online learning resources such as GeeksForGeeks articles, and looking up common interview problems in each area and trying to solve them under interview-like conditions. Fail Fast Working is important, but failing is even more important (in my opinion). I do this in the form of mock interviews, mock challenges, actual interviews/challenges depending on if I have any scheduled, and actively trying out new things when I’m building stuff. There are a wide variety of platforms for mocking interviews, and they all come down to preference. I personally enjoy Pramp for DS/Algo mock interviews. Pramp also stands for practice-makes-perfect, which is a mantra I subscribe to. As for building stuff in Unity, I give myself a challenge prompt that can be done in under 4 hours (to emulate take-home interviews) and they must incorporate a fundamental concept that I’m rusty on. For example, some of my challenges have centered around: ScriptableObjects, Quaternions, Dot/Cross Product, Events/Events Handling, FixedUpdate, etc. It is remarkable how fast you can grow when you fall on your face and know exactly what you need to work on. Right now, I try to do some sort of mock interview once a week, but my plan is to eventually graduate from mostly studying to mostly mocking once I am close to sending out applications. High-Level Review As I work hard and fail fast, I take notes on what my gaps and weaknesses are and give myself high-level reviews every two weeks or so. This is especially effective for DS/Algo preparation. I also look over my behavioral interview question answers and try to polish them every once in a while. There are different approaches to behavioral questions (STAR scenarios is a common one), but I try not to stick too closely to the script because it can come off as robotic. Honestly, this is the one area that I haven’t focused too much on yet because I think it’ll be more efficient to focus on it when applications are closer, so I don’t have much to reflect on here. Rest I love my wife, and spending quality time with her is non-negotiable. I’m fortunate enough to be with someone who is supportive of my pursuits and is also very busy with her own. I’d estimate that I relax about 2 hours each weekday, and while I work through most weekends, I try to take a full weekend off once a month or so. As I mentioned earlier, this is definitely not sustainable unless you are built for that sort of thing, but my hope is that once I transition into the XR industry in a full-time role, it’ll all pay off and I can go back into a more balanced work schedule. Oh yeah, almost forgot: exercise is a really important part of my personal process. If I’m burnt-out, I do some yoga or run. Prior to the pandemic, I would lift weights or play basketball. Whatever it is, exercise seems to cure burn-out for me without fail. Good luck! I’m pretty bored of writing now and want to have another beer. I hope this was helpful and/or interesting to you! If you have any questions or comments, my contact info is below. Cheers and I hope you stay safe during these troubling times.