Additional changes for ch. 07
[themediocreprogrammer.git] / chapter06.md
index dfd1d2ea695612c5acbe0d42e9a55ad847c9a38a..87990fb191373aaffeeafd4ef55aa25e5b45945d 100644 (file)
@@ -24,7 +24,7 @@ Each day you have an opportunity to learn more about the realm of computers and
 
 There are many opportunities to learn, whether it be via books, tutorials, videos, or computer-based training. There's also a myriad of different topics to learn. How do you decide which one is most important to learn? How do you manage what you're learning? How do you keep from getting overwhelmed with the options available?
 
-This gets back to focusing on one thing at a time and listening to how you learn best. This feedback will help you decide what to learn next. One approach is to think about the things that you're most passionate about right now; what excites you at this moment. If there's something that you're eager to learn then start there. If you have multiple things that are exciting or interesting to you then write them down on a list and see if you are more drawn to one of the topics than the others. If you're still having trouble deciding from this list then pick one at random (roll a die or create a random-number generator to select one -- that could be a project).
+This gets back to focusing on one thing at a time and listening to how you learn best. This feedback will help you decide what to learn next. One approach is to think about the things that you're most passionate about right now; what excites you at this moment. If there's something that you're eager to learn then start there. If you have multiple things that are exciting or interesting to you then write them down on a list and see if you are more drawn to one of the topics than the others. If you're still having trouble deciding from this list then pick one at random (roll some dice or create a random-number generator to select one --- that could be a project).
 
 If you have trouble thinking of something to learn and are struggling to come up with one item that is exciting to you then give yourself permission to browse and see what is out there. Look around and see what people are talking about. Head to a programmer meeting to see what they're talking about. Or, if you're really stuck, browse some job listings to see what employers are looking for and see if that sparks some interest.
 
@@ -44,7 +44,7 @@ Treat your learning as an iterative process, with regular check-in periods to se
 
 ## Resistance and The Container
 
-Any time we learn new things we put ourselves into a vulnerable and uncomfortable place. We take the things we are familiar with and try to apply them as we push into new territory. We become uncertain of the outcome; will it be successful or will it be a failure? Will it help us or hurt us? Will we choose the wrong thing to learn and will that cost us opportunities in the long run?
+Any time we learn new things we put ourselves into a vulnerable and uncomfortable place. We take the things we are familiar with and try to apply them as we push into new territory. We become uncertain of the outcome; will it be successful or will it be a failure? Will this topic be too difficult for us to grasp? Will it help us or hurt us? Will we choose the wrong thing to learn and will that cost us opportunities in the long run? 
 
 Discomfort and uncertainty are certainly a part of learning, but rather than think of them as something to be avoided we should instead think of them as a beacon. A beacon gives us direction and illumination when we're in uncertain territory. When we feel uncertain about what we're doing that feeling means we're pushing into new territory. Instead of trying to avoid it or wishing for comfort we can instead relish that we're in uncertain territory and feel those brief twinges of fear and doubt. We can say "I'm about to learn something new. I'm frightened, and don't know where this will lead, but that's OK. I'm willing to see where this goes and enjoy the journey".
 
@@ -52,7 +52,7 @@ We've been conditioned over our human existence to think of the unknown as somet
 
 Steven Pressfield in _The War of Art_ nicknamed these feelings "The Resistance". He considers The Resistance as a sort of mythological being who lives in each of us to thwart creative acts. As the work progresses The Resistance ratchets up the pressure to stop by introducing the feelings of fear and anxiety that we mentioned above. I think of The Resistance as something that also happens whenever we are learning, especially if we're learning tools that help us in our creative pursuits. Pressfield limited his definition to creative folks who were working to complete creative work (book, painting, game, etc.) but I'm expanding his definition to the learning process itself. In our case The Resistance shows up when we're learning the tools to help us be more creative. The Resistance is what tells us we're not good enough to learn these things, or we're unworthy of the benefits they'll bring us. It tries to keep us safe in what we already know.
 
