Skip to content

Latest commit

 

History

History
278 lines (227 loc) · 21.5 KB

chapter-52.md

File metadata and controls

278 lines (227 loc) · 21.5 KB

####Better than Yesterday ####Лучше чем вчера

Fixing a bug is (usually) easy. Something is broken. You know it’s bro- ken, because someone reported it. If you can reproduce the bug, then fixing the bug means correcting whatever malfunction caused it and verifying that it is no longer reproducible. If only all problems were this simple!

Фиксить баги (обычно) несложно. Что-нибудь не работает. Вы знаете, что оно не работает, потому что кто-то прислал отчет об этом. Если вы можете воспроизвести баг, значит остается просто внести исправления в неправильно работающий код и проверить, что ошибка больше не воспроизводится. Если бы все было так просто!

Not every problem or challenge is quite so discrete, though. Most important challenges in life manifest themselves as large, insurmount- able amorphous blobs of potential failure. This is true of software development, career management, and even lifestyle and health.

Не все ситуации и задачи настолько изолированы. Большинство важных задач в жизни оказываются огромными, непреодолимыми, аморфными кучами, сулящими провал. Это справедливо для разработки программного обеспечения, развития карьеры, и даже образа жизни и здоровья.

A complex and bug-riddled system needs to be overhauled. Your career is stagnating by the minute. You are steadily letting your seden- tary computer-programming desk-bound lifestyle turn your body into mush. All of these problems are much bigger and harder to just fix than a bug. They’re all complex, hard to measure, and comprised of many different small solutions—some of which will fail to work!

Сложная и заполненная багами система требует основательной переработки. И ваша деятельность замедляется с каждой минутой. Вы постоянно позволяете своему сидячему, малоподвижному образу жизни программиста, превращать ваше тело в овощ. Все эти проблемы гораздо больше и труднее, чем простое исправление багов. Все они сложны, плохо поддаются измерению и заключают в себе множество различных небольших решений, часть которых не работает!

Because of this complexity, we easily become demotivated by the big- ger issues and turn our attention instead to things that are easier to measure and easier to quickly fix. This is why we procrastinate. And the procrastination generates guilt, which makes us feel bad and there- fore procrastinate some more.

Из-за этой сложности более крупные проблемы легко демотивируют нас, и мы переключаем внимание на вещи, которые проще оценить и проще быстро исправить. Именно из-за этого мы прокрастинируем. А прокрастинация порождает чувство вины, которое заставляет нас чувствовать себя плохо, и откладывать на потом ещё больше.

As I mentioned in That Fat Man in the Mirror, on page 192, I’ve strug- gled with getting and staying in shape for as long as I can remember. Indeed, when you’re miserably out of shape, “Just get in shape” isn’t a concept you can even grasp much less do something concrete about. And to make it harder, if you do something toward improving it, you can’t tell immediately or even after a week that anything has changed. In fact, you could spend all day working on getting in shape, and a week later you might have nothing at all to show for it.

Как я упоминал в главе "Этот толстый чувак в зеркале", на странице ***, я пытался привести себя в форму и сохранить её, всё время как я себя помню. Действительно, когда ты немного не в форме, "Просто прийти в форму", это не то, о чём ты постоянно думаешь, не говоря уже о том, чтобы сделать что-то конкретное. Усложняет ситуацию то, что если вы делаете что-то, чтобы улучшить ситуацию, вы не можете сказать сразу или даже через неделю, изменилось ли что-то. На самом деле вы можете провести целый день, работая над приведением себя в форму, и неделю спустя вы не сможете ничего предъявить.

This is the kind of demotivator that can jump right up and beat you into submission before you even get started.

Это настолько демотивирует, что может заставить сдаться ещё до того, как вы вообще начали.

I’ve recently been working on this very problem in earnest. Going to the gym almost daily, eating better—the works. But even when I’m getting with the program in a serious way, it’s hard to see the results.

В последнее время я работал над этой проблемой основательно. Практически ежедневный поход в спортзал, правильное питание - это работает(??). Но, даже когда я начинаю серьёзно соблюдать программу, увидеть результаты сложно.

As I was wallowing in my demotivation one recent evening, my friend Erik Kastner posted a message to the social messaging site, Twitter, with the following text:

Когда в один из недавних вечеров я был в демотивированном состоянии, мой друг Эрик Кастнер написал сообщение в Твиттере, со следующим текстом:

Help me get my $%!^ in shape...ask me once a day: "Was today better than yesterday?" (nutrition / exercise) - today: YES!

Помогите мне привести свою $!%^!;% в форму... спрашивайте меня раз в день: "Было ли сегодня лучше, чем вчера?" (питание/упражнения) - сегодня: ДА!

