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.

Listen to this episode for more or you can also read the full transcript below.

Transcript

Okay on to the question this week. This is another question that I found online. 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.

Let’s take a very basic and foundational real life skill as an example. Walking. Or in general getting from one side of the room to another. We’re pretty good at this. Even many people who can’t walk can usually find a way to get around.

This is something that computers, and by computers here, I’m really talking more about robotics. This is something that computers struggle with. Yet we do it with so much ease that we forget about it. It doesn’t get much more foundational than that.

And on top of the basics, we have an amazing collection of feats that computers are nowhere near to matching. We can navigate around obstacles. Even moving obstacles. We can crawl, run hop, skip, and jump. We can do the bear walk, the crab walk, and even walk like a duck. We can walk upside down on our hands with a little practice. We can walk through water and even on the moon.

Now that we’ve established our truly amazing foundational skills in walking, let me ask you this. When you start planning your next vacation, do you consider your ability to walk in those plans? Okay, maybe if you’re planning a strenuous hike up Mt. Rainier. Or if you have some difficulty. But in general, our ability to walk is the last thing we think about. If we think about it at all.

I used a vacation as an example of something that has value. It’s useful. And yet how many other foundational skills to we completely ignore when planning to do something useful.

So if foundational skills alone are not enough, then what should you focus on to build useful software? And does this mean that foundational skill have no relevance? I’ll answer these questions right after this message from our sponsor.

( Message from Sponsor )

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. There are exceptions of course. Sometimes something useful comes along that we never thought that we needed. To me, this is like playing the lottery. Notice I didn’t say winning the lottery. That would be even worse. Don’t even try to go down this path. Find a need and solve it.

I’ll also add to this that you should try to solve this need with as few features as possible. This is called a minimal viable product or MVP. You’re gonna want to get feedback as soon as possible about your software.

I first released this podcast with just 3 episodes. That’s the type of minimal viable product I’m talking about. One episode and possibly two also would have been not enough. Five or ten and I would have risked talking myself out of the whole thing. Twenty or more and who knows which direction I would have taken. You need guidance early on when you can still adapt and change.

This definitely helps you build more useful and valuable software. And it also helps your customer. Your customer gets a direct say in what’s most valuable to them. Everybody wins.

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 start with your current skills. At least not right away. It might become painfully obvious later that you choose the wrong technology. Don’t let this happen to you.

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.

◦ Do you have a question that you’d like me to answer? Just go to takeupcode.com/contact and you’ll find a form that you can use to submit your question.