Six months ago I decided to stop doing tutorials and actually build something. Not a to-do app, not a calculator, not another portfolio site. A real project that solved a real problem. Here is what I learned.
The problem: My friends and I play tabletop RPGs and we were tired of losing track of our character sheets, session notes, and maps across Google Docs, Discord messages, and random photos on our phones. So I decided to build a web app to keep everything in one place.
Lesson 1: Planning is not optional.
I jumped straight into coding and spent the first two weeks building features I ended up deleting. I should have spent a few days sketching out what I actually needed. A simple list of features and a rough database schema would have saved me probably 40 hours of wasted work.
Lesson 2: Start ugly.
I spent way too long making the UI look nice before the core features even worked. Nobody cares if your buttons have the perfect border radius if the app crashes when you try to save a character sheet. Get it working first, make it pretty later.
Lesson 3: Authentication is harder than you think.
I thought "how hard can login be?" Very hard, apparently. Password hashing, session management, CSRF tokens, rate limiting, password reset flows... I ended up using an auth library and I am glad I did. Do not roll your own auth unless you really know what you are doing.
Lesson 4: The database schema will change.
I redesigned my database three times. The first version was over-normalized and required five JOINs to display a character sheet. The second version was under-normalized and had data duplication everywhere. The third version was a compromise and it works well enough.
Lesson 5: Deploy early.
I waited until the app was "done" to deploy it and immediately discovered a dozen bugs that only showed up in production. Different PHP versions, file permission issues, environment variables I forgot to set. If I had deployed after the first week I would have caught these issues when the codebase was small and simple.
Lesson 6: Your friends are brutally honest testers.
My friends found bugs I never would have found because they used the app in ways I never expected. One friend tried to paste an entire novel into the "character backstory" field. Another tried to upload a 200MB battle map image. Another found that if you hit the save button really fast you could create duplicate entries. All of these were valuable bugs to fix.
The result: The app works. It is not perfect and the code is messy in places but my group uses it every week and it actually makes our sessions better. That feeling of building something people use is addictive. I am already planning my next project.
If you are stuck in tutorial hell, just pick something and build it. You will learn more in one month of building than in six months of tutorials. I promise.
Comments
Displaying 0 of 0 comments ( View all | Add Comment )