<?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: Nina Ricci</title>
    <description>The latest articles on DEV Community by Nina Ricci (@ninariccimarie).</description>
    <link>https://dev.to/ninariccimarie</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F48378%2F97b1ed34-0403-4607-9f92-cc612ee835e1.png</url>
      <title>DEV Community: Nina Ricci</title>
      <link>https://dev.to/ninariccimarie</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ninariccimarie"/>
    <language>en</language>
    <item>
      <title>Part 2: AI Didn't Make Bad Decisions. It Made *Different* Engineering Decisions Than I Would. 🤔</title>
      <dc:creator>Nina Ricci</dc:creator>
      <pubDate>Tue, 04 Aug 2026 11:23:40 +0000</pubDate>
      <link>https://dev.to/ninariccimarie/part-2-ai-didnt-make-bad-decisions-it-made-different-engineering-decisions-than-i-would-4kch</link>
      <guid>https://dev.to/ninariccimarie/part-2-ai-didnt-make-bad-decisions-it-made-different-engineering-decisions-than-i-would-4kch</guid>
      <description>&lt;h2&gt;
  
  
  A Series: Building a SaaS with AI as my teammate
&lt;/h2&gt;

&lt;p&gt;In my &lt;a href="https://dev.to/ninariccimarie/part-1-i-stopped-asking-ai-to-write-code-i-started-teaching-it-how-my-team-works-113g"&gt;previous post&lt;/a&gt;, I talked about treating AI less like a code generator and more like a new engineer joining the team.&lt;/p&gt;

&lt;p&gt;That experiment has been interesting.&lt;/p&gt;

&lt;p&gt;What surprised me wasn't that AI generated bugs.&lt;/p&gt;

&lt;p&gt;It was that it continuously made perfectly reasonable engineering decisions... based on assumptions I never told it.&lt;/p&gt;

&lt;p&gt;And those assumptions slowly shaped the architecture of my project.&lt;/p&gt;

&lt;h2&gt;
  
  
  The first surprise: package selection 📦
&lt;/h2&gt;

&lt;p&gt;When I started the implementation, I gave AI a lot of context about the project.&lt;/p&gt;

&lt;p&gt;It knew the tech stack.&lt;br&gt;
It knew the goal.&lt;br&gt;
It knew this was a side project.&lt;/p&gt;

&lt;p&gt;So I asked it to scaffold the application.&lt;/p&gt;

&lt;p&gt;The packages it picked were completely reasonable.&lt;/p&gt;

&lt;p&gt;After all, it knew this wasn't intended to become a huge enterprise application.&lt;/p&gt;

&lt;p&gt;Only after reviewing the pull request did I realize something.&lt;/p&gt;

&lt;p&gt;I had never actually explained the &lt;em&gt;quality&lt;/em&gt; I wanted. 😅&lt;/p&gt;

&lt;p&gt;In my head, this project sat somewhere between:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a weekend hackathon project&lt;/li&gt;
&lt;li&gt;a production-ready service I'd confidently deploy&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I wanted something lightweight enough to move fast, but structured enough that I wouldn't regret decisions six months later.&lt;/p&gt;

&lt;p&gt;AI had no way of knowing that.&lt;/p&gt;

&lt;p&gt;It optimized for exactly what I described: a side project.&lt;/p&gt;

&lt;p&gt;And that was when I realized something:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI doesn't just need to understand what you're building. It needs to understand how you think about building it.&lt;/strong&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  Small technical decisions become big later 🧐
&lt;/h2&gt;

&lt;p&gt;The more PRs I reviewed, the more examples I found.&lt;/p&gt;

&lt;p&gt;One migration generated by AI looked like this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;no &lt;code&gt;updated_at&lt;/code&gt; column&lt;/li&gt;
&lt;li&gt;only an &lt;code&gt;up.sql&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;no &lt;code&gt;down.sql&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Again...&lt;/p&gt;

&lt;p&gt;Nothing was technically broken.&lt;/p&gt;

&lt;p&gt;If this were a quick prototype, I'd probably merge it without thinking twice.&lt;/p&gt;

&lt;p&gt;But then I started asking myself:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Wait... what happens when I need to rollback this migration?" 🤔&lt;/p&gt;

&lt;p&gt;"What happens when I want automatic timestamps later?" 🤔&lt;/p&gt;

&lt;p&gt;"Why did AI choose this?" 🤔&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The answer was simple.&lt;/p&gt;

&lt;p&gt;Because I never told it otherwise.&lt;/p&gt;

&lt;p&gt;AI wasn't optimizing for long-term maintainability.&lt;/p&gt;

&lt;p&gt;It was optimizing for:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Make this feature work."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And honestly, that's a completely reasonable assumption when you tell it:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"This is a side project."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The problem?&lt;/p&gt;

&lt;p&gt;A "side project" can mean many things.&lt;/p&gt;

&lt;p&gt;It can mean:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;something I'll delete next month 🗑️&lt;/li&gt;
&lt;li&gt;something I'll use personally for years 🚀&lt;/li&gt;
&lt;li&gt;something that might eventually become a real product 🌱&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;AI doesn't know which one you mean unless you tell it.&lt;/p&gt;


