<?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>Forem: Cesar Garza</title>
    <description>The latest articles on Forem by Cesar Garza (@cgarza).</description>
    <link>https://forem.com/cgarza</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%2F3541907%2F293b08f7-70c7-4593-ae68-a47267a470f6.png</url>
      <title>Forem: Cesar Garza</title>
      <link>https://forem.com/cgarza</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/cgarza"/>
    <language>en</language>
    <item>
      <title>Diagrams as Code Just Make Sense</title>
      <dc:creator>Cesar Garza</dc:creator>
      <pubDate>Tue, 25 Nov 2025 16:10:51 +0000</pubDate>
      <link>https://forem.com/cgarza/diagrams-as-code-just-make-sense-50on</link>
      <guid>https://forem.com/cgarza/diagrams-as-code-just-make-sense-50on</guid>
      <description>&lt;p&gt;When I was in college, one of my software engineering class obsessed over UML diagrams. Creating them was painful, especially with the clunky tools available in the late 00s, and it felt like an exercise in frustration more than anything useful.&lt;/p&gt;

&lt;p&gt;So when I entered the real world and discovered that most teams &lt;em&gt;didn’t&lt;/em&gt; make diagrams regularly, I was honestly relieved. But over the years, I realized something: diagrams &lt;em&gt;are&lt;/em&gt; incredibly valuable, we just never had tools that made them worth the effort.&lt;/p&gt;

&lt;p&gt;My last team relied on diagrams for planning, communicating with non-technical stakeholders, and even thinking through refactors. But the visual tools we used were still slow, fiddly, and frustrating. (Looking at you, arrows that refuse to anchor to properly.)&lt;/p&gt;

&lt;p&gt;Then someone introduced the team to &lt;a href="https://www.mermaidchart.com/" rel="noopener noreferrer"&gt;Mermaid&lt;/a&gt;,, and everything changed.&lt;/p&gt;

&lt;p&gt;This post gives a quick rundown of what Mermaid is, how we used it, and why you should consider adding it to your engineering toolkit. (Not sponsored — just a fan.)&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Diagrams Actually Matter
&lt;/h2&gt;

&lt;p&gt;Even if many teams skip diagramming, the benefits are huge:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Discover architectural gaps early.&lt;/li&gt;
&lt;li&gt;Visual representation of the system helps technical and non-technical teammates understand intention.&lt;/li&gt;
&lt;li&gt;Easily surfaces dependencies.&lt;/li&gt;
&lt;li&gt;Creates referenceable documentation, decreasing the reliance on tribal knowledge&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The real issue isn’t that diagrams aren’t useful, it’s that diagramming has historically been slow and miserable. And in my opinion, Mermaid fixes that&lt;/p&gt;

&lt;h2&gt;
  
  
  Introduction to Mermaid
&lt;/h2&gt;

&lt;p&gt;Per Mermaid:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Mermaid lets you create diagrams and visualizations using text and code.&lt;/strong&gt;&lt;br&gt;
It is a JavaScript based diagramming and charting tool that renders Markdown-inspired text definitions to create and modify diagrams dynamically.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Sure, they offer a traditional visual editor (and even an AI diagramming tool now), but the real power is in the &lt;strong&gt;“diagrams-as-code”&lt;/strong&gt; approach.&lt;/p&gt;