When I read this, I realized that it was the ticket to getting in shape. I recognized it from the big problems I have successfully solved in my life. The secret is to focus on making whatever it is you’re trying to improve better today than it was yesterday. That’s it. It’s easy. And, as Erik was, it’s possible to be enthusiastic about taking real, tangible steps toward a distant goal.

Когда я прочитал это, я понял, что это и есть путь к тому, чтобы привести себя в форму. Это стало ясно, потому что в моей жизни были сложные проблемы, которые я решал успешно. Нужно сосредоточиться на том, чтобы делать хоть что-то, чтобы были улучшения по сравнению с предыдущим днём. Вот оно. Это легко. И, как и Эрик, можно быть таким же полным энтузиазма в том, чтобы делать реальные, ощутимые шаги к отдалённой цели.

I’ve also recently been working on one of the most complex, ugliest Ruby on Rails applications I’ve ever seen. My company inherited it from another developer as a consulting project. There were a few key features that needed to be implemented and a slew of bugs and per- formance issues to correct. When we opened the hood to make these changes, we discovered an enormous mess. The company employing us was time- and cash-constrained, so we didn’t have the luxury to start from scratch, even though this is the kind of code you throw away.

Также в последнее время я работал над одним из сложнейших, уродливым приложением на Ruby on Rails, которые я когда-либо видел. Оно досталось моей фирме от другого разработчика, как проект, по которому мы консультировали. Было несколько ключевых функций, которые нужно было реализовать, и масса багов, и узких мест в производительности, которые нужно было исправить. Когда мы залезли вовнутрь, чтобы внести эти изменения, мы натолкнулись на чудовищную неразбериху. Компания, которая наняла нас, была ограничена во времени и средствах, так что мы не могли позволить себе роскошь переписать всё с нуля, хотя этот код лучше было бы выкинуть.

So, we trudged along making small fix after small fix, taking much longer to get each one finished than expected. When we started, it seemed like the monstrosity of the code base would never dissipate. Working on the application was tiring and joyless. But over time, the fixes have come faster, and the once-unacceptable performance of the application has improved. This is because we made the decision to make the code base better each day than it was the day before. That sometimes meant refactoring a long method into several smaller, well- named methods. Sometimes it meant removing inheritance hierarchies that never belonged in the object model. Sometimes it just meant fixing a long-broken unit test.

Итак, мы долго и утомительно делали небольшие фикс за фиксом , тратя на то, чтобы завершить каждый, больше времени, чем ожидалось. Когда мы начали, казалось, что этот код никогда не перестанет быть безобразным. Работа над приложением была утомительной и безрадостной. Но, со временем, фиксы делались быстрее, и некогда неприемлемая производительность приложения повысилась. Это произошло потому, что мы приняли решение каждый день делать кодовую базу лучше чем вчера. Иногда нужно было разбить метод с длинным именем на несколько небольших, но с хорошими именами. Иногда нужно было убрать иерархию наследования, которая никогда не была частью объектной модели. Иногла нужно было просто исправить длинный неработающий юнит-тест.

But since we’ve made these changes incrementally, they’ve come for “free.” Refactoring one method is something you can do in the time you would normally spend getting another cup of coffee or chat- ting with a co-worker about the latest news. And making one small improvement is motivating. You can clearly see the difference in that one thing you’ve fixed as soon as the change is made.

Но так как мы вносили эти изменения маленькими порциями, они достались нам "бесплатно". Рефакторинг одного метода - это то, что вы можете сделать за время, за которое обычно можно выпить чашку кофе, или перекинуться парой последних новостей с коллегой в мессенджере. Внесение одного небольшого изменения мотивирует. Вы можете явно почувствовать существенное изменение, что вы исправили одну вещь, как только изменение сделано.

You might not be able to see a noticeable difference in the whole with each incremental change, though. When you’re trying to become more respected in your workplace or be healthier, the individual improve- ments you make each day often won’t lead directly to tangible results. This is, as we saw before, the reason big goals like these become so demotivating. So, for most of the big, difficult goals you’re striving for, it’s important to think not about getting closer each day to the goal as it is to think about doing better in your efforts toward that goal than yesterday. I can’t, for example, guarantee that I’ll be less fat today than yesterday, but I can control whether I do more today to lose weight. And if I do, I have a right to feel good about what I’ve done. This con- sistent, measurable improvement in my actions frees me from the cycle of guilt and procrastination that most of us are ultimately defeated by when we try to do Big Important Things.

