All the speakers & trainers from the conference

SymfonyCon 2025: My First International Workshop Experience

Intro

Oh wow — it’s already over, but I’m still riding the emotions from this conference. That’s why I’m here, writing this article for you. I hope you can learn something from my experience and maybe you’ll soon find yourself at your very first conference — either in your country or abroad 🙂

I’ve been a public speaker since 2023, and ever since then I’ve been applying to multiple conferences. I’ve spoken at events across Poland, sharing my experience and ideas, but for a long time I couldn’t quite make it happen abroad… until SymfonyCon 2025! I’m truly happy it finally worked out 🔥

My speaker badge

In this article, I want to cover everything related to this trip, so treat it as a practical guide on how to apply, prepare, and perform on an international stage — especially if you’re thinking about submitting your own talk or workshop.

SymfonyCon is the flagship annual conference for the Symfony community — the main event for anyone building with Symfony in PHP. There’s only one SymfonyCon each year, but the ecosystem also includes local SymfonyDay and SymfonyLive conferences/meetups, as well as SymfonyOnline, the online-only conference.

I’ve decided to apply with multiple talks and one workshop, but only the workshop got selected – Refactoring towards Clean Architecture. In this workshop I teach how to refactor the application written in a framework way into Clean Architecture. You can find more (what it is about, outcomes, agenda, etc.) on the dedicated page.

CFP process

What is it and why you should do it

Call for Papers (CFP) is the pre-conference submission process for speakers and trainers. Your goal is to convince the selection committee that your talk or workshop is worth putting on the agenda — so yes, it’s a crucial step.

You might be wondering: why should I even do it? Here are a few benefits I’ve experienced:

  • Sense of mission — you get to share your experience and your story. This one is huge for me.
  • Confidence boost — presenting publicly builds self-confidence that carries over to your career (and life).
  • Networking — you’ll meet a lot of inspiring people from the community.
  • Traveling — many conferences cover travel and accommodation for speakers/trainers.
  • Learning — besides great talks, you learn a lot from other speakers, trainers, and hallway conversations with attendees.

What is the process and how to do it correctly

I don’t know the exact details for SymfonyCon, but most conferences follow a similar pattern. There’s usually a CFP board (selection committee) made up of a few experts. If the event has multiple tracks, each track often has its own reviewers to make sure proposals are evaluated by people who understand the topic.

Some conferences also try to reduce bias by anonymizing submissions during the review phase.

To apply, you typically need to prepare:

  • Title,
  • Description,
  • Note to organizers.

All three matter.

Title: keep it short, clear, and catchy. It should grab the attention of potential attendees, but also signal value to the CFP board.

Description: this is where many proposals fail. I’ve seen descriptions that didn’t say what people will learn, what level the talk is for, what prior knowledge is expected, or what needs to be set up in advance (for workshops). Some were too abstract or simply too short. In my experience: the more concrete details, the better. The title must be short — the description can (and should) be more thorough.

Note to organizers: this part is optional on many CFP forms, which leads to the false belief that it isn’t important. Trust me — it matters a lot. Use it to explain how you want to run the session: your agenda, whether you’ll do live coding or demos, how flexible the workshop is, and how your topic fits the track or the conference theme. This helps the CFP board a ton.

Workshop acceptance process

My workshop is selected

I remember that day vividly. I was at FYUL Tech Day — our internal tech conference — and I had just given a talk. It was August 7th, and we’d just started the afterparty, playing board games. My wife texted me, so I thought: why not check my email as well?

Email confirming that my workshop has been selected

And then… boom. A real bombshell was waiting for me 💣 — an email saying my workshop had been selected. I honestly couldn’t believe it. My peers were just as surprised 😮.

The first thing it triggered was classic impostor syndrome: What am I doing? I’ll have to run a workshop in English… people will eat me alive… What an evening. My head was spinning so much I barely slept 🤣

My trip is approved

After sleeping on it, I confirmed the next day that I was available to run the workshop. On August 14th, Eloïse from Symfony reached out and offered three options:

Email confirming that my trip is approved
  • If you’re certain you’ll attend all 4 days, you can go ahead and book your transport now — we’ll be happy to reimburse you afterwards.
  • We can arrange flexible or refundable tickets if that’s possible within a reasonable budget.
  • Or we can wait until your workshop is confirmed before booking your transport. A workshop is considered confirmed once there are at least 4 participants registered.

