43 KiB
La lucha interna
Las emociones de la programación
Existe el estereotipo del programador sentado sin emociones frente a su equipo. El programador estereotipo se sienta, introduce líneas de código de manera silenciosa como si las transcribiera desde su memoria. Si eres programador o has tenido contacto con programadores entonces deberías saber que el estereotipo debería ser el de un compositor frustrado. Por supuesto, nos sentamos delante de nuestros ordenadores en largos periodos en silencio y concentrados, pero estamos muy lejos de no tener emociones. Disfrutamos de las glorias de un código que funciona a la perfección la primera vez. Fruncimos el ceño cuando el código funciona mal. Pasamos de alegrarnos por la victoria a maldecir y amenazar a la máquina con los puños apretados. Apretamos nuestros dientes cuando los errores del código asoman. Pasamos de una emoción a otra: exuberancia, alegría, miedo, furia, resentimiento, tristeza, soledad, culpa o vergüenza.
No es extraño que al final del día estemos exhaustos.
Programar es un proceso agotador. No solo necesitamos mantener un modelo mental del software en el que estamos trabajando, también tenemos que mantener un modelo mental de cómo se debería comportar el software. Creamos una historia de cómo funcionará este software y componemos una imagen mental de cómo nos sentiremos cuando todo funcione como hemos lo hemos imaginado. Creamos un vínculo emocional con el software. Nuestro estado emocional puede reflejar lo que sentimos cuando estamos creando: excitados, aburridos o estancados. Mantener una actitud positiva respecto al software que no está a la altura de nuestras expectativas es agotador. Esto combinado con nuestras propias inseguridades, miedos y dudas nos da indicios cuando vemos que los programadores tienden a agotarse: es una combinación de estrés y nuestra reacción emocional a ese estrés.
Escapes emocionales
Hay muchos factores que pueden causarnos altibajos emocionales mientras estamos programando. Estos son algunos que he anotado, tanto en mi propio proceso de programación como hablando con otras personas sobre su programación.
Propósito y utilidad
Si vemos con claridad dónde y cómo se convertirá en útil este código, podemos tener un sentimiento motivación y propósito. ¡Estamos trabajando en algo que beneficiará a personas! Sabemos que las personas dependen de nosotros, así que hacemos todo lo que este en nuestra mano para hacer que el código funcione sin importar las trampas que nos esperen. Aprovechamos los picos emocionales de autoestima y determinación para ayudarnos a llegar a la culminación.
Lo opuesto también es cierto, por supuesto si no vemos el propósito entonces nuestro trabajo parecerá sin sentido y en vano. Nos esforzaremos para cumplir los plazos y sentiremos una sensación de vacío en nuestros objetivos. A veces se trata de un proyecto que no está alineado con nuestros propios propósitos y metas. Puede tratarse de un proyecto mal gestionado en el que estamos forzados a trabajar debido a presiones externas. Podríamos vernos obligados a cumplir plazos arbitrarios que nunca acordamos cumplir. Podemos sentirnos frustrados si no entendemos el fin último de cualquier proyecto en el que estemos trabajando.
Compromiso frente a aburrimiento
Ya hemos experimentado diferentes capas de compromiso con nuestra programación. Esos son los proyectos en los que no sentimos que sean una tarea mientras estamos trabajando en ellos. Sentimos que estamos aprendiendo algo en cada paso del camino. El mundo exterior desaparece mientras estamos trabajando inmersos por completo en ese enfoque. Perdemos la noción del tiempo y nos sentimos tanto desorientados como renovados cuando el trabajo está completo.
Desafortunadamente lo más probable es que tengamos más experiencias con lo opuesto del compromiso: el aburrimiento. El código base no nos motiva en absoluto. El tema que estamos aprendiendo o en el que estamos trabajando es simplemente una repetición de algo que ya sabíamos. Es un suplicio comenzar. Todo lo que nos rodea en el mundo parece más interesante y el tiempo parece ir más despacio durante todo el proceso.
Despierto frente a cansado
El sueño es un factor que influye mucho en cómo percibimos el mundo. Dormir lo suficiente nos permite sentirnos renovados, despiertos e inspirados. Necesitamos tener reservas de energía para enfrentarnos a cualquier reto que se nos presente. Cuando no tenemos una óptima calidad del sueño nos volvemos irritables y menos dispuestos a la participación. Conservamos nuestros recursos lo mejor que podemos para que no se gasten demasiado rápido. Buscamos estimulantes (café, distracciones y similares) para mantenernos ocupados a lo largo del día.
Estado mental
Uso el término "estado mental" en un sentido amplio para cubrir cualquiera de nuestros sentimientos existentes y de bienestar mental actual. Estos puedes variar desde sentimientos temporales de infelicidad o melancolía a sentimientos complejos y serios como la depresión clínica o trastorno de estrés postraumático. Nuestras mentes son máquinas complejas que hacen lo que pueden para adaptarse a las diferentes situaciones y entornos que se les presentan. En ocasiones esta adaptación puede chocar con nuestros deseos de ser productivos y la lucha que se produce entre nuestro estado mental y nuestros deseos puede causar más desgaste emocional, incomodidad o desesperación.
Hay más motivos que pueden afectar a nuestras emociones pero estos son en los que me gustaría centrarme ya que cubren un amplio espectro de lo que acarrea dedicarnos a las tareas de aprendizaje y programación.
Ser conscientes de nuestro estado emocional
Ser conscientes de nuestro estado emocional (lo que estamos sintiendo ahora mismo) nos da nuestra ubicación emocional actual. Podemos ubicarnos donde estamos y entender lo que nuestra mente nos está diciendo. El darnos unos instantes para sentir verdaderamente en qué estado emocional se encuentra nuestra mente nos ayudará a seguir adelante.
Ten en cuenta que no estamos tratando de cambiar nuestro estado emocional. No nos estamos intentando forzarnos a ser algo que no somos. Si realmente estamos insatisfechos sobre dónde estamos o lo que estamos haciendo, es más útil entender qué está causando esa infelicidad en vez de tratar de disimular y prevenir esas emociones. Observar nuestras emociones de manera clara nos permite reconocer qué las está causando. Estar presente con esas emociones nos permite entender mejor nuestro estado mental y de lo que somos capaces en el momento.
Puedes realizar esto dentro de un contexto de meditación de atención plena, pero incluso mientras estás sentado en tu escritorio y pensar "durante uno o dos minutos voy a estar sentado aquí y explorar mi estado emocional" debería ser suficiente. Ser conscientes de nuestras emociones, entender qué son y profundizar en ellas hasta encontrar qué las está causando puede ayudarnos a entender qué estamos sintiendo.
Quizás ya sabes qué está causando esas emociones y ese estado mental y tienes miedo de explorarlas. Algunas emociones pueden sobrepasarnos y hacernos sentir de formas que no queremos sentirnos. Esto es especialmente cierto con emociones relacionadas con la ansiedad y el trastorno de estrés post traumático. Realiza toda la exploración e introspección que seas capaz, y se amable contigo mismo. Recuerda, no estás tratando de cambiar las emociones, solo estás siendo consciente de ellas. Es posible que descubras que tu insistencia amable en estas emociones puedan llevarte a entenderlas mejor. Se tan osado como puedas con estas emociones y si empiezan a abrumarte, entonces retrocede y deja que desaparezcan los residuos de esas emociones antes de continuar.
Nuestra historia
Cada uno de nosotros tenemos una historia que nos contamos a nosotros mismos. Estas historias conforman nuestra percepción del mundo. Nos contamos historias de cómo transcurrirá el día y cómo nos enfrentaremos a el. Creamos un mundo a través de nuestras historias en el que somos el protagonista central de la historia. Nos contamos historias como "el trabajo que voy a comenzar será increíble" o "voy a trabajar en este problema y cuando termine obtendré una solución genial". Eso ocurre si estamos siendo positivos con nosotros mismos. Cuando estamos siendo negativos, nuestras historias tratan sobre que no somos lo suficientemente buenos en lo que estamos haciendo y que seguramente fallarás en el intento. Estas historias crean una trama compleja de lucha, dolor y miseria donde todo lo malo del mundo es el resultado directo de nuestras acciones.
Nuestras emociones ayudan a informar el tipo de historia que contamos. Si nos sentimos muy bien, nos diremos a nosotros mismos que lo que está por venir también será genial. Si nos sentimos deprimidos y derrotados, nuestras historias reflejarán ese tono derrotado.
La verdad es que nuestra historia es simplemente eso: una historia. Nuestras historias no son una garantía de cómo va a transcurrir el día. Podemos contarnos una historia sobre que hoy será un día increíble y ver con horror que cada interacción hace que nuestro día sea de todo menos increíble. Por el contrario, nuestra historia podría ser que hoy será un día terrible y que no conseguiremos nada, pero en vez de eso experimentamos un día muy completo y productivo. La historia solo acentúa lo que estamos experimentando, pero no puede predecir lo que experimentaremos.
En vez de apegarnos a estas grandes historias podemos centrarnos más en las cosas que amamos del momento presente. En vez de una historia en la que vas a tener un día excepcional podrías centrarte en aspectos de tu proyecto que te atraigan y esperar en que puedas pronto trabajar en ellos. En vez de llenar tu día con historias de terror y fatalidad te puedes centrar en las pequeñas victorias que ocurren a lo largo del día. Incluso algo tan simple como "mi ordenador ha arrancado sin fallar" puede ser una victoria. Una de esas pequeñas victorias podría ser el establecer una intención en permanecer centrados y curiosos en los próximos 10 minutos (el contenedor de enfoque de los capítulos anteriores) y celebrarlos cuando logres esa intención. Puedes tener más pequeñas victorias si te mantienes trabajando con esa intencionalidad a lo largo del día. Nuestras pequeñas victorias no serán perfectas (quizás tu ordenador está hoy más terco), pero podemos usarlas para recalibrar nuestro día en los próximos 10 minutos y seguir usándolas para recalibrar durante todo el día como cada contenedor focalizado se convierte en otra pequeña victoria.
Darnos a nosotros mismos la capacidad de centrarnos más en el presente y los próximos pasos que estamos a punto de dar nos brinda una forma consciente de comprobarnos a nosotros mismos y nuestro progreso. Podemos centrarnos en los aspectos positivos de lo que estamos haciendo en vez de preocuparnos sobre cómo la realidad difiere de nuestras propias historias. Podemos corregir el rumbo a lo largo del día y mantener la tendencia hacia un día más positivo y productivo en vez de preocuparnos sobre lo distantes que nos encontramos de nuestro día ideal.
Esto requerirá práctica. Estamos acostumbrados a permitir que nuestras historias dirijan nuestro día, pero con el paso del tiempo seremos capaces de dividir nuestro días en partes más pequeñas donde podamos ser plenamente conscientes de las historias que nos contamos a nosotros mismos.
Awareness in action
Let's pretend for a moment that it's a typical day for us. Today 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 the code that we committed to the project earlier this year isn't working and likely 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 back to images of the other times when we've failed. As we keep reading our sense of dread kicks in. Our internal monologue becomes a frenzied chatter: "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 reading the bug report we've created a story. The story begins with our own anxiety for what will happen during the day. Then the worst happens: we get something that confirms our fears. The story then presents us with a montage of our past failures and adds this latest bug report as a capstone to the 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 wonder if we'll ever work as a programmer again, and feel that our career as a programmer is over.
The story we created is a terrible story, but I'm sure you can relate to the factors that generate it. It's a story that draws from the deep pools of our own feelings of inadequacy and insecurity. 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 have other feelings: sadness, loneliness, and abandonment. Our sense of self worth may also be affected, and we could feel disconnected from those whom we serve and the folks we work with.
Being aware of these feelings can help us parse the story we told ourselves and how it didn't match reality. These feelings and the story we told ourselves can give us feedback on how we are perceiving our world and the work we're doing. Pausing for a moment to acknowledge our feelings and understand where they are coming from give us an understanding of what our emotions are trying to tell us.
You can relax now. The bug report in this book isn't real, but take a moment to recognize the feelings that you felt when you read the above section and notice where your mind went. That's the kind of awareness we're seeking to have.
Finding our feelings
Our feelings manifest themselves in our bodies in many different ways. Fear can be a knot in our stomachs or tension in our chests. Anger can make our jaws clench or make our heads feel hotter than normal. Sadness can feel like a weight upon our shoulders, or make us feel tired. When we notice these feelings we can pause for a moment and just sit with our feelings while we keep noticing them.
Think of this exercise as though you are scanning your body for the source of the feelings you're having. Notice where your mind is drawn: tightness in your chest, tightness in your stomach, a clenched jaw, or whatever you may feel. Notice the sensation of that feeling. You can dig deeper and try to find the underlying causes of the feeling but for now just notice that it exists. Sit for a few moments more and be curious about how it feels. Notice any other attributes about that feeling: color, texture, intensity, or any other attributes you're experiencing. Let the feeling exist --- be kind and gentle with it. Allow it to exist without judgment. Give it space. Above all, don't try to fight the feeling or wish that it would end; just notice it. Eventually the feeling may subside, but for now just acknowledge that you have this feeling and you're going to be curious about it.
Some feelings and emotions are more painful or traumatic than others. Give them space and let yourself be curious about them for as long as you are able. If you notice your mind starting to panic or feeling overwhelmed by these feelings then you may stop noticing them before they overtake you. Remind yourself that these are emotions and those emotions are a part of you. You and your emotions work together to help you. You're both on the same team.
This exercise isn't about dwelling on or punishing yourself with your feelings. If the act of noticing these feelings causes you to experience physical or emotional pain then you may need help from a professional or a support group to help guide you in understanding these feelings and where they come from. A professional or a support group can help you have those feelings without having those feelings overwhelm you. There is no shame in finding others to help you along your journey.
Emotional Triage
One of our learned behaviors with our feelings is to run away from them or try to suppress them. We do our best to avoid feelings that make us unhappy or uncomfortable. We also try to hold back our positive feelings lest we show too much exuberance. This can lead us to be confused or conflicted about what we're feeling and why we're feeling that way. By sitting with our feelings and emotions and understanding where they're coming from we can get a clearer idea of what our mind is thinking and the story we're telling ourselves.
Think of this practice as emotional triage. Hopefully you've never had to go to a hospital emergency room, but if you have you'll see a whole array of medical professionals who are trained to diagnose what just walked through the door and determine the severity of the problem. When we recognize and reflect on our emotions we too are diagnosing what emotions we're having and the severity of those emotions. We take these moments when we're experiencing these emotions to determine what the emotions are and what triggered them. As we review our emotions we are gentle with them and recognize them for what they are. A good medical professional doesn't impose their own desires on the patient; they simply accept the patient for who they are, diagnose what the patient is experiencing, and act accordingly. When we recognize our emotions for what they are and determine where they are coming from we can better understand what we're facing.
The more we do this practice the better we'll become at recognizing our emotions and why we're having them. We'll be better able to notice what we're feeling and understand why we're feeling that way. When we feel anxious we can recognize that it might be because we're exploring an area of programming that we don't fully understand. We can feel that anxiety for a bit (don't try to chase it away) and then think about what we're currently working on and how we can explore those areas that are new to us. We can then mentally note those areas or write them down (preferably in a journal) so that when we complete what we're doing we can review the areas that caused us anxiety.
With this practice we can turn our emotions from something that drives us into something that guides us. We can use our emotions as tools to better calibrate our internal stories. We can re-frame our stories about how we're unworthy of being called programmers and instead give ourselves the intention that we're going to spend the next 10 minutes exploring this area of our work and finding where the gaps are. We can set an intention to be curious about where this next 10 minutes will lead us. As we continue to explore these topics we'll notice our emotions and use those emotions to let us know where we feel we need to improve and adapt. This will allow us to change our plans as needed and address those areas we feel are lacking or need improvement. This cycle continues in each practice container, with our emotions acting as a barometer for our comfort level with this topic, and helping us draft a road-map for how best to proceed. We transform our discomfort and anxiety from things that hinder our progress into indicators of where we feel we need to focus our attention.
Burnout
One thing our emotional triage can help us diagnose is the feeling of being burned out. Burnout is a collection of emotions coupled with emotional and physical exhaustion. Burnout can be something as simple as being bored or overworked, but it can also be the sign of something more serious. It can lead to physical or mental complications if we're not careful. We can work ourselves into serious levels of exhaustion and delude ourselves into believing it's part of the cost of being a programmer.
Burnout manifests itself in different ways. For some it may be the feeling of dread while working on a project. They feel like they are ineffectual in making any changes. For others burnout can be feeling exhausted. They feel as though they're on a treadmill that will not stop. Worse, they wanted that treadmill to stop a long time ago. Burnout can also manifest in feelings of being creatively drained, where imagining a different future is difficult and things that were once inspiring or interesting no longer generate that spark.
Burnout is tricky to self-diagnose because it is a collection of seemingly unrelated emotions. Our feelings of boredom, fear, exhaustion, and anxiety can all have different root causes, but when we combine those feelings with an unrelenting work schedule and loss of control we amplify those feelings. Left unchecked we can lead ourselves into trying to numb out those feelings. We'll find ourselves not wanting to program anymore, and resent ourselves for ever getting into programming in the first place. We can cause ourselves more undue suffering by just "powering through it" which can lead us to compound and complicate our emotional state.
There are some things we can do to understand and help alleviate burnout:
- Realize that we're burned out, or about to burn out. Acknowledging that we're about to burn out is key to not experiencing the burnout. That seems simple enough but we tend to ignore the symptoms when we're nearing the throes of burnout. If we can recognize that we're about to burn out then we can take measures to avoid it. And if we realize that we're burned out we can take measures to be kind to ourselves and help ourselves out of this burned-out state.
- Examine our emotions. Sit for a while and notice what emotions come into view. Are we feeling stress, fear, anxiety, nervousness, or anger? Notice what feelings emerge and recognize these feelings. Examine where these feelings are coming from and what might be triggering these emotions.
- Re-negotiate our commitments. Many times burnout is the result of over commitment, whether to ourselves or others. We always have too much to do, and despite our best efforts we will always acquire new obligations. Perhaps the plans we made were too aggressive, or something changed in the world that disrupted our plans. Whatever the reasons we may need to re-evaluate what is expected of us and what we are capable of doing. If we see that we've created an intractable situation for ourselves we need to figure out how to remove some of these obligations or re-negotiate them.
- Give our "drive" a rest. Unlike our mechanical counterparts we need downtime and rest. We can't work a straight eight or more hours without at least some moments where we aren't working. Programming demands a lot of mental bandwidth and pushing ourselves to exhaustion can lead to emotional instability, stress, and burnout.
- Examine if this is truly how we want to live our lives. We need to determine if what we're doing is really what we want to be doing. If we're not happy with what we're doing then every moment we continue doing it can compound our feelings of unhappiness. If we feel nothing but dread for our current situation then we may need to renegotiate our commitments. That can be something as simple as agreeing not to learn something right now, or can be as complex as taking on different work or changing careers.
By understanding that we're headed toward burnout (or are burned-out already) we can take measures to course-correct so we can approach our programming practice with joy and enthusiasm. Sometimes taking a step back and re-evaluating what we're doing can help us not sit in the constant loops of frustration, anger, and guilt. Changing our story to better fit reality can keep us from trying to match an impossible dream.
I mentioned before about re-negotiating commitments. We often get ourselves into situations where we have way more to do than is physically possible, even under the best of circumstances. This may be in part because we've said "yes" to too many things, or because we're being swamped with work commitments, such as a large high priority project, or several smaller projects that need urgent attention. The best way to renegotiate your work load is to review your work load and notice which tasks feel "urgent" and which ones feel "important". "Urgent" tasks are tasks that feel like they need to be done immediately. They might not be "important" tasks, but they have a sense of urgency to them. "Important" tasks are tasks that will benefit yourself or others. These are tasks that have significant value when completed, both monetarily and significance. Take out a sheet of paper or open up a text document and create two categories: "urgent" and "important". List out the tasks you need to complete and categorize them under "urgent" or "important". Next mark the due date (as best you can) of each of these tasks. If you have more than three urgent and important items and they're all due the same week then it's likely you're overworked and will need to renegotiate those commitments. You may feel that you are capable of doing all of these things but if you're already feeling stressed, tired, and burned out then you'll only compound those feeling by trying to meet the deadlines. If you can, find out if you can move some of these deadlines to the next week, or check with your customers to find out if these are really as urgent and important as you think they are. If they are urgent or important then find out if your management can assist you with other resources, or if they can intervene to renegotiate these deadlines and priorities. If you're truly stuck (management won't budge and the customers won't renegotiate the commitments) then you have some decisions to make about how important their priorities are versus your own capabilities. There's the temptation to say that your management and your customer's priorities are more important than your own priorities (they facilitate your income, which contributes to making your lifestyle possible), but your own health and well-being should have more weight in your decision than their priorities and deadlines. Perhaps you can negotiate some down-time after this period so you can rest, relax, and regain your strength and mental acuity before being plunged into a similar situation.
Learning to say "no" is an important skill as a programmer. Too often we regard ourselves as super-beings that can do anything, in part because the computers we work on seem like they can do anything. Unfortunately, we have finite physical and emotional resources, so learning to pick and choose the projects that are most important to us (depending on our own internal criteria) will help sustain us as we progress through our programming careers. If we say "yes" to everything that someone pitches to us then we'll have less time to work on things that really matter to us. We'll be at the mercy of folks whose priorities and desires do not match our own. The most effective way to burn-out is to spend all of your energy working on projects that don't match your own priorities and desires.
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 are valid is the first step to changing your trajectory from burnout and stress. Programming shouldn't be drudgery (no work of value 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 emphasize that it's OK to ask others for help. I've struggled with asking for help. Part of my reluctance in asking for help was instilled in me whenever I would ask a question and get the dreaded "you should know that already" response. Other times I believed that by asking for help I would somehow diminish my reputation. I'd be exposed as a fraud and an impostor. Folks would wonder why they ever trusted me in the first place. But when I actually asked for help the responses I received weren't "why don't you know this?"; they were "why didn't you ask for help sooner?". Sure, there were occasions where someone would be surprised I didn't know something, or I would receive some criticism for my ignorance, but I've found that the benefits of asking the question outweighed any negative effects.
Asking for help isn't just limited to asking technical questions; there are many more ways that we might need help. We may need to ask our colleagues to help us during a difficult time in our lives. We may need the help of our management when we're struggling personally and professionally. We may even need a whole different set of 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.
The most common reason for our reluctance in asking for help is our desire for comfort. Asking for help means placing ourselves into a state of vulnerability and hoping the people we're asking to help us will treat us with kindness, respect, and dignity. This vulnerability can be amplified if we don't know the person we're asking for help, or if the person is a medical professional. But putting ourselves in these vulnerable situations is necessary, especially if the problems or situations we're facing are out of our control or experience. If we're close to burning out (or are suffering through burnout) we may need the help of a doctor or therapist to uncover better ways to cope with what we're experiencing. If our job is causing stress and strain we may want to talk with others in our community to find out if others are also experiencing these feelings. Even the simple act of commiseration with our peers can help us realize that we're not alone in facing these issues, and may help us find better ways of managing our workload and stress. They may also help us recognize abnormal or abusive situations that we're facing. Sometimes we don't realize when our jobs or relationships have turned from caring and nurturing to ones that bring us more harm than anything positive.
"There's no shame in asking for help" is an overused phrase, but asking for help is not a shameful act. We need the help of others. Even someone saying "I'm sorry you're dealing with that" can be a connection with someone else who sympathizes what we're going through. Finding others who are willing to listen, empathize, and commiserate can be the difference between feeling part of a community and feeling like we've been abandoned in our profession.
We also need to recognize when our support systems aren't supporting us. If we find that talking with someone else is not helping us resolve the issue we may need to find other means of help. We may realize that we need additional support.
Realizing the need for additional support can be difficult, but once you have come to that realization I'd encourage you to act and get additional help. This requires self-awareness and honesty with how you are feeling. Only you know your situation and if you're being honest with yourself. If you're not being honest with yourself then only you can realize this and can take take the initiative to seek out the help that you need. Nobody else knows your inner-workings better than you.
Asking for and receiving help is a skill, and like any skill it needs practice. When we're young we have simple means of asking for help (crying, pointing, etc.). These skills are baked into us as part of our survival mechanisms, but as we grow our world becomes more complex. Our methods for asking for help need to mature as we mature. This is not something that comes naturally to any of us. We will struggle to ask for help, and we will resist when we're receiving help from others. Repetition and careful practice will help us improve our skills in asking for help. Improving these skills will help us to overcome the obstacles we face throughout our day. That improvement will help us to become not only better programmers but also better at handling the challenges that life gives us.
Giving up
Programmers don't like to think about giving up. How many times have we asked others to be patient while we try to fix something that isn't working? ("Just a few more minutes, please. Honest!") We work on machines that seem to have limitless possibilities. As programmers we feel compelled to explore those possibilities, but sometimes we don't want to do that exploration. Sometimes we look at the list of things we should be learning and wonder if it's worth the effort. We look at job postings for our set of skills and find nothing but lists of meaningless work. New programmers ask us what it's like to be a programmer and we consider if we should warn them about the dangers of choosing a career that have led us to being unhappy and unfulfilled. The joy that sustained us while learning the craft disappears and we struggle with the fear that we will never cultivate that feeling again.
Programming isn't for everyone. There are times when I've wondered if I should continue working as a programmer. I'm frustrated that I can't possibly learn everything that I want to know. I worry if what I'm learning will still be relevant by the time I'm finished. I'm anxious that I won't be able to compete in a job market where everyone else seems like they had a head start. I struggle looking through job positions that offer work that I don't think will be relevant six months from now, let alone 10 to 100 years from now. I feel like the computing future I was promised has been corrupted and all of us are stuck in a world where computers are little more than levers for companies to pry open the wallets of their customers.
It's easy to become fatalistic about the practice of programming, but I've realized that there's more to computing and programming than what the job market has to offer.
Part of the joy of programming is curiosity. If we can nurture our curiosity while programming then we have so many avenues to explore. There are always other ideas and other topics to discover, such as game development, esoteric languages, or other programming paradigms. The job market uses a fraction of the programming ideas that are out there waiting to be explored. There are also many emulators and retro-computers available with good documentation and vibrant communities. One area that has intrigued me is learning about how older computers work. Older computers are simple and can be understood with patience and the right mindset. These machines are well-understood, and most of these older programs were put together by one programmer. They make an excellent space for learning not only how older machines worked, but many of the concepts that still permeate our modern machines.
What happens when we realize that there is no joy left for us in programming? What do we do when the thought of programming computers no longer excites us? How do we keep going when even the thought of trying something new fills us with dread? What then?
If we don't find any joy in programming then we need to understand why we are feeling this way. Maybe we're tired after a rough project that sapped out all of the fun and excitement of programming for us. Perhaps the communities we've joined in our area and online are hostile and unwelcoming. Maybe we thought programming would be more fun but every time we start we wish we were doing something / anything else instead.
Programming is at its best when you really want to do it. It isn't for everyone. If you're stuck in a situation where you don't want to program anymore then your best course of action is to quit being a programmer. There's no shame in quitting programming --- many programmers have lost the spark of joy and the desire to keep programming, and have moved into other fields. It's OK to leave the field of computer programming and do something else.
Programming is only one facet of our lives. True, it may be a big facet of our lives, and it may feel scary to give up something that we've worked so hard to accomplish. But if we realize that we're just going through the motions and are no longer experiencing any joy in programming then it's time to think about what else we can be doing with our lives outside of programming. We're granted a limited amount of time to live our lives. Doing something we don't enjoy robs us of a meaningful life.
Giving up should not be a negative experience. There is no shame in taking time away from being a programmer. Plenty of programmers have given themselves a "sabbatical" from programming to explore other interests and recharge themselves. Breaking loops of negative experiences in programming can help us identify what we want out of programming and a programming career. It can help us find and confirm our innermost feelings about programming and see if we're still meant to keep pursuing this path.
There are several fears that can keep us from making this break with programming. The first fear goes by the fancy name of the "sunk cost fallacy". The sunk cost fallacy is the belief that the time and effort we spent learning and programming is an investment, and that investment will be wasted if we quit. Thus, in order to preserve our investment we must keep programming. The problem with this fallacy is that it assumes we have not already received the benefit from that time and effort. I'd argue that learning any sort of programming is not a wasted skill. Programming can be applied to many facets of our lives, such as simplifying tasks into manageable steps, applying structured thinking, and understanding basic Boolean logic. Many other fields have also adopted computers so having computer skills can be helpful for yourself or others. The knowledge you have will not go to waste.
The second fear is the fear that we'll somehow let down our fellow programmers and others in our organization if we stop programming. This one is tricky. It's tricky because it includes others in our decision-making process. We might be in an organization that has a substantial load of tasks to complete, and our decision to quit will mean these tasks won't be completed the way we wish those tasks to be completed. It's not hard to imagine our absence causing harm to the entire organization and resulting in its eventual collapse. Is this scenario true? It's up to us to tease out whether our absence will truly let everyone in our organization down. This puts us in a situation where our fear leaves us feeling "stuck". We feel "stuck" because our fear has created a situation where we're choosing between our own well being or the well being of others. This is a false dichotomy. Our absence might be the catalyst for someone else to pick up our tasks and work on them, and possibly complete them more effectively than we can in our current state. We need to determine if we are truly irreplaceable or could someone else take our place? The answer might be "I am irreplaceable, but I need to leave this situation or I will cause harm to both myself and others if this continues". It's up to us to review if we are helping ourselves and the organizations we serve, or if we are harming them and ourselves by deluding ourselves that this is working.
The third fear deals with our own personal concept of identity and the memory of our community. If we decide to stop being a programmer will that somehow erase a part of our identity? Will our community stop identifying us as a programmer and will we lose contact with folks that have become friends and colleagues? Again, this fear is tricky to overcome because programming may be a large part of our identity. Letting go of programming can lead to feeling like we are stripping away a piece of ourselves and our identity. There's also the fear that folks will stop calling us for jobs or other programming projects if we decide to take a temporary break. If the break is temporary will people remember our programming skills when we decide to return?
Each of these fears and worries are valid, but they may not be the truth. We can be afraid that we wasted our time as a programmer, but the truth is any learning isn't wasted effort. We can worry how others perceive us or how the organizations we were a part of move on without us, but the truth is we can't control their perceptions and actions. What we can control is our participation in each of these communities and our perception of the time end effort invested. We can determine if a hard break from programming would be better than gradually easing ourselves out of our commitments. We can clarify to others what our current status as a programmer is and determine if this status is temporary or permanent. The most important thing is not letting others persuade us into doing something that we don't want to do or is harmful to us. If we need to stop programming because we are emotionally drained and burned out then we need to make it clear to others that we will be doing a disservice to them and ourselves if we continue.
Mature communities will understand the need to take a break and stop programming. They will understand that your mental and emotional well-being is more important than their need for you to continue, and they will be able to piece together what needs to be done and heal from your absence. It is normal and natural for folks to move on from organizations and pursue other priorities.
What's important to remember is that it's OK to turn off that portion of your being and stop being a programmer. Whether or not you make that a permanent change is up to you and your desires. Feeling emotionally drained, uninspired, and burned out is counterproductive to your programming practice --- programming is hard enough. Taking a break from programming to explore other interests is natural and doesn't mean you're less of a programmer for wanting to do something different to recharge yourself. If you find that you're happiest when you're not programming then pursue whatever else has your attention with wild abandon. If you decide to return to programming after being away for a bit then you can return and pick up your learning practice. Remember: our lives take many different turns and paths. The best path for you is the one you make yourself, regardless of where that might lead.