&lt;h2&gt;
  
  
  My workflow changed 🔄
&lt;/h2&gt;

&lt;p&gt;Originally my workflow looked like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Prompt AI
↓

Generate code
↓

Merge
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Simple.&lt;/p&gt;

&lt;p&gt;Fast.&lt;/p&gt;

&lt;p&gt;But also risky.&lt;/p&gt;

&lt;p&gt;Now it looks much more like working with another engineer:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Generate code
↓

Review PR
↓

Ask AI why it made certain decisions
↓

Ask for alternatives
↓

Research tradeoffs
↓

Decide myself
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And this honestly feels much closer to how engineering worked before AI.&lt;/p&gt;

&lt;p&gt;Before AI, we would:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;read official documentation 📚&lt;/li&gt;
&lt;li&gt;search through GitHub issues&lt;/li&gt;
&lt;li&gt;browse Stack Overflow discussions&lt;/li&gt;
&lt;li&gt;read engineering blogs&lt;/li&gt;
&lt;li&gt;compare different approaches&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The difference now?&lt;/p&gt;

&lt;p&gt;AI gives me a starting point much faster.&lt;/p&gt;

&lt;p&gt;I can ask:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"What are the tradeoffs?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Then:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Give me an example where this approach fails."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Then:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"What if this grows from one engineer to five?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And suddenly, a decision that might have taken hours of research becomes a much faster conversation.&lt;/p&gt;




&lt;h2&gt;
  
  
  AI shouldn't own architectural decisions 🚫🤖
&lt;/h2&gt;

&lt;p&gt;One thing I've become careful about is letting AI "recommend" a solution.&lt;/p&gt;

&lt;p&gt;Large language models are very persuasive.&lt;/p&gt;

&lt;p&gt;Sometimes they'll even say:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Personally, I think Option A makes more sense."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And sometimes I catch myself thinking:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Hmm... maybe you're right." 👀&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;But confidence isn't the same as correctness.&lt;/p&gt;

&lt;p&gt;So instead of asking:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Which one should I choose?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I ask:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What are the tradeoffs?&lt;/li&gt;
&lt;li&gt;When does each approach fail?&lt;/li&gt;
&lt;li&gt;What problems appear later?&lt;/li&gt;
&lt;li&gt;What situations would make me regret this decision?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal isn't for AI to make the decision for me.&lt;/p&gt;

&lt;p&gt;The goal is for AI to help me make a better decision.&lt;/p&gt;




&lt;h2&gt;
  
  
  This project is really an experiment 🧪
&lt;/h2&gt;

&lt;p&gt;The application I'm building isn't just another side project.&lt;/p&gt;

&lt;p&gt;It's become an experiment in understanding how AI behaves when context is incomplete.&lt;/p&gt;

&lt;p&gt;Every time AI surprises me, I don't immediately think:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"AI got this wrong."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Instead I ask:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"What assumption did it make because I never gave it enough information?" 🤔&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Those moments have actually become the most valuable part of this project.&lt;/p&gt;

&lt;p&gt;Because every missing piece of context becomes another instruction I can add.&lt;/p&gt;

&lt;p&gt;Every review becomes another lesson.&lt;/p&gt;

&lt;p&gt;Every decision becomes another piece of information about how I want my AI teammate to work.&lt;/p&gt;

&lt;p&gt;And slowly...&lt;/p&gt;

&lt;p&gt;AI starts feeling less like an autocomplete tool.&lt;/p&gt;

&lt;p&gt;And more like a teammate who understands how our engineering team works. 🤝&lt;/p&gt;




&lt;p&gt;In Part 3, I want to explore another interesting pattern I've noticed: how AI changes when you stop treating prompts as one-off requests and start building reusable engineering context.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>cursor</category>
      <category>agents</category>
      <category>software</category>
    </item>
    <item>
      <title>Part 1: I Stopped Asking AI to Write Code. I Started Teaching It How My Team Works.</title>
      <dc:creator>Nina Ricci</dc:creator>
      <pubDate>Thu, 30 Jul 2026 07:51:47 +0000</pubDate>
      <link>https://dev.to/ninariccimarie/part-1-i-stopped-asking-ai-to-write-code-i-started-teaching-it-how-my-team-works-113g</link>
      <guid>https://dev.to/ninariccimarie/part-1-i-stopped-asking-ai-to-write-code-i-started-teaching-it-how-my-team-works-113g</guid>
      <description>&lt;h2&gt;
  
  
  A Series: Building a SaaS with AI as my teammate
&lt;/h2&gt;

&lt;p&gt;Over the last few years, I've worked on engineering teams where features rarely started with code.&lt;/p&gt;

&lt;p&gt;They started with conversations.&lt;/p&gt;

&lt;p&gt;A Product Manager would present a problem or feature idea. Engineers would discuss the technical approach, identify risks, challenge assumptions, estimate the work, and agree on the scope. Once everyone aligned, we'd break the work down into issues, implement the solution, open a Pull Request, review it, merge it, and finally close the issue.&lt;/p&gt;

