I just read a delightful blog post called "An app can be a home-cooked meal". The author of the post, Robin, shares his story of making a personal messaging app just for him and his close family. The messaging app doesn't aim to do much other than let them communicate in a way they feel is natural. There are no ads, forced updates, or anything of that nature to worry about. Because Robin made the app himself, he chooses its direction.
Later in the post, Robin made the clearest articulation on making what you want with software that I have read. Here is one piece of Robin's article that really stood out to me (although you should read it in its entirety if you like making software or wonder why you might want to learn):
I am the programming equivalent of a home cook.
The exhortation “learn to code!” has its foundations in market value. “Learn to code” is suggested as a way up, a way out. “Learn to code” offers economic leverage, professional transformation. “Learn to code” goes on your resume.
But let’s substitute a different phrase: “learn to cook.” People don’t only learn to cook so they can become chefs. Some do! But far more people learn to cook so they can eat better, or more affordably, or in a specific way. Or because they want to carry on a tradition. Sometimes they learn just because they’re bored! Or even because — get this — they love spending time with the person who’s teaching them.
There is a lot to unpack here. Robin makes an excellent reminder that you don't need to use code as a way of pursuing a career that involves your skill. Rather, you can use code to make something that makes you happy and allows you to express yourself. It may be difficult to get started with code but when you do it's like a whole new world is open to you. You can bring your ideas into reality and change the way you use technology.
The IndieWeb community has a related term for building tools for yourself called "eat what you cook." The idea is that you should build for yourself, first. I have taken this to heart and have made it a key part of all of my website projects. This project is built for me to share my thoughts on the web in a way that I like. I have experimented a lot with the site -- its format, design, structure -- but always by my own choice. I am building something that I feel really proud to own and use.
Similarly, I have been implementing some IndieWeb specifications for my personal use. I know that my needs don't align with others' and that's alright. Not every project you make has to be commercial. I am not ready for most of my little side projects to be used by others. I am building things I like and that makes me happy.
As long as you are having fun, that's all that matters. It's a bonus if you make something that at least one other person can use. Building for other people is hard because you never quite know what their needs are. If you cook for yourself first, you can get to know your own needs, focus on those, and build something you love to use.
This philosophy extends to all realms of coding, from the web to software engineering to mobile development. If you make an application that solves a need for you, that's amazing. You should congratulate yourself. The web and apps should not be an ecosystem of a few big players on which everyone is beholden. If you want to make something for yourself, do it. Eat what you cook or, in other words, use what you make. Experiment. Don't worry about turning the idea you have into something for other people if you don't want to.
Now that you've gotten this far in my post, I encourage you to read Robin's post in its entirety. It's an amazing read and will now be the source to which I point whenever I'm talking about building for yourself.