Don't panic (translation of the chapter in Passionate Programmer by Chad Fowler)

Original author: Chad Fowler
  • Transfer

Why this book deserves a translation


I want to share my opinion with the habrasociety about the book "Passionate Programmer", a translation of one of the chapters of which is presented below. The book was published in 2009, but it is not very widely known among Russian programmers, however, many who met it consider it very worthy. Chad Fowler (author of the book) did his best to convey his rich experience to readers (he is currently CTO 6Wunderkinder, has more than 20 years of development experience and, due to his extensive experience and interests, he is a welcome guest at Ruby and IT conferences) . Yes, I don’t remember how I found this book, but I remember that it was the introduction from Kent Beck (the ideological inspirer of Test Driven Development and Extreme Programming) that served as the reason to read it.

This book does not describe specific technologies, algorithms, etc., but there is just a bunch of tips regarding what sometimes any developer encounters: lack of motivation, choice of priorities, programming psychology, relationships with management and colleagues; By and large, a lot of instructions are given on how to make a bright career as a programmer. Of course, experienced developers may find some of his ideas quite obvious, but for those who are only at the very beginning of their career, reading this book will definitely be a good investment of time. A big plus is that the book is very easy to read and, if you are fluent enough in English, you can actually read it in just a few days. Just wondering why our publishers have not yet translated it into Russian?

After reading the book, I became interested in Chad. Found his blogonline. As it turned out, he began to lay out chapters in him from his book (currently 2 chapters out of 53 have been published). I asked for permission to translate for the Habr, he replied that it was a good idea, but only first I need to send him a letter with exactly what I want to translate (apparently this desire was somehow related to the publisher where the book was published) . After my reply there was silence for a week, I sent a second letter - there was no answer again. Then I received an invitation from him to Wunderlist (the service for which he is currently responsible). In general, I felt that if there was no explicit ban, and these chapters are already in the public domain, and he has not completely forgotten about me, then you can make a translation. In general, if translation is useful to the community, I will continue to translate other chapters.



Do not panic


I started my programming career because I loved computer games. From the days when games started from cassettes on my Commodore 64, I was simply fascinated by their interactivity and how deeply they could immerse a player in their world. I was embarrassed to admit this fact, but over time I realized that there was nothing wrong with that. Be that as it may, computer games turned the picture from the screen of the monitor for me into something more that I felt comfortable with and that delighted me.

Favorite game was Doom by id Software. I especially liked the game mode on the network against other players - deathmatch. Those who wanted to play among themselves could connect to each other through a modem via a telephone line or through a regular serial connection and fight in small locations. I was very good at deathmatch. I even joked that this could become my profession - I was so good at it. Surprisingly, a duel with other players with its simple goal in fact is quite complicated. It requires the use of both good technical skills of the game, and psychology - as a crazy mix of chess and fast forward.

The best way to upgrade skills in your field is to observe how the master works. In those days of my hobby Doom, there was one such master who was known under the ironic nickname “Noskill” (“Madness” is a pun of a comment of a translator) . Noskill was the reigning champion at Doom. People from all over North America could pay expensive telephone bills to try their luck to play with him. The fights were saved using the built-in recording function in Doom. I reviewed each of them.

For me, the secret of Noskill's craftsmanship did not take much time. Of course, he was very good at the game itself, but there was also an obvious key to his success - he never panicked. Doom was such a game, a round in which could end in a matter of seconds after its inception. It was really fast. I remember my first deathmatch: appeared-died-appeared-died-appeared-died. When in the long run I could stay alive for more than a few seconds, I found myself running aimlessly down the corridor, hardly understanding where I was now.

But Noskill never did that. In these notes it was clearly visible that no matter how difficult the situation was, he was always relaxed and always knew what to do next. And, it seemed that he always knew how the current context fits into the overall picture of the match.

Now, if you recall other games, especially sports, you will realize that all the best players share this quality. In fact, even the characters from books and films that we admire also share this quality. Heroes never panic. They can get whatever they want - a nuclear bomb aimed at their city or plane crash, but they can always find help, help survivors, outsmart the enemy, or at least not burst into tears.