&lt;p&gt;A simple class diagram looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="o"&gt;---&lt;/span&gt;
&lt;span class="nx"&gt;title&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Animal example&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
&lt;span class="o"&gt;---&lt;/span&gt;
&lt;span class="nx"&gt;classDiagram&lt;/span&gt;
    &lt;span class="nx"&gt;note&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;From Duck till Zebra&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
    &lt;span class="nx"&gt;Animal&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;|--&lt;/span&gt; &lt;span class="nx"&gt;Duck&lt;/span&gt;
    &lt;span class="nx"&gt;note&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="nx"&gt;Duck&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;can fly&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;can swim&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;can dive&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;can help in debugging&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
    &lt;span class="nx"&gt;Animal&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;|--&lt;/span&gt; &lt;span class="nx"&gt;Fish&lt;/span&gt;
    &lt;span class="nx"&gt;Animal&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;|--&lt;/span&gt; &lt;span class="nx"&gt;Zebra&lt;/span&gt;
    &lt;span class="nx"&gt;Animal&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="nx"&gt;int&lt;/span&gt; &lt;span class="nx"&gt;age&lt;/span&gt;
    &lt;span class="nx"&gt;Animal&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="nb"&gt;String&lt;/span&gt; &lt;span class="nx"&gt;gender&lt;/span&gt;
    &lt;span class="nx"&gt;Animal&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="nf"&gt;isMammal&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="nx"&gt;Animal&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="nf"&gt;mate&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Duck&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="nb"&gt;String&lt;/span&gt; &lt;span class="nx"&gt;beakColor&lt;/span&gt;
        &lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="nf"&gt;swim&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
        &lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="nf"&gt;quack&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Fish&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;int&lt;/span&gt; &lt;span class="nx"&gt;sizeInFeet&lt;/span&gt;
        &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nf"&gt;canEat&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Zebra&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="nx"&gt;bool&lt;/span&gt; &lt;span class="nx"&gt;is_wild&lt;/span&gt;
        &lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="nf"&gt;run&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and becomes:&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%2Fbg3rfkv0xm3t6tdd8va9.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%2Fbg3rfkv0xm3t6tdd8va9.png" alt="what the class diagram generated by the code above visually looks like" width="800" height="321"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The syntax is easy to pick up, expressive enough for complex diagrams, and supported by many tools developers already use like GitHub and Notion.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where Mermaid Shined for My Team
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Technical Planning &amp;amp; Architectural Thinking
&lt;/h3&gt;

&lt;p&gt;One of our junior engineers kept rushing into implementation, which led to rework during code reviews. When we gave them a feature track to lead as part of their career development efforts, we also asked them to write a tech spec, including class diagrams and sequence diagrams, ahead of the rest of the team coming onto the track.&lt;/p&gt;

&lt;p&gt;They used Mermaid for everything.&lt;/p&gt;

&lt;p&gt;The result?&lt;br&gt;&lt;br&gt;
A living, frequently referenced document that evolved along with the project. It clarified dependencies, surfaced edge cases, and gave the whole team shared context.&lt;/p&gt;

&lt;p&gt;Mermaid made that possible because diagrams were &lt;strong&gt;fast&lt;/strong&gt; to write and &lt;strong&gt;easy&lt;/strong&gt; to update.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Living Documentation (Instead of Stale Images)
&lt;/h3&gt;

&lt;p&gt;Traditional diagrams rot quickly.&lt;/p&gt;

&lt;p&gt;With Mermaid, the “source of truth” isn’t a PNG — it’s the code that generates the diagram. Easy to update, diffable, and version-controlled.&lt;/p&gt;

&lt;p&gt;We started keeping diagrams within the rest of our Notion documents and RFC PRs. They were updated as the system evolved. For once, diagrams didn’t feel like artifacts from a previous era, they felt alive and you knew how to modify them.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Clear Communication With Non-Technical Stakeholders
&lt;/h3&gt;

&lt;p&gt;I was once asked to create diagrams explaining:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Where data lived&lt;/li&gt;
&lt;li&gt;What systems existed around the monolith and the microservice&lt;/li&gt;
&lt;li&gt;The flow of operations end-to-end&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;With Mermaid, I quickly built:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;An architecture diagram&lt;/li&gt;
&lt;li&gt;A mind map&lt;/li&gt;
&lt;li&gt;A sequence diagram&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These weren’t one-off illustrations, they evolved as discussions progressed. We even used them when onboarding a new PM to show pain points introduced by the microservice.&lt;/p&gt;

&lt;p&gt;The feedback was overwhelmingly positive. Mermaid diagrams made complex systems legible.&lt;/p&gt;

&lt;h2&gt;
  
  
  Closing Thoughts
&lt;/h2&gt;

&lt;p&gt;Mermaid removed all the friction that used to make diagramming feel like a chore. Suddenly diagrams were fast to create, easy to maintain, and actually &lt;em&gt;fun&lt;/em&gt;. Our team saw a noticeable adoption spike once engineers realized how powerful and lightweight the tool was.&lt;/p&gt;

&lt;p&gt;Developers often rush to implementation or skip documentation because visual tools slow them down. Mermaid flips that dynamic — it makes diagramming feel like writing code: quick, iterative, versionable.&lt;/p&gt;

