In a recent humble bundle, I found Automate the Boring Stuff with Python [0] which partially answers this. After going through the basics of Python, it describes building small projects such as scanning an Excel spreadsheet and sending email to people who are marked as &#x27;not paid&#x27;. Projects like this give a different perspective to programming. Programming is not only about building grand projects. It can also automate every day stuff which you wouldn&#x27;t normally call a programming task.<p>&gt;&gt;&gt; contribute to an open source project<p>It&#x27;s a very very common advice and I believe a wrong one, especially to novice developers. It&#x27;s simply... Not that easy. Yes, there are tons of projects but most of them are pretty damn large or mature enough so that easy tasks have been a long time ago. Some projects (e.g. servo) have web sites dedicated to new contributors where you can filter issues marked as easy but there are not many projects to choose from. You can look for small, less popular projects... But that&#x27;s not an easy task either. Plenty of experienced developers have an issue &#x27;want to contribute, don&#x27;t know where&#x27; and they find it tricky, it&#x27;s much harder for the novices.<p>[0] <a href="https:&#x2F;&#x2F;automatetheboringstuff.com&#x2F;" rel="nofollow">https:&#x2F;&#x2F;automatetheboringstuff.com&#x2F;</a>