It is also extrapolated to real life. Despite all the planning efforts, my professional life was a series of emergencies and disasters. Projects were completed with great delays. My programs were falling, which cost real money to my employers and the loss of trust in me. I said bad things to a bad vice president, nurturing a political enemy. Typically, such things rolled in waves all together, they never came in turn.

In my worst moments, I panicked. I closed myself and could develop tactics, considering each event separately, not having an idea of ​​what kind of picture is developing as a whole.

But looking back at all the disasters that occurred, it is obvious that not one of them had a lasting, noticeable impact on my career. No matter how I panic or get upset, no matter how much depression I get, I can cope with all these seemingly dangerous situations that essentially weren't.

What did this alarmist give me? Nothing. Was there an advantage in negative reactions to each of these situations? Not. What really panic contributed to was the inability to be the best at those times when I really needed to be the best.

Yes, I have to admit that simply advising to let go of a panic in a stressful situation is easier than actually applying this advice in practice. It's like telling someone, "Just be happy." Of course, this is good advice, but how to do it? How can you avoid a state of panic when everything seems to collapse? To answer this question, we need to think a little about why we are panicking.

We panic when we lose perspective. When something goes wrong, it's hard not to focus your attention on it. I am not saying that this is bad, and even to some extent it is a good way to solve problems. But, unfortunately, this approach becomes the cause of another problem: no matter how small the primary problem is, it starts to seem that only it is important. The problem becomes more and more, the level of stress increases, and as a result, our brains simply turn off.

Who is the worst computer user you know? For me, this is most likely one of my parents or one of my spouse's parents (I know who it is, but I'm smart enough not to write their names here). Imagine that this person is sitting in front of his computer, trying to complete his working project when an error message starts popping up, no matter what he tries to do. Most of us have witnessed a similar situation. Inexperienced computer users get upset instantly and start doing different strange things. They start feverishly clicking and dragging windows back and forth, ignoring the potentially useful error text that appears again and again. Ultimately, they become so excited that they call for help, of course,

Do not think that I am gloating, I just want to describe this situation with such a protagonist as you presumably know, and I want you to laugh at yourself heartily. This behavior is ridiculous. Is not it?

The funny thing is that we presented a scenario from real life in which a person works outside his comfort zone when he encounters a problem and begins to panic. This is not much different from how I reacted in those moments when my developments did not meet the deadlines, unexpectedly ruined the system or simply disappointed the client. It all happened in a different context.

Well, that's how I actually learned not to panic. When something bad happens and I begin to feel that it is unsettling and is about to lead to panic, I begin to compare myself with that frustrated user and laugh at myself. I analyze the situation from the perspective of a third party, as if helping my relative cope with that raging word processor. Suddenly, a problem that seemed complicated becomes easy. And this bad situation, it’s actually becoming not so bad. I often come across the fact that the solution to many problems is very simple and literally shouts in my face, just like that dialogue with an error that tells you what to do next. If your mind has not run away and you can read the error message, the problem can be solved.

Act!


1. Start a panic log. The bottom line is to intercept the panic before it occurs. This is possible if you develop your “real time” awareness of emerging sensations and emotions. I learned how to do this by analyzing reactions and situations after the fact. I’m not so cool as to start a flow in the background to analyze emerging thoughts, but I found that if you practice analysis offline, I’m getting better and better by doing real-time analysis.

Saying that you will do your job better by analyzing reactions, and really doing it, are two different things. Logging will help structure the process. Every day at a specific time (use a calendar with a reminder!), Open a text file and record any situation that caused you to panic, even if it was one of the little things. Once a week, looking at the compiled list, evaluate the long-term consequences of each situation that caused a panic. Was it really worth the panic? What could be the most reasonable response to this situation? What would a hero do in a movie about your life instead of alarmism?

After some practice, you will find that the analysis will occur while panic is creeping up. By rationally examining the causes of your panic in real time, you will realize that the panic recedes and ultimately dissipates.

PS On a hub in 2009 the project of translation of this book began:
Passion for programming
Passion for programming. Chapter 2. Acknowledgments
Passion for programming. Chapter 3. Introduction
Passion for programming. Part 1 (Choosing a market). Start
Passion for programming. Part 1. Tip 2. Supply and demand
Passion for programming. Part 1. Tip 3. Coding is not everything

Also popular now: