Adding more about generating stories
[themediocreprogrammer.git] / chapter07.md
index ac92a0c89e185c67b488848da33b5ded3ee310d5..998ec4bb3038959998cddaa7f182a3b862da9967 100644 (file)
@@ -2,35 +2,35 @@
 
 ## The emotions of programming
 
-There's a stereotype of a programmer sitting emotionless in front of the computer entering lines of code as though they were just transcribing them from memory. But if you've been around programmers you know that it's more like the stereotype of the frustrated composer. We bask in the glories of code that works perfectly the first time. We glower at code that misbehaves. We go from cheering ourselves in victory to cursing the machine with clenched fists. We swing from emotion to emotion: exuberance, joy, fear, anger, resentment, sadness, loneliness, guilt, and shame. 
+There's a stereotype of a programmer sitting emotionless in front of the computer. They sit quietly  entering lines of code as though they were transcribing them from memory. But if you've been a programmer or have been around programmers you know that it's more like the stereotype of a frustrated composer. Sure we sit in front of our computers for periods of silence and concentration but we're far from emotionless. We bask in the glories of code that works perfectly the first time. We glower at code that misbehaves. We go from cheering ourselves in victory to cursing the machine and threatening it with clenched fists. We swing from emotion to emotion: exuberance, joy, fear, anger, resentment, sadness, loneliness, guilt, and shame. 
 
 No wonder we're exhausted by the end of the day.
 
-Programming is a taxing process. Not only do we need to keep a mental model of the software we're working on, but we also have our emotional attachment the software. Our emotional state can mirror what we feel about what we're creating; whether we're excited, bored, or stuck. Keeping a positive attitude about software that isn't measuring up to our expectations is exhausting. Couple that with our own insecurities, fears, and doubts and you begin to see why programmers tend to burn out - it's a combination of the stress of the job and our emotional reaction to that stress.
+Programming is a taxing process. Not only do we need to keep a mental model of the software we're working on, but we also have our own emotional attachment the software. Our emotional state can mirror what we feel about what we're creating; whether we're excited, bored, or stuck. Keeping a positive attitude about software that isn't measuring up to our expectations is exhausting. Couple that with our own insecurities, fears, and doubts and you begin to see why programmers tend to burn out --- it's a combination of the stress of the job and our emotional reaction to that stress.
 
 ## Emotional drains
 
-There are several factors that can cause us emotional highs and lows. These are some that I've noticed in my own programming.
+There are several factors that can cause us emotional highs and lows while programming. These are some that I've noticed in my own programming.
 
 ### Purpose and utility
 
-If we clearly see where this code will become useful we can get a sense of drive and purpose. We're working toward something that will benefit folks! Whatever pitfalls lie in wait for us we can be assured that we will do our best to make sure that we conquer them as best we can because people are depending on us. We can tap into the emotional high of self-worth and purpose to help buoy us along.
+If we clearly see where and how this code will become useful we can get a sense of drive and purpose --- we're working toward something that will benefit folks! Whatever pitfalls lie in wait for us we can be assured that we will do our best to make sure that we conquer them as best we can because people are depending on us. We can tap into the emotional highs of self-worth and purpose to help buoy us along.
 
-The opposite is true, of course. If we don't see the purpose then our work will seem in vain. We'll struggle to meet deadlines and feel a sense of worthlessness in our pursuits. Sometimes it's just a bad project, or it's a project that isn't aligned with our underlying purposes and goals. We can be frustrated trying to meet some arbitrary deadline if we don't see the point of what we're working on. 
+The opposite is true, of course --- if we don't see the purpose then our work will seem in vain. We'll struggle to meet deadlines and feel a sense of worthlessness in our pursuits. Sometimes it's a project that isn't aligned with our own purposes and goals. Or it could be a poorly managed project that we're forced to work on, despite our never explicitly agreeing to the terms. We can be frustrated trying to meet an arbitrary deadline if we don't see the point of what we're working on. 
 
 ### Engagement vs. boredom
 
-You've already experienced several layers of engagement with your programming. There are projects and topics that don't feel like a chore. You feel like you're learning something each step of the way. Time disappears.
+You've already experienced several layers of engagement with your programming. There are projects and topics that don't feel like a chore. You feel like you're learning something each step of the way. The outside world disappears while we work in a cocoon of focus. We lose track of time and feel both disoriented and refreshed when the work is completed.
 
-Conversely you've likely experienced the opposite: boredom. The code base doesn't engage you at all. The topic being covered is just re-hashing something you already know. It's a chore to get started and the minutes drag along throughout the whole process.
+Conversely you're probably more familiar with the opposite: boredom. The code base doesn't engage you at all. The topic you're learning or working on is just re-hashing something you already know. It's a chore to get started. Everything in the world feels way more interesting and the minutes drag along throughout the whole process. 
 
 ### Awake vs. tired
 
