If you have ever been in a position where you were thinking “I wish my computer could do this task for me” or “why isn’t there a calculator for this,” well, it probably can, and there is probably a library for it. With a bit of programming knowledge and some coffee, you might just have a solution to your problem. Maybe.
Make no mistake: I am by no means a programming guru, but I still have a few suggestions for you to be able to pursue applicable projects with software. For those of us in mechanical engineering, software is typically a tool rather than the product itself. One suggestion that I like making to people who are mechanically inclined with an interest in software is simulation development. Simulations require interdisciplinary knowledge to implement, since they are nothing more than a mathematical model of some real-world phenomenon. As a tool, I have seen this used on numerous occasions: my engineering design team, for example, uses a student-built Matlab vehicle dynamics simulator to estimate lap times for our car. If we change different aspects of our vehicle’s performance (for example, downforce), we can get an estimate for how our competition score will change. As I have mentioned, these can also be a product, meant to be used as a tool by engineers. These tools (products such as Star-CCM+) typically take a huge amount of resources and developers to create, although if making a contribution to open-sourced software is more your speed, there are always packages such as OpenFOAM.
Don’t forget that there is always room for passion projects! Yet another one of my perpetually incomplete, overly ambitious projects has been to make a simple computational fluid dynamics (fluid dynamics simulation software, known as “CFD”) program from scratch using Python. I admit that it has no true practical application other than to help me to better understand the inner workings of CFD code.