I have a rule that I only go to a conference when my talk/workshop is on the agenda (with one exception), so I chose the last option.

On October 2nd, I got the confirmation I’d been waiting for: the workshop hit the minimum number of attendees, so the trip was officially approved. This time I was simply happy — and fully ready to prepare, because I knew for sure I was going 🔥

Workshop preparation

Plan

I had already run this workshop once before — in March 2025 at Masterlease, a company based in Gdańsk. That session was in Polish, for a team of developers who knew each other well, and the project we worked on was a Laravel one.

SymfonyCon was a very different context: an English-only conference, a Symfony-focused audience, and a room full of people who probably didn’t know each other at all.

Luckily, the initial version of the workshop, which I built back in Q4 2024, was entirely in Symfony. From the previous run I also had a solid schedule, divided into 90-minute blocks.

My plan was simple:

  1. First, revisit and polish the codebase, and practice the refactoring path.
  2. Then adapt the schedule to this new audience and setting.
  3. Finally, polish the presentation part — which I wasn’t fully proud of yet.

Execution

The conference took place at the end of November. The workshop was officially confirmed on October 2nd, so in theory I had more than enough time to prepare.

In practice… October was vacation season for me, and I had other things on my mind. So I only really started preparing in November. I also don’t work on weekends.

That gave me roughly 16 days of prep, with a goal of spending about one hour each day.

I have to say I stuck to it almost perfectly. Some days I couldn’t work at all, and on a few others I did a bit more than planned. I even squeezed in a short prep session on day 17 — while traveling to the conference 🙂

Overall, I felt quite confident about the workshop.

Trip

What is covered by the organizers

They covered both the transport and the stay. The conference lasted five days in total:

  • two workshop days (Tuesday–Wednesday),
  • two presentation days (Thursday–Friday),
  • one hackathon day (Saturday).

My workshop was scheduled for Wednesday. The organizers agreed to cover up to four nights, which was more than enough for me. I wanted to fly in on Tuesday and return right after the conference on Friday evening. Luckily, KLM flies three times a day from my city.

KLM plane on the AMS airport

The hotel was right in the city center — WestCord City Center Hotel. It was about a 5-minute walk from the conference venue and around 10 minutes on foot from Amsterdam Centraal, the main train station where the airport train stops.

WestCord Hotels wooden card

Of course, as a speaker/trainer, your conference ticket is covered as well 🙂. The event took place at Beurs van Berlage (workshops at Meet Berlage), right in the heart of the city — about 5 minutes from the train station and the hotel.

Finally, I want to mention the speakers’ dinner, which was also covered. The idea is simple: we gather together, eat, drink, and get to know each other before the conference starts.

What do you need to prepare

  • Computer — your workhorse 💻
  • Cables and power bricks. This one is really important. I once forgot my phone cable and had to buy one at a petrol station at around 23:00… it cost me about 25 euros ‼️
  • Remote pointer / presenter. Optional, but if you want to feel like a pro, invest in one — you won’t regret it 🙂 I personally recommend the Logitech R400, though you’ll probably need a USB-A to USB-C dongle.
  • Printed notes. For this conference I had three A4 pages with my workshop schedule, talking points, and quick reminders. I can’t imagine doing the workshop without them 😂 Bring a pen too — it’s great for adding notes during the day and coming back to them later.
  • A list of people you want to meet. I usually scan the agenda first, look up speakers/attendees, and connect with them on LinkedIn beforehand. Approaching someone you’ve already “met online” is way easier than walking up to a total stranger 😀
  • Huel. I take it on every trip (I travel roughly once per quarter). It’s perfect for airports: put two scoops into an empty shaker, go through security, then just find a water fountain. Airport food is insanely pricey — even at McDonald’s. I also keep a Huel bag in my carry-on. It’s so convenient.
  • Survey. I always prepare a Google Form with a few simple questions. It allows me to improve over the time.
My workshop notes

Workshop day

The day has come. I slept really well — 8 hours before any big work is a must for me. The hotel had an awesome bed — I love a hard mattress 🩵. Breakfast and tea were really good too, and I especially enjoyed the Dutch mini pancakes 🥞.

All the workshops were held in the Meet Berlage, which is in the same building as the main event. We were supposed to start at 9:30. As you might guess, some people were late, but not by much.

SymfonyCon rollup with my workshop

The first 15 minutes were quite stressful for me, because most of the attendees had problems setting up the project. My mistake — lesson learned. With the help of the group, we quickly moved forward.

Me and the attendees

Once the initial problems were gone, we did a deep dive into Clean Architecture 🧼. The group was awesome! They were super active — asking tons of questions, bringing their own ideas and thoughts. Because of that, we happily sidetracked a bit when we got to the Domain part of the application. There were moments when I was mostly listening, because they were discussing among themselves and solving problems together. I’m so proud of them 🩵

It seems the group was satisfied with my performance — 9 out of 12 attendees filled in the survey. They gave me 4.67 out of 5. The main complaint was the setup issues. Thank you if you’re reading this post 🩵

Survey of my workshop

I was tired, but also very happy — with the group and with myself. I love that feeling after a conference, especially after a workshop. You know they learned something, and that’s just beautiful.

After the last exercise, I didn’t rush out. I waited until the room was empty, said goodbye to everyone one by one, shook hands, and had a few short chats at the door. Some attendees stayed longer to ask extra questions — not only about the refactoring we did together, but also about other things we started discussing along the way.

That’s the kind of ending I love: no rush, no pressure, just real conversations. Exhausted, but truly satisfied, I headed into the evening — the speakers’ dinner was waiting.

Speakers dinner

This is the part of the conference where you can meet important people from the community. As I mentioned before, food and drinks are covered by the organizers.

All speakers’ dinners I’ve attended before were done a bit differently. Usually it was either a dinner in a restaurant or a casual meetup in a local pub. Here at SymfonyCon it was a different story. Amsterdam is well known for its canals — hence the nickname “Venice of the North.” The organizers prepared an interesting concept for us: dinner on a boat. On paper it looked very promising.

The boat where the speakers dinner was held

In practice it wasn’t great, but also not terrible. The boat was crowded, quite dark, and noisy — overall not a conversation-friendly place. It was hard for me to find the people I was looking for. The views were okay, but I’ve been on a canal boat trip during daylight before and the views were much better 🙂

The food was typical Dutch and I really enjoyed it 💚

In my opinion, it would work better as a regular dinner in a restaurant — it would simply be easier to get to know each other.

Even though the setup wasn’t ideal, that evening wasn’t a loss. During the cruise I ended up talking mostly with one person — Alejandro. I didn’t plan to meet him at all, but it turned out to be totally worth it. He was a wonderful human, working on something completely different than I do, so our conversation was surprisingly fresh and interesting. In the end, I spent most of the cruise just chatting with him.

Conference

First of all — the venue. Beurs van Berlage is absolutely stunning. I was blown away the moment I walked in. The building has this unique mix of history, elegance, and “conference energy” that you feel immediately. And judging by the reactions around me, I wasn’t the only one impressed — lots of people were stopping, looking around, taking photos. It really set the tone for something special.

The main venue
The Symfony stage
Unconference stage

The opening was strong. Fabien Potencier started the conference with the keynote, and as tradition goes, he used that moment to announce a new major release — Symfony 8.0. Experiencing a big framework release live, together with the whole community, felt surprisingly emotional and exciting to me. On top of that, Fabien shared a few interesting stories from the history of Symfony and the community around it. Those little behind-the-scenes moments always remind you that frameworks are not just code — they are people, decisions, and years of collective work.

Fabien releasing SF 8.0 on stage

I didn’t attend that many talks this time. My main goal was to meet people rather than sit in rooms all day. And that worked out perfectly, because I finally met Anna Filina — someone I had heard so much about before. She turned out to be a wonderful person: warm, empathetic, and just easy to talk to. Even though our experiences are quite different, we quickly discovered we share a lot of values and perspectives. We spent a lot of time talking in the hallways, and those conversations were one of the highlights of the whole conference for me.

Mateusz, me and Anna

Another thing that deserves a shout-out: the food. It was genuinely great, served in small portions, which I loved — it meant I could try many different things instead of committing to one big plate. Add to that very good tea and delicious coffee… honestly, what more could you want? 🙂

The food

I have to admit that the JetBrains booth was interesting due to their contest. The idea was that you have to code without coding — as you might guess, via prompting the AI. What is more interesting, they had ignored the test file via .aiignore file, but we have found a funny hack to run the tests 🙂. Kuds to JetBrains team!

JetBrains booth where I solve the quiz

At some point the fatigue from the workshop day caught up with me. My social batteries were running low, so I left earlier than planned and went back to the hotel to recharge.

