A Conversation with Jakub Pilecki on Writing Code from Scratch
At coLAB, we’re building more than just products, we’re building the foundations that power them. One of the most exciting (and challenging) parts of our journey has been starting fresh with our codebase. No shortcuts. No hand-me-downs. Just the opportunity to create something original, scalable, and truly our own.
To give you a look behind the scenes, Patrice Castellano, Director of Support Services, sat down with our Chief Technology Officer, Jakub Pilecki, to talk about what it’s like to write code from scratch, how he approaches problems big and small, and what keeps him motivated along the way.
Patrice: What’s the very first thing you do when starting a new coding project from scratch?
Jakub: I start by stepping back and looking at the big picture. That usually means reading documentation, meeting with people, brainstorming, and trying to get a feel for what’s really needed. Before I write a single line of code, I want to understand the ultimate goal and the broader context.
Patrice: How do you decide which programming language or tools to use?
Jakub: In general, I lean on a tech stack I know and trust, built around .NET. Some tools are just industry standards like Redis for caching, RabbitMQ for queues, PostgreSQL or MSSQL for databases, Docker for containerization. These are so common and reliable that you can grab them off the shelf.
But sometimes a particular problem calls for a different approach. For example, a lot of cutting-edge AI work is happening in Python, and .NET often follows by embedding or backporting those solutions. At that point, it’s a judgment call: introduce something “odd” to the usual stack, or solve it within what’s already standard. There’s no single right answer, it’s always case by case.
Patrice: When you’re looking at a huge project, how do you break it into smaller steps?
Jakub: First I identify the key points. Then I think about the pipelines needed to solve each smaller problem — almost like moves in a game, getting from input to output. The goal is to keep things simple, organized, and direct.
Patrice: What keeps you motivated when progress feels slow?
Jakub: Addressing customer pain points with something we built is a huge motivator. In the end, it comes down to promises made and the responsibility to deliver. For me, not succeeding just isn’t an option.
Patrice: How do you make sure your code is easy for other developers to understand?
Jakub: Conventions are huge. If everyone knows the “why” and the “how” behind certain choices, it keeps things consistent. Clear naming, modular code, and comments where needed are also key.
What also really helps is the trust within our team. Many of us have worked together for a decade or more, from college days to different startups. We operate in what I call “fire and forget” mode — we agree on priorities, distribute tasks, and everyone knows what to do. There’s constant communication, of course, but no hand-holding. That trust is powerful.
Patrice: How do you explain your technical work to people who aren’t developers?
Jakub: Lots of drawing. I even bought a tablet just so I could sketch things out on a virtual whiteboard during meetings. A simple diagram usually makes more sense than a long explanation.
Patrice: What’s the most rewarding part of coding from scratch?
Jakub:
For me, the reward isn’t just in starting from scratch, it’s in solving problems elegantly.
When I’m deep into something interesting, I get what I call an “itch.” Finishing the solution and putting those last touches on it scratches that itch. It’s a great feeling.
Patrice: Can you share a time when you had to scrap your first idea and start over?
Jakub: It happens all the time, especially in R&D. You go in with one idea, then refine, adjust, sometimes even start fresh once you learn more.
For example, with Verve’s reporting service, we initially used Apache Superset, a third-party tool. Over time, we realized we needed something built in-house to compliment our product development. So we built our own reporting-as-code system. Now we have an in-house tool that’s easier for us to use, works across multiple data sources, and runs asynchronously. It’s stronger because we weren’t afraid to reset and rebuild.
Patrice: What advice would you give someone writing code from scratch for the first time?
Jakub: Don’t overthink it. Understand the big picture and the key building blocks, but don’t try to nail every detail right away. Break the problem down, and solve it step by step. Keep your code elegant and flexible. And remember: design patterns are there to help you, not to lock you in.
Patrice: How do you balance writing “perfect” code versus just getting something working?
Jakub: That’s one of the hardest lessons. When I started coding 25 years ago, I wanted to do everything myself, perfectly and completely. Great for learning — not great for business.
There’s no shame in using third-party libraries or boilerplate. In fact, that’s what separates a seasoned developer from a junior. The trick is not to overengineer. Don’t plan for 10,000 scenarios that may never happen. Write your code so that if one of those scenarios does show up, you can add it easily. I’ve seen startups fail because they polished their product for months, only to find customers wanted something else entirely.
Patrice: In your opinion, what makes good code stand the test of time?
Jakub: Stability is big — I love seeing servers with months of uninterrupted uptime. Flexibility is another — if a stakeholder asks for a feature and you can add it quickly, that’s a sign of a solid codebase.
At the same time, experience changes how you see things. I look back at code I was proud of years ago and see ways I’d do it differently today. That’s part of the journey, evolving along with the technology.
Talking with Jakub makes it clear that writing code from scratch isn’t just a technical exercise — it’s a creative process rooted in vision, discipline, and trust. Starting from zero gives us the freedom to build systems that reflect who we are today and where we’re headed tomorrow. At coLAB, that’s exactly the point: no shortcuts, just fresh foundations designed to evolve, scale, and stand the test of time.
Looking ahead,
Patrice Castellano, Director of Support Services
