It’s one of these days where I’m thinking about myself and my career in XR over the years. I don’t define myself as “successful” by any means, but still, after more than 8 years in this field, I’ve gathered some experience in the various jobs I’ve done in this ecosystem, and I had my share of joy and awards won. For this reason, I like to do talks and presentations about “lessons learned”, so that I can help people that are new to this field in avoiding my same errors and be faster in having a bright career in XR. And for this reason, very frequently people ask me for pieces of advice on how to succeed as AR/VR bloggers or developers.
So I decided to write this post in which I try to write these pieces of advice to everyone and tell you what are the things that made me gather a good reputation in the main three jobs I had over these years: XR blogger, developer, and tech lead. This article is not meant to be an exhaustive guide on how to do these jobs (this would require writing three books, probably), and not even to tell you what are in general the best pieces of advice about them… it’s just to give you some hints on what made me gather a good reputation in our field. I’ve divided the suggestions depending on the job category, but some of them actually span different jobs. So be sure to read all of them, because maybe some advice I put for the “developer” category can be useful also if you are a “blogger”!
Your readers are your priority
Blogging is not my main job, and this is the reason why I produce less content than the VR Youtubers out there. And if I keep doing it, notwithstanding the time it sucks away from me, it is because of the amazing people that the blog lets me meet. I’m sure my career in XR wouldn’t be the same without this blog.
And since for me is something about the people, for me the relationship I have with you, my readers, is the most important asset here. More than the money, more than the views. You are my priority. And for me, this means mostly two things:
- Bring value. I’m not interested in writing an article that doesn’t bring any value to my readers. “Value” can mean interesting information, talking about a good product to try, giving an update about my life (e.g. a product I’m building), or providing some laughs with fun posts (like this one). The question I ask myself when writing a post is “why people should read it?”. This is why I reject almost all the paid post requests: usually, they want to publish marketing fluff, that bring zero value. I accept it only if its content is good, like in the post I made together with NVIDIA.
- Be trustworthy. I try to be consistent, I try to express an objective opinion about the things I review, I highlight when a post is paid, I try to do the things I promise, and so on. I want to have an open relationship with my readers, and don’t try to cheat about anything. I’m not saying I never made a mistake (I did, and will do), but I did my best to reduce their number to a minimum and to fix the problems when I realized them (apologizing, if necessary).
Probably carrying on these values made my audience grow slower and didn’t make me earn much money in the beginning, but in the long run, it made me find myself surrounded by many amazing people that truly trust me and support me in everything I do. I feel a strong support from my community, which is worth much more than having millions of followers or hundreds of dollars of the paid posts I’m refusing.
This looks like one of those crappy pieces of advice from romantic B-movies, but actually, it’s a very important thing.
For a lot of weeks, after I found myself for the first time in the classification of top VR influencers, I wondered “But why?”.
I mean… there are many other fantastic content creators I myself love (e.g. Thrillseeker of Sebastian Ang), and very popular and well-written VR magazines (like Upload or Road To VR)… and all these people are better than me at creating VR content. So, I wondered: “why are there people also reading me?” I never asked this publicly, for the fear that people could ask themselves the same question, understand that there was no reason, and go away from my blog 😀
Over time, speaking with people, I got the answer: people like that this blog is personal, is real, is something from which they can connect with another person. And that person can sometimes be outside the lines and talk about porn or make fun jokes… and this makes him even more human. The other VR magazines are great, but they are more serious and objective, so they feel less personal and less human. So being personal, putting the true self in everything you do is very important. People want to connect with other people.
Of course, you shouldn’t try to emulate my style, you should find your own way of expressing yourself. I like being serious when working, but I like also to joke and make memes (sometimes with my friend Nikk)… and this blog reflects that. What about you? Try to express who you are and people will like connecting with you.
Be constant, be consistent
The hard thing about blogging is not opening a blog, but keeping blogging every week. This is something that is true for many things in life. Writing with consistency is not easy: there are lots of days when I really don’t feel like writing anything… and there are some types of posts, like the summary of news, that I find very boring to write. But here I am, blogging for more than 6 years, and writing roundups of news for more than 5.
You don’t build an audience if you are not constant, if you don’t create content every week. It doesn’t matter if you feel like doing it or not… you have to do it. Every one of us is scared of the blank page that must become an article, every one of us would prefer to sleep more during the weekend instead of writing a post. But I do it anyway because of my passion for XR and for writing, and you should do the same. So be disciplined, and push yourself to create content regularly.
Be willing to help
In the first paragraph of this section, I invited you all to “provide value”. Well, this holds true for a lot of things, it’s a mentality that you have to hold in your life in general.
One thing that I usually do is to try to provide help whenever I can to the people of my community. I’m not always able to help, but in general the attitude is to do my best to be supportive. People appreciate it, and usually help in return, when possible. It’s a good way to have around you a positive community of people.
Find creative solutions to deliver
Hard skills in my job as a developer are fundamental: knowing programming languages and programming patterns is the foundation of what I do every day. But I’ve noticed over the years that they are not always the most important thing.
I’ve found myself being mostly appreciated because I’ve often proven to be reliable in delivering products. Because at the end of the day, more than the architecture, the algorithms, the source code, and all the things that we techies love to care about, what is the most important is delivering the project, and delivering it in time. And surprise surprise, the development of your team will almost never be in time, especially in an experimental field like Virtual Reality. And to make things worse, usually, your customer is expecting always things that in VR are not possible.
So what is needed is to constantly find creative solutions to solve problems. Solutions to find a compromise between what your customer wants and what is technically possible. Solutions to get around that bug that is taking so much time from the whole team. Solutions because some new hardware is refusing to work. Solutions because you have only two days left and they are not enough to finish your work. Solutions because your application is live and has problems. In this context, what is needed is “technical creativity”: being fast in finding a creative way to find a solution, which usually is a compromise needed to get the job done in time in a way that makes everyone happy.
This is a skill that is highly rewarded. You may wonder how you can learn it… and well, the bad news is that there is no school that teaches it. I have learned it over time, by observing other senior technical leaders solving some tricky situations, by solving technical problems every day myself, by learning new skills while speaking with other people, and I would say also by solving issues in other non-tech related situations (e.g. when something breaks at home). And yes, of course also by doing copy-paste from Stack Overflow. The point is: keep your mind trained in solving problems, and you will develop this capability over time.
Delivering in time also requires sacrifices. As I’ve said, when developing a VR experience there are always a lot of unexpected problems. So most probably you will be late, and you will have to do some overwork on the last days to deliver. As long as this is just a small crunch of a few days, I’m quite used to it and it is no problem for me to carry it on. This is another thing that is usually appreciated.
Try to deliver a good product
Sorry if I keep stressing about this delivery thing a lot, but it’s actually very important. Another aspect of it, that complements the above point, is that you have to strive to always deliver a high-quality product.
With this, I mean that the experience you create should run smoothly, and that you have to remove all the bugs that you can. Furthermore, it has to contain all the functionalities that have been requested, and maybe also a tiny bit more. Don’t do much more than what was requested, because you must stay within your time and money budget, but try to offer always a good quality product, and to deliver “a bit more than expected”. Before delivering something, always wonder if you are proud of having your name associated with that and if the answer is no, then improve it. This will help a lot your personal brand both with your peers and with your customers.
Care about the architecture
Developing is not only about writing code. It’s good practice to think about what you have to write, before actually writing it. It’s a bit like writing a book… if you start writing it without an idea of what will be the book structure, at a certain point you will realize that the book has no sense. So before writing any piece of code, think about the whole application you are building, the parts that you have to write, and design a proper structure of what you are going to develop. That is, write an architecture, even if it is just a draft on a piece of paper: it will help you a lot. Only after you have done that, and optionally you have discussed that with one of your peers, then you can start coding.
Being able to create a proper coding architecture is what elevates you professionally, and make you better than the people that just copy-paste from Stack Overflow or that ask ChatGPT to write the code. So try to become at least good-ish in doing that. There are also some books that can help in learning this skill.
Then of course writing code is important. Remember to make it modular, readable, maintainable, and that respects the code policies of your team.
Compromise between learning fast and learning well
In this crazy world, with the VR field growing and constantly changing, the ability to learn fast a new technology is very important. In my experience, being able to learn fast a new technology, in a good enough way to deliver, has been fundamental. This flexibility is valued a lot in our field, and if you don’t have it, you have to learn it. The crux is being able to “learn enough to deliver”, even if this means not becoming an expert in the matter of your project. Having horizontal knowledge is very valuable to be able to master many different types of projects that may be needed in your job.
I’ve not always been like that: actually, when I was at the University, I liked to have a very vertical knowledge. Every time I learned something, I wanted to know everything about it. Understand its foundations, grasp the reasons why things were in a certain way, and being able to master completely the matter. This helped me in having a great understanding of what I was learning, but made me also very slow when starting a new matter. I still remember when I had to do a project in Blender with my mate Gianni (who later on became my partner at Immotionar) for the course about 3D graphics, and he gave me a book about Blender to learn everything about it. We had just a few weeks to create a short animated 3D movie, but after a few days, I was still busy reading the book, on page 50 of 600. I was incredibly late, but Gianni was instead already working hands-on on the project, and I asked him how it was possible. He answered me that he had read the whole book during the 1-hour train trip from his house to the university. That day I understood two things. The first is that robots live among us.
The second is that since I was not a robot, I had to change my usual approach of understanding everything in the minimum detail, if I wanted to deliver. If I wanted to finish the project, I had to learn the bare minimum and then start working. This is when I started changing my mentality.
BUT having experimented with both ways of working, my real suggestion is not to choose one or the other, but to compromise between the two. Developing a flexible mind and being able to learn a new skill fast to deliver a project is invaluable, but if there is some technology that is foundational, try to learn all its working details. When I was used to develop OpenCV applications with C++, I learned everything I could about good C++ development, and I became very skilled with it. It was very important for me to do my job well, and that knowledge is still proving useful today, where even if I use C#, I have a good understanding of memory management and what happens “under the hood” when I use other more high-level languages. Now that I’m a Unity developer, I read books about Unity, programming patterns, and optimizations. This is very important to understand how to solve some problems that I’m finding along the road because it gives me deep knowledge on the matter. So my final advice is: have a horizontal knowledge, but go vertical on the technologies you use the most.
Mind the humans
The greatest shock I had when I started transitioning from being a developer to being a lead (lead developer / tech lead / CTO / whatever), is that things become always less about technology and always more about humans. You are not the one writing the code anymore, you become the one coordinating the people that actually write the code. So to get the job done, you have to be proficient in human skills, more than technical skills (which still remain important, don’t misunderstand me).
You have to be good at leadership, at supporting your team, at motivating your team. This means make your people feel well and feel motivated. Help them in delivering in time. Make them feel that what they do is important and they are having an impact. Make them grow. Coordinate them. Yes, you have many duties.
And to make things even more difficult, there are many different ways in which you can become a leader. You see that every day in sports: some of the most successful coaches are very strict and always angry, others are very friendly, and others seem always relaxed. This shows that there are different ways to be good at leading people and you must find your way to do that. Most probably you will need some trial and error in the process, and someone will remind you as their “bad boss”, but the important thing is to keep improving, and to forgive yourself for the things you will do wrong for your inexperience.
Learn the attitude from everywhere
So… you have to learn to become a leader, but how do you do that? Some people are natural-born leaders, but if you have not this luck, my suggestion is to learn the skill like you’ve learned many other technical skills. In my personal case, there have been mainly three sources of inspiration:
- Books. I’ve read a few books about leadership and about being CTOs. Some of them have proven to be incredibly useful for my career. Books are much better to learn this topic than some posts on Reddit or some black-and-white motivational images shared on Facebook, because they can treat the matter in depth and provide you with a coherent treatment of the topic;
- Other leaders around me. We are all surrounded by other entrepreneurs, managers, Chief Metaverse Officers, sports coaches, and other leaders of every kind. In my case, I tried to see what they were doing and copied from them the best of what was working for them. I also explicitly asked for pieces of advice on how to properly do my job to some of these people that I particularly esteem;
- The people I work with. Sooner or later, you’ll realize that this thing of being “the boss” is just an organizational thing. Whether you may like it or not, the people that work “for you” will teach you many things, and their feedback will also make you understand what you are doing well and what not as a leader. It’s always a two-way process: they learn from you and you learn from them. I’ve corrected many errors in my management techniques from the feedback I got from my devs in the past (and “feedback” sometimes means also being sent to f… ehm, you got it).
Mix all these things and find your ideal style of leading. As I’ve written about the blogging style, also this one should be very personal to you. Don’t try to imitate someone else… you would result in just being his/her poor copy.
Explain the whys
I’ve found it very important in my career as a tech lead to always explain the reasons why I’ve taken some decisions. It’s a simple trick, but a very effective one. If you don’t explain the reasons behind your decisions, it may seem you’re just taking random decisions from a position of power. If instead, you explain your reasonings, even people that don’t agree with you, at least understand better your point of view, and digest your decision better.
Organize the work in the best way possible
Work with your team in finding the best way to work together. Choose a communication channel (e.g. Slack), a way to manage the tasks (e.g. Trello, Asana, Clickup), a way to keep yourselves updated on the signs of progress (e.g. Agile standups), and so on.
Different team sizes require different processes. Different projects require different processes in general. What’s important is to coordinate with your team, and eventually with a project manager, until you find a proper way to work together for the current status of the project. And if the conditions change, disrupt the current process and create a new one. This is for instance what we are doing now at VRROOM: since the company has grown quite fast in the past months, we developers have just spent a few weeks to find a new and more efficient way of working together.
Technically speaking, it is also important to organize the work well on the development side: for instance, for big projects, defining the exact specifications and the whole project architecture before the team starts coding is fundamental. This way, all the people working on the project can coordinate well on it, because everyone can imagine what is the final product, and what is its exact role in making it become a reality.
Consider different aspects
If you are leading a team, you have also to consider other factors than the mere technical side. If you are a CTO, for instance, you must consider also the business side of your decisions: this means for instance what costs they have, and how they could help in finding investments. Many times you find yourself mediating between technology, money, the market, humans, and many other things. For every problem, there is not an exact solution, but many with different trade-offs. Because privileging one of the aspects (e.g. the technology) usually causes problems with the other ones (e.g. focusing too much on technology can cause too many expenses for the company). You have to juggle and find the best compromise on everything. This is another skill you learn by experience, and by copying others.
You may ask me what things you should privilege when considering all these factors. Well, it depends, but usually, when I’m in doubt, I always choose the users’ satisfaction. This is my priority because, at the end of the day, we are building a product for them, so it’s important that they are happy with it.
Of course, you won’t be the only leader in your company and your peers may have other priorities: for instance, if you are the CTO, you may have to make meetings with the CFO whose priority is the money, the CEO whose priority is the vision and the investments, the CMO who cares about the marketing and so on. Don’t be afraid to go to a battle with your peers: it’s important that everyone brings to the table his own priorities, and after a respectful discussion, you will come out with a common compromise that will enrich everyone.
BONUS Question: But how do you manage to do all these things?
This is a question I’ve been asked a lot. “You’re a blogger, advisor, technical lead… how do you manage to do all these things at the same time?”. My answer is usually “because I do all of them terribly”.
Jokes apart, it’s a matter of:
- Time investment: Of course, I work more time than someone doing the usual job with office times. I do that because VR is my passion, so working a lot is also something I somewhat enjoy
- Time management: I use various techniques of time management, which let me be consistent in my various tasks
- Flexibility: When one of my jobs requires more time, I sacrifice one of the others. For instance, if I’m crunching with the dev team, I write fewer blog articles
- Discipline: More than motivation, discipline is what makes you get the job done. You must do focused work, and respect the time slots you have assigned yourself for the tasks you had to do. If I spent my days following Telegram notifications and scrolling social media feeds, I wouldn’t be able to achieve the results I’m achieving. Again, even if I don’t feel like doing something one day, I still force myself to work, because that’s the only way to actually succeed
- Sacrifice: Of course, doing all of this requires sacrificing some free time and not being available for everyone that would like to speak with me
But please, don’t just work all the time, and try to reserve some time for your passions and for the people you love. Life is not only about working.
I hope this long post will be useful and will let someone speed up his career in virtual reality. If you’ve liked it, let me know about your career in the comments here below, and let’s chat together!
(… and yeah, if you want also to subscribe to my newsletter, that would make me happier as a blogger… so please click on this link!)