&lt;p&gt;Every team I've worked with had its own way of documenting issues and Pull Requests. Some were more structured than others (and yes, sometimes we'd just write the bare minimum 😅). But one thing stayed consistent: there was always a process behind the code.&lt;/p&gt;

&lt;p&gt;Then I started building my own SaaS.&lt;/p&gt;

&lt;p&gt;Suddenly I was wearing every hat.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Product Manager&lt;/li&gt;
&lt;li&gt;Software Engineer&lt;/li&gt;
&lt;li&gt;Tech Lead&lt;/li&gt;
&lt;li&gt;QA Engineer&lt;/li&gt;
&lt;li&gt;Reviewer&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Around the same time, I started experimenting with Cursor.&lt;/p&gt;

&lt;p&gt;Like many people, my first instinct was to use it as a coding assistant.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Build this feature."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And honestly... it worked.&lt;/p&gt;

&lt;p&gt;Cursor generated code surprisingly well.&lt;/p&gt;

&lt;p&gt;But after a while, something felt off.&lt;/p&gt;

&lt;p&gt;The code appeared.&lt;/p&gt;

&lt;p&gt;The engineering process disappeared.&lt;/p&gt;

&lt;p&gt;There were no planning discussions.&lt;/p&gt;

&lt;p&gt;No issue breakdown.&lt;/p&gt;

&lt;p&gt;No implementation plan.&lt;/p&gt;

&lt;p&gt;No clear commit boundaries.&lt;/p&gt;

&lt;p&gt;No Pull Request summary.&lt;/p&gt;

&lt;p&gt;No reviewer checklist.&lt;/p&gt;

&lt;p&gt;It was skipping everything that I had learned from working on software teams.&lt;/p&gt;

&lt;p&gt;That's when I realized something.&lt;/p&gt;

&lt;p&gt;I wasn't missing a better AI model.&lt;/p&gt;

&lt;p&gt;I was missing &lt;strong&gt;the team process&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Instead of asking Cursor to simply build features, I started teaching it how my team used to work.&lt;/p&gt;

&lt;p&gt;Rather than saying:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Build Google Authentication.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I asked it to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;propose a GitHub Issue&lt;/li&gt;
&lt;li&gt;define the scope&lt;/li&gt;
&lt;li&gt;describe what is included and excluded&lt;/li&gt;
&lt;li&gt;suggest a feature branch&lt;/li&gt;
&lt;li&gt;create an implementation plan&lt;/li&gt;
&lt;li&gt;identify logical commit boundaries&lt;/li&gt;
&lt;li&gt;pause before making large changes&lt;/li&gt;
&lt;li&gt;generate a Pull Request description&lt;/li&gt;
&lt;li&gt;include a reviewer checklist&lt;/li&gt;
&lt;li&gt;document architectural decisions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The difference was immediate.&lt;/p&gt;

&lt;p&gt;Cursor stopped feeling like a code generator.&lt;/p&gt;

&lt;p&gt;It started feeling like another engineer on the team.&lt;/p&gt;

&lt;p&gt;Not because it suddenly became smarter, but because I finally gave it the same context and expectations I'd give a teammate.&lt;/p&gt;




&lt;h2&gt;
  
  
  Before vs. After
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Before
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Idea → Prompt Cursor → AI writes code → Commit → Done
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I used to just plainly give instructions to AI to build the idea and review the code. If I instruct it to build a whole feature, it spits out a whole chunk of code where I will have to figure out everything on my own. 😅 If I think about using this in production, then it is out of the question. 🙅‍♀️&lt;/p&gt;

&lt;h3&gt;
  
  
  Now
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Idea → Refine the problem → GitHub Issue → Discuss scope → Feature branch → Implementation plan → Small logical commits → Tests → Pull Request → Reviewer checklist → Review → Merge
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It looks surprisingly similar to how many engineering teams already work.&lt;/p&gt;

&lt;p&gt;The difference is that I'm now doing it as a solo developer with AI helping me execute the process. This is much easier for me to refine the scope, reviewing the code and making changes.&lt;/p&gt;




&lt;h2&gt;
  
  
  Examples from my project
&lt;/h2&gt;

&lt;p&gt;Once I had this workflow in place, every feature followed the same lifecycle.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7gyyrwdgyeuamj2q0glh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7gyyrwdgyeuamj2q0glh.png" alt="a screenshot of a GitHub Issue showing the description, scope, and acceptance criteria" width="800" height="967"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Instead of jumping directly into implementation, Cursor first generated an issue describing the feature, the expected behaviour, and the boundaries of the work.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fy0brpnhrwu85bgvbwe7j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fy0brpnhrwu85bgvbwe7j.png" alt="an example feature branch. I chose to work through Pull Requests instead of committing directly to main" width="799" height="62"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;During implementation, I instructed Cursor to stop at logical milestones and recommend commit boundaries instead of producing one massive commit.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ff3z8ajee9ltbhyyyjasv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ff3z8ajee9ltbhyyyjasv.png" alt="small Conventional Commits" width="800" height="234"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Finally, before merging, Cursor generated a Pull Request summary, documented the architectural decisions, and produced a checklist that I could use during review.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzxjlzy46v1dtnamtk17a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzxjlzy46v1dtnamtk17a.png" alt="Pull Requests showing the description and reviewer checklist" width="800" height="967"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  What changed?
&lt;/h2&gt;

