Side projects are a fun way to enhance your programming skills, and they can range from small public github projects to fully commercial software pieces sold to consumers. What you're trying to achieve with your side projects should give you a good idea on what the side project should do/consist of. If you're want to learn a new technology, then a simple app that you can upload to github in the technology of your choice (This approach should also work for open source projects). My ongoing beginner C repo is an example of this. If you want to create softeware that makes money by some means (Software As A Service, subscriptions, ad-based, sold per unit, etc) then a private repo will be required. You can get one for free from bitbucket, but you'd prefer convenience, you can also pay github for private repositories. My Rotten Alive game is an example of a commercial app, and its source code is hosted on a private github repo.
The first thing you should do is identify what type of project you're going to/are working on, then identify the purpose of your project. In this context I do not mean purpose as in what the software will do for your users, but moreso what its purpose is for you. Projects can be charitable causes for others people (Think most open source projects, or software that augments the ability of people with disabilities). They can also be entertainment based (Games), business-based (B2B applications, SAAS), a personal "bucket list" project (My encroaching Death 360), or many others. The purpose of your project will determine how successful it is and how easy it will be for you to develop it.
If you choose to create something to help others or to learn a new technology, then your path and motivation is clearly set. The best way I've found to learn a new technology is a combination of book reading and diving straight into practical work. This is the best method I've found for myself personally, online courses simply do not work for me as I find them too noisy and slow. Make sure that you have a well-defined end goal so that you have a criteria that defines completion. Without a defined goal, there will be no "home stretch" to be motivated to reach and no definition for failure to avoid. I would advise having a public repo so that others can utilise your project as a learning resource. Open-source projects would require expertise that I do not posess, but the support of fellow software professionals would be beneficial. If I were to start an open-source project, I would begin with basic functionality while also creaitng a subreddit for the project (Or whatever the current days popular equivalent is). Gather as much support as you can and do not ignore your github issues. Public adoption is key.
Entertainment projects can strike a balance between fulfillment for you, and earn money at the same time. Usually this will be an arcade game like flappy bird, but it can also be more in-depth (Like an RPG game) or less in-depth (Like a novelty application, such as a soundboard). You can monestise entertainment software by using banner advertisements (Usually most effective after a level or milestone has been reached in-game), video advertisements (Best used sparingly or as a "paywall" to unlock more content), in-app purchases (An actual paywall for content) or by simply selling the software per unit or via subscription. The best approach I've found is a combinations of advertisements or/and in-app purchases in your game. The purpose of a game should either be a specific game you've wanted to make or a genre that you're interested in. Encroaching Death 360 is an example of both a genre I'm interested in and a game I've wanted to make for a very long time. It is currently monetised with video advertisements that appear for the first time the game is played, and I have plans to add video advertisements that unlock weapons down the road. Rotten Alive is an example of a game I created, which had banner advertisements at one point. I eventually removed them after I realized that you can't simply put banner advertisements on a game and expect click-throughs. Video advertisements would be more appropriate in Rotten Alive's case, acting as a paywall to unlock more game chapters.
Business-related software should have a more professional image than the other types of software projects that I mention in this post. Usually business software will not have advertisements unless it's free. These can created for businesses, individuals, groups and pretty much whatever other entities you can imagine. They solve a business need for their users and are often for-profit. Sometimes they can serve a entertainment need (YouTube comes to mind), but a business-entertainment side project would likely be enormous. I would advise that you start small if you want to create a business-related side project so that you can scale it up later on if it becomes successful. If you really want to solve a business need and make it free out of the goodness of your heart, consider taking the open-source approach I mentioned above. An increasingly popular approach to making a profit for a business project is the SAAS business model, where you charge a subscription fee in exchange for access to the software. This is a good alternative to selling your software per unit, as it guarantee's income as long as you can keep your customers happy, which you should be able to do by providing good quality software that is regularly updated with new features that incorporate customers feedback.
Encroaching Death was a game that I had wanted to create since I finished my undergraduate back in 2013, but at the time it simply wasn't possible. After a few years, technology (mostly) caught up and I was able to use Vuforia to perform the tracking necessary to create my augmented reality zombie game. This game really meant a lot to me personally, as it represented a goal I had thought impossible years ago. Back when I finished college, I had neither the skills, the funds, platform-knowledge nor the technological landscape-knowledge to create Encroaching Death. I didn't know the limitations of mobile devices or what libraries/software I could use to expedite the process of creating this game. I eventually gained the experience/knowledge necessary to create Encroaching Death 360, but the point I'm trying to make is that this was a game I needed to create. It had a purpose beyond making money or adding to my CV. Open-source and skill-building projects can also fall under this category, as people enjoy helping others and these kinds of projects can potentially help others a lot. SAAS and business software can also be as fulfilling as a bucket list project if the results of the project fulfill a life goal, rather than the software itself.
Lastly I wanted to mention that if you're creating a project that generates profit, you will need some method of hosting your software. If it is an entertainment project for the Android or iOS platform, you will be able to use the Play Store, App Store and Amazon to host your project. However, if you need to host business software, you'll likely need to use a hosting platform. Digital Ocean is very popular, but Vultr is one of the cheaper options I've seen. You can also temporarily use a free host like Heroku as a testing platform if you'd like, but you will need to match whatever technologies your host supports. For example, I had to change this blogs database to PostgreSQL when I wanted to use Digital Ocean. Be aware of what technology each host provides and you could save yourself some headaches down the line.
In conclusion, know what side projects you want to work on and what purpose they provide to both you and others. Once you've grown tired of creating content for one type of side project, try a different type. You might find that you become dissatisfied with how your business projects are performing and would like to develop an open-source library to help other people. You might also exhaust your list of personally fulfilling projects and want to take a shot at making some money with a business project. Mix things up and keep it interesting!