Back to Blog
April 15, 2026

From Freelance to Fullstack Developer: 3 Years That Changed How I See Code

Not a success story. This is about a first failure, a client who almost walked away, and the moment that completely changed how I build software — from just writing code to solving real business problems.


From Freelance to Fullstack Developer: 3 Years That Changed How I See Code

2 AM. My laptop screen is still on. I'm staring at code I've been writing for 3 weeks.

The client says: "This isn't what I need."

Three weeks of work. 18-hour days. And one sentence wipes it all out.

I'm not mad at the client. What hurts more — I realize he's right.

That was the most frustrating yet most important moment in my career. And this story isn't about how I became a great developer. It's about how I learned that writing the right code isn't about code — it's about understanding the actual problem.

Chapter 1: The Naive Beginning

I started like many developers: knew how to code, felt smart.

You know what I thought back then? "If I can build this feature, the client will be happy."

Spoiler: the client was not happy.

The First Project That (Almost) Fell Apart

My first client was a small business owner. He needed a simple inventory system. "Something that tracks incoming and outgoing stock," he said.

I jumped straight into coding. Without asking many questions. Without understanding his workflow. The result?

A system that was technically perfect — but unusable.

Why?

Because I didn't know he and his team were recording inventory in a notebook. They needed something as easy as opening an app, tapping twice, done. What I gave them was a dashboard with 15 menus and a form that required 8 fields.

My client almost refused to pay. Not because the system was bad — because the system didn't solve his problem.

He said something that still sticks with me today:

"I don't need a sophisticated system. I need a system my team can use without training."

That sentence made me reflect for 3 days.

Lesson One: Users Don't Care How Cool Your Code Is

They care whether their life gets easier or more complicated.

After that, I started doing something I previously considered "unimportant": sitting with users, watching how they work, then coding.

The result?

The same system — but I rebuilt it from scratch with 3 main buttons. User happy. Client paid in full. And I learned a lesson that no bootcamp could teach.

Chapter 2: The Project That Changed Everything

Fast forward 6 months. I got a much bigger project.

A company needed a Document Management System (DMS). 4 departments. Thousands of files. This was the project that, if successful, could be my main portfolio. If it failed? Major embarrassment.

Weeks 1-2: I Started Wrong

Early on, I went straight technical: database schema, API endpoints, UI components. I had everything planned in my head.

Then I presented to the stakeholders.

They were silent for 10 seconds. Then one said: "Have you talked to the warehouse team yet?"

I hadn't.

Week 3: I Went to the Warehouse

The next day I went to their office. Not to the meeting room — to the warehouse.

Sat down with the team that handles files every day. Asked: "What's actually your biggest pain point?"

The answer wasn't what I expected.

They said: "We're not struggling to find files. We're struggling because we need approval from 3 people before uploading. Sometimes they're on leave, files pile up, then we forget."

Not a search problem. The problem was the approval workflow.

If I hadn't gone to the warehouse, I would have built a fancy search system they didn't need. And their main problem would remain untouched.

Weeks 4-8: Rebuild with the Right Priorities

I completely changed the roadmap:

  • Main feature → approval workflow with automatic notifications
  • Second feature → bulk upload with templates
  • Third feature → search (but not as sophisticated as initially planned)

The result?

A DMS that launched and was used by all departments within 2 months. Document retrieval time dropped 80%. But more importantly: the warehouse team no longer worked overtime due to approval bottlenecks.

The client is still satisfied to this day. And they referred me to 3 other clients afterward.

Lesson Two: The Answer Is Never in the Code. The Answer Is in the Field.

Since that day, I have a ritual: before coding anything, I spend at least 1 day understanding the problem. Not the manager's version of the problem — the version from the users who live with it every day.

Chapter 3: The Turning Point — When I Started Understanding "Why"

After that DMS project, work started coming in. Not a lot — but enough.

And something shifted in how I thought.

Previously, my mindset was: "Client wants feature A, I'll build feature A."

After the DMS, my mindset changed to: "Client is asking for feature A. But why? What's the actual problem? Is feature A really the solution?"

That "why" question is small but powerful.

A Case That Proved It

A startup founder contacted me. He wanted to build an e-learning platform with video streaming, quizzes, leaderboards, certificates — the full package.

His budget? Limited.

If I followed his request, the budget would be spent on video streaming alone. The rest wouldn't have enough.

I asked: "What are you actually trying to achieve?"

He answered: "I want people to learn new skills and be able to prove they're competent."

Okay. So what he needed wasn't fancy video streaming. What he needed was a credible assessment and certification system.

So we agreed on:

  • Video → embed from YouTube/Vimeo (cheap, good enough)
  • Budget focus → robust quiz system, auto-grading, and verifiable certificates
  • Leaderboard → deferred to phase 2

The result? A platform launched on budget. High user engagement because the quizzes were challenging and the certificates were industry-recognized.

The client said: "You're the only developer who asked why before saying yes."

Lesson Three: Good Developers Answer Questions. Better Developers Question Questions.

Sounds philosophical. But in the field, this is what separates successful projects from projects that burn budgets without results.