&lt;p&gt;Something unexpected happened.&lt;/p&gt;

&lt;p&gt;The better my engineering process became...&lt;/p&gt;

&lt;p&gt;...the better Cursor became.&lt;/p&gt;

&lt;p&gt;Not because the model improved.&lt;/p&gt;

&lt;p&gt;Because my instructions improved.&lt;/p&gt;

&lt;p&gt;I wasn't asking Cursor to write code anymore.&lt;/p&gt;

&lt;p&gt;I was teaching it how I wanted software to be built.&lt;/p&gt;

&lt;p&gt;That also changed the quality of the output.&lt;/p&gt;

&lt;p&gt;The implementation became easier to review because every change already had context.&lt;/p&gt;

&lt;p&gt;The commit history became much cleaner because features were naturally broken into smaller pieces.&lt;/p&gt;

&lt;p&gt;The Pull Requests became easier to understand because they explained not only &lt;em&gt;what&lt;/em&gt; changed, but &lt;em&gt;why&lt;/em&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  What AI isn't replacing
&lt;/h2&gt;

&lt;p&gt;One thing I want to be careful about is the narrative around AI replacing roles.&lt;/p&gt;

&lt;p&gt;This workflow isn't replacing Product Managers, QA Engineers, or Software Engineers.&lt;/p&gt;

&lt;p&gt;It's helping automate the repetitive parts of the engineering process.&lt;/p&gt;

&lt;p&gt;The AI can help draft issues, suggest implementation plans, generate Pull Request descriptions, and create reviewer checklists.&lt;/p&gt;

&lt;p&gt;But I still decide:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;what problem we're solving&lt;/li&gt;
&lt;li&gt;the priorities&lt;/li&gt;
&lt;li&gt;the scope&lt;/li&gt;
&lt;li&gt;the architecture&lt;/li&gt;
&lt;li&gt;the trade-offs&lt;/li&gt;
&lt;li&gt;whether the implementation is acceptable&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The judgement is still mine.&lt;/p&gt;

&lt;p&gt;The AI simply helps me execute the process more consistently.&lt;/p&gt;




&lt;h2&gt;
  
  
  What's next?
&lt;/h2&gt;

&lt;p&gt;This is still very much an experiment.&lt;/p&gt;

&lt;p&gt;I'm continuously refining the workflow as I build my SaaS, and I'm learning something new with almost every feature.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>cursor</category>
      <category>agents</category>
      <category>softwareengineering</category>
    </item>
    <item>
      <title>From Frontend to Backend: How I Transitioned Across the Stack in a Real Product Team</title>
      <dc:creator>Nina Ricci</dc:creator>
      <pubDate>Wed, 03 Jun 2026 06:14:04 +0000</pubDate>
      <link>https://dev.to/ninariccimarie/from-frontend-to-backend-how-i-transitioned-across-the-stack-in-a-real-product-team-3d8d</link>
      <guid>https://dev.to/ninariccimarie/from-frontend-to-backend-how-i-transitioned-across-the-stack-in-a-real-product-team-3d8d</guid>
      <description>&lt;h2&gt;
  
  
  From Frontend to Backend: How I Transitioned Across the Stack in a Real Product Team
&lt;/h2&gt;

&lt;p&gt; &lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmedia1.giphy.com%2Fmedia%2Fv1.Y2lkPTc5MGI3NjExOHhqcXE2czhyZzVxcGRxdGhpemN5MnF3ZjZ1YTFzY2gyb2l4OXA3dSZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw%2FmcsPU3SkKrYDdW3aAU%2Fgiphy.gif" class="article-body-image-wrapper"&gt;&lt;img width="250" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmedia1.giphy.com%2Fmedia%2Fv1.Y2lkPTc5MGI3NjExOHhqcXE2czhyZzVxcGRxdGhpemN5MnF3ZjZ1YTFzY2gyb2l4OXA3dSZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw%2FmcsPU3SkKrYDdW3aAU%2Fgiphy.gif" height="250"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;I’ve always been more interested in backend engineering since the beginning of my career.&lt;/p&gt;

&lt;p&gt;But for a long time, I didn’t really get the opportunity to work deeply on it.&lt;/p&gt;

&lt;p&gt;There were a few reasons for that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Frontend work was less “popular” in most teams, so I often got assigned there&lt;/li&gt;
&lt;li&gt;The backend systems in earlier teams were already stable, so there wasn’t much need for hands-on changes&lt;/li&gt;
&lt;li&gt;Team structure mattered. I was usually placed in frontend-focused squads&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So even though I was curious about backend systems, I naturally ended up building frontend-heavy experience first.&lt;/p&gt;

&lt;p&gt;That changed when I joined a product that was being built from the ground up.&lt;/p&gt;

&lt;h3&gt;
  
  
  🌱 Starting point: Building from scratch in a new product team
&lt;/h3&gt;

&lt;p&gt;In this new setup, I was the sole frontend engineer.&lt;/p&gt;