-This is why the focus container that we mentioned before is so important: it gives us small doses of discomfort in manageable chunks. We can see our way through small amounts of daily discomfort and keep learning through our discomfort. And if we focus on one thing at a time we can keep ourselves from the distracting thoughts about whether or not this is the thing we should be working on. Whatever we're working on in this moment is exactly what we should be working on. Whatever is in front of us to learn is what we should be learning. We can be secure in knowing that however long the container is  that everything we are doing during this container is exactly as it should be. When we finish the container we can reassess how it went and what challenges lay ahead.
+This is why the focus container that we mentioned before is so important: it gives us small doses of discomfort and difficulty in manageable chunks. We can see our way through small amounts of daily discomfort and keep learning through our discomfort. It helps us work through our tendency to avoid and hide from difficult situations. And if we focus on one thing at a time we can keep ourselves from the distracting thoughts about whether or not this is the thing we should be working on. Whatever we're working on in this moment is exactly what we should be working on. Whatever is in front of us to learn is what we should be learning. We can be secure in knowing that everything we are doing for the duration of this container is exactly as it should be. When we finish the container we can reassess how it went and what challenges lay ahead.
 
 ## Mapping out longer-term goals
 
@@ -76,32 +76,34 @@ Longer-term goals are just goals that have been broken down into shorter-term go
 
 ## Dead ends and changing topography
 
-### FIXME
+Sometimes we'll find ourselves learning something that's a dead end. We look at our progress and see no real improvement. We don't find the topic as engaging or as exciting as we'd imagined. We realize that what we're learning is an evolutionary dead-end in the realm of programming. What then?
 
-Sometimes we'll find ourselves learning something that's a dead end. We're not making the progress that we think we should be making. We're not finding it as engaging or as exciting as we'd imagined. We're realizing that what we're learning is an evolutionary dead-end in the realm of programming. What then?
+Part of our learning process is understanding that our expectations of how something will turn out can be completely different from how things actually do turn out. We envision all sorts of rewards and platitudes that never come. Does that mean we're at a dead end? I don't think so. What it might be is a case where what we expect we'd be doing with our newfound knowledge isn't panning out. Or we may find that our expectations for how quickly we'd learn the topic aren't being met and we see more and more ahead of us. We may also expect that our career will be bolstered by learning this topic and yet all we hear from the job market is resounding silence.
 
-Part of our learning process is realizing that our expectations of how something will turn out can be completely different from how things actually turn out. We envision all sorts of rewards and platitudes that never come. Does that mean we're at a dead end? I don't think so. What it might be is a case where we brought our expectations for how we thought we'd be learning and we're now realizing that those expectations aren't being met. Our expectations of our progress may be too high, or we may find that the topic is much less interesting than we thought.
+Our engagement is related to our expectations. Programming demands a certain amount of fun and reward and if we're not finding the experience fun or rewarding then we're unlikely to want to continue being engaged with learning that topic. Our minds begin wanting something else to engage us and we crave anything other than to continue with this learning process. After all, shouldn't we be enjoying this? If there's no engagement and enjoyment then the learning becomes drudgery. We become distracted more easily while trying to learn and our minds drift away rather than focus on our learning experience.
 
-Our engagement is related to our expectations. Programming demands a certain amount of fun and reward and if we're not finding the experience fun or rewarding then we're more likely not to engage with whatever topic we're learning. When we're not engaged with the material we dread learning the material and wish we were doing anything else. We wonder if we're doing the right thing by still trying to learn this. Shouldn't we be enjoying this?
+And then there's the problem of learning things that are evolutionary dead ends. The world of computing is littered with the remains of technologies and methodologies that are either no longer relevant or are considered "out-of-fashion". What once was cutting edge is now considered moribund, and the community around that technology / methodology scoot on to new technology / methodologies and leave their previous work as a technological ghost town. When we mention that we're learning these things we get curious looks from developers when we mention what we're learning. "Why would you learn that? We've moved on to this other thing". It's as if we've heard about a party and arrive in time to see the clean-up crew picking up the litter and breaking down the tables and chairs. We feel like we missed out on the good parts and wonder if it's even worth trying to keep up and find the next thing.
 
-And then there's the things that we're learning that are evolutionary dead ends. The community of developers around this concept have abandoned it in favor of something else: new technology, new methodology, or just plain lack of engagement. We find ourselves getting curious looks from developers when we mention what we're learning. "Why would you learn that? We've moved on to this other thing". We find our support withering from neglect and our motivation to learn dwindles.
+All of these can pose their own problems for learning but it's up to us to take a more critical look at why we started this whole process of learning. What did we bring into this?
 
-All three of these can pose their own problems for learning but it's up to us to take a more critical look at why we started this whole process of learning. What did we bring into this?
+In each of these cases we brought our expectations of how the learning would progress. We brought the expectation that it would always be fun, engaging, and relevant. Sometimes our learning expectations do pan out, but when they don't we get discouraged and disappointed.
 
