Getting into the habit of starting side projects is something that can seem intimidating to new developers. When I first decided to learn virtual reality development, I had to get more serious about self-driven side projects. As a technical evangelist at Microsoft, I’ve spent a fair amount of time on small projects to teach the fundamentals of virtual and augmented reality development, and I wanted to share some of what I’ve learned to help you with your own projects!
First, ask yourself these six questions to start thinking about how you want to scope your projects and identify what you want to build. These tips can then help you understand how to get the most out of the side projects that you’re working on.
Tip #1: Start with a small project – it’s much easier to start with something small when learning something new, and add on features to build it up as you get more comfortable within the technology.
The biggest misconception that I had about creating side projects was scale – when I first decided to learn web development, I had this idea that I needed to be building the next Facebook. Remembering that everyone started somewhere, I had to dial it way, way back in terms of what I reasonably could accomplish.
My very first foray into a VR Unity application was simply changing the color of a sphere when it was clicked on. After that, I built out a basic maze, and a simple psychedelic WebVR site. Occasionally, I’ll just make a few new environments with no game play for the purpose of getting more comfortable with the Unity editor.
Tip #2: Keep projects manageable by setting explicit goals and making it clear to yourself what you want to get out of each project. These goals will probably change and evolve throughout the process, and that’s A-OK!
When I start a project now, I generally have a goal in mind. In hindsight, this seems fairly obvious, but a lot of my early projects didn’t have any basic direction. That’s not always a bad thing – especially when starting out, any time that you spend building things has value – but as I’ve gotten more familiar with a variety of VR tools, I’ve found some good strategies for setting goals and outcomes for side projects (spoiler alert: they usually aren’t “ship it!”)
I generally like to compartmentalize my side projects – if I’m picking up a new SDK, I’ll probably stick to building out the experience in Unity, since I’m familiar with that editor. If I want to start poking around in another editor, I’ll often target Cardboard or the DK 2, since those are the headsets that I’m most familiar with developing for.
Often times, my side project goals will be to complete a specific task through a given technology. Past examples of this included:
- Build a fully playable game using Unity + Cardboard
- Get Leap Motion interacting in Unreal Engine
- Create a space environment in Unity to learn the basics of particle systems, materials, and lighting
- Get the WebVR sample site running with the DK 2
- Display a 360 photo in A-Frame
Tip #3: Be willing to let your side projects grow and change, especially as you learn more and more about the language / development environment that you’re working in.
Quite a few of my side projects end up changing a lot from their initial plan. A hackathon project that I made once was originally a Tron-themed simple shooter game, but the final incarnation turned into a sci-fi robot theme in outer space, and the game play is slowly morphing into an entirely new idea as I continue to work on it.
Sometimes, I also scope a side project and it turns out to be much simpler than I initially thought – which means that I’ll often keep poking around in it more than I may have originally planned for. When I first wanted to try out A-Frame, I had a really basic goal to just add in a 360 degree photo to a webpage using A-Frame, but that ended up only being about a 5-minute project. I just started adding in other random bits and pieces and diving deeper into their entity-component system: something that I hadn’t originally planned for, but ended up being able to explore.
Tip #4: Document what you work on with your side projects!
I’m a firm believer that every developer should have a blog. While blogs can be helpful for sharing knowledge, they also serve as an excellent tool for keeping track of what you worked on, how you did it, and what you learned. When I was working on KittenVR, I made sure to note each of the major milestones on this blog in order to track my overall work process. Down the road, this ended up being a helpful reference when I would run into the same problems – I had a record of what I had done previously to fix it up!
In addition to the record-keeping, documenting what you work on helps reinforce the connections of the actions you do, the code you write, and how you pull it all together in order to improve the learning process.
Bonus Tip: Save the code! I really like GitHub for tracking projects. While not all of my side projects make it up to GitHub, many of them do. This helps show my activity as I’m developing, and also provides a nice backup for storing projects that I can come back to and build on later.
Do you learn through doing? What are your tips for working on new VR side projects to learn new things? Share in the comments below what you do and how your strategies come together!