&lt;p&gt;We also had:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a sole backend engineer&lt;/li&gt;
&lt;li&gt;a sole data engineer&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It was a very lean team building an MVP from scratch.&lt;/p&gt;

&lt;p&gt;At this stage, I still focused mainly on frontend delivery but I was already paying attention to how the backend was being designed, because I wanted to understand the bigger picture, and how backend decisions would shape the frontend.&lt;/p&gt;

&lt;h3&gt;
  
  
  🚀 The turning point: After MVP, the backend needed more hands
&lt;/h3&gt;

&lt;p&gt;Once we shipped the MVP, the reality became clear:&lt;/p&gt;

&lt;p&gt;We needed more support on the backend side.&lt;/p&gt;

&lt;p&gt;At the same time, management explored whether someone could transition internally from other teams.&lt;/p&gt;

&lt;p&gt;That was the moment I saw an opportunity.&lt;/p&gt;

&lt;p&gt;Instead of waiting to be assigned, I proactively reached out to my manager and expressed:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;my interest in backend work&lt;/li&gt;
&lt;li&gt;my willingness to start small&lt;/li&gt;
&lt;li&gt;my intention to gradually transition across the stack&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I didn’t jump straight into backend ownership. Instead, I built &lt;strong&gt;trust through incremental steps&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;taking small backend tasks&lt;/li&gt;
&lt;li&gt;pairing with engineers when needed&lt;/li&gt;
&lt;li&gt;asking for knowledge-sharing sessions&lt;/li&gt;
&lt;li&gt;gradually expanding my scope beyond frontend&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That was the beginning of my real transition.&lt;/p&gt;

&lt;h3&gt;
  
  
  ⚡ Becoming intentional about cross-stack ownership
&lt;/h3&gt;

&lt;p&gt;What helped me grow wasn’t a sudden switch, it was being deliberate about the kinds of tasks I picked up.&lt;/p&gt;

&lt;p&gt;I actively sought exposure to different areas of the system, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;API design and implementation&lt;/li&gt;
&lt;li&gt;backend workers and async processing&lt;/li&gt;
&lt;li&gt;third-party integrations&lt;/li&gt;
&lt;li&gt;data-related tasks and debugging&lt;/li&gt;
&lt;li&gt;alerts and monitoring setups&lt;/li&gt;
&lt;li&gt;production issue investigations&lt;/li&gt;
&lt;li&gt;documentation and internal knowledge sharing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Over time, I stopped thinking in terms of “frontend tasks” or “backend tasks”.&lt;/p&gt;

&lt;p&gt;Instead, I started thinking:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“What does this feature need end-to-end to actually work in production?”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That shift changed how I approached engineering.&lt;/p&gt;

&lt;h3&gt;
  
  
  🛠 Expanding scope: From features to systems
&lt;/h3&gt;

&lt;p&gt;As I grew more comfortable, I started owning larger and more complex modules across the stack.&lt;/p&gt;

&lt;p&gt;I wasn’t just implementing parts anymore, I was responsible for making sure features worked end-to-end, from API design to frontend behavior to production readiness.&lt;/p&gt;

&lt;p&gt;At some point, I also began contributing to backend evolution work, working with event-driven systems and message queues like RabbitMQ, as well as making decisions around database design and how we process and consume raw data into our system.&lt;/p&gt;

&lt;p&gt;This phase pushed me to think beyond features and start understanding how systems behave under real production constraints.&lt;/p&gt;

&lt;h3&gt;
  
  
  ✨ What stood out most in my transition
&lt;/h3&gt;

&lt;p&gt;Looking back, I think the biggest change wasn’t technical, it was behavioral.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;I stopped waiting for backend opportunities

&lt;ul&gt;
&lt;li&gt;I actively created them by expressing interest and taking ownership.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;I treated scope expansion as a process, not a switch

&lt;ul&gt;
&lt;li&gt;Small tasks first → then gradual ownership → then full modules.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;I looked for problems across the system, not just my area

&lt;ul&gt;
&lt;li&gt;I started engaging with:

&lt;ul&gt;
&lt;li&gt;production issues&lt;/li&gt;
&lt;li&gt;monitoring gaps&lt;/li&gt;
&lt;li&gt;reliability concerns&lt;/li&gt;
&lt;li&gt;documentation improvements&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I also became more intentional about making my work easier for others to build on, whether through clearer documentation, better testing guides, or more predictable APIs.&lt;/p&gt;

&lt;h3&gt;
  
  
  🧠 Final thoughts
&lt;/h3&gt;

&lt;p&gt;My transition from frontend to backend wasn’t really a “career switch”.&lt;/p&gt;

&lt;p&gt;It was more of a gradual expansion of responsibility, driven by curiosity and intentional effort.&lt;/p&gt;

&lt;p&gt;If I had to summarize it:&lt;/p&gt;

&lt;p&gt;I didn’t become a backend engineer by switching roles.&lt;/p&gt;

&lt;p&gt;I became one by continuously asking for more ownership across the stack.&lt;/p&gt;

&lt;p&gt;And once you start doing that, the labels stop mattering as much as the problems you’re solving.&lt;/p&gt;