&lt;p&gt;If you’ve avoided diagrams because the tooling was awful… give Mermaid a try. It might change the way you design systems.&lt;/p&gt;

&lt;p&gt;Are you already a Mermaid user? Thinking of trying it out? I’d love to hear your experience.&lt;/p&gt;

&lt;p&gt;If you want to read more from me, check out my &lt;strong&gt;Being A Great Developer Is More Than Just Code Output&lt;/strong&gt; series:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://dev.to/cgarza/being-a-great-developer-is-more-than-just-code-output-code-reviews-1cda"&gt;Code Reviews&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/cgarza/being-a-great-developer-is-more-than-just-code-output-collaboration-non-devs-roles-in-your-team-18ek"&gt;Collaboration — Non-Devs roles in your team matter as much&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/cgarza/being-a-great-developer-is-more-than-just-code-output-mentorship-3fd"&gt;Mentorship&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>tooling</category>
      <category>architecture</category>
      <category>documentation</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Being A Great Developer Is More Than Just Code Output - Mentorship</title>
      <dc:creator>Cesar Garza</dc:creator>
      <pubDate>Tue, 28 Oct 2025 17:03:53 +0000</pubDate>
      <link>https://forem.com/cgarza/being-a-great-developer-is-more-than-just-code-output-mentorship-3fd</link>
      <guid>https://forem.com/cgarza/being-a-great-developer-is-more-than-just-code-output-mentorship-3fd</guid>
      <description>&lt;p&gt;When I chose Computer Science as my degree, I had three reasons — and it turns out I was wrong about two of them.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;I thought it would lead me to game development.
&lt;/li&gt;
&lt;li&gt;All the alternative job options sounded like something I’d enjoy doing.
&lt;/li&gt;
&lt;li&gt;Most importantly, I believed I wouldn’t have to deal with people much.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I’m definitely not a game developer, but I was very wrong about that last one. What takes you beyond &lt;em&gt;senior developer&lt;/em&gt; isn’t your code output, it’s your social skills and your ability to help others grow.&lt;/p&gt;

&lt;p&gt;This post is the third entry in my series &lt;em&gt;Being a Great Developer Is More Than Just Code Output&lt;/em&gt;. You can find the previous posts here:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://dev.to/cgarza/being-a-great-developer-is-more-than-just-code-output-code-reviews-1cda"&gt;Code Reviews&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/cgarza/being-a-great-developer-is-more-than-just-code-output-collaboration-non-devs-roles-in-your-team-18ek"&gt;Collaboration&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Finding Passion for Mentorship&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;I’ve been developing software for about 15 years now, across different teams, companies, and setups. But my first job opportunity — as an intern — marked me the most.&lt;/p&gt;

&lt;p&gt;It was a small, 10-person team. Everyone was a few years older than me, yet they were kind, patient, and genuinely eager to teach. I looked up to one engineer in particular — a natural mentor who helped me find my footing. His generosity with his time and knowledge had a huge impact on me, and that experience has stayed with me ever since.&lt;/p&gt;

&lt;p&gt;Most of my career has been at smaller teams, which meant there was little to no room for junior engineers, and career development wasn’t a top priority. I left many of these jobs because I felt like I had learned everything I could and started to feel stagnant.&lt;/p&gt;

&lt;p&gt;At my last company, that opportunity finally became formalized. The team had a mix of early-career developers, many just out of college or bootcamps, alongside senior engineers. That setup immediately caught my attention — it was a space where mentorship could happen.&lt;/p&gt;

&lt;p&gt;By joining the Career Development Committee, I helped refine the engineering growth framework to clarify what was expected at each level and what was needed for promotion. That led me to later co-lead the coaching program, which put me — and other senior engineers — in a position to help our junior peers level up. It was incredibly fulfilling, not just for the impact it had, but for how it rekindled something I’d been missing: a passion for mentorship and the desire to pay it forward.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Why Mentorship Matters&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;So why should senior developers care about mentoring? Why should you make space for it, formal or not, when it doesn’t directly ship features or move metrics?&lt;/p&gt;

&lt;p&gt;Mentorship strengthens your team’s culture, fosters collaboration, builds trust, and scales knowledge. The time you invest in helping others grow comes back through faster PR cycles, tighter feedback loops, and higher-quality output. It turns a collection of individuals into a cohesive, resilient team.&lt;/p&gt;

