<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Lilian Bernot</title>
    <description>The latest articles on DEV Community by Lilian Bernot (@lilian_bernot).</description>
    <link>https://dev.to/lilian_bernot</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3932465%2F2d564411-8e15-4928-906e-72eec890982b.png</url>
      <title>DEV Community: Lilian Bernot</title>
      <link>https://dev.to/lilian_bernot</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/lilian_bernot"/>
    <language>en</language>
    <item>
      <title>Mentoring Your First Intern</title>
      <dc:creator>Lilian Bernot</dc:creator>
      <pubDate>Fri, 22 May 2026 09:19:51 +0000</pubDate>
      <link>https://dev.to/lilian_bernot/mentoring-your-first-intern-34ck</link>
      <guid>https://dev.to/lilian_bernot/mentoring-your-first-intern-34ck</guid>
      <description>&lt;h1&gt;
  
  
  Introduction
&lt;/h1&gt;

&lt;p&gt;I started full-time in Paris in November 2025. Three months later, in early March, my manager told me I'd be mentoring an intern joining the team. I had finished my own internship at Datadog six months earlier. The chair I'd been sitting in — the one with the laptop that wouldn't quite configure, the standups I didn't understand, the standing question of "what am I going to say at defense?" — that chair was about to be filled by someone else, and I was the one supposed to help them sit comfortably in it.&lt;/p&gt;

&lt;p&gt;This post is two things. First, the journey: what being an intern was actually like, and what changed when I became the mentor. Second, the part that matters more if you're about to mentor someone for the first time: the handful of things I liked as an intern, and the ones I tried to do once it was my turn.&lt;/p&gt;

&lt;h1&gt;
  
  
  My Internship Experience At Datadog
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Two Kinds of Internships
&lt;/h2&gt;

&lt;p&gt;There are roughly two shapes an internship can take.&lt;/p&gt;

&lt;p&gt;The first is the &lt;strong&gt;solo niche project&lt;/strong&gt;: you arrive, you're handed something specific, you have a mentor, and your job is to grind on that one thing for three or six months. Some schools love this shape — it sounds technically deep, easy to grade, easy to defend.&lt;/p&gt;

&lt;p&gt;The second is &lt;strong&gt;being part of the team&lt;/strong&gt;: you don't get a single big project. You take small tasks, you go to all the meetings, you talk to everyone, you learn how the company actually works.&lt;/p&gt;

&lt;p&gt;I had teachers who were supportive of the second kind. I'd already done two internships before Datadog where I took part fully in what the company was doing, and that was the best preparation I could have asked for. I arrived at my third internship knowing what the industry looked like, with my own requirements for what made a company fit me.&lt;/p&gt;

&lt;p&gt;The first shape sounds rigorous. In practice, if your niche project gets dropped because you were too slow, or because the company's direction shifted, you're left with a thin résumé and a defense full of caveats. The second shape gives you something more durable: a sense of how the work moves, who owns what, and what kind of company you want to be in next.&lt;/p&gt;

&lt;p&gt;If you mentor an intern under a school constraint that pushes the first shape, you can still pull them toward the second. The deliverable on paper is one thing; the experience you give them is another.&lt;/p&gt;

&lt;h2&gt;
  
  
  First Days at Datadog
&lt;/h2&gt;

&lt;p&gt;My first week at Datadog, I followed my manager around all day. Every meeting except hiring interviews. I had lunch with him and two other managers he was close with on day one. By the end of the week, I'd been introduced to most of the people who'd matter during my internship — the engineers I'd rely on, the product owners I'd talk to, the cross-team contacts I'd need.&lt;/p&gt;

&lt;p&gt;I went to standup (we did it sitting around a table, which I never quite got over). I went to sprint planning, the monthly retro, every recurring meeting. I couldn't say anything for the first two weeks. The script went:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Week one:&lt;/em&gt; "Today I attended some internship presentations, set up my People Team account."&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Week two:&lt;/em&gt; "I ran the service locally, opened my first one-line PR."&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Week three:&lt;/em&gt; "I found this bug on prod and shipped a fix, deploy is running."&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And without noticing it, I went from being a green plant staring at everyone to being someone with something to say.&lt;/p&gt;

&lt;p&gt;My first project was so under-specified I didn't know where to start. "See that feature? The data is stored in some old database in a repo the company wants to deprecate." I had to chase the frontend code to find which backend it called, find that backend in another repo that nobody owned, find the database we didn't have access to. I made a lot of brain knots trying to figure out who owned what. One of the backends was so badly intricated that there was no way to test locally — I had to deploy straight to staging to run my database modifications, and I was happy not to fully destroy anything.&lt;/p&gt;

&lt;p&gt;I learned more from the &lt;em&gt;shape&lt;/em&gt; of that project than from finishing it. How the company was wired. Where the load-bearing people were. What "ownership" actually meant.&lt;/p&gt;

&lt;h2&gt;
  
  
  Becoming the Mentor
&lt;/h2&gt;

&lt;p&gt;Six months later I was full-time. Three months after that, I was mentoring.&lt;/p&gt;

