I recently finished a Python book and built a small single-user forum as my first substantial project. It supports creating posts, replying, viewing boards, and similar features, but only one person can use it at a time.
Now I want to make it multiplayer so multiple people can connect. The problem is that I barely understand networking. I can write a very simple client and server, but I don't yet have a solid mental model for sockets, concurrency, select(), threads, or how all those pieces fit together.
I tried breaking the project into smaller tasks and reading about networking, but each new thing exposed another gap. When I combined what I had learned, the result was a messy script with the event loop and threads organized incorrectly. A friend eventually had to rewrite much of it, which made me wonder whether I am approaching this the wrong way.
Should I pause the forum and build something simpler, such as a chat client, or is there a better way to tackle a project that is currently beyond my understanding?
1 Answer
Start by designing the system before writing more code. Write down what the server does, how clients connect, how messages are delivered, and what information must be stored. Then divide the forum into small, testable pieces: one client connecting to one server, multiple clients connecting, sending a message, broadcasting it, and only later adding accounts, authentication, and permissions.
Use small proof-of-concept programs to learn unfamiliar ideas, and rely on established networking libraries rather than trying to implement protocols yourself. The goal is to build a useful mental model first, then assemble the working pieces like building blocks.

That makes sense. I think I started coding before I had clearly described what the server and clients were supposed to do.