&lt;p&gt;For you personally, mentorship is how you grow from being a &lt;em&gt;great coder&lt;/em&gt; to being a &lt;em&gt;great developer&lt;/em&gt;. It teaches you to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Break down complex ideas clearly.
&lt;/li&gt;
&lt;li&gt;Develop empathy and patience.
&lt;/li&gt;
&lt;li&gt;Recognize potential in others.
&lt;/li&gt;
&lt;li&gt;Give effective, constructive feedback.
&lt;/li&gt;
&lt;li&gt;Flex your leadership muscles — with or without the title.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A team where everyone — regardless of seniority — is constantly learning naturally stays longer. I’ve seen retention stretch from the usual 2–3 years to 5+ when mentorship is part of the culture.&lt;/p&gt;

&lt;p&gt;Although it can happen, where the best technical engineers get promoted to leadership positions — either on the management or technical track — in my opinion, the ones that should be in those positions are those who lift others up.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Mentorship in the Age of AI&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Now, let’s talk about the elephant in the room: AI.&lt;/p&gt;

&lt;p&gt;We’re in an era where many teams are cutting junior roles in favor of AI tools. I’ve heard comments like, &lt;em&gt;“This AI can do what a junior dev would take three times as long to do.”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Sure. But the AI agent doesn’t learn between sessions. It doesn’t gain context. It doesn’t mentor others.&lt;/p&gt;

&lt;p&gt;If you stop hiring and growing junior engineers, you’re jeopardizing your team’s future. You lose the next generation of talent, institutional knowledge, and diverse perspective.&lt;/p&gt;

&lt;p&gt;That’s why, as senior developers, we should advocate for mentorship and early-career hiring. Even if it takes time and effort, it’s a net positive for everyone  and for the industry.&lt;/p&gt;

&lt;p&gt;Here’s why it matters:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Continuity:&lt;/strong&gt; Seniors move on. Juniors carry forward the team’s context.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Resilience:&lt;/strong&gt; AI still needs human judgment. You need devs who can use it wisely.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sustainability:&lt;/strong&gt; Mentorship builds a healthy, diverse, long-term talent pipeline.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Mentorship isn’t just “nice to have.” It’s an act of stewardship — for your craft, your team, and your industry.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Mentorship vs. Coaching&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;In my last role, the company leaned more heavily on coaching than mentorship. The two overlap, but they serve different purposes.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Coaching&lt;/strong&gt; is focused and time-bound — goal-oriented, structured, and measurable.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mentorship&lt;/strong&gt; is broader and relational — rooted in trust, curiosity, and growth.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Personally, I always leaned toward mentorship. My goal wasn’t just to help someone fix a bug or hit a short-term milestone — it was to help them &lt;em&gt;develop their voice&lt;/em&gt; as an engineer.&lt;/p&gt;

&lt;p&gt;The most meaningful part of mentoring was the relationships that lasted beyond the formal engagement: the check-ins, the technical chats, the career talks. The feeling that someone could always reach out for guidance or advice.&lt;/p&gt;

&lt;p&gt;That’s the kind of connection that shaped my own career and it’s the kind of mentor I strive to be.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Closing Thoughts&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Mentorship is how we turn knowledge into legacy.&lt;/p&gt;

&lt;p&gt;Being a great developer isn’t just about solving hard problems — it’s about helping others solve them, too. It’s about sharing your context, your empathy, and your experience so the next generation doesn’t have to start from zero.&lt;/p&gt;

&lt;p&gt;If you’re a senior developer, mentor someone. If you’re in a position to influence hiring, advocate for junior engineers. And if your company doesn’t have a mentorship program — start one.&lt;/p&gt;

&lt;p&gt;Because what takes you beyond senior isn’t your code — it’s your &lt;strong&gt;impact on people&lt;/strong&gt;.&lt;/p&gt;