&lt;p&gt; &lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmedia1.giphy.com%2Fmedia%2Fv1.Y2lkPTc5MGI3NjExNmxpbW9nMnRjMW43ejFnZDU1aDNiNmF4dDJ4Z2ZvMTE4cTQ5ejh2dCZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw%2FTjSPQgowhhJdHgvnwA%2Fgiphy.gif" class="article-body-image-wrapper"&gt;&lt;img width="386" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmedia1.giphy.com%2Fmedia%2Fv1.Y2lkPTc5MGI3NjExNmxpbW9nMnRjMW43ejFnZDU1aDNiNmF4dDJ4Z2ZvMTE4cTQ5ejh2dCZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw%2FTjSPQgowhhJdHgvnwA%2Fgiphy.gif" height="480"&gt;&lt;/a&gt; &lt;/p&gt;

</description>
      <category>career</category>
      <category>productivity</category>
    </item>
    <item>
      <title>3 Communication Signals in Engineering Teams That Improve (or Hurt) Productivity</title>
      <dc:creator>Nina Ricci</dc:creator>
      <pubDate>Tue, 02 Jun 2026 09:24:40 +0000</pubDate>
      <link>https://dev.to/ninariccimarie/3-communication-signals-in-engineering-teams-that-improve-or-hurt-productivity-2h8h</link>
      <guid>https://dev.to/ninariccimarie/3-communication-signals-in-engineering-teams-that-improve-or-hurt-productivity-2h8h</guid>
      <description>&lt;h2&gt;
  
  
  3 Communication Signals in Engineering Teams That Improve (or Hurt) Productivity
&lt;/h2&gt;

&lt;p&gt;In engineering teams, progress isn’t always as clear as it looks.&lt;br&gt;
What seems “on track” can quietly hide delays, misalignment, or unclear expectations.&lt;/p&gt;

&lt;p&gt;And the challenge is—you often won’t notice these signals unless you know what to look for.&lt;/p&gt;

&lt;p&gt;As an engineer, I’ve seen how easily these situations can be misunderstood, especially from the outside. This post is a way to surface a few common patterns and how to respond to them in a way that improves communication and team alignment, rather than creating tension.&lt;/p&gt;




&lt;h3&gt;
  
  
  1. Underestimating and Overpromising
&lt;/h3&gt;

&lt;p&gt;You might hear something like:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Yeah, this should be quick. Probably just a day or two.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;…and then it ends up taking much longer.&lt;/p&gt;

&lt;p&gt;This usually isn’t intentional. It often comes from:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Underestimating hidden complexity&lt;/li&gt;
&lt;li&gt;Pressure to give a fast answer&lt;/li&gt;
&lt;li&gt;Not fully seeing edge cases or integration work upfront&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;💡Instead of calling it out directly—especially in a team setting where it can create tension or make someone defensive—try asking:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;“What could potentially slow this down?”&lt;/li&gt;
&lt;li&gt;“Are there any risks or unknowns we should consider?”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This keeps the conversation open and helps the team build a shared understanding of what “done” actually involves, without putting anyone on the spot.&lt;/p&gt;




&lt;h3&gt;
  
  
  2. New Bugs After Every Release
&lt;/h3&gt;

&lt;p&gt;Every release having bugs is normal. No system is perfect.&lt;/p&gt;

&lt;p&gt;But if &lt;em&gt;every&lt;/em&gt; release consistently introduces noticeable issues, it might signal:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Rushed or incomplete testing&lt;/li&gt;
&lt;li&gt;Gaps in QA or review processes&lt;/li&gt;
&lt;li&gt;Pressure to ship quickly over shipping safely&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;💡Instead of pointing it out in a way that feels like criticism, try opening the conversation:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;“How confident are we with this release?”&lt;/li&gt;
&lt;li&gt;“What parts of the system feel risky right now?”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Framing it this way helps the team reflect together on process improvements, rather than focusing on individual mistakes.&lt;/p&gt;

&lt;p&gt;Over time, this can lead to more stable releases and better engineering practices.&lt;/p&gt;




&lt;h3&gt;
  
  
  3. “I’m Almost Done”
&lt;/h3&gt;

&lt;p&gt;This one shows up everywhere 😅&lt;/p&gt;

&lt;p&gt;You’ll hear:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“I’m almost done.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;But “almost done” can sometimes stretch much longer than expected.&lt;/p&gt;

&lt;p&gt;This often happens because:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The remaining work is more complex than expected&lt;/li&gt;
&lt;li&gt;The final details weren’t fully accounted for&lt;/li&gt;
&lt;li&gt;“Done” isn’t clearly defined yet&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;💡Instead of calling it out directly—especially in a way that might create pressure or tension in a team setting—try asking:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;“What’s left before this is fully complete?”&lt;/li&gt;
&lt;li&gt;“Is anything blocking you from finishing this up?”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This helps clarify what’s actually remaining and reduces misunderstandings around progress.&lt;/p&gt;




&lt;h3&gt;
  
  
  Final Thoughts
&lt;/h3&gt;