-In each of these cases we brought our expectations of how the learning would progress. We brought the expectation that it would always be fun, engaging, and relevant. Sometimes our expectations about learning do pan out, but when they don't we get discouraged and disappointed.
+Rather than being upset at how our expectations of learning this technology / methodology aren't being met we can take a more mindful approach. We can see ourselves in our moments of learning and notice if we're trying to bring more than our focused attention into the learning container. We can realize that learning is about changing ourselves and change is not always fun, engaging, or pleasant. We can put aside our expectations and concentrate on the learning itself. 
 
-Rather than being upset with how the learning didn't meet our expectations we can take a more mindful approach. We can see ourselves in the moment of learning and see if we're trying to bring more than our focused attention into the container. We can realize that learning is not always going to be fun or engaging and that we can concentrate on the learning. 
+That doesn't mean we shouldn't acknowledge our feelings. We should certainly feel the feelings of boredom, anxiety, disillusionment, and so on. But we should also be mindful of where those feelings come from. Are we truly bored or is this our mind trying to tell us to stop so we can do something more fun? Are we not engaged with this material because we don't find it relevant or are we looking to run to our distractions? Is this really a dead-end in our learning or are we just feeling stuck right now? Notice when the feeling comes up and be curious about what prompted the feeling. Note when you get the feeling and where you feel it most in your body. Stay with the feeling for a few seconds and keep noticing it. Then,  continue your work. While you work keep noticing all of the feelings you're having and repeat the process of staying and noticing your feelings. When you're done you can reflect more on those feelings and make an honest determination of what those feelings are indicating. Through this process you can clarify what is causing those feelings and if they are just resistance to learning new material or a desire to run to distractions or something more familiar.
 
-That doesn't mean we shouldn't acknowledge our feelings. We can certainly feel the feelings of boredom, anxiety, disillusionment, and so on. But we can also be mindful of where those feelings come from. Are we truly bored or is this our mind trying to tell us to stop so we can do something more fun? Is this really a dead-end in our learning or are we just feeling stuck right now? Notice the feeling when it comes up and be curious about the feeling. Note when you get the feeling and where it is in your body. Then continue the work, continuing to notice all of the feelings you're having. When you're done you can reflect more on those feelings and make an honest determination of whether those feelings were the result of what you were learning or were because you're having doubts.
+If, however, you realize that you're really not enjoying learning this topic; if you feel you're spending more time convincing yourself to learn rather than actually learning, then you'll need to have an honest discussion with yourself about why you're learning this topic at all. Is this topic still relevant to you or has the topic become irrelevant? Are you learning this out of an obligation to yourself or others, and is that obligation still present? Are you trying to learn whatever it is because you're worried you'll be left behind, whether that's personally or professionally? Think about what brought you to start learning this and see if the situation has changed. If someone came up to you and asked you if you would like to use this topic in the next few days would you consider it?
 
-If, however, you realize that you're really not enjoying the learning; if you feel like you're constantly having to muster the courage to sit and learn, then you may want to have an honest discussion with yourself about why you're learning this in the first place. Is this still relevant to you or has the moment passed? Are you learning this out of an obligation to yourself or others, and is that obligation still present? Are you trying to learn whatever it is because you're worried you'll be left behind, whether that's personally or professionally? Think about what brought you to start learning this and see if the situation has changed. If someone came up to your computer and asked you if you wanted to learn this would you still jump at the chance?
+You'll need to reconsider your true motivations for learning this topic and see if they still match what you want to do with your programming profession. But you'll also need to be honest with yourself about why you're learning this topic and why it is important to you. There are plenty of things to learn that are great career paths but if you have no interest in the topic, or are just learning it "to get hired" you're going to have a more difficult time learning the topic than if you had a genuine interest in it. But you'll also need to see if this is just resistance to learning. Your challenge will be to sort out your true feelings about this topic and tease out whether you've genuinely lost interest or are just struggling.
 
