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

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

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


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

Иногда мне приходит в голову, что программирование – в силу необходимости – навязчивая идея. В наших головах так много деталей… я не уверен, что можно, в принципе, программировать без навязчивости. Программирование, как пишет в 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% скидки на обучение:




Source link

Total
0
Shares
Previous Post

Regional analyst

Next Post
Green City Solutions очищает воздух в мегаполисах, используя мох и IoT

Green City Solutions очищает воздух в мегаполисах, используя мох и IoT

Related Posts