&lt;p&gt;The goal isn’t to catch people doing something wrong—it’s to improve how the team communicates so issues surface earlier and everyone can work more smoothly together. These are also worth revisiting in &lt;em&gt;tech team retrospectives&lt;/em&gt; so improvements happen on both sides.&lt;/p&gt;

&lt;p&gt;I’m curious—if you’ve worked in a team before, which of these have you seen the most? And what’s one thing you think makes communication in teams work really well?&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>team</category>
      <category>development</category>
    </item>
    <item>
      <title>How to Trigger React Error Boundary with React Developer Tools</title>
      <dc:creator>Nina Ricci</dc:creator>
      <pubDate>Sun, 17 Jul 2022 11:46:16 +0000</pubDate>
      <link>https://dev.to/ninariccimarie/how-to-trigger-react-error-boundary-with-react-developer-tools-1ccg</link>
      <guid>https://dev.to/ninariccimarie/how-to-trigger-react-error-boundary-with-react-developer-tools-1ccg</guid>
      <description>&lt;h2&gt;
  
  
  What is a React Error Boundary?
&lt;/h2&gt;

&lt;p&gt;According to react.js documentation, Error boundaries are React components that catch JavaScript errors anywhere in their child component tree, log those errors, and display a fallback UI instead of the component tree that crashed. Error boundaries catch errors during rendering, in lifecycle methods, and in constructors of the whole tree below them. (&lt;a href="https://reactjs.org/docs/error-boundaries.html" rel="noopener noreferrer"&gt;Read more&lt;/a&gt;)&lt;/p&gt;

&lt;h2&gt;
  
  
  Use case
&lt;/h2&gt;

&lt;p&gt;We want to test how our application handles error states. Using the React Developer Tools, we won't be needing to manually force an error state in our code for each component we want to test. Instead, we can just select a component from the tool and force it to be in an error state.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;React Developer Tools chrome extension

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://chrome.google.com/webstore/detail/react-developer-tools" rel="noopener noreferrer"&gt;installation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;A working React App with React Error Boundary&lt;/li&gt;

&lt;/ul&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Start your React Application and open it on your Google Chrome web browser. (make sure you already have React Developer Tools chrome extension installed)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Open your Chrome Developer Tools and navigate to &lt;strong&gt;Components&lt;/strong&gt; tab.&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;shift + CTRL + J (Windows/Linux).
option + ⌘ + J (macOS)
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Select a component within the Error Boundary in the tree.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Notice the (!) icon. Hovering it should show a help dialog &lt;strong&gt;"Force the selected component into an errored state"&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3rwp4j5skdcb0l4a4n3z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3rwp4j5skdcb0l4a4n3z.png" alt="Chrome Developer Tools with an open Components tab" width="800" height="156"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Click on the (!) icon&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;This will force your app to be in an errored state
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk3w269zkl88e4etcf52i.png" alt="React App in Error state" width="800" height="210"&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>guide</category>
      <category>react</category>
      <category>tips</category>
    </item>
    <item>
      <title>Git Conflicts; Fixing it with Git Rebase</title>
      <dc:creator>Nina Ricci</dc:creator>
      <pubDate>Mon, 07 Feb 2022 09:43:48 +0000</pubDate>
      <link>https://dev.to/ninariccimarie/git-conflicts-fixing-it-with-git-rebase-482n</link>
      <guid>https://dev.to/ninariccimarie/git-conflicts-fixing-it-with-git-rebase-482n</guid>
      <description>&lt;p&gt;Getting past the basic git clone, commit, add, pull and push, I have learned a few good to know git commands over the years because of repeatedly common problems I've faced when doing version control. I'm planning to create a series for this topic in hopes that this can also help you.&lt;/p&gt;

&lt;p&gt;Here's a very short story of how a Git conflict can happen and how to fix it with Git rebase.&lt;/p&gt;

&lt;h2&gt;
  
  
  Git Conflicts
&lt;/h2&gt;

&lt;p&gt;Usually, these problems are faced when the team gets bigger and a lot more devs are contributing to the same project on the same file.&lt;/p&gt;

&lt;h3&gt;
  
  
  2 devs working on the same file.
&lt;/h3&gt;