&lt;p&gt;The thing that surprised me most was how recent the intern experience still felt — and how much that helped. I remembered the specific frustration of typing the same command for the fourth time because I hadn't yet aliased it. I remembered not knowing what to say in 1-1s with senior engineers.&lt;/p&gt;

&lt;p&gt;What follows is the advice I'd give anyone about to mentor someone for the first time. It's not exhaustive. It's the handful of things that I think actually move the needle.&lt;/p&gt;

&lt;h1&gt;
  
  
  Some Opinionated Advices
&lt;/h1&gt;

&lt;h2&gt;
  
  
  The First Week Is Setup Week
&lt;/h2&gt;

&lt;p&gt;The first week is for setup. All of it.&lt;/p&gt;

&lt;p&gt;Laptop config. Tooling. Internal sites — the people directory, the codebase navigator, the dashboards, the docs wiki, the support channels. Going through the motions of finding things, even when nothing is broken. The better your intern does this in week one, the faster they'll be in week two, and the less embarrassing it will be in week three when they're still tweaking their shell aliases instead of shipping.&lt;/p&gt;

&lt;p&gt;The other half of the first week: meeting the team. Get them in front of as many people as you can. Take notes during those introductions for future use. People at Datadog are — and I think this is true at most good companies — genuinely eager to explain what they do. Most engineers are nice to talk with. Use that.&lt;/p&gt;

&lt;p&gt;If your intern leaves week one with a configured laptop and a list of names attached to faces, you've already done a lot.&lt;/p&gt;

&lt;h2&gt;
  
  
  One PR a Day
&lt;/h2&gt;