</description>
      <category>mentorship</category>
      <category>software</category>
      <category>leadership</category>
      <category>ai</category>
    </item>
    <item>
      <title>Being A Great Developer Is More Than Just Code Output - Collaboration — Non-Devs roles in your team matter as much</title>
      <dc:creator>Cesar Garza</dc:creator>
      <pubDate>Wed, 15 Oct 2025 16:26:12 +0000</pubDate>
      <link>https://forem.com/cgarza/being-a-great-developer-is-more-than-just-code-output-collaboration-non-devs-roles-in-your-team-18ek</link>
      <guid>https://forem.com/cgarza/being-a-great-developer-is-more-than-just-code-output-collaboration-non-devs-roles-in-your-team-18ek</guid>
      <description>&lt;p&gt;Developers are known to have an ego, be rude, anti-social, or lack people skills. They often think themselves smart because they can code. Personally, I’ve always believed that &lt;em&gt;anyone&lt;/em&gt; can code; being a &lt;em&gt;good&lt;/em&gt; developer is more about knowing how to use a search engine and ask the right questions.&lt;/p&gt;

&lt;p&gt;This might be changing a bit in the age of AI-assisted coding, but the point remains: developers aren’t smart &lt;em&gt;just because&lt;/em&gt; they know how to code. The sooner a dev acknowledges that non-technical teammates are also intelligent and deserving of respect, the further they’ll go in their career.&lt;/p&gt;

&lt;p&gt;The focus of this post is on the non-technical roles developers interact with most often — QA, Product Managers, and Designers.&lt;/p&gt;

&lt;p&gt;This is the second post in my series &lt;em&gt;Being A Great Developer Is More Than Just Code Output&lt;/em&gt;. You can find the first post about Code Reviews &lt;a href="https://dev.to/cgarza/being-a-great-developer-is-more-than-just-code-output-code-reviews-1cda"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Let Go Of Your Ego&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Part of the job of QAs, PMs, and Designers is to review your work: checking for bugs, verifying requirements, and ensuring that designs match expectations. Just like with &lt;a href="https://dev.to/cgarza/being-a-great-developer-is-more-than-just-code-output-code-reviews-1cda"&gt;receiving code reviews&lt;/a&gt;, &lt;em&gt;you are not your code&lt;/em&gt;. You’re human. You’ll make mistakes, overlook details, and that’s okay.&lt;/p&gt;

&lt;p&gt;Making mistakes doesn’t make you a bad developer. These roles exist to &lt;em&gt;support&lt;/em&gt; you so that issues don’t reach production and affect customers. It’s not &lt;em&gt;you vs. them&lt;/em&gt;, you’re on the same team, working toward the same goal.&lt;/p&gt;

&lt;p&gt;I’ve often seen this ego-driven defensiveness, especially from junior developers (my younger self included). It’s a natural reaction to feel protective of your work when it’s being “criticized.” But reframing that feedback as collaboration — not confrontation — changes everything.&lt;/p&gt;

&lt;p&gt;QA is your friend. They’re probably overworked and underpaid. Be kind.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Give Respect To Earn Respect&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;I’m a firm believer that no one is owed respect for their title or position; respect is earned through how you treat others. As a developer, you &lt;strong&gt;have&lt;/strong&gt; to show up and give respect to non-coding teammates.&lt;/p&gt;

&lt;p&gt;I’ve been in many rooms, both virtual and in-person, where people dismiss the work of QA, PMs, or Designers. That kind of attitude poisons collaboration. Each person brings expertise in their field just like you do in yours. Ego is the enemy of effective communication.&lt;/p&gt;

&lt;p&gt;Once you let go of your ego, it becomes much easier to recognize and respect the knowledge others bring to the table.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Bring Everyone Along&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;In my previous &lt;a href="https://dev.to/cgarza/being-a-great-developer-is-more-than-just-code-output-code-reviews-1cda"&gt;post&lt;/a&gt;, I talked about how giving code reviews kindly and thoughtfully can help others learn and “pay dividends” over time. The same idea applies here.&lt;/p&gt;

&lt;p&gt;Building a strong relationship with non-technical teammates by communicating openly, explaining clearly, and listening respectfully, benefits everyone in the long run.&lt;/p&gt;

&lt;p&gt;Let’s focus on relationships with Product Managers as an example.&lt;/p&gt;

