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.
Although I acknowledge that I may not be the best person to speak about software development, a question that I often get is “how do I start”? My personal recommendation is to choose an application, then to just dive in. I promise you that there is no shortage of information on almost anything when it comes to programming. Just as with mechanical projects, you typically learn exactly what you need in the most efficient manner possible when you have something to apply your knowledge to. Failure will occur and iteration is a necessity, but this is all part of the learning process. Fairly recently I started to make a personal website and a web app, and I can safely say that I knew basically zero HTML when I started, let alone JavaScript or some of the common development libraries.