Back

Sunday, 09. March 2025

My First Client Project And What I learned

In the last two weeks, there were no blog posts. That’s because I got my first client project as a freelance web developer — a booking tool with a calendar, booking options for customers, and an admin section for employees. While the project is far from finished, I’ve already learned a lot—both good and bad. Today, I want to talk about it.

How I Got The Project

The deeper I get into professional life, the clearer it becomes that it’s not just about what you know but way more about who you know. Not just in freelancing, but also in regular nine-to-five jobs. Personally, I don’t like how it works — I believe people should be judged solely on their skills—but that’s just not how things are. And I can’t deny that I’ve also benefited from it.

A couple of weeks ago, a friend from the Thai language school I attended in 2023 asked if I was still into programming. He recently joined a company that tracks customer bookings manually in an Excel sheet. Since this takes a lot of time and is prone to human errors, he started looking for a better solution. That’s when he thought of me. We talked a bit and agreed that this would be a great opportunity to work together.

My Stack

I started with some project planning — writing down what was needed and how I could implement it. I went with Laravel since it's the framework I have the most experience with.

For the frontend, things were a bit different. I had used HTMX before, but while working with it, I felt like it sometimes worked against Laravel instead of alongside it. Rather than combining the strengths of both technologies, they often seemed to get in each other’s way.

So, I decided to try something new. At my nine-to-five job, I had used Filament for admin backends a few times, which meant I also had some experience with Livewire. I figured I’d give it a shot and went for the TALL (Tailwind, Alpine, Livewire, Laravel) stack. My first impression is that Livewire makes development insanely smooth. I’m not sure yet how it will perform under heavy traffic, but I assume that won’t be a big issue for this project.

What I Learned

As I said, the project is far from done, but I’ve already learned a lot—not just about coding, but about working with clients.

One big thing I’ve noticed is how quickly project scope can spiral out of control. Clients ask for something simple, but from meeting to meeting, the requirements get more and more complex — without the budget increasing. I don’t think they do this on purpose or try to take advantage of developers - they just come up with ideas during the process and assume it’s “easily done.” I have a hard time pushing back on these requests, but I need to learn to either say no or clearly explain that additional features will cost more.

Another important lesson: understanding exactly what the client wants is a skill on its own. Clients often say things like, “This should be kinda like X and work like Y,” but they rarely get into specifics. Extracting clear requirements from vague conversations is crucial, and I definitely need to get better at it.

Lastly, I’ve realized that I need to re-evaluate my worth as a service provider. Since this is my first freelance client, I settled for a very low price. Looking back, I should have been more confident in my skills and charged more. For future projects, I’ll definitely be raising my prices and standing my ground more.

Conclusion

This first freelance project has been a huge learning experience. I’ve seen firsthand how important it is to manage scope creep, communicate clearly with clients, and value my own skills properly. While there have been challenges, I’m glad I took this on—it’s giving me real-world experience that I wouldn’t get from just building projects for myself.

Moving forward, I’ll set clearer expectations, be firmer about pricing, and improve how I gather requirements from clients. Excited to see where this journey takes me next!

Personal

Comments

Login or Register to write comments and like posts.


GitHub LinkedIn

© 2025