&lt;p&gt;The most controversial piece of advice I give, and the one I keep coming back to: &lt;strong&gt;try to ship one PR a day.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I expected this to be obsolete by now. AI tools have changed how fast code gets written, how much context a single engineer can hold, how much can land in a single change. I assumed the one-PR-a-day rule would dissolve. It hasn't. The reasons are the same as they always were:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Show that you ship.&lt;/strong&gt; Asking for PR reviews puts your name in channels. Your coworkers see what you're working on. They learn what they can ask you about. It also keeps you from drifting into a four-day investigation with nothing visible at the end.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Get daily feedback.&lt;/strong&gt; Not just on code (which I hope you're not writing manually anymore). Feedback on PR descriptions, on naming, on how you communicate. The people you work with most often are the best loop for this, and a PR a day keeps that loop tight.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Practice moving forward in small steps.&lt;/strong&gt; It's easy to slip into writing a 1000-line PR, especially when AI makes it cheap. Shipping in chunks is better in almost every dimension I can name: easier to find reviewers, easier to incorporate feedback, easier to roll back, easier for production bugs to surface gradually instead of all at once.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If your intern hits one PR a day for the first month, almost everything else takes care of itself.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pair Programming Goes Both Ways
&lt;/h2&gt;

&lt;p&gt;I had hour-long pair sessions every day for the first two weeks with my intern. We swapped configurations. I showed her shortcuts. She asked questions that made me realize how arbitrary some of my habits were.&lt;/p&gt;

&lt;p&gt;This is one of those activities that sounds generous from the mentor's side but is genuinely two-sided.&lt;/p&gt;

&lt;p&gt;I remember an "innovation week" during my own internship where I worked closely with a senior engineer who was mostly working on frontend. We built something together for a week. I walked out of that week with new tools, new ideas, and a noticeably smoother day-to-day workflow. That was someone choosing to spend a week pair-programming with an intern — and it visibly cost them nothing.&lt;/p&gt;

&lt;p&gt;Two things I didn't expect about being on the mentor side of pair programming:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;It makes you self-conscious about your own setup, in a good way.&lt;/strong&gt; When you're describing what you're doing as you do it, you notice the friction. You can't find the alias. Your shell history is a mess. The repo organization you've internalized doesn't survive narration. You end up cleaning things up.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The intern just got out of school. They've been taught by many people, recently.&lt;/strong&gt; They've read things you haven't. They've used languages or libraries you don't know. They'll mention bloggers, classes, tools. Some of that is genuinely useful to you. Don't dismiss it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The framing I'd push back against is: "I'm helping the intern catch up." A better framing is: we're learning two different things from the same session.&lt;/p&gt;

&lt;h2&gt;
  
  
  When You're Not in the Same Office
&lt;/h2&gt;

&lt;p&gt;If your intern is in a different office than you are, almost everything above gets harder. You can't grab them for a quick pair session. You won't run into them in the kitchen. The small, low-stakes interactions where most context actually transfers — those mostly disappear.&lt;/p&gt;

&lt;p&gt;The single most useful thing I've seen for this: &lt;strong&gt;set up daily syncs&lt;/strong&gt;. Even when there's nothing to talk about.&lt;/p&gt;

&lt;p&gt;There will be days where the intern says they don't need it. Keep it on the calendar anyway. The point isn't your need; it's giving them a guaranteed slot to surface a question, a blocker, or something they noticed and didn't know what to do with. A standing fifteen minutes removes the "is this worth interrupting them?" hesitation. It also forces them to practice stating the problem clearly, out loud, every day.&lt;/p&gt;

&lt;p&gt;When I was interning in New York, my mentor was in France. The time-zone gap was real but workable: there was a few-hour overlap in my morning and his afternoon. I learned to catch him before my day really started — check the unknowns and the complex bits of what I was about to do — and to catch him again later, just before he stopped working, to close the loop. That cadence saved me a lot of solo flailing.&lt;/p&gt;

&lt;p&gt;For projects he was less involved in, I leaned on a couple of colleagues in my office who picked up part of the mentor role informally. Two of them became, in practice, partial mentors. They weren't on the org chart for it, but they were there when I needed them.&lt;/p&gt;

&lt;p&gt;If you're mentoring someone in a different office, my strongest suggestion is: &lt;strong&gt;find someone in their office that you trust, and that they can rely on.&lt;/strong&gt; Not officially. Just someone who'll grab lunch with them in the first week, answer a "stupid" question without making them feel stupid, and tell you privately if something's off. It's a quiet thing to set up, and it's worth a lot.&lt;/p&gt;

&lt;h2&gt;
  
  
  Delegate Real Work
&lt;/h2&gt;

&lt;p&gt;A recent example: my manager was on-call and wanted to delegate part of it — at least the support questions — to the intern.&lt;/p&gt;

&lt;p&gt;At first glance, this looks like classic top-down dumping. The senior person passes the annoying part to the most junior person. But look at what the intern actually gets:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Exposure to more products in the team than they'd otherwise see.&lt;/li&gt;
&lt;li&gt;A reason to talk to engineers and product owners they wouldn't normally reach.&lt;/li&gt;
&lt;li&gt;Real practice at writing clearly under time pressure (support questions don't wait).&lt;/li&gt;
&lt;li&gt;A working sense of what being on-call actually feels like.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That last one matters more than it sounds. It's a great thing to talk about in an internship defense, and it's a real differentiator if you're trying to convert into a full-time offer.&lt;/p&gt;

&lt;p&gt;More generally: &lt;strong&gt;give your intern small tasks that you could do yourself, probably much faster.&lt;/strong&gt; It costs you some efficiency in the short term. In exchange, you see how they think, where they get stuck, what they get wrong. You get to be opinionated about how something should be done — which gives you both something concrete to talk about, and often makes you rethink your own habits when you hear yourself defend them. Before the internship helps, your mentee will be an autonomous colleague who you can work with side-by-side.&lt;/p&gt;

&lt;h2&gt;
  
  
  Explain the Why
&lt;/h2&gt;

&lt;p&gt;The thing that's hardest to give an intern is context.&lt;/p&gt;

&lt;p&gt;It's easy to tell them "go to this meeting" or "read this article" or "talk to this person." It's harder, and more valuable, to say &lt;em&gt;why&lt;/em&gt;. Why does it matter that they go? What are they meant to take from it? Who should they look out for in the room?&lt;/p&gt;

&lt;p&gt;This matters most for the meta-skill of &lt;strong&gt;knowing what to talk about with people more senior than you&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;It's actually a hard problem. You know your life and theirs are different. You know your level of understanding is different. When you talk, they'll follow most of what you say. But when they talk, you'll often not even understand the &lt;em&gt;point&lt;/em&gt; of their job — because you're trying to grasp a high-level description of something with cross-product, cross-team dependencies, or a technically obscure project that sits far from you in the stack.&lt;/p&gt;

&lt;p&gt;This is one of the various things I stated here that I'm actively working on. I don't know how to teach it directly. But I know the antidote to the silence is &lt;em&gt;context&lt;/em&gt;: "here's why I'm sending you to this person, here's what they care about, here's what would be interesting to ask them about." The mentor's job, more than handing out tasks, is handing out reasons.&lt;/p&gt;

&lt;h2&gt;
  
  
  Let Them Impress You
&lt;/h2&gt;

&lt;p&gt;A short note to end on.&lt;/p&gt;

&lt;p&gt;You're a few years ahead of your intern, not decades (well, my mentor was but you're probably not). The gap is real, but it's nowhere near as big as it might feel in the early days. Let yourself be impressed by them. They're freshly out of school, intelligent, taught by good people, and they're going to do something you don't expect.&lt;/p&gt;

&lt;p&gt;Notice when it happens. Tell them.&lt;/p&gt;

&lt;h1&gt;
  
  
  Conclusion
&lt;/h1&gt;

&lt;p&gt;The mentor I tried to be was, more than anything, the mentor I wished I'd had: someone who'd walk me around the office, sit me at the right tables, explain &lt;em&gt;why&lt;/em&gt; the boring meeting mattered, give me real work, and quietly mention that one PR a day was worth aiming for.&lt;/p&gt;

&lt;p&gt;Mentorship isn't a one-way transfer. The version of it that actually works runs in both directions — and the version that works best is the one where the mentor is honest enough to admit the intern is teaching them, too.&lt;/p&gt;

&lt;p&gt;If you're about to mentor your first intern: configure their first week, push them to ship daily, pair with them, delegate real work, explain the why. Then watch them, and let them impress you.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Thanks to T.J., Fred, Kévin, Benoit and Tiina, who showed me what good mentorship looked like before I had to do it myself. And to Doaâ — most of what's in the second half of this post is something I figured out while working with you.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>monitoring</category>
      <category>mentorship</category>
      <category>career</category>
    </item>
    <item>
      <title>Build Your Harness While You Wait</title>
      <dc:creator>Lilian Bernot</dc:creator>
      <pubDate>Fri, 15 May 2026 06:23:39 +0000</pubDate>
      <link>https://dev.to/lilian_bernot/build-your-harness-while-you-wait-457n</link>
      <guid>https://dev.to/lilian_bernot/build-your-harness-while-you-wait-457n</guid>
      <description>&lt;p&gt;A few weeks ago, I sat down with a colleague for our weekly 1-1. He came in visibly exhausted — not from a late night debugging, not from an incident. He'd been on vacation and had come back to four active Claude sessions waiting for him, each one pulling in a different direction.&lt;/p&gt;

&lt;p&gt;"I always told people not to do this".&lt;/p&gt;

&lt;p&gt;I'd heard this before. But sitting in that room, I realized we were looking at a new kind of developer fatigue — one that didn't exist two years ago.&lt;/p&gt;

&lt;h2&gt;
  
  
  The New Speed Limit
&lt;/h2&gt;

&lt;p&gt;In 2023, developers were tired from staying up until 3am reading through StackOverflow for a two-line fix, or building entire features from scratch to satisfy a PM's request. That kind of exhaustion had a shape to it: deep, slow, earned.&lt;/p&gt;

&lt;p&gt;In 2026, the exhaustion looks different. It's not from doing too little — it's from doing too much, too fast. A new feature now takes three good lines of prompting. The bottleneck isn't execution anymore; it's context switching.&lt;/p&gt;

&lt;p&gt;I walk into our office and hear more people complaining about feeling scattered than about being stuck. The challenge has shifted from "how do I build this?" to "how do I stay coherent while building five things at once?"&lt;/p&gt;

&lt;h2&gt;
  
  
  The Babysitting Trap
&lt;/h2&gt;

&lt;p&gt;There's a mode I see a lot of colleagues still in, and I was there too not long ago: babysitting Claude. Accepting every file edit, rename, commit, and test run. Sitting in front of the screen, approving actions one by one.&lt;/p&gt;

&lt;p&gt;This is a waste of the most valuable thing you have: your attention.&lt;/p&gt;

&lt;p&gt;For a few weeks, in the repo I work in most, Claude was running complex Bazel queries that took forever. I kept multiple sessions open just to absorb the wait. At some point I actually looked at what was happening: it was running commands at the repository root level, which is catastrophically heavy in a monorepo. I spent an hour explaining Claude how to scope its commands — package level first, then service or domain, never the full repo.&lt;/p&gt;

&lt;p&gt;That one hour saved me dozens.&lt;/p&gt;

&lt;h2&gt;
  
  
  Build Your Harness While You Wait
&lt;/h2&gt;

&lt;p&gt;This is the reframe that changed how I work: &lt;strong&gt;use latency as leverage&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;When an agent is doing something long — running tests, building a target, generating protobuf files — that's not dead time. That's configuration time. It's the 20% of my AI time I now deliberately protect. The remaining 5% I keep for research: what's new in the AI world, what are my colleagues trying, what's worth stealing for my own workflow?&lt;/p&gt;

&lt;p&gt;Think of it like early career progression. As a newcomer, you have low privileges. You move carefully, ask for approval often. As you grow, you earn operational rights, architectural trust, autonomy. AI sessions are the same: untrained sessions are expensive to babysit. Trained sessions — with the right permissions, the right context, the right guardrails — run themselves.&lt;/p&gt;

&lt;p&gt;We don't want to micro-manage. We want to configure, then delegate.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Notifications Tax
&lt;/h2&gt;

&lt;p&gt;One underrated part of this: notifications.&lt;/p&gt;

&lt;p&gt;I turned off WhatsApp emoji reaction notifications months ago. Every Slack channel I'm in is muted except for PMs with my intern, my manager, and the handful of coworkers I might be on-call alongside.&lt;/p&gt;

&lt;p&gt;This sounds antisocial. It's a trade: I respond more thoughtfully and less reflexively. The pings that reach me matter.&lt;/p&gt;

&lt;p&gt;Boredom, it turns out, is useful. The moments where I step away from the screen — tidy something up, stare out the window — are where I do my best thinking. I anticipate what the agent will do next. I kill the process, refine the prompt, restart with a better question. The idle second is where the edit happens.&lt;/p&gt;

&lt;h2&gt;
  
  
  On Git Worktrees (and Why I Dropped Them for now)
&lt;/h2&gt;

&lt;p&gt;I got excited about git worktrees for a while. The idea is elegant: while one agent works on branch A, spin up another one on branch B. No blocking, pure parallelism.&lt;/p&gt;

&lt;p&gt;In practice: more context switching, not less.&lt;/p&gt;

&lt;p&gt;Worktrees in a large monorepo are slow to spin up. You have to track which clone corresponds to which task, manage rebases across branches, stack PRs in ways that are genuinely hard to reason about. Some colleagues just maintain two clones of the repo — which is roughly the same problem. I tried letting the AI manage the worktrees for me. That was worse.&lt;/p&gt;

&lt;p&gt;There are legitimate uses — deploying something while keeping the working tree open, running long &lt;code&gt;bazel&lt;/code&gt; or &lt;code&gt;yarn&lt;/code&gt; commands for auto-generation — but for most day-to-day work, the overhead isn't worth it. The overhead is cognitive, not computational.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Comeback Sprint
&lt;/h2&gt;

&lt;p&gt;Three weeks of sick leave. A half-finished feature I cared about. A week of on-call the moment I returned.&lt;/p&gt;

&lt;p&gt;When I finally got two free days to work on it, I was four weeks out from the last time I'd touched it. I was also worried someone had moved on without me.&lt;/p&gt;

&lt;p&gt;They hadn't. So I started.&lt;/p&gt;

&lt;p&gt;I had notes. I had saved links, database queries, context scattered across docs and Slack threads. AI agents helped me reassemble all of it — regroup the data, spec the implementation step by step, proceed, test. By end of day one, I had shipped four PRs. One update on the database definition, one fixing multiple bugs in the existing code, one implementing part of the feature and the last one to build some tooling. That one hour of config work saved hours in the days that followed.&lt;/p&gt;

&lt;p&gt;Day two: three more PRs. Done.&lt;/p&gt;

&lt;p&gt;A year ago, that feature would have taken me two weeks. Minimum. When I sent it for review, I already knew it was clean. Approvals came fast. I moved on.&lt;/p&gt;

&lt;p&gt;The feeling of finishing ahead of your own plan, when you had every reason to expect to be late — that's the feeling I'm chasing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Flow, Not Orbit
&lt;/h2&gt;

&lt;p&gt;I read a Forbes piece recently that argued "Orbit is the new Flow." The idea: agentic AI rewards context-switchers, people who keep many things in motion at once rather than diving deep into any single one.&lt;/p&gt;

&lt;p&gt;I'm not convinced.&lt;/p&gt;

&lt;p&gt;Flow — the uncomfortable, focused state where you stop noticing the room around you — is still where I do my best thinking. When I come out of it, complex things are in place, cleanly. I just have to document what I did, transfer context somewhere durable.&lt;/p&gt;

&lt;p&gt;Orbit might scale better. But I'm not sure yet that it scales better &lt;em&gt;for me&lt;/em&gt;. The risk is creating content and context faster than you can actually ingest or ship it.&lt;/p&gt;

&lt;p&gt;The goal isn't to have many things moving at once. It's to have the right things moving — and to actually finish them.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;The new developer fatigue is real, but it's manageable. It's not about doing less — it's about doing it with intention. Protect your focus. Use the wait to improve the harness. Mute the noise that doesn't matter. Ship things completely before starting the next one.&lt;/p&gt;

&lt;p&gt;We're still engineers. We're just working at a different speed, with different constraints. Learning to configure the machine — including the AI — is the new leverage.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>claude</category>
      <category>mentalhealth</category>
      <category>productivity</category>
    </item>
    <item>
      <title>From Developer to Engineer: My Journey with AI Coding Tools</title>
      <dc:creator>Lilian Bernot</dc:creator>
      <pubDate>Fri, 15 May 2026 06:09:00 +0000</pubDate>
      <link>https://dev.to/lilian_bernot/from-developer-to-engineer-my-journey-with-ai-coding-tools-3al7</link>
      <guid>https://dev.to/lilian_bernot/from-developer-to-engineer-my-journey-with-ai-coding-tools-3al7</guid>
      <description>&lt;p&gt;Written: December 2025.&lt;/p&gt;

&lt;p&gt;A recent blog post that resonated with me: &lt;strong&gt;The Year Coding Sped Up 100x&lt;/strong&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The point is not that software engineering is dead.&lt;/p&gt;

&lt;p&gt;Quite the opposite: the engineering in software engineering is thriving. Modeling, formal validation, higher-level languages—these were at the fringes of "traditional" software engineering for a long time because most of the brain power was spent writing code.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;As a junior who started coding in 2023, I can deeply relate to that statement. This is the story of how AI tools transformed me from a struggling developer into a software engineer.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Beginning: Learning the Hard Way (2022-2023)
&lt;/h2&gt;

&lt;p&gt;When I started "learning code" at school in 2022, it was truly learning the hard way. Nothing comparable to formal textbooks—I had to grind through exercises, maintain a personal dictionary of vocabulary I struggled to remember, and piece together understanding bit by bit. At that time, GPT-3 was just starting out, mainly a playground for people asking it to tell jokes.&lt;/p&gt;

&lt;p&gt;For a year, I took on the developer role in school projects because I wanted to learn more. I spent hours checking other people's code to copy-paste parts of it, reverse-engineering solutions without fully understanding them.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Chile Semester: Coding in Three Languages
&lt;/h3&gt;

&lt;p&gt;Then I spent the first semester of 2023 in Chile, taking classes like "web development fundamentals," "databases," and "algorithms." The real names were "Inicio Al Desarrollo Web," "Base de datos," and "Algoritmos"—all classes taught in Spanish, code in English, and my brain thinking in French. I couldn't describe this mess better than: "In my code, some comment lines were written in 3 languages."&lt;/p&gt;

&lt;p&gt;During these classes, we worked with React and Koa, SQL, and C++, respectively. They were all supposed to be entry-level, but the students around me had already completed 2-3 semesters of similar courses and were far more advanced than me. I kept asking to see others' code, spent countless hours reading the easier classes' slides first to make my way through understanding the actual course material I was supposed to be following.&lt;/p&gt;

&lt;h2&gt;
  
  
  First Internship: Contradictions and Crisis (October 2023)
&lt;/h2&gt;

&lt;p&gt;In October 2023, I started my first internship. GPT-3 was being fine-tuned to become what we now know as modern AI. At that time, I experimented a bit out of curiosity—asking it to explain pieces of code, which I would confirm with the classic StackOverflow questions and other sources. I also used it for repetitive tasks, like extracting just the keys from JSON into text format. Answers started to make sense. Others were using GitHub Copilot, which I didn't like because it was writing the code for me without giving me time to think about what I was doing.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Identity Crisis
&lt;/h3&gt;

&lt;p&gt;When I started my internship, I was full of contradictions: both happy to learn the new languages I was coding with (which I love to learn) and disappointed seeing people with such advanced skills that would take me years, maybe decades, to acquire. There I started questioning my career as a developer (vocabulary matters here).&lt;/p&gt;

&lt;p&gt;In the meantime, the use of AI was rising and we kept hearing people say we would lose our jobs. What was I doing in a world where I was just a beginner, facing senior people with much more knowledge than me, and facing new AI tools that were becoming as efficient as an intern?&lt;/p&gt;

&lt;h2&gt;
  
  
  Back to Fundamentals (Fall 2024)
&lt;/h2&gt;

&lt;p&gt;A year later, I returned to school to study "Fundamentals of Computer Science." I had briefly touched some C++ code before, but I was really lacking foundational knowledge. We learned Rust, which, coming from Python, really kicked my ass. We did Assembly and Haskell, and kept listening to our teachers who were so enthusiastic about low-level languages and optimizations.&lt;/p&gt;

&lt;p&gt;I can painfully tell you that GPT had not been trained on Assembly books yet...&lt;/p&gt;

&lt;p&gt;This was a great time—stepping back from speed-coding and "AI taking over the world," and trying to redefine what "software engineer" meant for us. It grounded me in the fundamentals and gave me perspective on what engineering actually entails.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Turning Point: Datadog (Spring 2025)
&lt;/h2&gt;

&lt;p&gt;After that semester, I started my internship at Datadog in New York. I was in a great team with excellent colleagues who taught me a lot. I started learning Go, using AI the best I could to accelerate my learning—helping me ship code while also teaching me core principles of the language. I had an excellent mentor who did really strict PR reviews that helped tremendously with my learning.&lt;/p&gt;

&lt;h3&gt;
  
  
  Innovation Week: AI Everywhere
&lt;/h3&gt;

&lt;p&gt;One month in, we held an innovation week, trying to put AI everywhere in our product. At that time, all companies were releasing AI assistants—we were building Bits AI, others had their own solutions. The race had started.&lt;/p&gt;

&lt;p&gt;In the following month, I started working on an NLQ (Natural Language Query) feature for which I had to read a lot of blog posts, study how others were approaching the problem, and experiment extensively. I learned a lot about how to work with AI and get these capricious little minds to respect what I was asking them to do.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Hackathon Week: Meeting Cursor
&lt;/h3&gt;

&lt;p&gt;After this period came a company-wide AI hackathon week, during which we attended numerous conferences and gathered for vibe-coding sessions where we built apps in an hour. At that time, I was pretty skeptical about AI, given my recent battles with it. I finally accepted to install Cursor (I didn't even have Copilot in VSCode as I didn't like the noise it brought).&lt;/p&gt;

&lt;p&gt;And Cursor suddenly became my best colleague.&lt;/p&gt;

&lt;p&gt;I was suddenly able to debug my code 10x faster, delegate boring tasks to AI, and read documentation or answer messages in the meantime. This was the moment everything changed.&lt;/p&gt;

&lt;h2&gt;
  
  
  My Current Setup (Late 2025)
&lt;/h2&gt;

&lt;p&gt;Let's jump to what my setup and workflow are now: I run multiple Claude Code instances simultaneously to handle most of my AI tasks, combined with Cursor, which helps me read my code as an enhanced IDE. I use it to ask for clarifications on specific bits of code, no longer than a few lines.&lt;/p&gt;

&lt;h2&gt;
  
  
  Redefining the Role: Developer vs. Software Engineer
&lt;/h2&gt;

&lt;p&gt;In a world where AI is, for some, a confidant to which they tell everything and ask to make important decisions in their lives, or use to justify bar discussions with a quick prompt, AI can also genuinely enhance some of our abilities.&lt;/p&gt;

&lt;p&gt;I've had many interesting exchanges with quite a few engineers in the company now, which helped me gain perspective (I also had a month off between my internship and my full-time job—take holidays, devs!).&lt;/p&gt;

&lt;h3&gt;
  
  
  What "Software Engineer" Actually Means
&lt;/h3&gt;

&lt;p&gt;And now I understand more clearly what my job is: I am a &lt;strong&gt;Software Engineer&lt;/strong&gt;. My job requires developer skills—I need to be able to read code, understand how it works, know best practices in several different languages, and know how to deploy a service.&lt;/p&gt;

&lt;p&gt;But as seniors were before me, I am more of an &lt;strong&gt;orchestrator than a code writer&lt;/strong&gt;. My job is not to write lines of code. I can now respond to support messages, write fixes, deploy them, make sure they run in production, and manage the entire lifecycle of a feature.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Transformation
&lt;/h3&gt;

&lt;p&gt;As a junior, every part was scary, and the "write the fix" part was perhaps the worst: I could see myself fighting with language syntax for countless hours, reading again and again my personal notes on the language, realizing which patterns didn't actually apply in every situation, going back and forth with StackOverflow...&lt;/p&gt;

&lt;p&gt;Now, every time I have to write code, I can stop worrying about that part. I focus more on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Defining my needs clearly&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Architecting solutions&lt;/strong&gt; that AI will implement for me&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Writing tests&lt;/strong&gt; that aren't influenced by the code I wrote&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Collaborating&lt;/strong&gt; with other engineers and teams&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Organizing projects&lt;/strong&gt; end-to-end&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ensuring quality&lt;/strong&gt; and maintainability&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Altogether, this makes me more and more an &lt;strong&gt;Engineer&lt;/strong&gt;, not just someone who writes code.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;The transformation from developer to software engineer isn't about abandoning coding—it's about elevating your role. AI tools like Cursor and Claude Code haven't replaced me; they've liberated me to focus on what truly matters: engineering decisions, system design, collaboration, and delivering value.&lt;/p&gt;

&lt;p&gt;The fear I felt in 2023—that AI would make me obsolete before I even started—was misplaced. Instead, AI accelerated my journey from a struggling beginner to a being-confident engineer who can architect, ship, and maintain production systems.&lt;/p&gt;

&lt;p&gt;The engineering in software engineering is indeed thriving. And I'm thrilled to be part of it.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>learning</category>
      <category>career</category>
    </item>
    <item>
      <title>Choosing a Natural Language Query Architecture for Dynamic Data Systems</title>
      <dc:creator>Lilian Bernot</dc:creator>
      <pubDate>Fri, 15 May 2026 06:06:17 +0000</pubDate>
      <link>https://dev.to/lilian_bernot/choosing-a-natural-language-query-architecture-for-dynamic-data-systems-22e7</link>
      <guid>https://dev.to/lilian_bernot/choosing-a-natural-language-query-architecture-for-dynamic-data-systems-22e7</guid>
      <description>&lt;p&gt;When building a Natural Language Query (NLQ) interface for a complex, evolving data catalog, the choice of architecture can make or break your solution. This post explores the architectural decisions faced when implementing NLQ for a system with dynamic schemas, frequent changes, and complex query requirements.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Challenge: Dynamic Data Systems
&lt;/h2&gt;

&lt;p&gt;Our data architecture presented several unique challenges:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Atomicity&lt;/strong&gt;: Data organized by resource types, with many type-specific fields&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dynamic Evolution&lt;/strong&gt;: Rapid schema changes (50 → 140 tables in one year)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Complex Queries&lt;/strong&gt;: Support for tags, date comparisons, and advanced operators (not just equality but &lt;code&gt;&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;&lt;/code&gt;, etc.)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;High Specificity&lt;/strong&gt;: Domain-specific query syntax requirements&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The key question: How do we build an NLQ system that adapts to these constant changes without requiring retraining or manual updates?&lt;/p&gt;

&lt;h2&gt;
  
  
  Solution 1: Fine-Tuned Static Models
&lt;/h2&gt;

&lt;p&gt;The traditional approach involves:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Base Model&lt;/strong&gt;: A foundation model trained on general query syntax&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fine-Tuning Layer&lt;/strong&gt;: Product-specific training on historical data&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deployment&lt;/strong&gt;: Static model serving predictions&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Advantages
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Well-understood approach with proven results&lt;/li&gt;
&lt;li&gt;Can leverage existing infrastructure&lt;/li&gt;
&lt;li&gt;Potentially lower per-query costs at scale&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Limitations
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Not Dynamic&lt;/strong&gt;: Every schema change requires retraining&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Team Dependency&lt;/strong&gt;: Requires ML expertise and infrastructure&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Training Cost&lt;/strong&gt;: Significant upfront investment in data and compute&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lag Time&lt;/strong&gt;: Delay between schema changes and model updates&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For our use case with frequent schema evolution, this approach would create constant maintenance burden and potential staleness.&lt;/p&gt;

&lt;h2&gt;
  
  
  Solution 2: Model Context Protocol (MCP)
&lt;/h2&gt;

&lt;p&gt;An alternative approach uses the Model Context Protocol to provide dynamic context to a general-purpose LLM:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User Query → LLM with MCP Tools → Query Syntax → Execution
                ↓
         [Dynamic Schema]
         [Available Fields]
         [Query Examples]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The MCP provides:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Real-time schema information&lt;/li&gt;
&lt;li&gt;Available fields and types&lt;/li&gt;
&lt;li&gt;Valid query patterns&lt;/li&gt;
&lt;li&gt;Domain-specific constraints&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Advantages
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Fully Dynamic&lt;/strong&gt;: Adapts instantly to schema changes&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Team Ownership&lt;/strong&gt;: No dependency on ML teams&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reduced Training&lt;/strong&gt;: No model training or retraining required&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Transparency&lt;/strong&gt;: Tool usage provides explainability&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Limitations
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Per-Query Cost&lt;/strong&gt;: Higher compute cost per query&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Latency&lt;/strong&gt;: Multiple LLM calls may be needed&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;External Dependency&lt;/strong&gt;: Relies on external LLM providers&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Solution 3: Hybrid Approach
&lt;/h2&gt;

&lt;p&gt;Could we combine the best of both worlds?&lt;/p&gt;

&lt;p&gt;The idea: Use a small, fine-tuned base model with MCP for dynamic context.&lt;/p&gt;

&lt;h3&gt;
  
  
  Current Reality
&lt;/h3&gt;

&lt;p&gt;Most lightweight models (e.g., Llama 8B variants) don't support complex tool usage or reasoning required for MCP. They're trained for direct translation tasks.&lt;/p&gt;

&lt;p&gt;Building a larger model with tool-use capabilities is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Significantly more complex&lt;/li&gt;
&lt;li&gt;Resource-intensive&lt;/li&gt;
&lt;li&gt;Not a near-term option for most teams&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Other Considerations
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Direct SQL Generation
&lt;/h3&gt;

&lt;p&gt;Why not skip the intermediate query syntax and generate SQL directly?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Complexity&lt;/strong&gt;: Easy to generate syntactically correct but semantically wrong queries&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Business Logic&lt;/strong&gt;: Existing query layer encodes important domain knowledge&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Maintenance&lt;/strong&gt;: Duplicating logic in multiple places&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Low Cost&lt;/strong&gt;: If the execution layer is already efficient, why bypass it?&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Agent SDK vs Custom Implementation
&lt;/h3&gt;

&lt;p&gt;Modern agent frameworks (OpenAI Agents SDK, LangChain, etc.) provide higher-level abstractions. Why build custom?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Language Constraints&lt;/strong&gt;: SDK may not be available in your stack (e.g., Python SDK when you need Go)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Performance&lt;/strong&gt;: SDK adds:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Network overhead for API calls&lt;/li&gt;
&lt;li&gt;Serialization/deserialization costs&lt;/li&gt;
&lt;li&gt;Potential service-to-service latency&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Duplication&lt;/strong&gt;: Using external service means duplicating logic and data access&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Control&lt;/strong&gt;: Custom implementation provides:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fine-grained optimization&lt;/li&gt;
&lt;li&gt;Direct access to data&lt;/li&gt;
&lt;li&gt;Single service boundary&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For high-performance, low-latency requirements, a custom implementation integrated directly into your service may be preferable.&lt;/p&gt;

&lt;h2&gt;
  
  
  Decision Framework
&lt;/h2&gt;

&lt;p&gt;When choosing an NLQ architecture, consider:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Schema Stability&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Frequent changes → Favor dynamic approaches (MCP)&lt;/li&gt;
&lt;li&gt;Stable schema → Fine-tuning becomes viable&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Team Capabilities&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ML expertise available → Fine-tuning feasible&lt;/li&gt;
&lt;li&gt;Engineering-focused → MCP easier to maintain&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Cost Profile&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;High query volume → Fine-tuned model may be more economical&lt;/li&gt;
&lt;li&gt;Lower volume → MCP per-query costs acceptable&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Latency Requirements&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Sub-second requirements → May need cached models&lt;/li&gt;
&lt;li&gt;Seconds acceptable → MCP works well&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Ownership Model&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Centralized ML team → Fine-tuning with shared infrastructure&lt;/li&gt;
&lt;li&gt;Product team ownership → MCP with direct control&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Our Decision: MCP
&lt;/h2&gt;

&lt;p&gt;We chose the MCP approach because:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Dynamic First&lt;/strong&gt;: Our schema changes frequently enough that retraining overhead would be significant&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Independence&lt;/strong&gt;: We wanted to move quickly without dependencies&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Transparency&lt;/strong&gt;: Tool usage provides clear audit trails&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cost Acceptable&lt;/strong&gt;: Query volume doesn't justify training infrastructure&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Experience Value&lt;/strong&gt;: Even if we change approaches later, the work on query datasets and testing will transfer&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;There's no universal "best" architecture for NLQ systems. The right choice depends on your specific constraints:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Schema stability&lt;/li&gt;
&lt;li&gt;Team structure and expertise&lt;/li&gt;
&lt;li&gt;Query volume and latency requirements&lt;/li&gt;
&lt;li&gt;Cost considerations&lt;/li&gt;
&lt;li&gt;Ownership and maintenance preferences&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For dynamic systems with evolving schemas, MCP-based approaches offer a compelling balance of flexibility, maintainability, and time-to-market. For stable, high-volume scenarios, the upfront investment in fine-tuned models may pay dividends.&lt;/p&gt;

&lt;p&gt;The key is matching the architecture to your specific needs, not following a one-size-fits-all approach.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>nlq</category>
      <category>llm</category>
      <category>architecture</category>
    </item>
  </channel>
</rss>