And that’s where I realized something: after all that intense socializing, the thing that would refresh me the most wasn’t more quiet time in a room — it was movement. So I rented a bike and just rode around the city without any real plan, letting Amsterdam flow around me. No destination, no schedule, just cycling. It was exactly what I needed.

Bike trip in Amsterdam

After that ride I felt properly reset — and I knew it was time to head out again. With fresh energy, I was ready to jump into the evening community event.

Community Event

After the bike ride I went back to the hotel to change clothes and get ready for the community event. I felt refreshed and really wanted to end the day with people again.

But on my way out I met Andreas Braun. We had been passing each other for the last few days, always saying “hi”, but there was never a good moment to talk 1:1. This time the timing was perfect. Andreas works at MongoDB, and since we use MongoDB at Printify, we instantly had a lot to connect on. It turned into a totally spontaneous idea: we recorded a short, relaxed podcast-style chat together. And honestly… time flew. The conversation was so good that I didn’t even notice how late it got.

In the end we arrived at the community event almost at closing time — around 22:00. They stopped serving drinks at 22:30, so we basically walked in at the last moment. But even with that, it was a great experience. People were dancing, there was a huge Symfony cake, and the whole atmosphere was just fun. You could really feel how welcoming this community is — no barriers, no “conference hierarchy”, just people enjoying being together 🙂

And, following the sacred Polish tradition, we closed the party properly. Me and my buddy Mateusz went out for an excellent kebab 🥙

Sorry, I did not shoot any photos, was enjoying the night 🫢

Last day & the way home

By the last day I was already quite tired. On a daily basis I work from home, a bit away from people, and here I’d been surrounded by human interactions nonstop for days. So I spent most of that day recharging — resting a lot, and only occasionally dropping by a talk, a booth, or a quick hallway chat with someone.

Me and Mateusz on the Symfony Con

Still, there was a strong highlight at the very end. The closing of the conference was really emotional for me, because they revealed where the next SymfonyCon will take place — in my beautiful country, in the city where the very first SymfonyCon happened: Warsaw. Hearing that live, together with the community, felt amazing.

After that exciting closure, we headed into the journey back home — ready to finally fall asleep in our own bed.

On the airport with Mateusz, going home

Lessons learned

Looking back, I’m taking a few very concrete lessons from this trip:

  • The workshop topic is a keeper. Running it at a conference of this scale showed me that the subject is truly practical, timeless, and valuable for many teams. That gave me a lot of confidence that it’s worth bringing to more conferences — and I absolutely plan to do that.
  • Project setup has to be bullet-proof. As I mentioned, the setup issues at the beginning were on me. Lesson accepted. Next time I’ll prepare it properly: I’ll clone the whole project from scratch and set it up exactly the way every attendee will do it, step by step, to catch any hidden gaps before the workshop.
  • Watch the conference eating trap 😅 I’m someone who cares about health, and I caught myself eating a bit too much during the conference. The food was great and tempting, but next time I’ll try to be a bit more mindful about it.
  • Be more intentional with the “people to meet” list. I did prepare a list, and it helped, but I can see that it could be even better. Next time I’ll put a bit more effort into it — more research, more intentional picks, and probably reaching out earlier, and stepping out further out of my comfort zone 🔥

Outro

When I look at this whole week from a distance, I feel mostly gratitude. SymfonyCon 2025 gave me something much bigger than just a slot on the agenda. It gave me a reminder of why I started speaking in the first place: to share, to learn, and to meet people who care about the same craft.

It was my first international conference as a trainer, my first time running a workshop abroad, and the first time I experienced SymfonyCon from the inside. There were stressful moments, there were lessons learned, but overall — it was beautiful. The venue, the community vibe, the hallway conversations, the food, the randomness of meeting people like Alejandro or recording a spontaneous chat with Andreas… all of that became one coherent experience that I’ll remember for a long time.

If you’re reading this and thinking about submitting to CFP — do it. Even if you’re unsure. Even if impostor syndrome shows up the second you hit “submit”. You don’t need to be “perfect” to bring value. What you need is a real story, real experience, and the willingness to share. The rest comes with practice. And trust me — it’s worth it.

Big thanks to everyone who joined my workshop, asked questions, and gave feedback. Thank you to the Symfony team and the CFP board for trusting me with this slot. And thank you to all the people I met in Amsterdam — you made this conference what it was.

My certificate of attendance

See you next time. And see you in Warsaw 🇵🇱💚🥰

Leave a Reply

Your email address will not be published. Required fields are marked *