&lt;p&gt;Throughout my career, I’ve seen two extremes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The dismissive dev&lt;/strong&gt;, who’s short and overly technical, uses jargon to avoid explaining things. This creates distrust, leads to overpromising, bad requirements, and a lot of wasted time.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The over-explainer&lt;/strong&gt;, often a senior developer, who dives too deep into implementation details and loses the PM’s engagement. Even with good intentions, it can overwhelm the conversation or slow decision-making.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The sweet spot is finding the &lt;em&gt;right level&lt;/em&gt; of technical depth. Explain enough so they understand the trade-offs and constraints, but skip unnecessary intricacies.&lt;/p&gt;

&lt;p&gt;For example, our team once walked a PM through how a new microservice integrated with our monolith, we avoided buzzwords like “JWT tokens” and instead focused on how data flowed between systems. That session gave the PM enough context to write better stories, plan more accurate timelines, and help the team divide work efficiently.&lt;/p&gt;

&lt;p&gt;As a developer, keeping a mindset of &lt;em&gt;teaching and including others&lt;/em&gt;, no matter their background, builds trust, understanding, and efficiency over time.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Be A Leader, Regardless of Seniority&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;You don’t need a formal title to act like a leader. Leadership starts with how you treat people and how you help them grow.&lt;/p&gt;

&lt;p&gt;Treating others with respect, bringing them along, and letting go of your ego are all key leadership traits. Another piece of that puzzle is fostering unity within the team — companionship instead of division.&lt;/p&gt;

&lt;p&gt;Put these principles into practice, and you’ll naturally become someone others look to for guidance.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Closing Thoughts&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;A great engineer doesn’t shine by writing flawless code, but by how they collaborate with others, especially with non-technical teammates.&lt;/p&gt;

&lt;p&gt;A healthy, respectful team dynamic not only leads to better results, it makes the day-to-day far more enjoyable. As developers, it’s on us to help foster that kind of environment, one where everyone feels heard, valued, and supported.&lt;/p&gt;

&lt;p&gt;If this post resonated with you, or made you reflect on your own team dynamics, I’d love to hear your thoughts. How do &lt;em&gt;you&lt;/em&gt; approach collaboration with non-dev roles? What’s worked (or not) for your team?&lt;/p&gt;

&lt;p&gt;Next up in the series: &lt;strong&gt;“Being a great developer is more than just code output — Mentorship.”&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>leadership</category>
      <category>career</category>
      <category>softwareengineering</category>
      <category>engineeringculture</category>
    </item>
    <item>
      <title>Being A Great Developer Is More Than Just Code Output - Code Reviews</title>
      <dc:creator>Cesar Garza</dc:creator>
      <pubDate>Tue, 07 Oct 2025 16:04:27 +0000</pubDate>
      <link>https://forem.com/cgarza/being-a-great-developer-is-more-than-just-code-output-code-reviews-1cda</link>
      <guid>https://forem.com/cgarza/being-a-great-developer-is-more-than-just-code-output-code-reviews-1cda</guid>
      <description>&lt;p&gt;As developers, we obsess over writing clean, tested, performant code; and rightly so! But being a great developer goes far beyond your own output.&lt;/p&gt;

&lt;p&gt;When I started my CS degree, I thought software engineering was about working with computers, not people. I couldn’t have been more wrong.&lt;/p&gt;

&lt;p&gt;This is the first article in my 'Being a Great Developer Is More Than Just Code Output" series, aimed at mid-level and senior engineers looking to grow the skills that make teams thrive. Today’s topic: Code Reviews.&lt;/p&gt;

&lt;h2&gt;
  
  
  👨‍💻 Giving Great Code Reviews
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Assume Positive Intent&lt;/p&gt;

&lt;p&gt;Start from a place of respect and curiosity. The &lt;em&gt;person&lt;/em&gt; wrote this code trying to solve a problem, not to make your life harder. Ask questions like "Can you walk me through why you chose this approach?" to foster collaboration. Using statements like "This is wrong" shut it down.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Review the Code, Not the Coder&lt;/p&gt;

&lt;p&gt;Give objective and specific feedback about the code itself. Reviews like "This method is too long", "The class can be broken down, it's doing too much; I recommend this approach ...". Avoid pointing fingers at the Engineer with things like: "You made a mess in this class, I can barely understand it. Fix it and let me know when it's easier to review", "Do you even know how to write performant code?".&lt;/p&gt;

&lt;p&gt;Use this as an opportunity to lift others up, a simple "Great idea!" can release some tension from other critical code.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Prioritize Signal Over Noise&lt;/p&gt;

