How do I use my foundational skills in programming to start making useful software?

Let me just get right to the point. Foundational skills alone will not lead to useful software. And in fact, I think that trying to focus on the technical aspects first will actually lead you down the wrong path more often than not.

When you’re starting a software project, and actually even during all stages of software development, you need to first identify a need and who needs it. If we need something, then it’s a lot more likely to be useful when we get it.

You should also try to solve this need with as few features as possible. This is called a minimal viable product or MVP. You’re going to need feedback as soon as possible about your software.

Let you foundational skills guide your implementation but only once you have a general direction. You might even decide that the best way to solve the need is through skills that you don’t have yet. You would have never arrived at this conclusion if you started with your current skills. At least not right away.

Start with a need and get to know your customer. Produce the absolute minimal product that helps solve the need and then get direct feedback. Adapt, and get more feedback. Let your foundational skills be an advisor only. And later if they’re still relevant, then let them help you build that initial minimal viable product.