&lt;p&gt;This is very common and it's okay, so don't worry! What I usually do is to plan ahead with the other dev so we know both of us are working on this specific same file. To minimize merge conflicts and efficiently fix them, we want to always rebase from develop whenever there are any changes so we always have an updated version of the base branch.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;DAY 1 🌞&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3zec5ys9xgujbw8tv72r.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3zec5ys9xgujbw8tv72r.png" alt="Dev 1 and 2 creates feature branches" width="291" height="254"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  dev 1 creates and works on &lt;strong&gt;feature A&lt;/strong&gt;
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git checkout develop
git branch &lt;span class="nt"&gt;-b&lt;/span&gt; feature/feature-a
&lt;span class="c"&gt;# work on file A&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  dev 2 creates and works on &lt;strong&gt;feature B&lt;/strong&gt;
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git checkout develop
git branch &lt;span class="nt"&gt;-b&lt;/span&gt; feature/feature-b
&lt;span class="c"&gt;# work on file A&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn5lq3dcbrs9lfqlhshy8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn5lq3dcbrs9lfqlhshy8.png" alt="Feature B is merged to develop branch and Dev 1 commits all their changes" width="345" height="255"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;in between the day, dev 2 who was working on feature B asks for a code review and merges their branch to develop. dev 1 who is working on feature A git add and commits all their changes for the day.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;DAY 2 🌞&lt;/strong&gt;&lt;br&gt;
since, dev 2's branch (feature B) was merged to develop and we know that both devs had worked on the same file, dev 1 (feature A) will now rebase from develop branch to have an updated copy on their current feature branch and fix the conflicts.&lt;/p&gt;
&lt;h4&gt;
  
  
  dev 1, feature A rebases from develop and fixes conflicts
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# don't forget to git add and commit your changes first&lt;/span&gt;
git checkout develop
git pull origin develop
git checkout feature/feature-a
git rebase develop
&lt;span class="c"&gt;# by this time, git will write your commits on top of develop &lt;/span&gt;
&lt;span class="c"&gt;# and you will be seeing the conflicted files&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;go to the conflicted file and if needed, consult with dev 2 and make sure you save the file where both changes are written.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# resolve conflicted file/s&lt;/span&gt;
git add path/to/file
git rebase &lt;span class="nt"&gt;--continue&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;git rebase interactive should be done after you finish fixing the conflicted file and you are good to go. 👍&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr9khlmol10iak9lta4bb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr9khlmol10iak9lta4bb.png" alt="Feature A rebases on top of develop" width="494" height="256"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Notice that Feature A now is on top of both develop and Feature B that was merged the day before.&lt;/p&gt;

&lt;p&gt;Thank you for reading all the way here! I hope you've learned something new and that this can help you on your productivity and collaboration with your team 🤝 &lt;/p&gt;

</description>
      <category>git</category>
      <category>productivity</category>
      <category>tips</category>
    </item>
    <item>
      <title>How honesty can improve team productivity</title>
      <dc:creator>Nina Ricci</dc:creator>
      <pubDate>Thu, 07 May 2020 13:46:28 +0000</pubDate>
      <link>https://dev.to/ninariccimarie/how-honesty-can-improve-team-productivity-2llh</link>
      <guid>https://dev.to/ninariccimarie/how-honesty-can-improve-team-productivity-2llh</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimages.unsplash.com%2Fphoto-1519389950473-47ba0277781c%3Fixlib%3Drb-1.2.1%26ixid%3DeyJhcHBfaWQiOjEyMDd9%26auto%3Dformat%26fit%3Dcrop%26w%3D2850%26q%3D80" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimages.unsplash.com%2Fphoto-1519389950473-47ba0277781c%3Fixlib%3Drb-1.2.1%26ixid%3DeyJhcHBfaWQiOjEyMDd9%26auto%3Dformat%26fit%3Dcrop%26w%3D2850%26q%3D80" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;How can being honest actually improve your team's productivity? Let me share with you a few scenarios where you may find yourself in and what you can do and why you should do it.&lt;/p&gt;

&lt;h2&gt;
  
  
  When you are stuck with your code for more than the usual time it will take to fix something.
&lt;/h2&gt;

&lt;p&gt;Be honest and tell your team you're stuck but make sure you've done your part in trying to fix it. With this, you're likely to progress faster if someone helps you. In fact, it's possible that someone from your team has already encountered it and the time you'll invest for like 1-2 hours could be lessened to a single question. &lt;/p&gt;

&lt;h2&gt;
  
  
  When something broke and you know it was you who broke it
&lt;/h2&gt;

&lt;p&gt;Be honest and volunteer to fix it. You'll probably take lesser time to fix it rather than someone who has little idea of the cause.&lt;/p&gt;

&lt;h2&gt;
  
  
  When you don't know the answer to a question
&lt;/h2&gt;

&lt;p&gt;Be honest and tell the person you don't know but try to find the answer after. It's better to tell upfront that you don't know rather than assume something and cause a misunderstanding.&lt;/p&gt;

&lt;h2&gt;
  
  
  If no one has been honest yet, be the first one
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimages.unsplash.com%2Fphoto-1584907797015-7554cd315667%3Fixlib%3Drb-1.2.1%26ixid%3DeyJhcHBfaWQiOjEyMDd9%26auto%3Dformat%26fit%3Dcrop%26w%3D1655%26q%3D80" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimages.unsplash.com%2Fphoto-1584907797015-7554cd315667%3Fixlib%3Drb-1.2.1%26ixid%3DeyJhcHBfaWQiOjEyMDd9%26auto%3Dformat%26fit%3Dcrop%26w%3D1655%26q%3D80" width="1655" height="1096"&gt;&lt;/a&gt;&lt;br&gt;
Other members can feel comfortable being honest themselves if someone within the team continuously do so. Everyone would feel that they can trust each other. The feeling of not being discriminated of not knowing or of making mistakes can improve the team's communication. Anyone could learn a thing or two just by someone saying "I don't know" or "I'm stuck. Can someone help me?". And without you knowing it, honesty has become one of your team culture.&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>team</category>
      <category>learning</category>
      <category>tips</category>
    </item>
  </channel>
</rss>