-Sleep is a major contributor to how we perceive the world. Getting enough sleep manifests in feeling refreshed, awake, and inspired. We have the energy reserves at the ready to take on whatever challenges befall us. But when we don't get enough sleep (or enough quality sleep) we become irritable and less-open to engagement. We conserve our resources as best we can lest we use them up too quickly.
+Sleep is a major contributor to how we perceive the world. Getting enough sleep manifests in feeling refreshed, awake, and inspired. We have the energy reserves at the ready to take on whatever challenges befall us. But when we don't get enough sleep (or enough quality sleep) we become irritable and less-open to engagement. We conserve our resources as best we can lest we use them up too quickly. We look to stimulants (caffeine, distractions, and the like) to keep us engaged throughout the day.
 
 ### Mental state
 
-I'm using "mental state" in a broad sense to cover any of our existing feelings and current mental well-being. These can range from temporary feelings of unhappiness and melancholy to complex topics like clinical depression and PTSD. Our minds are complex machines that do their best to adapt to the situations and environment presented to them. At times this can clash with our desires to be productive and the struggle between our mental state and our desires can cause further emotional drain, discomfort, and despair. 
+I'm using "mental state" in a broad sense to cover any of our existing feelings and current mental well-being. These can range from temporary feelings of unhappiness and melancholy to complex and serious topics like clinical depression and PTSD. Our minds are complex machines that do their best to adapt to the situations and environments presented to them. At times this can clash with our desires to be productive and the struggle between our mental state and our desires can cause further emotional drain, discomfort, and despair.
 
 There are more things that can affect our emotions but these are the ones that I'd like to focus on as they cover a broad spectrum of what we bring to the tasks of learning and programming.
 