&lt;p&gt;Spend your time commenting on things that affect correctness, readability, or long-term maintainability first, not whether they are following your same coding style/guideline (if not enforced... for example, Ruby's symbols vs rocket notation. Rely on linters if you feel it's important.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Explain Why, Not Just What&lt;/p&gt;

&lt;p&gt;A good leader uses code reviews as an opportunity to teach. It might take more time, but it'll be a force multiplier in the long run. Providing feedback like: "Use map instead of each" will lead the developer to just change the method without fully understanding the preference, they might even think you are being nit-picky.&lt;/p&gt;

&lt;p&gt;I found a lot of success providing direct links to the Ruby/Rails docs of the method I was suggesting using; "I recommend using map (link to docs)". With this, I was accomplishing three things:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Direct them to the docs familiarizes the developer with them more, makes them rely on these tools more often.&lt;/li&gt;
&lt;li&gt;"Saves me time" noting down the explanation/justification, the docs already say what the method does. It allows the developer to connect the dots, or ask for more details if needed.&lt;/li&gt;
&lt;li&gt;Leaves a better "paper trail" in the PRs of the changes and reasons for those changes that people can reference.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Balance Gatekeeping With Empowerment&lt;/p&gt;

&lt;p&gt;Be a safety net, not a roadblock. If the code is safe and can evolve, merge it. Perfectionism kills velocity. A review that leaves the author feeling confident and trusted is more valuable than one that’s "technically perfect."&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Pair Review The Code&lt;/p&gt;

&lt;p&gt;Pairing can transform reviews. It saves time deciphering intent and helps both sides explain their reasoning in real time. It’s also a great chance to collaborate on changes directly.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  🧩 Receiving Code Reviews Gracefully
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;You Are NOT Your Code&lt;/p&gt;

&lt;p&gt;Getting something you spent a lot of time and thought on getting critically reviewed isn't a measure of how good a developer you are. Look at this as a learning opportunity to receive feedback from someone more experienced. &lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Seek Understanding Before Defending&lt;/p&gt;

&lt;p&gt;When you might not agree with comment, ask for clarification rather than justifying your decision and dismissing it. Often, confusion in review means future readers will be confused too. Maybe it can be a learning opportunity for both.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Clarify Your Intent in Context&lt;/p&gt;

&lt;p&gt;Don't be afraid of providing comments within the PR before submitting for review explaining what certain things do to make it easier on the reviewer. Note that if you are having to explain several things that seem "obtuse", it might be a sign your code needs refactoring.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Recognize Patterns in Feedback&lt;/p&gt;

&lt;p&gt;If you see the same comment more than once (naming, testing, structure), document it in your personal checklist or team guidelines. That’s how you level up systematically.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Using Code Reviews As a Learning Tool
&lt;/h2&gt;

&lt;p&gt;One of the things I struggled with was getting more Jr devs to do Code Reviews, since they were often working with way more senior developers. So they'd either just approve because "the senior knows better than me" or they'd feel they have nothing to offer.&lt;/p&gt;

&lt;p&gt;But once I encouraged them to use Code Reviews as a learning tool, go into their senior's PRs and ask questions, ask why they took a certain approach, or why they preferred a certain method, they actually started doing it, growing and losing some of that imposter syndrome that they didn't have anything to offer. Soon they'd be catching typos, or making some smart suggestions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Closing Thoughts.
&lt;/h2&gt;

&lt;p&gt;A great engineer doesn’t shine by writing flawless code, but by helping others do the same.&lt;/p&gt;

&lt;p&gt;The best codebases grow when people do. And that starts with reviews grounded in respect, curiosity, and a desire to raise everyone’s game.&lt;/p&gt;

&lt;p&gt;Next up in the series: “Collaboration — Non-Devs roles in your team matter as much.”&lt;/p&gt;

&lt;p&gt;As I mentioned, I planned on making this a series &lt;em&gt;Being a great developer is more than just code output&lt;/em&gt;, coming soon I'll be talking about &lt;em&gt;Collaboration&lt;/em&gt;&lt;br&gt;
Is there something important you think I missed?&lt;/p&gt;

</description>
      <category>software</category>
      <category>leadership</category>
      <category>codereview</category>
      <category>career</category>
    </item>
  </channel>
</rss>