Вы не сможете увидеть значительного изменения в целом, когда вносите небольшое изменение. Если вы пытаетесь стать более уважаемым на работе, или стать здоровее, отдельные улучшения, которые вы делаете каждый день, обычно не приводят непосредственно к ощутимым результатам. Это, как мы видели раньше, и является причиной, по которой большие, сложные цели, как эта, так демотивируют. Поэтому, для больших сложных целей, к которым вы стремитесь, важно думать не столько о том, чтобы каждый день быть ближе к цели, а о том, чтобы каждый день прикладывать больше усилий, чем вчера для достижения цели каждый день. Я не могу, например, гарантировать, что я буду менее полным завтра, но я могу контролировать, что делаю сегодня больше, чем вчера, чтобы снизить вес. И если это так, у меня есть право почувствовать себя хорошо, из-за того, что я сделал. Эти последовательные, измеримые улучшения в моих действиях, освобождают меня от замкнутого круга вины и прокрастинации, который большинство из нас окончательно заводит в тупик, когда мы пытаемся сделать Большую Важную Штуку.

You also need to be happy with small amounts of “better.” Writing one more test than you did yesterday is enough to get you closer to the goal of “being better about unit testing.” If you’re starting at zero, one additional test per day is a sustainable rate, and by the time you can no longer do better than yesterday, you’ll find that you’re now “better about unit testing” and you don’t need to keep making the same improvements. If, on the other hand, you decided to go from zero to fifty tests on the first day of your improvement plan, the first day would be hard, and the second day probably wouldn’t happen. So, make your improvements small and incremental but daily. Small improvements also decrease the cost of failure. If you miss a day, you have a new baseline for tomorrow.

Важно радоваться даже небольшому количеству этого "хорошо". То, что вы написали на один тест больше, чем вчера, достаточно для того, чтобы стать ближе к цели "быть лучше в юнит-тестировании". Если вы начинаете с нуля, один дополнительный тест в день - это устойчивый темп, и когда со временем вы не сможете продолжать вносить улучшения, по сравнению со вчерашним днём, вы поймете, что сейчас вы уже пришли к состоянию "лучше в юнит-тестировании" и уже нет необходимости продолжать улучшения. С другой стороны, если вы начнете с нуля и в своём плане решите в первый же день дойти до пятидесяти тестов, первый день будет сложным и второй возможно так и не наступит. Так что улучшения должны быть небольшими, постепенными, но ежедневными. Небольшие улучшения также снижают стоимость ошибки. Если вы потеряете день, вы сможете начать сначала завтра.

One of the great things about this simple maxim is that it can apply to very tactical goals, such as finishing a project or cleaning up a piece of software, or it can apply to the very highest level goals you might have. How have you taken better action today for improving your career than you did yesterday? Make one more contact, submit a patch to an open source project, write a thoughtful post and publish it on your weblog. Help one more person on a technical forum in your area of expertise than you did yesterday. If every day you do a little better than yesterday toward improving yourself, you’ll find that the otherwise ocean-sized proposition of building a remarkable career becomes more tractable.

Одна важная вещь в этом правиле, это то, что оно применимо как для тактических целей, таких как завершение проекта, или изменение части программного обеспечения, так и для очень высокоуровневых задач, которые могут у вас быть. Как вы можете изменить свои действия, по сравнению со вчерашними, для того, чтобы улучшить свою карьеру? Завести ещё одно знакомство, закоммитить патч в опенсорсный проект, написать содержательный пост и выложить его в своём блоге. Помочь ещё одному человеку на техническом форуме по вашей специализации. Если каждый день вы будете делать небольшое улучшение с тем, чтобы сделать лучше себя, вы поймёте, что тогда проблема построения выдающейся карьеры, размером с океан, становится более легкой.

#####Act on It!

  1. Make a list of the difficult or complex improvements you’d like to make; they can be personal or professional. It’s OK if you have a fairly long list. Now, for each item in the list, think about what you could do today to make yourself or that item better than yester- day. Tomorrow, look at the list again. Was yesterday better than the day before? How can you make today better? Do it again the next day. Put it on your calendar. Spend two minutes thinking about this each morning.

#####Действуй!

Составьте список трудных и сложных улучшений, которые вы бы хотели сделать; они могут относиться к работе или быть личными. Нормально, если у вас получится довольно длинный список. Теперь, для каждого пункта в списке, подумайте, что бы вы могли сделать сегодня, чтобы вы или этот пункт стал лучше, чем вчера. На следующий день посмотрите на список снова. Стало ли вчера лучше, чем позавчера? Что вы можете улучшить сегодня? Сделайте то же самое на следующий день. Отметьте это в своем календаре. Каждое утро пару минут думайте об этом.