Choose Your Side Projects Wisely

Sunday, November 27, 2016 by Rainer Stropek

(c) by CommitStrip.com, Image source: http://www.commitstrip.com/en/2014/11/25/west-side-project-story/

A few months ago, I wrote a blog post about how to keep up with ever-changing technology. One of my tips was starting side projects to dive deeper into new technologies. I have been doing side projects myself for a long time. They can be informative and fun. However, they can turn into nightmares for you and your team if chosen poorly. In this blog post I would like to summarize tips for getting the most out of your side projects.

Note that this blog post deals particularly with side projects that you do to learn a new technology. It does not cover side projects like e.g. open source projects with long-term commitment, building a product that you want to want to start your own business with, etc.

Why Side Projects?

We all know that there is a huge difference between passive and active learning. With passive learning (e.g. reading a book, watching a video, listening to a trainer), you can gain knowledge. However, this knowledge is of very limited value if you don’t start doing something with it. Only by active practice we can acquire useful skills (read more about this topic in The Practicing Mind: Developing Focus and Discipline in Your Life by Thomas M. Sterner).

Documentation writers and trainers nowadays respect the importance of practice. They add hands-on-labs with step-by-step instructions to their materials. Here are three examples from the software development space that I find particularly well done and interesting:

The problem with exercises that are part of a product’s documentation is that they are typically designed to showcase the things the product is capable of. Yet, these are not always the things that are relevant in practice or applicable in your specific projects.

This is where side projects come into play. You select a problem from a domain you are familiar with and implement a software solution with the technology you want to practice. You will not have step-by-step instructions, the problem has not been carefully aligned to the features of the technology in question, your project is more than just a few lines of code. Thus, you are forced to practice on your own. You leave beaten paths and have to apply the theoretical knowledge you acquired.

Another important aspect of side projects is that you can kill two birds with one stone. You learn about a new technology while producing something useful at the same time.

What Are Good Side Projects for Tech Learning?

Over the years, I have done many side projects myself. Some of them were efficient, some of them just frustrating. In my opinion, good side projects have the following characteristics:

  1. It does not matter whether the project is business-related or about a private hobby. Though, it is important that you really care about the topic. This will motivate you to continue when first problems emerge.
  2. The scope of the project should fit to the amount of time you can invest. In my experience, people tend to overestimate what they can achieve in side projects. Don’t select a trivial example but also stay realistic about how fast you can progress.
  3. Failure must be an option. Never select a business-critical topic for a side project in which you want to explore new technologies.
  4. The project should have a natural deadline. Maybe you have a deadline for an article on the topic or you develop a software for a certain event. Having a deadline prevents us from postponing our side project to infinity.
  5. If the result of your project should be used in real-world, it should only be used once or for a short time. Avoid long-term obligations (details see below). Examples for good side projects in this regards are e.g. registration site for small hobby sports event, accompanying app for a non-professional music event, sample for blog post, demo for conference session, exercise for a training, etc.

How to Turn Side Projects into Nightmares

Side projects can easily turn from fun into nightmare. In my experience, the following things would make you wish you never started the project – so try to avoid them!

  1. Choose a mission-critical topic on which your job or reputation depends. Remember, you want to have the freedom to try things. If you do, unforeseen problems or even showstoppers will appear.
  2. Select a job-related topic for your side project without support of your manager. It will be frustrating for you if your side project goes well but your manager does not believe in the technology you selected. You might even run into legal problems (e.g. who owns the IP?).
  3. Make a long-term commitment based on your side project. You might use preview releases that are hard or impossible to upgrade (or even never become production-ready). You should do quick-and-dirty solutions (e.g. ugly UI, lack of documentation) if it helps to reach your learning goal. That does not go well with maintainable software useful for other people, too.
  4. Make promises that other people (business or private) depend on. You should be able to stop once you have gained the intended knowledge. It must be possible to cancel the project if you see that the selected technology does not work for you.
  5. Invest all your spare time in your side projects. This will definitely lead to problems with family and friends. Instead, you should make a conscious decision about how much private time you want to invest. Discuss that time investment with your family and peers. Keep track of your time and don’t get lost in your side projects because it is so exciting.

Company’s Perspective

I have seen many companies setting up internal side projects to let employees get experience with new technologies. Keep in mind that the same dos and don’ts mentioned above apply in such scenarios. Here are some of my thoughts on this:

  1. Remember that it is likely that the project will not – at least partly – reach its functional goals.
  2. Effort estimation is particularly hard if you work with new technology. The project will be delayed. You might need to stop it before completion to not let costs get out of hand (read more about timeboxing).
  3. Never ever make business-critical systems a side project. I have seen software companies letting junior-level interns build important systems for internal use to explore new technologies. Do you really want to depend your company on the outcome of such projects?
  4. Some companies develop tools or systems in internal side projects to avoid depending on an external supplier of a ready-made solution. In fact, they are trading a dependency on an external company against a dependency on people.

Publishing Results is Important

Of course, practicing a new technology in a side project is a value by itself. The acquired skill will be useful for you in the future. However, you can get even more out of side projects if you publish the results. Here are some examples about what I mean with that:

  1. In software development, a blog accompanied by a well-maintained GitHub account is sometimes worth more than a well-written resume.
  2. By publishing your side projects as samples, you can build up a reputation.
  3. Having a network of people is important. It can help you in your career, you can ask for technical help, etc. Speak about the learnings from your side projects at user group meetings, conferences, etc. to become a respected member of a community.

Never forget to clarify legal issues with your employer upfront! If your side-project is somehow work-related, make sure you get the permission to work on and speak about it.

Have Fun!

My final and probably most important advice: Have fun!

Keeping up to date with technology isn’t simple. You will struggle with preview versions of poor quality. You will spend hours reading source code because of missing documentation. You will have to hunt annoying bugs. Be prepared for such obstacles and welcome them. See them as intellectual challenges or puzzles. Don’t take your side projects too serious. Enjoy them and be happy about any progress you make.

comments powered by Disqus

Rainer Stropek

Rainer Stropek

Co-founder, architect, developer

Bio

I am co-founder and CEO of the company software architects and have been serving this role since 2008. At software architects my team and I are developing the award-winning SaaS solution time cockpit. Previously, I founded and led IT consulting firms that worked in the area of developing software solutions based on the Microsoft technology stack.

In my work I focus on .NET development and software architecture. I have written some books and articles on C#, database development, Windows Azure, Windows 8 development, WPF, and Silverlight. Regularly I speak at conferences, do workshops and conduct trainings in Europe and the US. Since 2010 I have been MVP for Windows Azure.

I graduated the Higher Technical School Leonding (AT) for MIS with honors and hold a BSc (Hons) Computer Studies of the University of Derby (UK).

Contact

Twitter: @rstropek
Facebook
Google+
Xing
LinkedIn

Authors