Why I (Still) Write Code english

By Ka Wai Cheung

Почему я (всё ещё) пишу код? russian

Перевод Пётр Соковых

For nearly two decades, I’ve been writing some form of code. But, the primary reason I code has changed over time.

Вот уже второй десяток лет, как я пишу код. Однако с течением времени причина, по которой я этим занимался, менялась.

In the beginning, I wrote code simply to make something real. It was empowering to finally run a program (after hours of debugging) and see it behave the way I had originally intended it to. It was thrilling to know that my code was there, forever, ready to run again on my whim. In some small way, it felt like playing the role of a deity.

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

Eventually, I got better at writing code. I finally learned how to debug strategically. I expected my code to behave the way I intended it to after a few attempts. The thrill of seeing something simply work had dampened.

Со временем кодить я стал лучше. Отладку я делал уже не наобум, а по чётким алгоритмам. Любые неполадки устранялись с нескольких попыток, и никакого волшебства в простой работающей программе я уже не чувствовал.

It was at that point that I became the starving artist—I wrote code primarily for the beauty of it. I spent my hours reshaping things to be just right, discovering potential patterns in my code and to what degree I’d use them. Toward the end of writing a piece of software, I would inevitably learn a few new practices that made me regret the way I had started writing it. I’d write new code, with those new practices, and the cycle would repeat—I’d learn something new and regret my original approach again.

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

At this time, I began seeking my mentors—anyone from my colleagues at work to the ones that were famous for the ideas I was implementing (Martin Fowler and Joshua Kerievsky to name a few). I learned to appreciate the craft of programming during this period of my coding career.

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

But, it was also during this time where my programmer angst set in. If you’ve written code for anyone else before, you know the feeling. That tension you feel when a feature request bends your once-pristine code out of shape. The rush to make a deadline that jeopardizes the sanctity of your codebase. The stress of having to explain to your client why that “one simple tweak” actually breaks the foundation a feature sits upon.

Затем меня стало посещать чувство страха. Если вы писали код для кого-нибудь другого, вам должно быть знакомо это чувство напряжения, когда одно маленькое предложение по доработке может разрушить весь ваш чистенький-аккуратненький код. Постоянное переживание из-за дедлайна, который подкрадывается как леопард. Стресс из-за необходимости объяснять клиенту, почему из-за «одной маленькой фишки» приходится менять всю структуру приложения.

In fact, my emotional journey as a programmer has been a bit like that of a growing child. At first, being able to make anything happen on my own captivated me. As I matured into that starving artist mentality, doing things the way I wanted to was paramount to my happiness as a programmer.

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

Almost twenty years in, my perspective on code writing has changed again. Don’t get me wrong. I still carry around the internal wiring of both the precocious child and of the world-is-against-me teenager. They were a part of my journey, have become a part of my psyche, and will always be there.

После двадцати лет программирования моё ощущение кода снова поменялось. Не поймите меня неправильно. Я всё ещё ношу в себе и восхищённого ребёнка, и подростка, которому кажется, что весь мир настроен против него. Они — часть моего пути, они стали частью меня, моего образа мыслей, и они всегда будут со мной.

But, what keeps me primarily motivated to code today is something different.

Но то, что заставляет меня программировать сейчас, есть нечто совершенно иное.

These days, I don’t write a lot of new code. In fact, I haven’t actually started a new project in years. I primarily work on DoneDone, an application whose history can be traced all the way back to 2008. Our last rewrite was in 2011, so most of this code is still several years old.

Сейчас я уже не пишу много нового кода. Фактически, я уже несколько лет не начинал новых проектов. Я работаю в основном над DoneDone, приложением, история которого начинается в далёком 2008. Последний раз оно серьёзно переписывалось в 2011, так что большей части кода уже не один год в любом случае.

DoneDone works, and, by and large, works well. The codebase is in very good shape. Does it have its crufty parts? Absolutely. Does it really impact its maintainability? For a development group of our size (two main developers), not usually. The younger me could easily spend weeks on pruning, purging, and reorganizing all the pieces that make it work. But, that no longer would fulfill the primary reason why I code now.

DoneDone работает, и, как мне кажется, работает хорошо. Есть ли в нём красиво написанные места? Безусловно. [ … ]

I continue to write code for DoneDone for a new primary reason—to help other people. To make people be a little more efficient and a bit more delighted. To help people get tedious things done faster with software so they can spend more time doing something else.

Но я продолжаю работать над DoneDone для того, чтобы помочь людям. Для того, чтобы работа людей была чуточку эффективнее, а сами люди — чуточку радостнее. Для того, чтобы люди выполняли свои задачи быстрее с помощью программ, а сэкономленное время могли потратить на что-то другое.

Because my primary motivation to code these days is to help other people, it clarifies for me what’s important to do next. I can start picking off the coding tasks that will make the most people happier, faster. I can better gauge which task has more value to dive into (a small task that might help a number of customers could outweigh a larger task that only helps a few). And, it’s easy to get customers and stakeholders to buy into it because you’re ultimately helping them first.

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

This certainly doesn’t mean that pristine code is no longer a priority for me. It absolutely is. But the reason is different. The reason used to be to satisfy my own futile quest for achieving perfect code. But, now it’s to ensure that the people who will read my code (my colleagues, future inheritors of my work, or even my future self) reap the benefits of the care I put into it now.

Это не значит, что красота кода для меня больше ничего не значит. Конечно, она важна. Но дело теперь в другом. Раньше я писал «красивый код», чтобы удовлетворить лишь свои желания. Теперь он необходим, чтобы другие люди, которые прочитают этот код (мои коллеги, будущие наследники, или я сам через пару лет) не испытывали неудобств от того, как я его написал.

Caring for our own code is one thing. Caring for the **team’s** code is quite another. Teams help each other, and clean up after each other Robert “Uncle Bob” Martin
Заботиться о своём коде — одно дело. Заботиться о коде целой команды — несколько другое. Члены команды помогают друг другу, и исправляют ошибки друг друга.Роберт «Uncle Bob» Мартин

Focusing on people first, instead of the craft, also makes me appreciate an aging codebase. Old codebases are old because they’ve survived. They’ve helped enough people through all these years to continue to be worth maintaining.

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

There was a time in my coding career where the art of software was more important than the purpose of software. I’m glad I went through that period because it helped me get better at my craft. But, my priorities have shifted. Today, I write code, first and foremost, to help people.

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

Тексты были взяты из открытых источников и соединены в формате "билингва" (bilingual book). Для каждой страницы указан источник, автор и переводчик. Если вы заметили неточность перевода, или неправильно сопоставленные абзацы, или текст оформлен неаккуратно - сообщите в комментариях.

Responses

Для добавления комментариев необходимо авторизоваться
Showing 1-1 of 1 item.

В статье указана ссылка на книгу "97 вещей, которые должен знать каждый программист" ("97 Things Every Programmer Should Know"). Оригинал и перевод в формате билингва http://copist.ru/books/97things-dev/