Chapter 4: When I Started Focusing on Impact, Not Output

There's one project I didn't take. And it was the best decision.

A potential client reached out. Wanted to build a mobile app. Big budget. Looked like a great project.

But after discussion, I realized: he actually needed business consulting first. No product-market fit yet. No validation on whether people would actually use the app.

If I took it, I'd get paid. But 6 months later, the app probably wouldn't be used and he'd blame me.

I said: "I think you don't need a developer yet. You need idea validation first. Here are some resources that can help."

He was silent. Then said thank you.

3 months later, he contacted me again. Already validated. Already had 50 interested users. And this time, the project we built together actually succeeded.

Why Did I Turn Down That Project?

Because I'd seen this pattern too many times: startup builds app → nobody uses it → developer gets blamed → everyone loses.

I didn't want to be the developer who just takes the money. I wanted to be the developer who helps understand why the money is being spent.

Lesson Four: Turning Down the Wrong Project Is More Valuable Than Accepting the Wrong Project.

My income dropped at that moment. But my reputation as an honest partner — that's what brought in quality clients afterward.

Chapter 5: The Evolution That's Still Ongoing

Now, 3+ years later, I've handled 20+ projects. Various types:

  • Small businesses needing their first website
  • Startups needing an MVP in 4 weeks
  • Enterprise companies needing systems that scale to thousands of users
  • Founders needing AI integration for automation

And every project taught me something different.

From Small Businesses: Simplicity Is Hard

Small businesses taught me that making something simple is much harder than making something complex.

When your users aren't tech-savvy, every extra button, every unnecessary field, every confusing notification — that's all friction that can make them stop using your system.

Simplicity isn't about what you add. Simplicity is about what you're brave enough to remove.

From Startups: Speed Is Everything

Startups taught me that a perfect MVP is a contradiction.

An MVP should be good enough to attract early users, but simple enough to build fast. If you spend 3 months building an MVP, you're already late.

I learned to say: "We can defer this to phase 2." More often than I expected. And there was almost never a client who was upset about deferred features — as long as the reasoning was clear.

From Enterprise: Scalability Isn't Just Technical

Big companies taught me that scalability isn't just about powerful servers and efficient code.

Scalability is also about: can a new team understand this system? Is the documentation clear enough? Is there a smooth onboarding process?

Code that only one person understands is code that doesn't scale. Period.

From AI Projects: New Technology Requires Old-Fashioned Maturity

AI integration taught me that expectation management is more important than model selection.

Clients often come with: "I want AI that can answer all customer questions 100% accurately."

And I have to be honest: "That doesn't exist yet. But we can achieve 80% with AI, and route the remaining 20% to trained humans."

Managing expectations isn't about reducing excitement. It's about ensuring clients don't get disappointed midway because of unrealistic expectations.

The Moment I'll Never Forget

Among all the projects, there's one small moment I keep remembering.

After launching the DMS for the company I mentioned earlier, I got a WhatsApp message from one of the warehouse staff. It said:

"Sir, thank you for the system. For the first time in 2 years, I can go home on time."

I teared up reading that. Not because I'm sentimental — but because that was the most real confirmation: what I build impacts someone's life.

Not company metrics. A human life.

And that's what I'm looking for now. Not projects that look cool in a portfolio. But projects that make someone say: "This made my life better."

What Changed About Me

If I had to summarize this 3-year transformation in a few points:

Then:

  • ❌ Focused on "how do I build this"
  • ❌ Thought smart code = good code
  • ❌ Followed all client requests
  • ❌ Measured success by feature count
  • ❌ Afraid to turn down projects

Now:

  • ✅ Focused on "what's the actual problem"
  • ✅ Believes simple code = good code
  • ✅ Questions requests that don't make sense
  • ✅ Measures success by the impact created
  • ✅ Comfortable turning down projects that aren't ready

The difference isn't in technical skills. The difference is in mindset.

Why I'm Writing This

Not to brag. Honestly — there are many failures I didn't mention here. Projects that missed timelines. Features that had to be redone 4 times. Clients who were unhappy at first and I had to handle with communication, not code.

I'm writing this because I believe transparency matters.

If you're looking for a developer who says "I can do everything fast" — that's not me.

If you're looking for a partner who will say "hold on, we need to understand this deeper before coding" — maybe we're a good fit.

If You're Looking for a Developer Who Thinks First, Codes Second

That's me now.

Not a developer who opens VS Code first. But a developer who opens a conversation with questions:

  • "What are you trying to achieve?"
  • "Who will use this?"
  • "What happens if we don't build this?"
  • "How will we know this is successful?"

These questions might sound like a consultant, not a developer.

But in my experience, a good developer should also be a bit of a consultant. Because the right technology starts with the right understanding of the problem.

Let's Talk

If you have a project in mind — or even just an idea that isn't clear yet — I'm happy to chat.

No sales pitch. No sweet promises. Just an honest conversation about what you need, what makes sense, and what should probably wait.

Because at the end of the day, I'm not here to write code. I'm here to help you build something that actually works.

Let's talk — because the best solutions start with honest conversations.