@@ -40,28 +40,33 @@ Being aware of our emotional state (what we're feeling right now) gives us our c
 
 Note that we're not trying to change our emotional state. We're not trying to force ourselves to be something we're not. If we're truly unhappy with where we are or what we're doing it's more helpful to see what's causing this unhappiness than to try to paper over those emotions. Seeing our emotions clearly allows us to see what is causing them. Being present with these emotions allows us to better understand our mental state and what we're capable of in the moment.
 
-You can do this in the context of mindfulness meditation but even sitting still in your desk and saying "for one to two minutes I'm just going to sit here and explore my emotional state" should suffice. Seeing our emotions for what they are and thinking to what is causing them can help us understand what we're feeling.
+You can do this in the context of mindfulness meditation but even sitting at your desk and thinking "for one to two minutes I'm just going to sit here and explore my emotional state" should suffice. Seeing our emotions for what they are and digging in to find out what is causing them can help us understand what we're feeling.
 
+You might already know what is causing these emotions and emotional state and be afraid of exploring them. Some emotions may overwhelm us and make us feel things that we don't want to feel. Do as much of this as you are able and be gentle with yourself. You may find that your gentle prodding of these emotions can lead you to better understand them. Be as brave as you can with these emotions and if they start to overwhelm you then pull back and let the residue of those feelings subside before continuing.
 
 ## Our story
 
-Each one of us have a story that we tell ourselves. The stories we tell ourselves shape our perception of the world. We tell ourselves stories of how the day will be, and how we will engage with the day. We create a world in which we are the central protagonist of our story (which we are). We tell ourselves stories like "the work I'm about to do will be amazing" or "I'm going to work through this problem quickly and will have an awesome solution when I'm done". Or we tell ourselves a story about how we're not good at what we're doing and will likely fail in the attempt. We weave a tale of struggle, pain, and misery.
+Each one of us has a story that we tell ourselves. These stories shape our perception of the world. We tell ourselves stories of how the day will be and how we will engage with the day. We create a world through our stories in which we are the central protagonist of our story (which we are). We tell stories like "the work I'm about to do will be amazing" or "I'm going to work through this problem quickly and will have an awesome solution when I'm done". Or we weave a tale about how we're not good enough at what we're doing and will likely fail in the attempt. We create a complex tale of struggle, pain, and misery where everything wrong with the world is the direct result of our actions. 
 
-Our emotions inform the story we tell. If we're feeling amazing we tell ourselves that what lies ahead will also be amazing. If we're feeling down and defeated our story reflects that.
+Our emotions help inform the type of story we tell. If we're feeling amazing we tell ourselves that what lies ahead will also be amazing. If we're feeling down and defeated our story reflects our defeated tone.
 
-The story is just that - a story. Our stories are not a guarantee of how the day will progress. We can tell ourselves that today will be amazing but watch in horror as each interaction we have causes that story to reflect a different reality. Or we can say that today will totally suck and we won't accomplish anything but instead have a pretty decent day.
+The truth is that our story is just that --- a story. Our stories are not a guarantee of how the day will progress. We can tell ourselves that today will be amazing and watch in horror as each interaction causes our day to be anything but amazing. Or we can say that today will be terrible and we won't accomplish anything, but instead have a pretty decent and productive day.
 
-What we can do instead of creating these grand stories is focus more on the things that we love about the present moment. Instead of saying that we're going to have an amazing day we can say that there are things that we are looking forward to in this project and we hope to work on them. Instead of filling your day with dread you can focus on the little victories along the way. Yes, even something as small as "my computer booted without crashing" can be a victory.
+What we can do instead of being attached to these grand stories is focus more on the things that we love about the present moment. Instead of saying that we're going to have an amazing day we can say that there are things that we are looking forward to in this project and we hope we can work on them soon. Instead of filling your day with stories of dread and doom you can focus on the little victories along the way. (Yes, even something as small as "my computer booted without crashing" can be a victory.) Our intention can be to have a great next 10 minutes (in our focus containers from the previous chapters) and keep working with that intention throughout the day. They won't all be perfect (perhaps your computer is being extra stubborn today) but we can re-calibrate for the next 10 minutes to see if that container might be better.
 
-Giving ourselves the power to focus more on the present and the very next steps we're about to take gives us the freedom to recalibrate as the day progresses. We can focus on the positive aspects of what we're doing instead of seeing how reality is diverging from our internal stories.
+Giving ourselves the power to focus more on the present and the very next steps we're about to take gives us the freedom to re-calibrate as the day progresses. We can focus on the positive aspects of what we're doing instead of seeing how reality is diverging from our internal stories. We can course-correct throughout the day and try to trend towards a more productive day rather than see how distant we are from our ideal day and wonder if there's any point to doing any of it.
+
+This will take practice. We're accustomed to letting our stories drive our day. But over time we'll be able to break our day into chunks where we can be more flexible with our stories.
 
 ## Awareness in action
 
-Say in this moment that we're feeling anxious. We've just received a bug report and it's related to something we're working on. The bug report states that code that we committed earlier isn't working and probably has never worked the way we thought it worked. As we read the bug report our anxiety levels increase. Our inner monologue kicks in and we start telling ourselves that we aren't nearly as good as we thought. We're not perfect. We suck. We didn't get enough sleep the night before so our emotions are in a state of heightened awareness. Our mind races to the other times when we've failed. As we keep reading our sense of dread kicks in. What will they think of me? What do they think of me now? Am I going to lose my job over this?
+### FIXME
+
+Say that in this moment we're feeling anxious. We've just received a bug report and it's related to something we've been working on. The bug report states that code that we committed earlier isn't working and probably has never worked the way we thought it worked. As we read the bug report our anxiety levels increase. Our inner monologue kicks in and we start telling ourselves that we aren't nearly as good as we thought. We're not perfect. We suck. We didn't get enough sleep the night before so our emotions are in a state of heightened awareness. Our mind races and flashes images of the other times when we've failed. As we keep reading our sense of dread kicks in. What will they think of me? What do they think of me now? Am I going to lose my job over this?
 
-Before we've even finished the bug report we've created a story where we can only think of our past failures. Worse, we've already added this one to the list of failures. We also added to the stakes of this bug report. Not only do we have to fix whatever broke but now we have to fix our reputation and start a job search.
+Before we've even finished reading the bug report we've created a story. The story begins with a montage of our past failures and adds this latest bug report to that montage. Our story then ratchets up the pressure by raising the stakes of the importance of this bug report: not only do we have to fix whatever broke but now we have to fix our reputation and start a job search. As the story progresses in our minds we're wondering if we'll ever work as a programmer again, and feel that our career as a programmer is over.
 
-The story we've created isn't a good story, but I'm sure you can relate to it. You've had this story play out in your head. It's a story based on our insecurities and feelings of inadequacy. It's fueled by a feeling of fear: fear that you'll ruin your reputation, fear they won't trust you, and fear that you'll fail.
+The story we've created isn't a pleasant story, but I'm sure you can relate to the factors that generate it. You've probably had similar stories play out in your head. It's a story that draws from the rich lakes of our insecurities and feelings of inadequacy. It's fueled by fear: fear that you'll ruin your reputation, fear they won't trust you, and fear that you'll fail.
 
 Fear is one of the most powerful emotions we have but it's not the only one. Reading that bug report may also elicit other emotions like grief (we thought that code was good and now that thought is gone), uncertainty (how will we fix the problem?), and anger (how could we have deluded ourselves into thinking this worked?). We may also feel sadness and loneliness. We could feel disconnected and adrift.