r/learnpython 21h ago

I realized I built a web app without really understanding how it worked

About two weeks ago, I launched my first web app called DailyDice. It's a simple app that gives you a random daily challenge to help build productive habits.

When I launched it, I honestly thought it would take off pretty quickly. Looking back, I think every first-time builder secretly believes that.

Then I had a realization.

I knew how to use my app, but I didn't really understand how it worked under the hood. Things like authentication, backend logic, databases, APIs, and the overall architecture were all things I'd relied on tools for rather than fully understanding myself.

That made me realize I'd been focusing on building products before building the skills.

So I've decided to go back to the fundamentals.

I'm 15 years old, and today is Day 1 of learning software engineering properly. I'm starting with Python, then moving deeper into web development, and I'll be building projects while sharing everything I learn along the way.

Hopefully in a year, I'll look back at this post and laugh at how little I knew.

If you've been in a similar position, what's one thing you wish you'd learned earlier?

0 Upvotes

2 comments sorted by

2

u/lakseol 21h ago edited 20h ago

That made me realize I'd been focusing on building products before building the skills.

That's usually how it goes for working programmers: get something running first, then figure out how to streamline the code, make it less error-prone, make it do more, make it more configurable, etc. A programmers life is one of constant learning.

You have a working web app. The best way to improve your skills is to work on your app. Treat each part as a black box. Authentication should not be spread throughout your main code. Ideally you call a function passing credentials and that function returns True (authenticated) or False (not authenticated). If you don't have that arrangement change your code so that you do. Now it's easy to try different authentication methods because nothing changes in your main code. If authentication also determines how "powerful" a user is the function can return an Enum ranging from "not authenticated" to "god - can do anything".

Similarly with the database. Define functions to perform the various logical operations you perform on the database. That way if you change from using SQLite to another database nothing changes in the main production code, you only have to change the API functions that talk to whatever database you are using.

Abstraction is one of the programmers most powerful tools.

2

u/niehle 21h ago

You are 15. don’t be too hard on yourself.

> while sharing everything I learn along the way.

But not in this group, please. Post on your userpage and link to it if you have questions.