Как стать автором
Обновить
140.46
Skillfactory
Учим работать в IT на курсах и в магистратурах

Компульсивная жизнь разработчиков ПО или Почему весь кодинг немного навязчивый?

Время на прочтение6 мин
Количество просмотров5K
Автор оригинала: Simon Pitt

За кодингом – безумным, постоянным, одержимым – я провёл неделю… Взглянув на часы, я увидел, что код стал мне не только завтраком, но и обедом. Когда я снова посмотрел на часы, снаружи было темно.

Иногда мне приходит в голову, что программирование – в силу необходимости – навязчивая идея. В наших головах так много деталей… я не уверен, что можно, в принципе, программировать без навязчивости. Программирование, как пишут в Smarter Than You Think, требует внимания к деталям и способности думать обо всём как о сериях процессов. Но оно требует не просто какого-то там внимания к деталям, оно требует интенсивного внимания к деталям. Одна шальная точка с запятой может поставить на колени миллионы строк и привести к чудовищному краху. Единственная функция с неверным возвратом сломает всю вашу внимательно прописанную логику. Как такая работа может требовать чего-то кроме навязчивости до такой степени, чтобы забывать пообедать?



Программирование (если всё действительно так) – способность переключаться между десятками и сотнями деталей одновременно. Способность видеть приложение как единое целое, одновременно вгрызаясь в крошечные детали единственной функции. Когда твой код не выполняется, это происходит только потому, что ты сделал опечатку; потому, что твоя логика неверна; потому, что ты используешь не ту версию библиотеки, или потому, что ты редактируешь не тот файл. Есть миллионы вариантов того, как что-то может пойти (и идёт) не так: от железа до зависимостей и собственного тупоголового невежества.

Когда я ложусь в кровать, я всё так же вижу код. Мне снится код. Функции, классы, управляющие структуры. Иногда утром я просыпаюсь с решением упрямой проблемы, которая решалась в моей голове: я программирую, даже когда сплю!

Тем, кто пишет код, это знакомо. История возникновения Facebook, сколь бы неприятной она ни была, рассказанная в постах Цукерберга и в фильме Социальная сеть, о том, как мужчина провёл ночь над проблемами в коде (понятно, что его задачей было собрать изображения девушек с сайта колледжа, чтобы унизить их, но мы не можем винить в этом PHP). Код часто пишут одержимые.

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

Я говорю, что занимаюсь кодингом. Другие люди могут выражаться иначе, говорить о программной инженерии, программировании, разработке, хакинге. Есть жаркие, но шуточные дискуссии об определениях. Лично я называю процесс скриптингом. Самый распространённый сегодня язык – JavaScript, в конце концов.

Скриптинг – скромное определение. Оно останавливает меня от идей выше моего положения. Код – это скрипт, которому должен следовать компьютер. Он заставляет компьютер делать вещи, которые можно в теории сделать вручную. Мы можем спросить водителя Uber рядом с нами, где он, и отметить его положение на карте. Приложение Uber с помощью скрипта автоматизирует ручные операции. Даёт компьютеру набор инструкций, чтобы он следовал им, участвовал в качестве точного до буквальности исполнителя. Скрипт описывает процесс, который у человека может занимать часы, но который может быть рассчитан компьютером за миллисекунды.

Я пишу, когда другие едят, из-за того, что можно назвать потоком: я на подъёме, в ударе, на своей волне. Погружён в задачу и поглощён ею. Часы пролетают, превращаясь в строчки кода.

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

Мы – индустрия, страдающая синдромом самозванца, отчасти потому, что мы все самозванцы. Никто не знает всего и обо всём коде. Всегда найдётся кто-то ещё более одержимый, чем ты. Думаю, мы все боимся однажды стать целью тирады Линуса Торвальдса.

Торвальдс – создатель Linux, основы большинства современных серверов. Торвальдс также написал git, и эта система используется почти всеми инженерами-программистами, чтобы хранить код (обе разработки названы в его честь: первая – по фамилии, вторая – по натуре). Торвальдс печально известен в технических кругах не только благодаря интеллекту, но и благодаря ругани из-за кода, который ему не нравится. Он наугад выбирает тему из публичных обсуждений и говорит, что код – «дерьмо, самый натуральный мусор и он написан неправильно». Многие разработчики боятся, что Торвальдс как-то получит их код и предложит посмотреть на него. Иногда я задаюсь вопросом, не является ли Торвальдс единственным инженером-программистом, который не страдает синдромом самозванца. Он – архетип «разговаривающего начистоту» (читайте: грубого) программиста, который заявляет, что его интересует только качество кода. Я замечаю людей, пытающихся подражать ему. Это постыдно. Софтверной индустрии не нужны люди, которые дают хорошие советы в дурной манере.

Сегодня я управляю командами. Моя работа – составление бюджетов, управление и утверждение, а не объекты, функции и инкапсуляция. Я работаю скорее с PowerPoint, чем с PowerShell. Но уметь программировать – значит, уметь говорить на другом языке. Это умение останется с вами. С помощью кода становится возможным то, что не сделаешь руками.

Я часто обнаруживаю себя пишущим код, чтобы решить проблемы, – код, который соединяется со старыми системами и извлекает данные. Ручная работа такого рода отняла бы недели, но скрипты делают её за минуты. Мой код уродлив и неуправляем, такого зверя следовало бы запереть в подвале, но никому и не нужно видеть его. Всё, что нужно знать людям, – это то, что задача, которая потребовала бы полгода, выполнится за время, пока они обедают.

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

Когда я начинаю программировать, моя команда стонет: «Босс снова взялся за дело» – кому-то приятно, что я «свой». Другие, возможно, радуются, что я понимаю раздражение, преследующее программиста день за днём.

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

Код бросает ошибки, он подвержен авариям, перестаёт работать; делает то, чего я не ожидаю, по причинам, которых я не понимаю. Если я пишу variable вместо Variable, компьютер «разводит руками», не понимая, о чём я говорю ему. Хм… правда, компьютер? Со всем вашим кремнием, чипами, терафлопсами, неужели вы не можете разобраться?

Истина, принятая в кругу программистов, заключается в том, что программировать по большей части – значит, биться головой о стену, гуглить ошибки, смотреть на StackOverflow, пробуя самые разные решения, пока не найдёшь то, которое работает. Так создавался современный мир. Баги – это ситуации, которые при тестировании не возникли.

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

Код склеивает реальность и идеи. Код – это способ, которым мы показываем наши намерения. Это самая точная и чистая формулировка наших намерений. На прошлой неделе я программировал часами и не помню, как пальцы печатали код или как кликала мышь, не помню ничего, что было бы связано с моим телом. Но помню, как визуализировал работу системы. Помню ошибки и то, как мысленно формировал концептуальные компоненты. Я не помню, как писал код.

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

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

image
Узнайте подробности, как получить Level Up по навыкам и зарплате или востребованную профессию с нуля, пройдя онлайн-курсы SkillFactory со скидкой 40% и промокодом HABR, который даст еще +10% скидки на обучение:

Теги:
Хабы:
Всего голосов 11: ↑7 и ↓4+5
Комментарии1

Публикации

Информация

Сайт
www.skillfactory.ru
Дата регистрации
Дата основания
Численность
501–1 000 человек
Местоположение
Россия
Представитель
Skillfactory School