-There have been many things in my career that I have tried to learn, but there have been many more that I haven't learned. Part of those is because the computing landscape changed. At school I learned the Pascal language. I got reasonably good at it but over time those skills faded. Right now there's very little need for being a proficient Pascal programmer so continuing to develop my Pascal skills would be purely for my own enjoyment. I find other things enjoyable so those skills lay dormant. Should Pascal arise from its moribund state I can revisit the decision. But for now I'm content that I've made the right call. Later in my career the Java language came to prominence. I spent many sessions learning Java until I realized that I didn't enjoy the language. It felt too cumbersome to me and the directions it was taking weren't ones that I cared to pursue. So after some reflection I stopped learning Java. Was this all wasted time? Hardly. During my sessions I learned more about Object Oriented Programming and how objects fit together. I learned more about recursion while trying to solve a problem for one of my projects. These skills transcend Java, so when I started learning Python I was more up to speed on how objects worked so I could better understand what Python was doing and how it was different from Java. And should the need arise I can revisit my decision to learn Java and see if it's something that interests me again. 
+There have been many things in my career that I have tried to learn, but there have been many more that I haven't learned. Part of those is because the computing landscape changed. At school I learned the Pascal language. I got reasonably good at it but over time those skills faded. Right now there's very little need for being a proficient Pascal programmer so continuing to develop my Pascal skills would be purely for my own enjoyment. I find other computing topics more enjoyable so my Pascal skills lay dormant. Should Pascal arise from its moribund state I can revisit the decision to reinvigorate my Pascal knowledge, but for now I'm content that I've made the right call. Later in my career the Java language came to prominence. I spent many sessions learning Java until I realized that I didn't enjoy the language. It felt too cumbersome to me and the directions it took weren't ones that I cared to pursue. So after some reflection I stopped learning Java. Was this all wasted time? Hardly. During my sessions I learned more about Object Oriented Programming and how objects fit together. I learned more about recursion while trying to solve a problem for one of my projects. These skills transcend Java, so when I started learning Python I was able to transfer my knowledge on how objects worked from Java to Python. I used that knowledge to understand what Python was doing and how it was different from Java. And should the need arise I can revisit my decision to learn Java and see if it interests me again.
 
-It's OK to give up on learning something for a while. We are complex beings and our interests change. We also exist in a complex industry of changing technologies and whims. What was interesting and necessary at the beginning of the year might be uninteresting and unnecessary at the end of the year. It's up to us as programmers to understand our learning process and adapt as our needs and desires change.
+It's OK to give up on learning something. It's up to you to determine what you want to learn and for how long. We are complex beings and our interests morph and change. We also exist in a complex industry of changing technologies and whims. What was interesting and necessary at the beginning of the year might become uninteresting or unnecessary at the end of the year. We shouldn't feel beholden to learning something just because others are learning it or because the job market requires it. Give yourself permission to listen to your own desires. If they match up with what a fickle industry wants then great! Go learn with abandon. But if they don't match up and you find yourself spending weeks trying to drive up the motivation to learn then you're doing yourself and your craft a disservice. Let this topic sit dormant for a bit and give yourself something else to learn. 
+
+If you feel the urge to pick this topic back up at a later point then let yourself come back to it. But also come back to this topic without the baggage and expectations of your previous attempts. Saying "I already tried this once, so we'll see if this works this time" sets your mind to expect that you will give up again. Give yourself permission to approach this topic as though you have never seen this before. Be gentle with yourself and see this topic through your current perspective. 
 
 ## Approach with curiosity
 
-As beginners we engaged the computer with curiosity and enthusiasm. We don't know what to expect or how long it will take so we take everything at face value. As we learn we trade our curiosity with certainty, and our enthusiasm with expectations. The excitement we got from learning becomes the drudgery of having to continue to learn. But we can re-capture that beginner's spirit by looking at each opportunity to learn as a new experience. We can let go of our expectations of how our learning will progress and instead approach each learning session with curiosity for what we will learn during the session. We can re-kindle the spark that we had when we were beginners with infinite possibilities, and that spark will sustain us through the periods of uncertainty and drudgery.
+As beginners we engaged the computer with curiosity and enthusiasm. We didn't know what to expect and had no idea how long it would take. We just learned as much as we could and took everything at face-value. As we continued to learn we traded our curiosity for certainty, and our enthusiasm for expectations. The excitement we got from learning became the drudgery of feeling that we must always be learning. But we can re-capture that beginner's spirit by looking at each opportunity to learn as a new experience. We can let go of our expectations of how our learning will progress and instead approach each learning session with curiosity for what we will learn during the session. We can re-kindle the spark that we had when we were beginners with infinite possibilities. That spark will sustain us through the periods of uncertainty.
 
-With each focus container we can begin again, with no preconceived notions of how it will end.
+We can learn to love learning again. With each focus container we can approach our learning fresh, with no preconceived notions of how it will end, and be curious for what we'll find when we dig deeper into what we're learning. Each session of learning brings us one step closer on our journey to close up the gaps. There so much to explore in our field and I hope you always find something new and exciting to help you on your journey.