<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <generator uri="https://github.com/dorkrawk/postwave" version="0.1.5">Postwave</generator>
  <link href="https://dontbreakprod.com" rel="self" type="application/atom+xml" />
  <link href="https://dontbreakprod.com" />
  <updated>2026-03-23T16:26:05-05:00</updated>
  <id>https://dontbreakprod.com</id>
  <title type="html">Don't Break Prod</title>
  <subtitle>Don't Break Prod provides bite-sized pieces of career advice for software engineers.</subtitle>
  
  <entry>
    <title>Things Will Take Longer Than You Think They Will</title>
    <link href="https://dontbreakprod.com/posts/things-will-take-longer-than-you-think-they-will" rel="alternate" type="text/html" title="Things Will Take Longer Than You Think They Will" />
    <id>https://dontbreakprod.com/posts/things-will-take-longer-than-you-think-they-will</id>
    <published>2026-03-23T16:15:00-05:00</published>
    <updated>2026-03-23T16:15:00-05:00</updated>
    <author>
      <name>Don't Break Prod</name>
    </author>
    <content type="html">
      <![CDATA[<p>One of the most important rules of programming is <a href="https://en.wikipedia.org/wiki/Hofstadter%27s_law">Hofstadter's Law</a>:</p>

<p><strong>It always takes longer than you expect, even when you take into account Hofstadter's law.</strong></p>

<p>One mistake that smart junior engineers tend to make is under-estimating the amount of time that a project will take. It's not that more experienced engineers are sandbagging their estimates, but after gaining experience and seeing how hard-to-predict pitfalls can lay ruin to the best of plans, they learn to bake in an educated amount of buffer. This skill comes from better understanding of both the problem domain and the human elements of the project.</p>

<p>When estimating it can be easy to just consider the technical challenges, but often organizational elements of the project can cause serious delays. When estimating, make sure you account for delays in gaining access to systems, getting responses from other involved parties, or other inflight projects that might compete for resources or delay launches for the sake of stability.</p>

<p>Stakeholders would rather have a reliable delivery date than hear an overly ambitious estimate that needs to be extended later in the project. Trust that things will probably take longer than you initially think.</p>
]]>
    </content>
    
  </entry>
  
  <entry>
    <title>Don&#39;t Be Afraid To Be Bad At It</title>
    <link href="https://dontbreakprod.com/posts/dont-be-afraid-to-be-bad-at-it" rel="alternate" type="text/html" title="Don&#39;t Be Afraid To Be Bad At It" />
    <id>https://dontbreakprod.com/posts/dont-be-afraid-to-be-bad-at-it</id>
    <published>2026-03-05T12:50:00-06:00</published>
    <updated>2026-03-05T12:50:00-06:00</updated>
    <author>
      <name>Don't Break Prod</name>
    </author>
    <content type="html">
      <![CDATA[<p>One of my favorite quotes about growth comes from the cartoon Adventure Time:</p>

<p><strong>"Dude, sucking at something is the first step to being sorta good at something" - Jake the Dog</strong></p>

<p>A huge part of being a software engineer is trying and learning new things. Inevitably, you will be bad at many of these things the first time you try them. Maybe you botch a presentation to senior leadership, maybe the first time you lead a project everything goes sideways, maybe you just don't get how a new tool works.</p>

<p>This is how it's supposed to be! If you're not failing, you're probably not growing. Try to fail quickly, learn from your failures, and then try again. If you never do work or try technology outside your comfort zone you'll never grow, which is very problematic in an industry that changes constantly.</p>

<p>So go ahead, be bad at it at first.</p>
]]>
    </content>
    
  </entry>
  
  <entry>
    <title>Done Is Better Than Perfect</title>
    <link href="https://dontbreakprod.com/posts/done-is-better-than-perfect" rel="alternate" type="text/html" title="Done Is Better Than Perfect" />
    <id>https://dontbreakprod.com/posts/done-is-better-than-perfect</id>
    <published>2026-02-05T13:54:00-06:00</published>
    <updated>2026-02-05T13:54:00-06:00</updated>
    <author>
      <name>Don't Break Prod</name>
    </author>
    <content type="html">
      <![CDATA[<p>This project is going to be perfect. You're not going to cut corners. You're going to finally do things the <strong>right way</strong>™ even if that means <a href="../posts/prioritize-ruthlessly">working way harder or taking way longer</a>.</p>

<p>But how do you know what "perfect" is? If your feature isn't released yet, you don't <em>really</em> know how users are going to use it. You'll never know less about what your project needs than right now, so how can you know everything you need to do to make it perfect.</p>

<p>Get it done. Then improve it. And improve it again. Ship something small first. See how it holds up to real-world use. See what makes it hard to work on. See what tools/tests/metrics you wish you had.</p>

<p>Before you can optimize you have to know what matters and it's hard to know what matters until your code touches the real world.</p>
]]>
    </content>
    
  </entry>
  
  <entry>
    <title>Code Is A Habitat For Bugs</title>
    <link href="https://dontbreakprod.com/posts/code-is-a-habitat-for-bugs" rel="alternate" type="text/html" title="Code Is A Habitat For Bugs" />
    <id>https://dontbreakprod.com/posts/code-is-a-habitat-for-bugs</id>
    <published>2026-01-28T11:13:00-06:00</published>
    <updated>2026-01-28T11:13:00-06:00</updated>
    <author>
      <name>Don't Break Prod</name>
    </author>
    <content type="html">
      <![CDATA[<p>It can be easy to think that your job is to write code, but it isn't. Your job is to solve problems.</p>

<p>Code is just a pretty good tool for many of the problems you're likely to work on. Unfortunately code is where bugs live.</p>

<p>Every line of code you write is a place where something could go wrong. It's a little bit more complexity in your applications that people will need to understand. It's weight that might need to be moved around in a future refactor or feature addition.</p>

<p>Writing code is fun and it can be tempting to build for the sake of building, but always consider the tradeoffs that come from growing your codebase. Especially with AI tools that make it even easier to produce more code faster, you need to be mindful of the risk that comes from bringing more code into your organization.</p>

<p>Writing code is obviously going to be a big part of your job. Just be smart about it!</p>
]]>
    </content>
    
  </entry>
  
  <entry>
    <title>Fail Productively</title>
    <link href="https://dontbreakprod.com/posts/fail-productively" rel="alternate" type="text/html" title="Fail Productively" />
    <id>https://dontbreakprod.com/posts/fail-productively</id>
    <published>2026-01-22T14:28:00-06:00</published>
    <updated>2026-01-22T14:28:00-06:00</updated>
    <author>
      <name>Don't Break Prod</name>
    </author>
    <content type="html">
      <![CDATA[<p>Well, you failed.</p>

<p>Your project shipped late. Or it was really buggy when it did get shipped. Or maybe it just didn't work out and got scrapped entirely.</p>

<p>That sucks. But don't waste the failure.</p>

<p>Do something with that failure. Failure is a valuable piece of information. It can be used to figure out what assumptions were bad so that you can update your judgement for next time. It can be used to show you where weaknesses are in you and your organization.</p>

<p>It can be tempting to focus entirely on external or systemic reasons for your failure, but try to focus on the things that you have control over. Can you improve some of your own skills? Can you better manage expectations? Can you push to change processes on your team?</p>

<p>Avoid <a href="../posts/dont-overfit-on-past-problems">overfitting</a> your learnings, but take some time to really understand why things went wrong. Maybe this is part of a formal team postmortem or just an exercise you do yourself, but don't waste a good failure.</p>
]]>
    </content>
    
  </entry>
  
  <entry>
    <title>Seniority Is Clarity Not Cleverness</title>
    <link href="https://dontbreakprod.com/posts/seniority-is-clarity-not-cleverness" rel="alternate" type="text/html" title="Seniority Is Clarity Not Cleverness" />
    <id>https://dontbreakprod.com/posts/seniority-is-clarity-not-cleverness</id>
    <published>2026-01-12T15:59:00-06:00</published>
    <updated>2026-01-12T15:59:00-06:00</updated>
    <author>
      <name>Don't Break Prod</name>
    </author>
    <content type="html">
      <![CDATA[<p>It can be easy to be impressed by a particularly clever piece of code and assume that the effort required to understand it is a sign of skill in the person that built it. While this might be true for a good puzzle it is quite the opposite for a good solution.</p>

<p>Ease of understanding is part of the functionality of a solution. Code is not static. Codebases will be read and modified by many people over their lifetimes and the harder it is to understand the code, the harder it is to work with it.</p>

<p>It is much more impressive to see a solution to a complex problem that is easy to understand. This is the true mark of a senior engineer. A clear solution doesn't just solve the immediate problem, but builds a robust, easy to work with system.</p>

<p>Being "too clever" can include being unnecessarily dense in your code. Brevity may be the soul of wit, but that doesn't mean everything that can be a one-liner, should be. Code is cheap. Take a few extra lines and make it as easy as possible to understand what is happening.</p>

<p>While a clever solution might come off as an impressive trick a clear solution will always be more valuable.</p>
]]>
    </content>
    
  </entry>
  
  <entry>
    <title>Habits Beat Motivation</title>
    <link href="https://dontbreakprod.com/posts/habits-beat-motivation" rel="alternate" type="text/html" title="Habits Beat Motivation" />
    <id>https://dontbreakprod.com/posts/habits-beat-motivation</id>
    <published>2025-12-18T14:49:00-06:00</published>
    <updated>2025-12-18T14:49:00-06:00</updated>
    <author>
      <name>Don't Break Prod</name>
    </author>
    <content type="html">
      <![CDATA[<p>We've all gotten really excited about a new project; building something interesting, learning something new. Things go great until they don't. You get stuck in <a href="../posts/learn-how-to-deal-with-gumption-traps">gumption traps</a>, you get short on time, and the honeymoon phase of the project wears out.</p>

<p>Motivation alone isn't enough to get through non-trivial things. You need to set good habits. Habits externalize your accountability for things that are important to you. </p>

<p>Rather than hoping that you'll be motivated every day to work on learning that new language, just know that at 9:30, every day you put half an hour of work into it. Then there's no decision to be made or motivation to muster up. Put it on your calendar, if you must!</p>

<p>You're not always going to be motivated and that's ok, but you can set good habits to keep you going when motivation wavers.</p>
]]>
    </content>
    
  </entry>
  
  <entry>
    <title>Match Your Opportunities To Your Ambitions</title>
    <link href="https://dontbreakprod.com/posts/match-your-opportunities-to-your-ambitions" rel="alternate" type="text/html" title="Match Your Opportunities To Your Ambitions" />
    <id>https://dontbreakprod.com/posts/match-your-opportunities-to-your-ambitions</id>
    <published>2025-12-03T10:36:00-06:00</published>
    <updated>2025-12-03T10:36:00-06:00</updated>
    <author>
      <name>Don't Break Prod</name>
    </author>
    <content type="html">
      <![CDATA[<p>You've just been presented with a great opportunity. It will help you get visibility and could really accelerate things for you! You should get started today, right?</p>

<p>Maybe?</p>

<p><strong>Remember, careers have speed AND direction.</strong></p>

<p>Going quickly toward something you don't want doesn't help you and can often be demoralizing. Think hard about <a href="../posts/know-what-your-goals-are-and-why">what you want</a> and seek out opportunities that will help you understand and grow in those areas.</p>

<p>What if you don't know exactly what you want yet? Well, then take random opportunities! Hop on whatever projects come up and learn something. But don't just learn new skills, learn if you like the work or not. </p>

<p>Obviously you won't be able to pick and choose every project you work on. Some work is just part of the job, but when you do have agency over your work, know how to use it.</p>

<p>Figure out your ambitions and you'll be able to tell the difference between opportunities and obligations.</p>
]]>
    </content>
    
  </entry>
  
  <entry>
    <title>Build Relationships</title>
    <link href="https://dontbreakprod.com/posts/build-relationships" rel="alternate" type="text/html" title="Build Relationships" />
    <id>https://dontbreakprod.com/posts/build-relationships</id>
    <published>2025-11-13T11:28:00-06:00</published>
    <updated>2025-11-13T11:28:00-06:00</updated>
    <author>
      <name>Don't Break Prod</name>
    </author>
    <content type="html">
      <![CDATA[<p>As engineers it can be tempting to think that our work should speak for itself. If you ship good code and solve good problems you will be recognized, right?</p>

<p>Maybe. But doing the work without building relationships can put you at a serious disadvantage.</p>

<p>Don't use the stereotype of the socially awkward programmer to justify working in isolation. Don't fall into the outdated trope of the surly engineer who works "brilliantly" as a lone wolf. In order to know the right things to be working on, you need to keep your head up. In order to get people to recognize and advocate for you, it's important to get to know and care about other people. Listen to them, understand their work and challenges. Be helpful when you can. Be supportive when you can.</p>

<p><strong>Building relationships is not political posturing. It's not an unsavory way to get special treatment. It's a fundamental part of human collaboration.</strong> </p>

<p>Do not underestimate the power of caring about others in a way that makes them care about you.</p>
]]>
    </content>
    
  </entry>
  
  <entry>
    <title>Show That Your Work Was Useful</title>
    <link href="https://dontbreakprod.com/posts/show-that-your-work-was-useful" rel="alternate" type="text/html" title="Show That Your Work Was Useful" />
    <id>https://dontbreakprod.com/posts/show-that-your-work-was-useful</id>
    <published>2025-11-04T17:12:00-06:00</published>
    <updated>2025-11-04T17:12:00-06:00</updated>
    <author>
      <name>Don't Break Prod</name>
    </author>
    <content type="html">
      <![CDATA[<p>You've just closed the last issue of a major project. It's shipped! Congrats.</p>

<p>You start writing your internal blog post about how you "shipped X using Y technology", but why should people care that your project shipped? Why was it a good use of your time to solve that problem?</p>

<p>When talking about your accomplishments (to your manager, in a public post, in a self evaluation, etc.) focus less on what you shipped and more on why you shipped what you did. Did your work unlock new business? Did it save money by making things more efficient? Did it help the organization avoid legal issues by complying to regulations? Did it fix a bug that 100s of customers complained about?</p>

<p>If you can, support your why with graphs, data, and testimonials. The evidence makes your story stronger.</p>

<p>Remember, as an engineer it's not what you do, but what your work does.</p>
]]>
    </content>
    
  </entry>
  
  <entry>
    <title>Prioritize Ruthlessly</title>
    <link href="https://dontbreakprod.com/posts/prioritize-ruthlessly" rel="alternate" type="text/html" title="Prioritize Ruthlessly" />
    <id>https://dontbreakprod.com/posts/prioritize-ruthlessly</id>
    <published>2025-10-08T13:47:00-05:00</published>
    <updated>2025-10-08T13:47:00-05:00</updated>
    <author>
      <name>Don't Break Prod</name>
    </author>
    <content type="html">
      <![CDATA[<p>When thinking about how a project can be completed you can look at 3 different dimensions:</p>

<ul>
<li>scope (how many things need to be done)</li>
<li>timeline (when you can complete everything by)</li>
<li>effort (how much work you and others can put in)</li>
</ul>

<p>If a new feature is added to a project (the scope is increased) then the project either ships later or more work is done in the same amount of time meaning more hours or more people (and <a href="https://en.wikipedia.org/wiki/The_Mythical_Man-Month#The_mythical_man-month">more people might not even help</a>). Often times deadlines are hard to move and a so more features often means more demands on each engineer.</p>

<p>Sometimes this is necessary. An important project might require a temporary big push from everyone, that's just part of the job. But it shouldn't be the first tool teams reach for. Instead, when new requests comes in, <strong>look to adjusting scope first</strong>.</p>

<p>Reaching for increased effort or pushed timeline is often a crutch to avoid the important work of prioritization. There will often be lots of good ideas or features that you or others would like to see shipped but unless you're prioritizing well you can end up putting in a lot of effort without getting much more impact. This is because prioritization forces you to think about <a href="../posts/understand-what-your-organization-values">why you're doing work</a> and how much impact it will have.</p>

<p>Having this common measure of impact helps facilitate conversations between product and engineering teams. Engineers can estimate the amount of time a new feature might take and have a conversation about <a href="../posts/figure-out-what-doesnt-matter">whether or not the impact is worth it</a>, rather than just adding more hours to their workday just because more work could be done.</p>

<p>Being productive isn't about doing more work. It's about doing the right work. Prioritizing ruthlessly is a way to protect your valuable time while making sure that you are as impactful as possible.</p>
]]>
    </content>
    
  </entry>
  
  <entry>
    <title>Find Good Problems</title>
    <link href="https://dontbreakprod.com/posts/find-good-problems" rel="alternate" type="text/html" title="Find Good Problems" />
    <id>https://dontbreakprod.com/posts/find-good-problems</id>
    <published>2025-09-12T11:52:00-05:00</published>
    <updated>2025-09-12T11:52:00-05:00</updated>
    <author>
      <name>Don't Break Prod</name>
    </author>
    <content type="html">
      <![CDATA[<p>Your job as a software engineer is not just picking up Jira tickets and completing them. Hopefully.</p>

<p>You need to be on the lookout for good new problems to solve. It's good for your career to drive this type of work and ultimately this is how you'll both increase impact and increase your own satisfaction.</p>

<p>But what makes a good problem?</p>

<p>Richard Hamming wrote a great bit on <a href="https://www.cs.utexas.edu/%7Edahlin/bookshelf/hamming.html#:%7E:text=choosing%20the%20problem,will%20not%20do%20important%20work.">choosing good problems in science</a> and picking a good software problem is similar. You want something important and approachable.</p>

<p>Knowing what problems are important is a skill in itself. You have to <a href="../posts/understand-what-your-organization-values">understand what your organization values</a> and you need to be familiar enough with the systems to know where the shortcomings or opportunities are. It's your job to connect these values with gaps.</p>

<p>Figuring out if the problem is approachable is also a function of familiarity with the system and confidence in impact. Most software problems are not unsolved scientific problems, but having an understanding of effort vs impact will help justify your problem as worth tackling.</p>

<p>Look for things that nobody else is really paying attention to. These areas will come up as you gain deep experience from working on specific parts of your system or from taking the time to gather new data that others haven't been looking at or even just talking to people outside your domain to understand their pain points. Use this to get a sense of effort vs impact so you can justify your work. Just keep an eye out and you'll run into all sorts of good problems.</p>
]]>
    </content>
    
  </entry>
  
  <entry>
    <title>Handle Feedback Productively</title>
    <link href="https://dontbreakprod.com/posts/handle-feedback-productively" rel="alternate" type="text/html" title="Handle Feedback Productively" />
    <id>https://dontbreakprod.com/posts/handle-feedback-productively</id>
    <published>2025-09-04T15:22:00-05:00</published>
    <updated>2025-09-04T15:22:00-05:00</updated>
    <author>
      <name>Don't Break Prod</name>
    </author>
    <content type="html">
      <![CDATA[<p>Positive feedback is pretty easy to hear. Keep up the good work!</p>

<p>But critical feedback can be harder, particularly from a manager or someone with authority. When you receive critical feedback separate out the <strong>feedback you agree with</strong> and the <strong>feedback you don't agree with</strong>. </p>

<p>Now you have two actionable buckets of information to work from.</p>

<p>The feedback you agree with can provide clarity on areas to work on. Work with others (perhaps the person giving you the feedback) on the best ways to improve in these areas.</p>

<p>For feedback you don't agree with you have three options: change your mind, change the other person's mind, and do nothing.</p>

<p>You might talk with your manager or other team members about the feedback and discover there is some validity to the critique and now you have more feedback that you agree with. See earlier paragraph.</p>

<p>Maybe the feedback you received was based on incomplete information, your manager needed to better understand your impact or contributions. It's possible that with discussion and data you can bring people around to seeing things your way. But be prepared to present a strong argument, not just an emotional one.</p>

<p>The last option is to do nothing and ignore the feedback. This is rarely the best option, but it is an option. You should understand well the consequences of this. Will it affect your overall performance review/compensation? Will it require you to change teams or even jobs?</p>

<p>Getting performance feedback can be tough, but figuring out how to make it actionable can be the best way to handle it.</p>
]]>
    </content>
    
  </entry>
  
  <entry>
    <title>Communicate Early and Often</title>
    <link href="https://dontbreakprod.com/posts/communicate-early-and-often" rel="alternate" type="text/html" title="Communicate Early and Often" />
    <id>https://dontbreakprod.com/posts/communicate-early-and-often</id>
    <published>2025-08-20T12:46:00-05:00</published>
    <updated>2025-08-20T12:46:00-05:00</updated>
    <author>
      <name>Don't Break Prod</name>
    </author>
    <content type="html">
      <![CDATA[<p>Especially when changing expectations.</p>

<p>Communication is obviously a fundamental skill and that is never more apparent as when you are changing expectations. Often changing expectations means telling people that a feature will be shipped later than previously agreed upon or some desired functionality just won't be possible. Nobody wants to tell someone bad news and it can be hard to do.</p>

<p>But it's worse to put it off.</p>

<p>When you're changing expectations it is incredibly important to let people know as soon as possible and with full clarity. As soon as you see risks coming up, inform the people that will be affected by it. Nobody wants to be blindsided at the 11th hour when you tell them that the previously agreed upon ship date won't be hit.</p>

<p>And be clear about what you're saying. Avoid ambiguity and anticipate questions. Don't say things like "I'm worried about our delivery date". Instead say things like "Given our improved understanding of the complexity of this work, we should push the ship date back by two weeks". This is clear, gives context, and gives a description of the new expectations.</p>

<p>Don't avoid or delay important communications. Even if it's not what people want to hear, they'll appreciate hearing it sooner rather than later.</p>
]]>
    </content>
    
  </entry>
  
  <entry>
    <title>Happiness Should Be a Career Goal</title>
    <link href="https://dontbreakprod.com/posts/happiness-should-be-a-career-goal" rel="alternate" type="text/html" title="Happiness Should Be a Career Goal" />
    <id>https://dontbreakprod.com/posts/happiness-should-be-a-career-goal</id>
    <published>2025-08-13T14:41:00-05:00</published>
    <updated>2025-08-13T14:41:00-05:00</updated>
    <author>
      <name>Don't Break Prod</name>
    </author>
    <content type="html">
      <![CDATA[<p>A lot of recent posts have <a href="../posts/know-what-your-goals-are-and-why">been</a> <a href="../posts/figure-out-how-to-work-towards-your-goals">about</a> <a href="../posts/revisit-your-goals-often">goals</a> but it's important to call out that <strong>happiness</strong> is the fundamental goal you should be seeking. Why are you doing any of this if it doesn't ultimately make you happy.</p>

<p>"Happiness" as a career goal doesn't necessarily mean that everything you do at work will be something you love. There will, of course, be unpleasant things (does anybody actually <em>like</em> being on call?). But the things that are unpleasant should be reasonable trade offs for opportunities that you value. </p>

<p>Sometimes things will be hard, but hard work that leaves you proud and satisfied is a good path to happiness.</p>

<p>Happiness as a career goal can also mean saying "no" to good opportunities. If something might be good for your job but bad for other parts of your life, considering overall happiness can help you figure out if the tradeoffs are worth it.</p>

<p>Career happiness isn't as simple as avoiding trouble or pursuing advancement, but at a fundamental level it is <strong>the</strong> goal.</p>
]]>
    </content>
    
  </entry>
  
  <entry>
    <title>Revisit Your Goals Often</title>
    <link href="https://dontbreakprod.com/posts/revisit-your-goals-often" rel="alternate" type="text/html" title="Revisit Your Goals Often" />
    <id>https://dontbreakprod.com/posts/revisit-your-goals-often</id>
    <published>2025-07-30T13:09:00-05:00</published>
    <updated>2025-07-30T13:09:00-05:00</updated>
    <author>
      <name>Don't Break Prod</name>
    </author>
    <content type="html">
      <![CDATA[<p>You've spent some time figuring out <a href="../posts/know-what-your-goals-are-and-why">what you want and why</a>, <a href="../posts/figure-out-how-to-work-towards-your-goals">made a plan for how to reach these goals</a>, and hopefully executed on that plan. Great! </p>

<p>Hopefully you've learned something.</p>

<p>Pay attention to how it feels to get closer to your goals. You now know more about yourself and more about what the realities of your goals. Use this information to make course corrections. Maybe you've been working to move from an IC to management role but it turns out you miss coding more than you thought you did or as part of some performance work you develop a deep interest in database optimization. Take these learnings into account and consider tradeoffs and new interests.</p>

<p>Don't just work hard on something because it was your dream 5 years ago. This is a recipe for a miserable career. As you learn, you grow. Expect to be a different person with different goals as you grow. Revisit your goals and be honest with yourself as you go.</p>
]]>
    </content>
    
  </entry>
  
  <entry>
    <title>Figure Out How To Work Towards Your Goals</title>
    <link href="https://dontbreakprod.com/posts/figure-out-how-to-work-towards-your-goals" rel="alternate" type="text/html" title="Figure Out How To Work Towards Your Goals" />
    <id>https://dontbreakprod.com/posts/figure-out-how-to-work-towards-your-goals</id>
    <published>2025-07-24T16:37:00-05:00</published>
    <updated>2025-07-24T16:37:00-05:00</updated>
    <author>
      <name>Don't Break Prod</name>
    </author>
    <content type="html">
      <![CDATA[<p>Continuing on with <a href="../posts/make-the-most-of-mentorship">making the most of mentorship</a>, you've now <a href="../posts/know-what-your-goals-are-and-why">figured out what your goals are</a> so now it's time to achieve them, right?</p>

<p>Slow down a bit.</p>

<p>Take a minute to think about the best way to work towards your goals. Make sure that your approach is incremental, actionable, and accountable.</p>

<p>Incremental steps are small. You can take them right away and see if they're working (and if they're leading you in a direction you want to be going.)</p>

<p>Creating actionable steps often involves clarifying vague intentions. Instead of saying you want to "look for leadership opportunities", make it a goal to ask your manager about leading the next major project. It should be easy to figure out if you've done the work or not.</p>

<p>From here, make sure you can hold yourself accountable. This is sometimes as simple as just sharing your plans with someone else like a mentor or manager. Setting self-imposed deadlines can also keep you accountable to these plans.</p>

<p>By taking a little time to think about how you will approach your goals you'll end up much more likely to work on them in a productive way.</p>
]]>
    </content>
    
  </entry>
  
  <entry>
    <title>Know What Your Goals Are and Why</title>
    <link href="https://dontbreakprod.com/posts/know-what-your-goals-are-and-why" rel="alternate" type="text/html" title="Know What Your Goals Are and Why" />
    <id>https://dontbreakprod.com/posts/know-what-your-goals-are-and-why</id>
    <published>2025-07-17T16:26:00-05:00</published>
    <updated>2025-07-17T16:26:00-05:00</updated>
    <author>
      <name>Don't Break Prod</name>
    </author>
    <content type="html">
      <![CDATA[<p>The first step for <a href="../posts/make-the-most-of-mentorship">making the most of mentorship</a> really applies to pursing any serious career satisfaction.</p>

<p>Know what you want.</p>

<p>And why.</p>

<p>In order to set goals and hope to be happy with accomplishing those goals you need to know yourself and what really motivates you. Start thinking about what you want to do. Maybe that's become a manager or start your own startup or be the most technical person in the room.</p>

<p>But take some time to think about why you want those things. And be honest with yourself. Does running a company really seem like something you want to do or does it just sound prestigious? Do you want that FANG job because you'd enjoy it or does it just seem like it would pay well? (By the way, it's ok for "make lots of money" to be your goal. But just be honest with yourself about it.)</p>

<p>If you want to set goals that will be worth working hard at, the first step is really understanding what you want. And why.</p>
]]>
    </content>
    
  </entry>
  
  <entry>
    <title>Make the Most of Mentorship</title>
    <link href="https://dontbreakprod.com/posts/make-the-most-of-mentorship" rel="alternate" type="text/html" title="Make the Most of Mentorship" />
    <id>https://dontbreakprod.com/posts/make-the-most-of-mentorship</id>
    <published>2025-07-01T15:35:00-05:00</published>
    <updated>2025-07-01T15:35:00-05:00</updated>
    <author>
      <name>Don't Break Prod</name>
    </author>
    <content type="html">
      <![CDATA[<p>Having a mentor is great. You get personalized, one on one guidance for your personal growth, but you need to know enough about yourself to take advantage of that individualized support.</p>

<p>It's your job to figure out where you want to go.</p>

<p>It's your mentors job to help you get there.</p>

<p>Here's a rough framework for thinking about that:</p>

<p><strong>Step 0:</strong> <a href="../posts/know-what-your-goals-are-and-why">Know what your goals are and why.</a></p>

<p><strong>Step 1:</strong> <a href="../posts/figure-out-how-to-work-towards-your-goals">Figure out how to work toward those goals.</a> (Your mentor can help with this.)</p>

<p><strong>Step 2:</strong> Do the work!</p>

<p><strong>Step 3:</strong> <a href="../posts/revisit-your-goals-often">Revisit your goals to make sure you still care about them.</a></p>

<p>I'll do a few follow up posts to dig into some of these steps more, but the important thing is to think about both the "why" and the "how" around your goals when working with a mentor.</p>
]]>
    </content>
    
  </entry>
  
  <entry>
    <title>Know Who To Ask</title>
    <link href="https://dontbreakprod.com/posts/know-who-to-ask" rel="alternate" type="text/html" title="Know Who To Ask" />
    <id>https://dontbreakprod.com/posts/know-who-to-ask</id>
    <published>2025-06-17T14:56:00-05:00</published>
    <updated>2025-06-17T14:56:00-05:00</updated>
    <author>
      <name>Don't Break Prod</name>
    </author>
    <content type="html">
      <![CDATA[<p>It's not always what you know, but who you know.</p>

<p>For any reasonably complex system it can be very hard to understand everything so it's good to know who in your organization can be a resource for the areas you don't know well. You can save yourself hours or days by knowing who can give you a quick overview of a new-to-you system or provide answers about an unfamiliar codebase.</p>

<p>How do you find these domain experts? In larger organizations, there might be some formality to these designations. Documentation might list system owners for each system. Teams might have discrete areas of ownership that make finding a point of contact pretty straight forward.</p>

<p>In other situations you may need to rely on more implicit indicators of expertise. Look for people who are active answering questions about certain topics in Slack. Check the commit history for code related to these systems. See who's given a "lunch and learn" talk about this area of the product.</p>

<p>What if there's nobody to ask? This can happen, especially in smaller organizations and it is often an opportunity to invest some of your time in <a href="../posts/get-good-at-learning">learning</a> about this domain and establishing yourself as the person to ask.</p>

<p>This inclination and ability to seek help is what gives collaborative engineers the advantage over "brilliant lone-wolf" people, so make sure you know who to ask. And ask them.</p>
]]>
    </content>
    
  </entry>
  
  <entry>
    <title>Be Visible</title>
    <link href="https://dontbreakprod.com/posts/be-visible" rel="alternate" type="text/html" title="Be Visible" />
    <id>https://dontbreakprod.com/posts/be-visible</id>
    <published>2025-05-29T10:51:00-05:00</published>
    <updated>2025-05-29T10:51:00-05:00</updated>
    <author>
      <name>Don't Break Prod</name>
    </author>
    <content type="html">
      <![CDATA[<p>It's not enough to do good work, other people have to know how good you are. This can be a hard truth for many software engineers.</p>

<p>Being visible is the very similar to <a href="../posts/sell-yourself">selling yourself</a> but in a more implicit way. If selling yourself is about explaining to others how valuable your work is, being visible is about helping others form their own ideas about how valuable you are.</p>

<p>So how do you increase your visibility? Get out there! Answer questions in Slack rooms. Review PRs. Give presentations about your work. Be generous with your time in ways that help others. Creating your own content or speaking at meetups and conferences can increase your visibility outside of your organization, too.</p>

<p>As a <a href="https://paulgraham.com/makersschedule.html">maker</a> it can be hard to balance getting things done with being available for others, so it can be helpful to schedule your "visible" time. Put events on your calendar to remind you to review PRs or check on support issues.</p>

<p>Make sure you're visible in impactful ways, not just performative posting and you'll see your reputation and career grow.</p>
]]>
    </content>
    
  </entry>
  
  <entry>
    <title>Embrace Boring Technology</title>
    <link href="https://dontbreakprod.com/posts/embrace-boring-technology" rel="alternate" type="text/html" title="Embrace Boring Technology" />
    <id>https://dontbreakprod.com/posts/embrace-boring-technology</id>
    <published>2025-05-23T10:49:00-05:00</published>
    <updated>2025-05-23T10:49:00-05:00</updated>
    <author>
      <name>Don't Break Prod</name>
    </author>
    <content type="html">
      <![CDATA[<p>When you get the opportunity to choose the language or database for a new project it can be tempting to go with something new and exciting. You've just finished a really fun tutorial about it. Everybody online is talking about how cool it is. And you don't want your project to use some boring old technology, right?</p>

<p>Wrong.</p>

<p>Boring is awesome. </p>

<p>Boring means it works as expected. Boring means a lot of the obvious problems have been solved already. Boring means people have already written a wealth of blogs and libraries around this technology so all that's left for you to do is build what you wanted to build in the first place. And odds are, by the time a technology is boring lots of other people will have used it to, so it'll be that much easier to get other people up to speed on your project. Boring technologies let you focus on what's interesting about what you're building.</p>

<p>There are, of course, reasons to try new and uncommon technologies. There are datastores that might be really well suited for your usage patterns. You might have deep expertise in a certain uncommon language or framework. But use your weirdness budget wisely. And default to boring.</p>
]]>
    </content>
    
  </entry>
  
  <entry>
    <title>Understand Your Manager</title>
    <link href="https://dontbreakprod.com/posts/understand-your-manager" rel="alternate" type="text/html" title="Understand Your Manager" />
    <id>https://dontbreakprod.com/posts/understand-your-manager</id>
    <published>2025-05-16T10:10:00-05:00</published>
    <updated>2025-05-16T10:10:00-05:00</updated>
    <author>
      <name>Don't Break Prod</name>
    </author>
    <content type="html">
      <![CDATA[<p>Your direct manager has some of the biggest impact on your day to day happiness, often more so than the project you're working on or the company you work for. They should be acting as a source of expectations and feedback but if you don't understand their motivations they can become a source of frustration.</p>

<p>A manager's motivations are likely a mix of two things; expectations passed down to them from higher up and their own values.</p>

<p>By understanding what's being asked of them (which is likely related to what the <a href="../posts/2025-04-09-understand-what-your-organization-values">company values</a>) you can understand where they're getting pressure and how that will get passed along to you. By understanding this you can prioritize and communicate your work so that it is easier for them show progress in ways that resonate up. Reducing pressure on your manager often makes your own life more pleasant.</p>

<p>Of course, managers have their own values as well. It's important to understand how they judge work and what puts them at ease. Are they excited about getting into technical details? Do they like to see detailed data to support results? Figuring out their personal value system can help you work and communicate in a way that causes less friction.</p>

<p>When someone is asking things of you, make sure you understand what is being asked of them and what they care about so you can work with them, rather than against them.</p>
]]>
    </content>
    
  </entry>
  
  <entry>
    <title>Be Productively Pessimistic</title>
    <link href="https://dontbreakprod.com/posts/be-productively-pessimistic" rel="alternate" type="text/html" title="Be Productively Pessimistic" />
    <id>https://dontbreakprod.com/posts/be-productively-pessimistic</id>
    <published>2025-04-30T16:15:00-05:00</published>
    <updated>2025-04-30T16:15:00-05:00</updated>
    <author>
      <name>Don't Break Prod</name>
    </author>
    <content type="html">
      <![CDATA[<p>The earlier you can catch problems, the better. So why not try to catch them before they even happen.</p>

<p>When talking through plans for a project, take some time to be pessimistic. Think about what can go wrong. Are there unknowns in the implementation that could prove to be big time sinks or high risk? Are there dependencies on other teams that could fall through? Is it likely that someone will make major changes in shape or scope while the project is in progress?</p>

<p>Imagine something went wrong with the project and try to predict what caused it (this is sometimes called a "premortem"). It's better to bring these up early than to pretend that everything will probably be ok. The "productive" part of being productively pessimistic is then taking some time to work out ways to handle these potential problems. </p>

<p>Don't just be needlessly negative about things, but don't let yourself be blindsided by problems you could get ahead of with a little pessimism.</p>
]]>
    </content>
    
  </entry>
  
  <entry>
    <title>Know The Difference Between Wartime and Peacetime</title>
    <link href="https://dontbreakprod.com/posts/know-the-difference-between-wartime-and-peacetime" rel="alternate" type="text/html" title="Know The Difference Between Wartime and Peacetime" />
    <id>https://dontbreakprod.com/posts/know-the-difference-between-wartime-and-peacetime</id>
    <published>2025-04-24T10:47:00-05:00</published>
    <updated>2025-04-24T10:47:00-05:00</updated>
    <author>
      <name>Don't Break Prod</name>
    </author>
    <content type="html">
      <![CDATA[<p>Do you know if your company is in wartime or peacetime?</p>

<p>Peacetime is when there are no eminent existential threats to the business. You'll often see more freedom to explore new things, invest in longterm bets, and have more leeway to indulge in pet projects. During times of peace and prosperity it's often beneficial to be a little less focused and try a few higher risk ideas that may or may not pay off. You'll see more investment in growth and general happiness.  </p>

<p>A wartime company is under threat. Maybe there's a major competitor breathing down your neck. Maybe a shift in market conditions means that you could get left behind if you don't push hard. Wartime is all about focus, execution, and winning in order to survive. If run well, a wartime company will be VERY clear about its priorities, but this can also mean that projects may change quickly in order to best focus on those priorities. There is also a lot less room for anything that doesn't relate to near term wins. Things like open source contributions or quality of life improvements may be deprioritized. Even some company culture things may take a backseat to wartime focus. A common phrase that we heard during wartime at a company I used to work at was "Nobody worries about office snacks during wartime".</p>

<p>If your company is in wartime, it's important to pay attention to what the <a href="../posts/understand-what-your-organization-values">single focus</a> is. You may need to realign your work (and how you talk about your work) to make sure it's related to those goals. Anything not related is at risk of being cut.</p>

<p>Companies don't stay in wartime (or peacetime) forever. Make sure you know where you are and how best to navigate the current situation.</p>
]]>
    </content>
    
  </entry>
  
  <entry>
    <title>Get Good At Reading Code</title>
    <link href="https://dontbreakprod.com/posts/get-good-at-reading-code" rel="alternate" type="text/html" title="Get Good At Reading Code" />
    <id>https://dontbreakprod.com/posts/get-good-at-reading-code</id>
    <published>2025-04-16T10:54:00-05:00</published>
    <updated>2025-04-16T10:54:00-05:00</updated>
    <author>
      <name>Don't Break Prod</name>
    </author>
    <content type="html">
      <![CDATA[<p>"Debugging is twice as hard as writing a program in the first place. So if you're as clever as you can be when you write it, how will you ever debug it?" - <a href="https://en.wikipedia.org/wiki/Brian_Kernighan">Kernighan's</a> Law</p>

<p>So much about the practice of software engineering revolves around building software that we can read and understand. Unless you're just creating a quick script or throwaway tool, the readability of your code is important. Additionally, in most professional situations you need to not just be able to read your own code, but code written by others.</p>

<p>While many software engineers like to think of productivity as involving lots of code writing the reality is that fixing bugs and adding new features often involves a lot of code reading before anything can be added or changed (or, if you're lucky, removed). You need to get good at following the flow of functionality, executing code in your head, and building mental models of the system you're working with based on that reading. It can help to do more "active" reading, which might involve actually running the code and <a href="../posts/write-while-you-work">writing things down</a> as you explore.</p>

<p>Reading code is also a core part of doing code reviews. If you can't read and understand someone else's code it's impossible to give good feedback and spot potential issues. Just as reading more books can increase your reading comprehension of prose, reading lots of code increases your software reading comprehension, so reviewing code can be a great way to improve your code reading skills.</p>

<p>As we see the use of AI generated code increase, the human skill of reading code becomes even more important. Code reading is a foundational skill that will always pay off (and be sure to consider your fellow reader as you write your code).</p>
]]>
    </content>
    
  </entry>
  
  <entry>
    <title>Understand What Your Organization Values</title>
    <link href="https://dontbreakprod.com/posts/understand-what-your-organization-values" rel="alternate" type="text/html" title="Understand What Your Organization Values" />
    <id>https://dontbreakprod.com/posts/understand-what-your-organization-values</id>
    <published>2025-04-09T14:13:00-05:00</published>
    <updated>2025-04-09T14:13:00-05:00</updated>
    <author>
      <name>Don't Break Prod</name>
    </author>
    <content type="html">
      <![CDATA[<p>There's a difference between being good and being useful. You can be good on your own, but to be useful you have to pay attention to what matters to the people around you. And organizations are always going to reward useful over good.</p>

<p>If you want recognition, career advancement, job security, all those good things, it's important to really understand what your organization values. Sometimes this will be very explicitly stated and it will be straightforward to make sure you tie your work to company goals. Other times you'll have to pay attention to implied values. Look at what work gets the most recognition and figure out why.</p>

<p>Sometimes this can be frustrating when work you value doesn't seem to be valued by your organization. Here you have a few options: You can choose to continue working on what you value and accept whatever consequences come from that. You can change what you're doing to better match what is clearly valued. Or you can advocate for your work. The best way to do that is to show how your work really does serve the organization's values.</p>

<p>If none of these are an option, you might have to find a new place to work that better aligns with your values.</p>

<p>Working hard without understanding the priorities of your organization is a great way to do a lot without getting much recognition or reward. Look up frequently and make sure you understand what is valued.</p>
]]>
    </content>
    
  </entry>
  
  <entry>
    <title>Don&#39;t Overfit On Past Problems</title>
    <link href="https://dontbreakprod.com/posts/dont-overfit-on-past-problems" rel="alternate" type="text/html" title="Don&#39;t Overfit On Past Problems" />
    <id>https://dontbreakprod.com/posts/dont-overfit-on-past-problems</id>
    <published>2025-04-03T14:00:00-05:00</published>
    <updated>2025-04-03T14:00:00-05:00</updated>
    <author>
      <name>Don't Break Prod</name>
    </author>
    <content type="html">
      <![CDATA[<p>Your team is just coming off a major incident. In the postmortem you all come up with a number of ways to avoid having that problem happen ever again.</p>

<p>Good. Now take a second look at that list and make sure that you're not just setting up guards to prevent the exact same problem. It's important to make sure you don't make the same mistake twice but you want to make sure that your solutions are pragmatic.</p>

<p>You want to avoid solutions that are too narrow; they only address the very specific problem you just encountered and solutions that are overly restrictive; they overreact to the problem by making to hard to do anything. </p>

<p>Very specific solutions are often "cover your ass" work. They end up introducing complexity without being as effective as understanding the root cause of the problem and coming up with general solutions.</p>

<p>Overly restrictive solutions can end up producing <a href="../posts/pay-down-process-debt">process debt</a>. It's tempting to lock things down with stuff goes wrong, but rather than putting up roadblocks to prevent problems, take the time to really understand where the gaps in your process are that can allow mistakes to get shipped. Make smart tradeoffs between safety and speed.</p>

<p>Things going wrong are an opportunity to make improvements. Just make sure you're making the right ones.</p>
]]>
    </content>
    
  </entry>
  
  <entry>
    <title>Teaching Is A Good Way To Learn</title>
    <link href="https://dontbreakprod.com/posts/teaching-is-a-good-way-to-learn" rel="alternate" type="text/html" title="Teaching Is A Good Way To Learn" />
    <id>https://dontbreakprod.com/posts/teaching-is-a-good-way-to-learn</id>
    <published>2025-03-19T11:33:00-05:00</published>
    <updated>2025-03-19T11:33:00-05:00</updated>
    <author>
      <name>Don't Break Prod</name>
    </author>
    <content type="html">
      <![CDATA[<p>Being <a href="../posts/get-good-at-learning">good at learning</a> is important. We work in an industry that is always evolving, so learning is a fundamental skill.</p>

<p>Teaching, while obviously beneficial to those being taught, has the additional advantage of being a great way for the teacher to learn as well. When you teach, it forces you to clarify your own understanding of the subject matter. This helps you build better mental models for yourself around the topic.</p>

<p>When teaching you can't assume the person you're working with has the same foundational knowledge you have, so your are often required to build up knowledge starting from more fundamental concepts, which can aid your own clarity.</p>

<p>Finally, answering questions is a great way to sharpen your own understanding of concepts. A students questions may even expose a blind spot in your understanding and working out the answer together can benefit you both.</p>

<p>Even if you don't consider yourself an expert in a subject, offering to teach can be a great forcing function to deepen your understanding of a topic.</p>
]]>
    </content>
    
  </entry>
  
  <entry>
    <title>Pay Attention To What&#39;s Easy Now</title>
    <link href="https://dontbreakprod.com/posts/pay-attention-to-whats-easy-now" rel="alternate" type="text/html" title="Pay Attention To What&#39;s Easy Now" />
    <id>https://dontbreakprod.com/posts/pay-attention-to-whats-easy-now</id>
    <published>2025-03-12T13:45:00-05:00</published>
    <updated>2025-03-12T13:45:00-05:00</updated>
    <author>
      <name>Don't Break Prod</name>
    </author>
    <content type="html">
      <![CDATA[<p>There's an old quote by <a href="https://en.wikipedia.org/wiki/Larry_Tesler">Larry Tesler</a> that goes, "AI is whatever hasn't been done yet."</p>

<p>This reflects the thinking that the only things that are impressive are the things we can't do yet. It can be easy to fall into this trap when looking at your own skills.</p>

<p>It's easy to forget what used to be hard. We normalize our current abilities and quickly assume that if we can do something it must be trivial. But this misses the value of all the skills we've developed. Software engineering is hard and sometimes the best way to avoid becoming demoralized is to focus on your growth.</p>

<p>So when you're doing something that seems well within your skill set take a moment to think about a time in your career when a similar situation would have been much more challenging. You'll often be impressed by how far you've come.</p>
]]>
    </content>
    
  </entry>
  
  <entry>
    <title>Say Yes To Interesting Things</title>
    <link href="https://dontbreakprod.com/posts/say-yes-to-interesting-things" rel="alternate" type="text/html" title="Say Yes To Interesting Things" />
    <id>https://dontbreakprod.com/posts/say-yes-to-interesting-things</id>
    <published>2025-03-06T14:51:00-06:00</published>
    <updated>2025-03-06T14:51:00-06:00</updated>
    <author>
      <name>Don't Break Prod</name>
    </author>
    <content type="html">
      <![CDATA[<p>Sometimes an interesting opportunity presents itself, but your first instinct is to say "no". </p>

<p>Resist that instinct.</p>

<p>Maybe there's a chance to work on a project that seems really cool, but you're unsure if you have the technical chops to pull it off. Maybe there's an opportunity to speak at a conference but the idea of getting on stage in front of that many people is terrifying. If it really seems interesting, just say yes. You'd be surprised how much to can figure out once you have to do it.</p>

<p>Often the anticipation makes these interesting opportunities makes them seem scarier than they actually are. Scariness might even be a good sign that something is worth trying. Pushing yourself like this is a great way to build confidence, making the next big scary/interesting thing that much easier to do.</p>

<p>In a way, this advice is a good partner to <a href="../posts/figure-out-what-doesnt-matter">figuring out what doesn't matter</a>. You say "no" to things so that you have room to say "yes" to the right things. So say "yes" to the interesting things, you'll be happier you did.</p>
]]>
    </content>
    
  </entry>
  
  <entry>
    <title>Tend Towards Action</title>
    <link href="https://dontbreakprod.com/posts/tend-towards-action" rel="alternate" type="text/html" title="Tend Towards Action" />
    <id>https://dontbreakprod.com/posts/tend-towards-action</id>
    <published>2025-02-25T14:29:00-06:00</published>
    <updated>2025-02-25T14:29:00-06:00</updated>
    <author>
      <name>Don't Break Prod</name>
    </author>
    <content type="html">
      <![CDATA[<p>Let's say your team is having trouble with noisy alerts. Noticing this, you post a Slack message to your team channel saying "Hey, our alerts have been really noisy lately, we should clean those up!".  You receive a lot of agreeing emojis and feel good that your team is with you.</p>

<p>But still nothing is being done about the noisy alerts.</p>

<p>A more active response to this problem could be picking an alert, trying to improve it, and sharing the change with the team as a first step in fixing things. If you don't have the capacity to do the work yourself you can still tend towards action by creating a ticket with a detailed description and working with the right people to get it prioritized.</p>

<p>This also applies to how you might reply to other people's requests. If someone asks to meet with you on Thursday and your response is "Sorry I'm busy on Thursday", you have to go through another cycle of that person guessing a new time you might be free. A tendency toward action in this situation might be to response with "Sorry, Thursday doesn't work for me. How about Friday at 3:00?".</p>

<p>Pay close attention to your responses to problems and make sure that your actions move things forward.</p>
]]>
    </content>
    
  </entry>
  
  <entry>
    <title>Learn How To Deal With Gumption Traps</title>
    <link href="https://dontbreakprod.com/posts/learn-how-to-deal-with-gumption-traps" rel="alternate" type="text/html" title="Learn How To Deal With Gumption Traps" />
    <id>https://dontbreakprod.com/posts/learn-how-to-deal-with-gumption-traps</id>
    <published>2025-02-20T11:02:00-06:00</published>
    <updated>2025-02-20T11:02:00-06:00</updated>
    <author>
      <name>Don't Break Prod</name>
    </author>
    <content type="html">
      <![CDATA[<p>I first heard the term "gumption trap" in the book Zen and the Art of Motorcycle Maintenance (which is only superficially about motorcycle maintenance). The author talks about reassembling a bike only to realize that you've left a part out and how your energy is just drained knowing you'll have to redo everything.</p>

<p>Gumption traps are those little demoralizing problems that stand in the way of your actual goal; the one person who can answer your question is current on vacation, your dev environment is messed up in some way, CI is broken. Things like this can completely sap the momentum you have when trying to solve problems. Sometimes gumption traps come in the form of "hang ups", personal views that can stand in your way; "this is a stupid language to build this in", "I should be smart enough to figure this out quickly", "If this legacy code wasn't such a mess, this would be easy".</p>

<p>So how do you prevent these things from completely derailing your work? The simple answer is to build more gumption, but it's not an easy answer. Sometimes you'll need to step away from a problem for a bit and regain perspective. Sometimes you'll need work to come to peace with things about your system (or yourself) that just can't be changed right now. Sometimes you'll just need to focus on the big picture and recognize that all these annoying stumbling blocks are just part of getting non-trivial work done.</p>

<p>Honestly, there's no easy solution to gumption traps, but being aware of them can help and building gumption is one of the most useful things you can do as a developer.</p>
]]>
    </content>
    
  </entry>
  
  <entry>
    <title>Pay Down Process Debt</title>
    <link href="https://dontbreakprod.com/posts/pay-down-process-debt" rel="alternate" type="text/html" title="Pay Down Process Debt" />
    <id>https://dontbreakprod.com/posts/pay-down-process-debt</id>
    <published>2025-02-13T10:51:00-06:00</published>
    <updated>2025-02-13T10:51:00-06:00</updated>
    <author>
      <name>Don't Break Prod</name>
    </author>
    <content type="html">
      <![CDATA[<p>The concept of "tech debt" is all too familiar to most engineers. You make sub-optimal technical trade offs in order to get some other benefit. There are many situations where this makes sense; you skip addressing some edge cases to hit a tight deadline. But like financial debt, while it can be advantageous to take on, it does need to be paid back. </p>

<p>"Process debt" is similar. It involves working in ways that involve trade offs that benefit present needs. One of the most common artifacts of process debt is recurring meetings. Someone may have set up a frequent recurring meeting when high bandwidth communication was important for a certain stage of a project, but nobody ever thought to cancel the meeting once that need was no longer there. Don't just keep that meeting on your calendar out of momentum.</p>

<p>Process debt can also come from responses to past problems. Perhaps after a streak of bad deploys, your team instituted a rule that no code could go out until a manager approved the PR. Maybe this rule is still helping, maybe it isn't. The important thing is to revisit and evaluate the costs and benefits of this policy. Rules don't just exist to be followed, they need to serve the team.</p>

<p>Make sure you're always paying off process debt by questioning and evaluating if your processes are still serving the team.  </p>
]]>
    </content>
    
  </entry>
  
  <entry>
    <title>Figure Out What Doesn&#39;t Matter</title>
    <link href="https://dontbreakprod.com/posts/figure-out-what-doesnt-matter" rel="alternate" type="text/html" title="Figure Out What Doesn&#39;t Matter" />
    <id>https://dontbreakprod.com/posts/figure-out-what-doesnt-matter</id>
    <published>2025-02-06T10:42:00-06:00</published>
    <updated>2025-02-06T10:42:00-06:00</updated>
    <author>
      <name>Don't Break Prod</name>
    </author>
    <content type="html">
      <![CDATA[<p>The best way to get useful stuff done is to not do other things. Particularly other things that aren't useful.</p>

<p>'No' is an important word for anyone trying to accomplish anything. At work (and in many other parts of life) there will be no end to the things you're asked to do. The only way to really move important things forward is to determine what isn't important and deprioritize it (note: "deprioritize" is typically just a nice way of saying "Nope, I'm not going to do that").</p>

<p>How do you figure out what matters and what doesn't? Look at what the goals are. If you're working on a really tight deadline, maybe now is not the time to introduce a <a href="../posts/embrace-linters">linter</a> to your large, aging codebase (even if linting is a good idea!).</p>

<p>In general, make sure you understand what your organization values and what you value. If you're working hard on a task that doesn't align with either of those things, think hard about whether or not it's the best use of your time right now.</p>
]]>
    </content>
    
  </entry>
  
  <entry>
    <title>Give People Something To Disagree With</title>
    <link href="https://dontbreakprod.com/posts/give-people-something-to-disagree-with" rel="alternate" type="text/html" title="Give People Something To Disagree With" />
    <id>https://dontbreakprod.com/posts/give-people-something-to-disagree-with</id>
    <published>2025-01-28T13:51:00-06:00</published>
    <updated>2025-01-28T13:51:00-06:00</updated>
    <author>
      <name>Don't Break Prod</name>
    </author>
    <content type="html">
      <![CDATA[<p>Or agree with!</p>

<p>Often when trying to come up with a plan for a complex problem groups can get stuck in the stage of tossing out ideas. It's great to spend time doing this, discussing the pros and cons of different approaches, but at some point you need an agreed upon plan and start executing.</p>

<p>A good way to get to the point where you have an actionable plan is to just clearly state one as a starting point. </p>

<p>For example, if the issue is "We need to adjust our latency monitors to be more actionable" you can come back with "Ok, at the end of the week I'm going to set the monitors to page on an average latency over 800ms unless there are any issues with that".</p>

<p>The point isn't to hold your ground and insist on your plan being the final plan, but to establish a default plan that will be executed on unless people make other suggestions. This changes the thinking from ideating about possible solutions to refining an existing solution which feels more tangible and can encourage more timely feedback (because you've established a deadline for when the default action will take place). </p>

<p>It's easier to discuss adjustments to an established plan than to come up with a new one from scratch, so just start with something reasonable and use as a starting point to get things going.</p>
]]>
    </content>
    
  </entry>
  
  <entry>
    <title>Get Good At Learning</title>
    <link href="https://dontbreakprod.com/posts/get-good-at-learning" rel="alternate" type="text/html" title="Get Good At Learning" />
    <id>https://dontbreakprod.com/posts/get-good-at-learning</id>
    <published>2025-01-22T11:06:00-06:00</published>
    <updated>2025-01-22T11:06:00-06:00</updated>
    <author>
      <name>Don't Break Prod</name>
    </author>
    <content type="html">
      <![CDATA[<p>When I think about the most impressive and impactful engineers I've worked with the most common trait they share is their ability to learn. It's not just that they have deep technical knowledge in useful areas, though they often do, it's that when presented with a problem in a new area they're able to approach it and gain enough understanding to come up with a good solution.</p>

<p>So how do you get good at learning? While this is a huge topic that fills entire academic disciplines there are some basic things you can do. When approaching an unfamiliar problem or codebase you can approach it <a href="../posts/debug-like-a-scientist">like a scientist</a>; take notes,  make hypotheses, test them.</p>

<p>Get good at forming questions and use what you already know to compare and contrast with the area you're learning about. If you're trying to better understand NoSQL databases, think about what you know about traditional SQL databases and figure out what is the same and what is different. Use coworkers, online resources, or even chatting with AI agents to confirm your understanding of these new concepts.  </p>

<p>This is where learning becomes a virtuous cycle. The more you learn, the more information you have to use as a basis for analogy and contrast.</p>

<p>By it's nature, software development involves encountering a lot of novelty through unique problems and ever-evolving technologies. Being able to approach a new system and learn enough to make good decisions about it is the foundational skill of the field.</p>
]]>
    </content>
    
  </entry>
  
  <entry>
    <title>Empowering Others Is Impactful</title>
    <link href="https://dontbreakprod.com/posts/empowering-others-is-impactful" rel="alternate" type="text/html" title="Empowering Others Is Impactful" />
    <id>https://dontbreakprod.com/posts/empowering-others-is-impactful</id>
    <published>2025-01-14T13:46:00-06:00</published>
    <updated>2025-01-14T13:46:00-06:00</updated>
    <author>
      <name>Don't Break Prod</name>
    </author>
    <content type="html">
      <![CDATA[<p>Your job is to be impactful. Not produce code. Not close tickets. Not put in hours. To create impact on what ever is important in your organization.</p>

<p>There is only so much any individual can do with their time to create impact. It helps to prioritize well, but you're only one person. At some point to best way to increase your impact is to make others better.</p>

<p>This can be done in many ways. You can <a href="../posts/build-tools-when-you-solve-problems">build tools</a> that make it faster for your team members to solve common problems. You can write documentation and playbooks to remove knowledge silos. </p>

<p>Perhaps the most effective way to empower others is to help them grow. This can be as basic as sitting down to work through a problem with a coworker or as involved as formally mentoring someone throughout their career. Especially as you become more senior, more and more of your time should be spent making others better. It's the only way to scale your impact beyond your limitations as an individual.</p>
]]>
    </content>
    
  </entry>
  
  <entry>
    <title>Keep Up With the Industry, At Least a Little</title>
    <link href="https://dontbreakprod.com/posts/keep-up-with-the-industry-at-least-a-little" rel="alternate" type="text/html" title="Keep Up With the Industry, At Least a Little" />
    <id>https://dontbreakprod.com/posts/keep-up-with-the-industry-at-least-a-little</id>
    <published>2025-01-08T11:26:00-06:00</published>
    <updated>2025-01-08T11:26:00-06:00</updated>
    <author>
      <name>Don't Break Prod</name>
    </author>
    <content type="html">
      <![CDATA[<p>You should know a little bit about whats going on in the tech industry. You don't have to obsessively follow hundreds of blogs or know every nuance of drama in each programming language community, but at least have an awareness of the broad strokes.</p>

<p>Know what industry trends people are thinking about (AI? Crypto? Whatever is happening now that makes those things look dated?). These things shape the way your organization directs itself and having a general awareness of them is useful when they come up. If you have specific languages, frameworks, or tools that you work with frequently or just enjoy, it can be helpful to know what changes are being made and what new features are coming out.</p>

<p>Find a way to stay up to date that works for you. Maybe it's just looking at <a href="https://news.ycombinator.com/">Hacker News</a> while you drink your morning coffee. Maybe you've found a good digest newsletter that you like. Find something that works for you. Don't feel like you have to obsess over minutia, just keep a sense of what's going on.</p>
]]>
    </content>
    
  </entry>
  
  <entry>
    <title>Be Unavailable Sometimes</title>
    <link href="https://dontbreakprod.com/posts/be-unavailable-sometimes" rel="alternate" type="text/html" title="Be Unavailable Sometimes" />
    <id>https://dontbreakprod.com/posts/be-unavailable-sometimes</id>
    <published>2024-12-18T15:22:00-06:00</published>
    <updated>2024-12-18T15:22:00-06:00</updated>
    <author>
      <name>Don't Break Prod</name>
    </author>
    <content type="html">
      <![CDATA[<p>This is similar, but not quite the same as <a href="../posts/when-youre-on-vacation-be-on-vacation">really being on vacation when you're on vacation</a>. Being unavailable means that during your normal work week there are times when you won't be providing a quick response. And it's important to enforce this.</p>

<p>Many have us have come to expect that when we want information or an answer we should be able to get it almost immediately. With email and Slack and other means of communication on everybody's phones at all times nobody ever has to be out of reach. These can be great tools but their existence means that you need to set your own boundaries.</p>

<p>Especially as a software engineer you need chunks of uninterrupted time to get things done. It's more than ok, it's critical to be able to put up a Slack status that says "Slow to respond, coding" if you actually want to get non-trivial work done. It's ok to not respond to non-emergency after-hours messages until the next day. Reasonable boundaries like this encourage better project planning that can't be held up by adhoc needs, plus it sets a much more reasonable working culture. This can be especially important for those who work from home as the lines between being "at work" and not can be blurry.</p>

<p>Obviously if you are on call or a real emergency pops up, making yourself available is important. But set your boundaries and do your best to hold them. Be unavailable. Sometimes.</p>
]]>
    </content>
    
  </entry>
  
  <entry>
    <title>Sell Yourself</title>
    <link href="https://dontbreakprod.com/posts/sell-yourself" rel="alternate" type="text/html" title="Sell Yourself" />
    <id>https://dontbreakprod.com/posts/sell-yourself</id>
    <published>2024-12-10T17:17:00-06:00</published>
    <updated>2024-12-10T17:17:00-06:00</updated>
    <author>
      <name>Don't Break Prod</name>
    </author>
    <content type="html">
      <![CDATA[<p>It's not enough to be just be good. Other people need to know how good you are.</p>

<p>Whether you like it or not, an important part of getting recognition for your work (and promotions!) is making sure other people know about what you've accomplished. You can't just rely on the quality of your work speaking for itself or expect others to just see how much you've done.</p>

<p>This needs to be communicated both directly to individuals (i.e. explicitly listing out your wins to your manager during a performance review) and broadly to your team. This broad communication can be as simple as posting a recent win in a public Slack channel or as formal as presenting a project to at an engineering team all-hands. The more senior you are, the more important it is to expand your audience and scope of impact.</p>

<p>While it can be tempting to write off self-promotion as bragging, it's important to remember that you understand your accomplishments better than anyone else and communicating is as much a part of your job as coding, especially as you get further on in your career.</p>
]]>
    </content>
    
  </entry>
  
  <entry>
    <title>Be Present When Things Go Wrong</title>
    <link href="https://dontbreakprod.com/posts/be-present-when-things-go-wrong" rel="alternate" type="text/html" title="Be Present When Things Go Wrong" />
    <id>https://dontbreakprod.com/posts/be-present-when-things-go-wrong</id>
    <published>2024-10-10T14:49:00-05:00</published>
    <updated>2024-10-10T14:49:00-05:00</updated>
    <author>
      <name>Don't Break Prod</name>
    </author>
    <content type="html">
      <![CDATA[<p>Production is down! All the alerts are going off! Everything is on fire!</p>

<p>But at least it's not your fault, so you might as well just have a pint and wait for this to all blow over, right?</p>

<p>You could. Or you could use this disaster as an opportunity to polish your incident handling skills. Figure out where the problem is being discussed. Understand the actions being taken to understand and solve it. Get involved. Maybe this means gathering information. Maybe people need help communicating and organizing efforts. Maybe you know something about the system in question that will speed things up or you can help push a fix faster.</p>

<p>Your involvement can be anything from taking command when you have the context to help mitigate the issue faster to taking notes so that the details are available for the RCA.</p>

<p>Never waste a good disaster.</p>
]]>
    </content>
    
  </entry>
  
  <entry>
    <title>Build Tools When You Solve Problems</title>
    <link href="https://dontbreakprod.com/posts/build-tools-when-you-solve-problems" rel="alternate" type="text/html" title="Build Tools When You Solve Problems" />
    <id>https://dontbreakprod.com/posts/build-tools-when-you-solve-problems</id>
    <published>2024-08-27T11:30:00-05:00</published>
    <updated>2024-08-27T11:30:00-05:00</updated>
    <author>
      <name>Don't Break Prod</name>
    </author>
    <content type="html">
      <![CDATA[<p>Often as you are building or fixing something you'll find yourself doing things that are either repetitive or generalizable.</p>

<p>A repetitive task might be something like updating a value on a few thousand records in your database or hitting and endpoint with very specific parameters over and over again. Something generalizable might a script that updates a specific customer's billing date, but if you just change it to accept a few parameters you could update any customer's billing date with it.</p>

<p>If you see something repetitive, automate it. If you see something generalizable, generalize it (and then maybe automate it). This way you can take the scripts and ad hoc tools you make to solve your specific problem and turn them into tools that other people can leverage. </p>

<p>This can be as simple as sharing some cleaned up scripts in a team folder or as complex as building new standalone data exploration and manipulation tools based on your initial work. Always make sure that your making the right time investment/payoff decisions when deciding how polished your new tools should be.</p>

<p>With just a little extra thoughtfulness you can turn your one-off work into something that has even greater impact.</p>
]]>
    </content>
    
  </entry>
  
  <entry>
    <title>When You&#39;re On Vacation, Be On Vacation</title>
    <link href="https://dontbreakprod.com/posts/when-youre-on-vacation-be-on-vacation" rel="alternate" type="text/html" title="When You&#39;re On Vacation, Be On Vacation" />
    <id>https://dontbreakprod.com/posts/when-youre-on-vacation-be-on-vacation</id>
    <published>2024-06-19T13:17:00-05:00</published>
    <updated>2024-06-19T13:17:00-05:00</updated>
    <author>
      <name>Don't Break Prod</name>
    </author>
    <content type="html">
      <![CDATA[<p>This goes for being home sick, being on parental leave, or any other situation where you are officially "not at work".</p>

<p>For many people it can be hard to fully disconnect when you are taking time off. With Slack and email and other things always there, it can be tempting to "check in" or answer a quick message. Often then comes from the well meaning motivation to be helpful to your coworkers.</p>

<p>But when you're taking time off, you should fully take time off. Time off is valuable. It helps you recharge and give focus to parts of your life outside of work. It's an important tool against burn out and something your are entitled to as an employee. Mostly away from work is not the same as fully away from work.</p>

<p>Also, it is good for an organization to learn to work around bottlenecks. If things grind to a halt because you aren't checking Slack for a few days, that is a bug in the system and should be fixed. Any organization that cannot function well with one person missing is not a healthy organization. By being truly unavailable, you help the organization discover and correct these points of failure.</p>

<p>Never feel guilty for taking off time that is yours. Being truly on vacation when you're on vacation is ultimately best for you and the organization.</p>
]]>
    </content>
    
  </entry>
  
  <entry>
    <title>Don&#39;t Over-Optimize Your Tools</title>
    <link href="https://dontbreakprod.com/posts/dont-over-optimize-your-tools" rel="alternate" type="text/html" title="Don&#39;t Over-Optimize Your Tools" />
    <id>https://dontbreakprod.com/posts/dont-over-optimize-your-tools</id>
    <published>2024-03-05T15:13:00-06:00</published>
    <updated>2024-03-05T15:13:00-06:00</updated>
    <author>
      <name>Don't Break Prod</name>
    </author>
    <content type="html">
      <![CDATA[<p>Maybe you know someone who wields their code editor like a magic wand. Maybe their prowess with the terminal makes it seem like they speak directly to the computer. Maybe they have a mechanical keyboard that looks (and sounds) like it could never type a bug. Maybe this person is you.</p>

<p>Choosing good tools and developing skill with them is absolutely useful, but don't lose site of what the tools are for; building good software. At some point optimizing your Vim config or buying another mechanical keyboard isn't a productivity boost, it's just recreational. And that's fine!</p>

<p>There's nothing wrong with finding enjoyment in tweaking your setup. If you spend a lot of time using these tools it's nice to enjoy and make the most of what you use. Just learn to recognize recognize the difference between legitimate productivity improvements and recreational enthusiast improvements. Try to spend time on things that help you reason about your code over changes to how you write your code.</p>

<p>If you love the sound of Cherry Blue switches typing into a fully customized Vim setup running on Arch Linux, more power to you. Just don't confuse customizing your window manager with getting more done.</p>
]]>
    </content>
    
  </entry>
  
  <entry>
    <title>Your Job Is To Solve Problems, Not Write Code</title>
    <link href="https://dontbreakprod.com/posts/your-job-is-to-solve-problems-not-write-code" rel="alternate" type="text/html" title="Your Job Is To Solve Problems, Not Write Code" />
    <id>https://dontbreakprod.com/posts/your-job-is-to-solve-problems-not-write-code</id>
    <published>2024-02-27T13:07:00-06:00</published>
    <updated>2024-02-27T13:07:00-06:00</updated>
    <author>
      <name>Don't Break Prod</name>
    </author>
    <content type="html">
      <![CDATA[<p>Given that you are a software engineer it might be easy to think that your job is to write code.</p>

<p>No.</p>

<p>Your job is to solve problems. Understanding software is one of the skills you use when solving problems.</p>

<p>In a lot of situations, by the time a problem gets to you writing code might be the best way to solve a problem. A new feature needs to be built. A bug needs fixing. But sometimes if you take the time to understand the problem, not just the ask, you can solve the problem in other ways. </p>

<p>Maybe rather than building a custom internal tool for data, you can show people how to use off the shelf tools to query for what they need.  Maybe the API doesn't need a new endpoint, it just needs better documentation. Maybe the problem isn't as important as previously thought and you don't need to do anything.</p>

<p>Remember, all the code you write has to be maintained, so think about the best way to solve the problem before just building what is asked.</p>
]]>
    </content>
    
  </entry>
  
  <entry>
    <title>Nobody Cares About Your Career As Much As You Do</title>
    <link href="https://dontbreakprod.com/posts/nobody-cares-about-your-career-as-much-as-you-do" rel="alternate" type="text/html" title="Nobody Cares About Your Career As Much As You Do" />
    <id>https://dontbreakprod.com/posts/nobody-cares-about-your-career-as-much-as-you-do</id>
    <published>2024-02-07T17:15:00-06:00</published>
    <updated>2024-02-07T17:15:00-06:00</updated>
    <author>
      <name>Don't Break Prod</name>
    </author>
    <content type="html">
      <![CDATA[<p>As you work on growing your career you will hopefully have many people helping you reach that next level, maybe a supportive manager or a mentor. But none of these people care about your career as much as you do. Nor should they.</p>

<p>Helping employees advance is an important part of a manager's job, but it's not the only thing on their plate. If you really care about making progress you have to help people help you. If you're up for a raise or a promotion, do the research on what your company's leveling rubric looks like and provide your manager good supporting work to build your promo packet (you're <a href="./write-down-your-accomplishments">writing down your accomplishments</a>, right?). Look for projects that interest you and ask for them, don't wait for someone to recommend you for them.</p>

<p>In a healthy work environment, you'll have people supporting your growth, but don't expect any of these people to work harder than you do for your advancement. You have to care the most.</p>
]]>
    </content>
    
  </entry>
  
  <entry>
    <title>If You See Something, Say Something</title>
    <link href="https://dontbreakprod.com/posts/if-you-see-something-say-something" rel="alternate" type="text/html" title="If You See Something, Say Something" />
    <id>https://dontbreakprod.com/posts/if-you-see-something-say-something</id>
    <published>2024-01-31T14:13:00-06:00</published>
    <updated>2024-01-31T14:13:00-06:00</updated>
    <author>
      <name>Don't Break Prod</name>
    </author>
    <content type="html">
      <![CDATA[<p>Don't be afraid to speak up when something just seems... off.</p>

<p>Maybe some metrics from a team dashboard look weird, maybe there's a change in a PR that you might not fully understand but feels like it might have bad consequences, maybe there's just some long standing code that looks like it can't possibly be right (but it must be if it's been in here for so long, right?). Often it's easy to assume that you must be misunderstanding things because if something was wrong someone else would have surely noticed.</p>

<p>Don't count on that.</p>

<p>Assume that everybody else is busy on other things and that maybe you're just the first person to look close enough notice that something isn't quite right. Maybe you really did misunderstand things. That's fine. Now you've learned something. But maybe you just caught something early before it became a big problem.</p>
]]>
    </content>
    
  </entry>
  
  <entry>
    <title>Spend Your Career Capital</title>
    <link href="https://dontbreakprod.com/posts/spend-your-career-capital" rel="alternate" type="text/html" title="Spend Your Career Capital" />
    <id>https://dontbreakprod.com/posts/spend-your-career-capital</id>
    <published>2024-01-26T10:19:00-06:00</published>
    <updated>2024-01-26T10:19:00-06:00</updated>
    <author>
      <name>Don't Break Prod</name>
    </author>
    <content type="html">
      <![CDATA[<p>As you progress in your career, becoming a stronger engineer and delivering more value you're going to build up trust and goodwill with the people you work with, both leadership and peers. This is your career capital. Now you need to figure out what to do with it.</p>

<p>The more trusted you are, the more you are responsible for setting your own path. Shifting from the early career mindset of needing to wait for directions or stay on a specific path can be a tough transition for some, so it's worth taking the time to think about what you value and how you want to make use of your career capital to get it.</p>

<p>Spending this capital can be in service of directing your career into new domains or teams. It can mean advocating for technologies or processes or culture within your organization. It can also mean enforcing the work/life balance you want. The important thing is recognizing what you value and understanding how to use your career capital to pursue it. </p>
]]>
    </content>
    
  </entry>
  
  <entry>
    <title>Make Small Changes</title>
    <link href="https://dontbreakprod.com/posts/make-small-changes" rel="alternate" type="text/html" title="Make Small Changes" />
    <id>https://dontbreakprod.com/posts/make-small-changes</id>
    <published>2024-01-16T15:23:00-06:00</published>
    <updated>2024-01-16T15:23:00-06:00</updated>
    <author>
      <name>Don't Break Prod</name>
    </author>
    <content type="html">
      <![CDATA[<p>When working on a feature or bug fix it can be tempting to make all your changes at once (this often means everything going out in a single pull request). This can be appealing as it lets you see the full end to end solution locally before you release anything, but it has it's disadvantages.</p>

<p>First, it's much harder for others to review large changes. By breaking up your work into smaller, logical chunks you increase your chances of getting good feedback from a reviewer who really understands what they're looking at.</p>

<p>Also it's easier for you to see the affect of your changes. When you push out a large release it can be difficult to track down where new bugs come from, but with small, incremental changes you can better isolate where the new behavior might be coming from. </p>

<p>Finally, by forcing yourself to subdivide your work into releasable pieces you create a habit of making sure things work end to end multiple times along the way, rather than only being able to test a working system when you think you're complete.</p>
]]>
    </content>
    
  </entry>
  
  <entry>
    <title>Documentation Is a Culture, Not a Task</title>
    <link href="https://dontbreakprod.com/posts/documentation-is-a-culture-not-a-task" rel="alternate" type="text/html" title="Documentation Is a Culture, Not a Task" />
    <id>https://dontbreakprod.com/posts/documentation-is-a-culture-not-a-task</id>
    <published>2023-12-12T16:17:00-06:00</published>
    <updated>2023-12-12T16:17:00-06:00</updated>
    <author>
      <name>Don't Break Prod</name>
    </author>
    <content type="html">
      <![CDATA[<p>Often one of the last steps of a major project is "Write Documentation". This is necessary, but certainly not sufficient for any remotely complex project. Documentation is important. People not involved in the implementation need to understand the system. People who already understand forget or move on. </p>

<p>But documentation naturally decays. It always needs to be kept in sync with the reality of the system. The only way this happens is by developing a culture on your team that prioritizes updating documentation as part of the work. It's easy to let this slip because it takes time to do and work can feel "done" without it. But if good documentation is important to your team, you need to find a way to make it part of the process. Maybe this is through code reviews or a CI check or someone on the team that just gets on everybody's case if they don't do it until everybody does it naturally. Whatever it is, it has to become part of what your team values or you will never get the full value of your documentation.</p>
]]>
    </content>
    
  </entry>
  
  <entry>
    <title>Take on Projects That Push You</title>
    <link href="https://dontbreakprod.com/posts/take-on-projects-that-push-you" rel="alternate" type="text/html" title="Take on Projects That Push You" />
    <id>https://dontbreakprod.com/posts/take-on-projects-that-push-you</id>
    <published>2023-12-04T15:42:00-06:00</published>
    <updated>2023-12-04T15:42:00-06:00</updated>
    <author>
      <name>Don't Break Prod</name>
    </author>
    <content type="html">
      <![CDATA[<p>When looking for the next thing to work on it can be easy to stay in your comfort zone, working in areas of the codebase that you're comfortable in or with technologies that you know well. Knowing that even the simplest projects can have hidden difficulties it can be tempting to stay in areas that feel safe, but if you always do this you'll never grow.</p>

<p>It's ok to take on a project where you don't have a solid grasp on every skill that will be needed to complete it. In fact, it's important to your professional development that you do this. All those people who seem to know things that you don't know had to just try new things and learn about them. There's no better forcing function for learning than needing a skill for a project.</p>

<p>Don't go overboard with this and know when a task it's well beyond your capabilities (within the given timeline) and know how to balance out growth and productivity for the larger needs of the project, but check in on your past work every once in a while to make sure that you've been doing some things that push your abilities.</p>
]]>
    </content>
    
  </entry>
  
  <entry>
    <title>Don&#39;t Launch on Friday</title>
    <link href="https://dontbreakprod.com/posts/dont-launch-on-friday" rel="alternate" type="text/html" title="Don&#39;t Launch on Friday" />
    <id>https://dontbreakprod.com/posts/dont-launch-on-friday</id>
    <published>2023-09-26T11:51:00-05:00</published>
    <updated>2023-09-26T11:51:00-05:00</updated>
    <author>
      <name>Don't Break Prod</name>
    </author>
    <content type="html">
      <![CDATA[<p>Schedules have a bad habit of starting on Mondays and wrapping up at the end of the week. Everybody wants to get things done before going into the weekend. The problem is that if you deploy a new change or launch a new feature on Friday (or even worse, Friday afternoon) anything that goes wrong wrecks your weekend. It's likely there will be fewer people around to help at these times, too.</p>

<p>Try offsetting your schedule so that you can start and end things midweek and give yourself plenty of time to monitor the results of any new changes you introduce into your systems. Have a good weekend!</p>
]]>
    </content>
    
  </entry>
  
  <entry>
    <title>Overcommunicate</title>
    <link href="https://dontbreakprod.com/posts/overcommunicate" rel="alternate" type="text/html" title="Overcommunicate" />
    <id>https://dontbreakprod.com/posts/overcommunicate</id>
    <published>2023-07-18T14:10:00-05:00</published>
    <updated>2023-07-18T14:10:00-05:00</updated>
    <author>
      <name>Don't Break Prod</name>
    </author>
    <content type="html">
      <![CDATA[<p>When working on a team, the more everybody understands what you're thinking and what you're doing the better. Even when your thoughts seem obvious, there's value in saying them out loud (or the the chat equivalent of out loud). This overcommunication has several benefits.</p>

<p>First, it provides system visibility. If you're launching something big, post a message in a relevant Slack room saying "FYI: Big change in XYZ system going out in 10 minutes!" This way if someone is going to have a conflict or wants to wait because a demo is about to happen they can speak up. Also it means more people are aware of a the change so any issues might be caught faster.</p>

<p>Overcommunicating also provides opportunity for discussion and learning. When you make a point to bring up something in public, it forces you to organize your thoughts clearly and put a stance on a statement. Once you have a clear stance, stated publicly, you can have a real discussion on things rather than just assuming everybody is generally on the same page. Writing design proposals before starting large chunks of work is a great example of this type of discussion-encouraging communication. </p>

<p>Finally, overcommunicating lets people know what you're up to and increases your visibility in the group. This also lets people know what's being worked on and invites collaboration (don't assume everybody has read or remembers all the passive communication like documentation and roadmaps). </p>

<p>You don't want to become noise, make sure you're saying useful things to the right audiences, but particularly in remote situations where a lot of communication happens though text, erring on the side of overcommuncation can be very valuable.</p>

<p>Bonus idea! Automate you're overcommunication by having bots post updates to channels on things like deploys and system status changes.</p>
]]>
    </content>
    
  </entry>
  
  <entry>
    <title>Embrace Linters</title>
    <link href="https://dontbreakprod.com/posts/embrace-linters" rel="alternate" type="text/html" title="Embrace Linters" />
    <id>https://dontbreakprod.com/posts/embrace-linters</id>
    <published>2023-06-06T13:34:00-05:00</published>
    <updated>2023-06-06T13:34:00-05:00</updated>
    <author>
      <name>Don't Break Prod</name>
    </author>
    <content type="html">
      <![CDATA[<p>You know that person on your team who does a great job of making sure everybody's code confirms to conventions (you have conventions, right?) or catches the gotchas in your code that always seem to pop up? That person needs to be replaced by a robot.</p>

<p>Linters are tools that you can run as part of your development and build process that analyze your code to catch stylistic or programmatic issues. Some popular linters are <a href="https://pkg.go.dev/cmd/gofmt">gofmt</a> (for Go) or <a href="https://rubocop.org/">Rubocop</a> (for Ruby).</p>

<p>Stylistic linters are valuable because they take the human element out of maintaining conventions. It can be easy to tell a code reviewer that the capitalization or indentation choice you made is fine and you don't want to go through another review cycle just do fix it. You'll clean it up next time, you swear. With a linter, you can catch this during development just by running a script before pushing code. You can also have your build block on linting issues. Then it's CIs fault, not your teammates!</p>

<p>Using static analysis (looking at code without executing it) is also a great way to maintain the health of your codebase. You can check for patterns like unhandled errors. You can put a cap on the number of soon-to-be-deprecated methods in the codebase. This can be a big help with large refactors or dependency updates.</p>

<p>Linters are great for offloading a lot of the things that we know we should do, but aren't always top of mind as we're writing code.</p>
]]>
    </content>
    
  </entry>
  
  <entry>
    <title>Focus On One Thing At a Time</title>
    <link href="https://dontbreakprod.com/posts/focus-on-one-thing-at-a-time" rel="alternate" type="text/html" title="Focus On One Thing At a Time" />
    <id>https://dontbreakprod.com/posts/focus-on-one-thing-at-a-time</id>
    <published>2023-05-09T16:33:00-05:00</published>
    <updated>2023-05-09T16:33:00-05:00</updated>
    <author>
      <name>Don't Break Prod</name>
    </author>
    <content type="html">
      <![CDATA[<p>This one can be hard. It seems like there are always multiple things pulling us in every direction and it can be tempting just hop from one thing to another and feel like you're getting a lot done. But you're not.</p>

<p>Trying to do a bunch of things at once is a good way to make a little progress on lots of things, but not really get anything done (or done well). The best way to handle the feeling that you need to be working on a bunch of tasks is to prioritize and schedule. </p>

<p>Work on task 1 for the next hour and then commit to switching to task 2. That way you're not neglecting task 2, you have a plan for it, so you don't need to have it hanging over your head as you're working on task 1.</p>

<p>Don't go for the illusion of productivity. Make sure you're actually getting the important things done. And done right.</p>
]]>
    </content>
    
  </entry>
  
  <entry>
    <title>Celebrate Small Wins</title>
    <link href="https://dontbreakprod.com/posts/celebrate-small-wins" rel="alternate" type="text/html" title="Celebrate Small Wins" />
    <id>https://dontbreakprod.com/posts/celebrate-small-wins</id>
    <published>2023-03-21T15:15:00-05:00</published>
    <updated>2023-03-21T15:15:00-05:00</updated>
    <author>
      <name>Don't Break Prod</name>
    </author>
    <content type="html">
      <![CDATA[<p>Writing software is full of frustrations. Almost by its very nature you'll find yourself in situations where you don't understand things much more often than you have that feeling of mastery over a system or problem. The only way to continue working through these situations of uncertainty is the have the confidence that eventually you'll be able to figure it out.</p>

<p>Our lows are often more salient (and memorable) than our highs so it's important to consciously focus on your wins. Make an effort to explicitly acknowledge and <a href="../posts/write-down-your-accomplishments">write down</a> your accomplishments. You'll need these as evidence to yourself (and others) that you can get through hard problems and to bolster your confidence when things are frustrating. If you never focus on the wins, you'll only remember the struggles.</p>
]]>
    </content>
    
  </entry>
  
  <entry>
    <title>Don&#39;t Waste a Good Mistake</title>
    <link href="https://dontbreakprod.com/posts/dont-waste-a-good-mistake" rel="alternate" type="text/html" title="Don&#39;t Waste a Good Mistake" />
    <id>https://dontbreakprod.com/posts/dont-waste-a-good-mistake</id>
    <published>2023-02-13T10:49:00-06:00</published>
    <updated>2023-02-13T10:49:00-06:00</updated>
    <author>
      <name>Don't Break Prod</name>
    </author>
    <content type="html">
      <![CDATA[<p>You just pushed some code that really screwed things up. This is not good.</p>

<p>But it doesn't have to be all bad. While things are actively broken and you (and possibly others) are working to fix them, this is a good chance to hone your ability to problem solve under pressure. You can also learn a lot about how other people diagnose and fix problems during these times.</p>

<p>Once things are stable, you can think about why things were able to go wrong. It's almost never as simple as "you shipped some bad code". What allowed you to ship bad code? Could there be a better review process? Better testing environments? Better monitoring? Better automated testing? Many organizations perform a "root cause analysis" for major incidents to try to figure out what fundamental things could be improved in order to prevent recently occurring problems.</p>

<p>Mistakes can be expensive lessons, but they're often very valuable.</p>
]]>
    </content>
    
  </entry>
  
  <entry>
    <title>Don&#39;t Burn Out</title>
    <link href="https://dontbreakprod.com/posts/dont-burn-out" rel="alternate" type="text/html" title="Don&#39;t Burn Out" />
    <id>https://dontbreakprod.com/posts/dont-burn-out</id>
    <published>2023-01-13T15:06:00-06:00</published>
    <updated>2023-01-13T15:06:00-06:00</updated>
    <author>
      <name>Don't Break Prod</name>
    </author>
    <content type="html">
      <![CDATA[<p>There seems to be a lot of talk about burnout in the tech industry; software engineers working themselves into the ground then quitting their jobs to become yoga instructors or coffee roasters or just take a year off to try to remember why they enjoyed programming in the first place. While there is something romantic about such a grand departure from hardship, it would be even better to just avoid suffering in the first place.</p>

<p>Bad working conditions exist. Long stretches of hard work exist. Some people have more control over avoiding these hardships than others, but the point of this post is to not fetishize working yourself so hard that you have to quit what you do. Focus on finding balance in your work life rather than swinging from one extreme to the other. It won't make for as good of blog posts but your quality of life will probably be better.</p>
]]>
    </content>
    
  </entry>
  
  <entry>
    <title>Ask Questions In Public</title>
    <link href="https://dontbreakprod.com/posts/ask-questions-in-public" rel="alternate" type="text/html" title="Ask Questions In Public" />
    <id>https://dontbreakprod.com/posts/ask-questions-in-public</id>
    <published>2022-12-20T15:23:00-06:00</published>
    <updated>2022-12-20T15:23:00-06:00</updated>
    <author>
      <name>Don't Break Prod</name>
    </author>
    <content type="html">
      <![CDATA[<p>If you don't know something, there's a good chance that others don't know it too, so it can often be useful to ask questions in public situations. Make an effort to find the answer yourself (check documentation, try to solve things on your own for a bit, etc.) because this will help you ask better questions, but don't always wait until you get someone one on one before you ask the question.</p>

<p>Asking questions in public can mean many things. Maybe it's at a meeting (instead of a one on one) or a team chat channel (rather than in a private message).</p>

<p>When you ask questions in public you scale up the answer. More people benefit from the answer (and potential discussion). This can often lead to lots of people gaining new understanding and deficiencies in documentations being uncovered.</p>

<p>Asking questions in public also normalizes not knowing everything. This is especially important/impactful if you are a more senior member of your team. Nobody knows everything and it's helpful to remind others of this.</p>
]]>
    </content>
    
  </entry>
  
  <entry>
    <title>Don&#39;t Be Too Clever</title>
    <link href="https://dontbreakprod.com/posts/dont-be-too-clever" rel="alternate" type="text/html" title="Don&#39;t Be Too Clever" />
    <id>https://dontbreakprod.com/posts/dont-be-too-clever</id>
    <published>2022-12-12T22:54:00-06:00</published>
    <updated>2022-12-12T22:54:00-06:00</updated>
    <author>
      <name>Don't Break Prod</name>
    </author>
    <content type="html">
      <![CDATA[<p>As you get more comfortable with your tools (languages, frameworks, etc.) it can be tempting to come up with the cleverest solutions possible. Why wouldn't you want to use all the tricks you know?</p>

<p>Think carefully about being clever. Clever solutions can require more work to understand. Always remember that your code doesn't just need to be written. It needs to be written in a way that is easy to read and modify in the future by someone else (or you after you've forgotten exactly what you did).</p>

<p>Sometimes a clever solution is justified. Maybe it simplifies things or makes the solution substantially more efficient. But make sure you understand any tradeoffs between cleverness and clarity you may be making. Clever can be good, but clear is usually better.</p>
]]>
    </content>
    
  </entry>
  
  <entry>
    <title>Find Someone You Can Bring Half Baked Ideas To</title>
    <link href="https://dontbreakprod.com/posts/find-someone-you-can-bring-half-baked-ideas-to" rel="alternate" type="text/html" title="Find Someone You Can Bring Half Baked Ideas To" />
    <id>https://dontbreakprod.com/posts/find-someone-you-can-bring-half-baked-ideas-to</id>
    <published>2022-10-27T16:28:00-05:00</published>
    <updated>2022-10-27T16:28:00-05:00</updated>
    <author>
      <name>Don't Break Prod</name>
    </author>
    <content type="html">
      <![CDATA[<p>Following up from the previous post about <a href="./talk-to-people-that-intimidate-you">talking to people who intimidate you</a>, you should also have some people that you feel very comfortable bringing unpolished thoughts to.</p>

<p>This should be someone patient, with a talent for discussion. You should be able to bring them ideas and talk about them in a way that helps you test and evolve your thought. This person should be able to come at ideas from a different approach that you might and be honest with you but still make you feel comfortable.</p>

<p>This can be helpful when you have a bold idea that seems like it might have merit but you need some help solidifying and validating it's core ideas. This process can be similar to "<a href="https://en.wikipedia.org/wiki/Rubber_duck_debugging">rubber ducking</a>" but with a more active duck.</p>
]]>
    </content>
    
  </entry>
  
  <entry>
    <title>Talk To People That Intimidate You</title>
    <link href="https://dontbreakprod.com/posts/talk-to-people-that-intimidate-you" rel="alternate" type="text/html" title="Talk To People That Intimidate You" />
    <id>https://dontbreakprod.com/posts/talk-to-people-that-intimidate-you</id>
    <published>2022-10-20T13:50:00-05:00</published>
    <updated>2022-10-20T13:50:00-05:00</updated>
    <author>
      <name>Don't Break Prod</name>
    </author>
    <content type="html">
      <![CDATA[<p>No matter how good you are there is probably someone in your field that intimidates you to some degree. This doesn't mean you feel unsafe around them or that they are actively trying to make you feel dumb. I'm talking about people who are knowledgeable enough about the topic at hand that you know you'll need to work hard to get the most out of the interaction with them.</p>

<p>These should be people are you really respect and you know except a lot of others. Talking to these people should act as a forcing function to come into conversations prepared. If you're asking technical questions, put in the work ahead of time so you can explain clearly what you're trying to do and what you've tried. Articulate your assumptions. Anticipate questions. Read up on the technology in play so you have context for the answers.</p>

<p>Make sure you're coming in with the knowledge to get the most out of the conversation but don't use the time to try to show this person how much you know. Ask questions you actually want to know the answers to, not ones that prove you understand what you're talking about.</p>

<p>Purposely seek out these conversations with people who don't feel totally "safe" and use that mild discomfort as motivation to bring your best self to the interaction.</p>
]]>
    </content>
    
  </entry>
  
  <entry>
    <title>Debug Like a Scientist</title>
    <link href="https://dontbreakprod.com/posts/debug-like-a-scientist" rel="alternate" type="text/html" title="Debug Like a Scientist" />
    <id>https://dontbreakprod.com/posts/debug-like-a-scientist</id>
    <published>2022-10-10T14:45:00-05:00</published>
    <updated>2022-10-10T14:45:00-05:00</updated>
    <author>
      <name>Don't Break Prod</name>
    </author>
    <content type="html">
      <![CDATA[<p>When you're working on a bug your goal is to figure out why things aren't working as you'd expect them to be (and hopefully correct this issue). If the source of this issue isn't obvious it can be useful to approach your problem like a scientific discovery.</p>

<p>To avoid randomly thrashing around your codebase you should come up with a hypothesis, test it, keep notes about what you've learned, and keep refining until you understand why your code doesn't work the way. Coming up with a good hypothesis is crucial. You need to take what you know and come up with a good question and theory about the answer that will provide useful information when tested. You will likely need to take a few steps back and figure out explanations for sub-problems before you can full answer your original question. </p>

<p>You can make better hypotheses by knowing your codebase better and just getting more experience tackling bugs.</p>

<p>The most important part of testing your hypothesis isn't whether or not it was right but what you learned from it. To this end, make sure you keep a lab notebook (this can be anything from a text file where you keep notes while you're working to an actual notebook with notes and diagrams) and write down everything you learn along the way. As you explore your problem you might need new "lab equipment" to get the information you need. This could be anything from "print debugging" to building custom tools to get insights into how your program is running and the data it produces.</p>

<p>Approaching a problem in a scientific manner can be a powerful tool when faced with unknowns.</p>
]]>
    </content>
    
  </entry>
  
  <entry>
    <title>When You&#39;re Stuck, Step Away</title>
    <link href="https://dontbreakprod.com/posts/when-youre-stuck-step-away" rel="alternate" type="text/html" title="When You&#39;re Stuck, Step Away" />
    <id>https://dontbreakprod.com/posts/when-youre-stuck-step-away</id>
    <published>2022-10-03T11:27:00-05:00</published>
    <updated>2022-10-03T11:27:00-05:00</updated>
    <author>
      <name>Don't Break Prod</name>
    </author>
    <content type="html">
      <![CDATA[<p>This is simple advice that anybody doing potentially frustrating work needs to hear sometimes. And programming is most certainly "potentially frustrating work".</p>

<p>When trying to solve hard problems you need to be focused on the task at hand but sometimes this level of focus can make it easy to miss things when you feel stuck. It can be tempting to try to just "power through" these situations of stuckness but that's often a good way to waste a lot of time getting nowhere.</p>

<p>Learn to recognize when you're not making productive progress. Maybe you're just changing random things, hoping something will work. Maybe you're just staring at the same piece of code hoping something will pop out at you to make things clear. Rather than just sit there banging your head on the problem, get up, go for a walk. Get a snack. Maybe even go home for the night.</p>

<p>Just do something else. You'll be surprised how often you get some new insights just from stepping away for a bit.</p>
]]>
    </content>
    
  </entry>
  
  <entry>
    <title>Know How Things Are Going To Break</title>
    <link href="https://dontbreakprod.com/posts/know-how-things-are-going-to-break" rel="alternate" type="text/html" title="Know How Things Are Going To Break" />
    <id>https://dontbreakprod.com/posts/know-how-things-are-going-to-break</id>
    <published>2022-09-26T09:10:00-05:00</published>
    <updated>2022-09-26T09:10:00-05:00</updated>
    <author>
      <name>Don't Break Prod</name>
    </author>
    <content type="html">
      <![CDATA[<p>This is, perhaps, the evil twin of <a href="../posts/know-how-to-confirm-it-works">Know How to Confirm It Works</a>.</p>

<p>Knowing how to confirm it works (and doesn't work) is about making sure that you have the appropriate visibility into the things you launch. Knowing how things are going to break is about understanding both the tradeoffs made in your work and how usage is going to change.</p>

<p>Did you design a drop down menu that works fine with 20 or so items (nobody should really need more than 5, right?) but it's not impossible for there to be hundreds of items? That might be fine, but it should be explicitly thought about and communicated.</p>

<p>You should know what parts of your system will slow down as certain database table get bigger. You should know what tables are growing fast enough that you might need to worry about capacity issues. You should even know about parts of the code that will grow untenably complex if more features are added to the current design.</p>

<p>There will always be problems that are hard, if not impossible to forsee but spending time thinking about where you are likely to first see breakage can help you monitor these areas and get ahead before they become serious issues.</p>
]]>
    </content>
    
  </entry>
  
  <entry>
    <title>Programming Languages Are Tools, Not Identities</title>
    <link href="https://dontbreakprod.com/posts/programming-languages-are-tools-not-identities" rel="alternate" type="text/html" title="Programming Languages Are Tools, Not Identities" />
    <id>https://dontbreakprod.com/posts/programming-languages-are-tools-not-identities</id>
    <published>2022-09-19T15:27:00-05:00</published>
    <updated>2022-09-19T15:27:00-05:00</updated>
    <author>
      <name>Don't Break Prod</name>
    </author>
    <content type="html">
      <![CDATA[<p>Don't think of yourself as a Javascript Developer or a Ruby Developer or a Python developer. Think of yourself as someone who often uses one or more programming languages as a tool to solve problems.</p>

<p>You will likely have languages you prefer and will develop a sense of what languages will work better for different situations. These feelings can help you push for certain languages to be used but you won't always be able to use your favorite tools for every project. By thinking of languages as tools that you have developed informed opinions about rather than part of your core identity you make yourself much more versatile. </p>

<p>Your knowledge of your favorite language should make it easier to learn new languages. Now you can understand the new language by comparing and contrasting its paradigms with those you already know well.</p>

<p>The same goes for frameworks and other technologies.</p>
]]>
    </content>
    
  </entry>
  
  <entry>
    <title>Thank People</title>
    <link href="https://dontbreakprod.com/posts/thank-people" rel="alternate" type="text/html" title="Thank People" />
    <id>https://dontbreakprod.com/posts/thank-people</id>
    <published>2022-09-16T12:40:00-05:00</published>
    <updated>2022-09-16T12:40:00-05:00</updated>
    <author>
      <name>Don't Break Prod</name>
    </author>
    <content type="html">
      <![CDATA[<p>This is a simple one.</p>

<p>Just make sure to show people appreciation. This can be for helping you out with a problem or even just getting their part of the work done. Everybody likes to feel like their efforts are noticed and being proactive about thanking people will help you keep any eye out for people's efforts.</p>

<p>Very few people feel like they're thanked too often. Err on the side of appreciation. </p>
]]>
    </content>
    
  </entry>
  
  <entry>
    <title>Do Momentum Building Work</title>
    <link href="https://dontbreakprod.com/posts/do-momentum-building-work" rel="alternate" type="text/html" title="Do Momentum Building Work" />
    <id>https://dontbreakprod.com/posts/do-momentum-building-work</id>
    <published>2022-09-15T11:58:00-05:00</published>
    <updated>2022-09-15T11:58:00-05:00</updated>
    <author>
      <name>Don't Break Prod</name>
    </author>
    <content type="html">
      <![CDATA[<p>When you have a large project to get into it can sometimes take a lot of activation energy to really get into it. This might mean that the first part of your day gets spent trying to wrap your head around what you need to do to tackle the big thing on your list.</p>

<p>One way around this is to not start with the big thing. Have some "momentum building" work to do. This means have some tasks that have a clear approach and you can complete quickly to start with. These could be house-keeping tasks like cleaning up all your open browser tabs or sending out a meeting invite or reading a document that you know you need to look at.</p>

<p>You could also spend the last part of your day figuring out what you would do if you were going to work for another hour or so. Write this down, along with all the context you'd need to get going and save this work for the first task of the next day.</p>

<p>The idea is to quickly get going and feel productive. Once you're in that mindset, it should be easier to tackle larger, less defined work.</p>
]]>
    </content>
    
  </entry>
  
  <entry>
    <title>Know How To Confirm It Works</title>
    <link href="https://dontbreakprod.com/posts/know-how-to-confirm-it-works" rel="alternate" type="text/html" title="Know How To Confirm It Works" />
    <id>https://dontbreakprod.com/posts/know-how-to-confirm-it-works</id>
    <published>2022-09-14T22:33:00-05:00</published>
    <updated>2022-09-14T22:33:00-05:00</updated>
    <author>
      <name>Don't Break Prod</name>
    </author>
    <content type="html">
      <![CDATA[<p>You've just finished building a new feature and you're ready to launch. Great!</p>

<p>So how do you know it works?</p>

<p>At this point you should make a list (seriously, write this down) of what should be happening when your new feature (or bug fix or whatever) is in place. What metrics should be moving? Should CPU load go down? Will you stop seeing certain errors? </p>

<p>Also think about what shouldn't be happening. Is database load spiking? Are new errors popping up? Did load times just increase?</p>

<p>If you don't have visibility into these things before you launch, then you probably aren't ready to launch.</p>
]]>
    </content>
    
  </entry>
  
  <entry>
    <title>Write Down Your Accomplishments</title>
    <link href="https://dontbreakprod.com/posts/write-down-your-accomplishments" rel="alternate" type="text/html" title="Write Down Your Accomplishments" />
    <id>https://dontbreakprod.com/posts/write-down-your-accomplishments</id>
    <published>2022-09-14T21:41:00-05:00</published>
    <updated>2022-09-14T21:41:00-05:00</updated>
    <author>
      <name>Don't Break Prod</name>
    </author>
    <content type="html">
      <![CDATA[<p>When it comes time to do performance reviews you will be asked to provide some sort of write up about what you actually did. So you should know what you've done.</p>

<p>Don't expect your manager to remember all the great stuff you've done. Don't even expect to remember it all yourself. It can be very easy to forget the details of how you spent your time and going back to look at all the PRs you merged over the past 6 months probably won't tell the whole story.</p>

<p>Keep a running document of the things you've accomplished. This can be projects you completed (complete with metrics that show what your completed project actually accomplished) and bugs fixed. This can be internal tools you've written that have saved the team time. It should also include time you've spent mentoring other people or serving on committees or giving talks. Include links to PRs, documents written, dashboards that show improvements you're responsible for, etc.</p>

<p>When it comes time to write up what you've accomplished during the last review cycle, you should be able to just start with this accomplishments document as an outline. Julia Evans goes into great detail about how and why to build this record in her post about <a href="https://jvns.ca/blog/brag-documents/">brag documents</a>.</p>
]]>
    </content>
    
  </entry>
  
  <entry>
    <title>Talk To People Outside Your Department</title>
    <link href="https://dontbreakprod.com/posts/talk-to-people-outside-your-department" rel="alternate" type="text/html" title="Talk To People Outside Your Department" />
    <id>https://dontbreakprod.com/posts/talk-to-people-outside-your-department</id>
    <published>2022-09-14T21:32:00-05:00</published>
    <updated>2022-09-14T21:32:00-05:00</updated>
    <author>
      <name>Don't Break Prod</name>
    </author>
    <content type="html">
      <![CDATA[<p>Odds are there is more than just engineering in your organization. Take some time to talk to people who's day to day does not involve technology. This might mean someone in Sales or HR or Legal or Finance or literally any other area where people are less likely to have strong opinions about tabs vs spaces.</p>

<p>First off, you might just meet some cool people, but you also might learn more about what your organization really does. There are likely hard problems being solved that are totally different from what you encounter every day. You'll be likely to gain perspective on priorities and problems that you might not get just talking to other software engineers. Plus, when you have problems or questions that need expertise from other parts of the org, you'll know who to talk to. </p>

<p>Pop your head up once in a while and look around to get a feel for the whole organization that you're working in, it can be really enlightening.</p>
]]>
    </content>
    
  </entry>
  
  <entry>
    <title>Write While You Work</title>
    <link href="https://dontbreakprod.com/posts/write-while-you-work" rel="alternate" type="text/html" title="Write While You Work" />
    <id>https://dontbreakprod.com/posts/write-while-you-work</id>
    <published>2022-09-14T16:06:00-05:00</published>
    <updated>2022-09-14T16:06:00-05:00</updated>
    <author>
      <name>Don't Break Prod</name>
    </author>
    <content type="html">
      <![CDATA[<p>When getting into a new feature or bug fix or project, start writing things down. Maybe this is a physical notebook or just a Markdown file but just have some place to keep notes for yourself. This is different than any notes or comments you might share on the ticket or project doc discussions. These should be for you and make them as organized or ugly as you want.</p>

<p>The idea is to just have a place to keep everything you know in one place. Maybe this is writing down the flow of method calls for a certain piece of functionality. Maybe it's a place to keep some VERY quick and dirty scripts to add new test data. Maybe it's just notes from a conversation you had with a coworker that provided some clarity about the system.</p>

<p>In addition to the immediate benefit of just writing down what you know about the project so you don't have to keep everything in your head, these notes often become the basis for some new documentation that (once polished up a bit) can be a huge help to other people.</p>
]]>
    </content>
    
  </entry>
  
  <entry>
    <title>Build Something From Scratch</title>
    <link href="https://dontbreakprod.com/posts/build-something-from-scratch" rel="alternate" type="text/html" title="Build Something From Scratch" />
    <id>https://dontbreakprod.com/posts/build-something-from-scratch</id>
    <published>2022-09-11T22:57:00-05:00</published>
    <updated>2022-09-11T22:57:00-05:00</updated>
    <author>
      <name>Don't Break Prod</name>
    </author>
    <content type="html">
      <![CDATA[<p>For many software engineers, most day to day work is adding features or fixing bugs in an exiting application. The number of times that you'll create a brand new project and launch it for the first time is pretty rare in a lot of jobs, but it's still good to know how to go from nothing to a functioning application (whatever that means for your technology of choice). For example, if you work in a 10 year old Rails monolith, take a bit of time to run <code>rails new</code> and create a little project for yourself.</p>

<p>Going from 0 to 1 with a project will force you to understand parts of an application that you may have taken for granted and what went into making the non-trivial applications you might work with day to day. You'll get a better feel for what interfaces come with the language and/or framework you work with VS what might have been built in-house. Also, it might come in handy when you're interviewing for jobs and they want you to build a take-home project or a quick coding challenge. Don't be a web developer who can't build a website (or whatever the equivalent is for the type of software you want to write).</p>
]]>
    </content>
    
  </entry>
  
  <entry>
    <title>Watch Other People Work</title>
    <link href="https://dontbreakprod.com/posts/watch-other-people-work" rel="alternate" type="text/html" title="Watch Other People Work" />
    <id>https://dontbreakprod.com/posts/watch-other-people-work</id>
    <published>2022-09-07T22:14:00-05:00</published>
    <updated>2022-09-07T22:14:00-05:00</updated>
    <author>
      <name>Don't Break Prod</name>
    </author>
    <content type="html">
      <![CDATA[<p>This could mean pairing with people or shadowing people or even watching people who stream their coding sessions. Just seeing someone else work might expose you to features of a language you didn't know about, programming techniques you didn't know about, or even expose you to new tools you didn't know about. It can show you tricks or optimizations for your code editor or terminal or other pieces of your dev environment.</p>

<p>It can also be a great reminder that the process of writing code is messy for everyone. Too often we just see the code that people are ready to have reviewed but don't see the trial and error that goes into writing it. Seeing the way people think about a problem and how they actually work on it can be both informative and reassuring.</p>
]]>
    </content>
    
  </entry>
  
  <entry>
    <title>You Will Break Production</title>
    <link href="https://dontbreakprod.com/posts/you-will-break-production" rel="alternate" type="text/html" title="You Will Break Production" />
    <id>https://dontbreakprod.com/posts/you-will-break-production</id>
    <published>2022-08-30T21:44:00-05:00</published>
    <updated>2022-08-30T21:44:00-05:00</updated>
    <author>
      <name>Don't Break Prod</name>
    </author>
    <content type="html">
      <![CDATA[<p>It's going to suck but you will break something important. The more you grow in your career, the more opportunity you will have to screw things up. </p>

<p>When this happens (and it will) just make sure you learn as much as you can from the experience. Something going wrong can be valuable to your own growth as well as identifying weakness in your organization. You might have screwed up (and you should avoid screwing up the same way again) but could there be a systemic change that would prevent screwups like this from making it to prod?</p>
]]>
    </content>
    
  </entry>
  
</feed>
