More discussion about seeking help
[themediocreprogrammer.git] / chapter07.md
index cb1c4d489909f233f07384e5220315bfa569c983..e339e550c66760aecabf11f91b1c6d81509570ad 100644 (file)
@@ -2,11 +2,11 @@
 
 ## The emotions of programming
 
-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. 
+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're a programmer or have been around programmers you know that the stereotype should be that of a frustrated composer. Sure we sit in front of our computers in long 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 clench our teeth when bugs rear their misbehaving heads. 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 own emotional attachment to the software we're creating. 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 of what that software should be 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 keep a mental model of how the software should behave. We create a story of how this software will work and paint a picture of how we will feel when everything works as we envisioned. We create an 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
 
@@ -14,23 +14,23 @@ There are several factors that can cause us emotional highs and lows while progr
 
 ### Purpose and utility
 
-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 carry us through to completion.
+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! We know that people are depending on us so we do our best to make the code work regardless of the pitfalls that await us. We tap into the emotional highs of self-worth and purpose to help carry us through to completion.
 
-The opposite is true, of course --- if we don't see the purpose then our work will seem useless and 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. 
+The opposite is true, of course --- if we don't see the purpose then our work will seem useless and 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've been forced to work on because of external pressures. We can be held to meet arbitrary deadlines that we never agreed to meet. And we can become frustrated 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. 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.
+You've already experienced several layers of engagement with your programming. These are the projects that don't feel like a chore while you work on them. You feel like you're learning something each step of the way. The outside world disappears while we work in this cocoon of focus. We lose track of time and feel both disoriented and refreshed when the work is completed.
 
-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. 
+Unfortunately you're probably more experienced with the opposite of engagement: 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. We look to stimulants (caffeine, distractions, and the like) to keep us engaged throughout the day.
+Sleep is a major contributor for how we perceive the world. Getting enough sleep allows us to feel refreshed, awake, and inspired. We need to have the energy reserves 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 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.
+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 Post Traumatic Stress Disorder (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.
 
@@ -38,9 +38,9 @@ There are more things that can affect our emotions but these are the ones that I
 
 Being aware of our emotional state (what we're feeling right now) gives us our current emotional location. We can see where we are and understand what our mind is telling us. Giving ourselves a few moments to truly see what emotional state our mind is in will help us to move forward.
 
-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.
+Note that we're not trying to change our emotional state. We're not trying to force ourselves to be something that we aren't. If we're truly unhappy with where we are or what we're doing it's more helpful to understand what's causing our unhappiness rather than 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 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 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. Noticing our emotions, understanding 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.
 
@@ -112,6 +112,21 @@ It's also cliche to say "learn to say no", but this is an important skill as a p
 
 You will experience periods of burnout in your programming career. Things will come at you that will overwhelm your ability to cope with them. You will find yourself stuck in loops wondering if this is really what you should be doing. Understanding what you're feeling and acknowledging your feelings as valid is the first step to changing the course from one of burnout and stress. Programming shouldn't be drudgery (no work should be drudgery). There should be something in your programming day that keeps you motivated, and helps you grow your skills. Adding bits of learning, joy, and wonder (along with periods of downtime) will help sustain you through the emotional turbulence that awaits. And recognizing when you're burning out and renegotiating your agreements with yourself and others can help reinvigorate your desires to keep programming.
 
+## Reaching out for help
+
+I want to take a moment to highlight that it's OK to ask others for help. I know from my own experience that I have struggled with asking for help. Part of this reluctance was instilled in me whenever I asked a question and got the dreaded "you should know that already" response. Other times I felt that if I asked for help it might diminish my reputation somehow. I'd be exposed as not being as good as people thought I was. Folks would wonder why they trusted me in the first place. But when I asked for help the question I received wasn't "why don't you know this?", rather it was "why didn't you ask for help sooner?". Sure, there were occasions where I would receive criticism for not knowing something, but I've found that the benefits of asking the question outweighed the negative effects I might face. 
+
+Asking for help isn't limited to asking questions, though. Question-asking is an area of help that gets the most attention because it's the easiest to address and has a low risk associated with it. There are many more ways that we might need help. We may need help from our colleagues to help us during a difficult time. We may need the help of our management when we're struggling. We may even need a whole other support staff to help us along (doctors, therapists, etc.). Involving other people with our struggle can be daunting (even overwhelming) but getting help early can help prevent the more serious forms of burnout and stress.
+
+Our reluctance to asking for help can stem from a number of factors, but the most common factor is our desire to be comfortable. Asking for help means putting ourselves into a position of vulnerability and hoping that the person we're asking for help will treat us with kindness and dignity. This is especially true when we don't know the person we're asking, or if the person is a medical professional. But it can also be necessary, especially if we're facing situations where what we're facing is out of our control or experience. If we're facing the prospect of burning out we may need to ask a doctor / therapist for better ways to cope with what we're experiencing. If our job is causing stress and strain then we may need to talk with others in our community to see if we're the only ones experiencing this feeling. 
+
+It's cliche to say "there's no shame in asking for help" but it bears repeating. We can't do everything on our own and need the help of others. Even if it's something as simple as someone saying "wow, that sucks" that's at least a connection with someone else who understands what we're going through. Finding someone who is willing to listen, empathize, and commiserate can be the difference between feeling like we're not alone and feeling like we've been abandoned. 
+
+We also need to recognize when our support systems aren't supporting us any longer. If we find that simply taking about a problem isn't giving us resolution we may need to find other means of help. You may recognize that you need some additional support, but it's far more common for folks to believe that they can do it all on their own. Only you know your situation and only you know if you're being honest with yourself and if you're deluding yourself. And if you're deluding yourself then only you can take the initiative to seek out the help that you need. Nobody else knows your inner-workings better than you.
+
+### FIXME
+
+
 ## Giving up
 
 Programmers don't like to think about giving up. We work on machines that have so many possibilities that we feel we should be able to make anything work on them. But sometimes we don't want to see those possibilities. Sometimes we look at the list of things we should be learning and wonder if it's all worth the effort. We look at lists of job prospects for our set of skills and see that the only fit for those skills is nothing but work that we find meaningless. People learning to program ask us what it's like to be a programmer and we wonder if it's OK to tell them that we're not happy with our decision and crush their dreams this early in their careers. The joy that sustained us into learning the craft disappears and we're left wondering if we will ever cultivate that feeling again.