«Это вообще не смешно! Это больно!» Ловите новую десятку айтишных шуток
Продолжаем переводить с программерского языка на человеческий.
Полина Суворова для Skillbox
В предыдущей подборке мы больше шутилио программировании, технологиях и языках, но почти не затронули людей, которые всё это применяют. Исправим это упущение.
Кто такие программисты
Про них всякое говорят:
Что такое программист? Это автомат для превращения кофе в код.
(Источник / перевод Skillbox Media)
Некоторые до сих пор думают, что программисты и вообще все айтишники — это такие лохматые существа с вечно красными глазами, в стоптанных тапках и вытянутых свитерах. Мол, они мало спят (потому что всё время работают) и непрерывно поглощают кофе. На входе кофе, внутри — магия, на выходе — готовый код.
Правда, о некоторых традициях отрасли забывать всё же не стоит — например, о таком вот принципе:
Всегда пишите код так, как будто человек, который будет его поддерживать, — склонный к насилию психопат, который знает, где вы живёте.
(Источник / перевод Skillbox Media)
Разработчик, который написал фрагмент программы, не всегда занимается его сопровождением (сам правит ошибки и добавляет новые возможности). Программисты не крепостные, они меняют проекты и места работы, а вот код за ними остаётся.
Есть такое понятие, как legacy code. Это код, перешедший по наследству от разработчиков, связь с которыми уже не поддерживается.
А ещё так называют устаревший код, который сохраняют для совместимости с предыдущими версиями продукта: например, написанный на старой версии языка или для старой операционной системы.
Если этот код кривой и запутанный, а сроки на доработку горят, то несчастный наследник как минимум проклянёт своего предшественника. И не раз. А уж если он (чисто случайно) склонный к насилию психопат… 😱
В общем, лучше всегда писать отличный код, но это сложно, а потому:
Хороший программист всегда посмотрит в обе стороны, прежде чем перейти дорогу с односторонним движением.
(Отсюда / перевод Skillbox Media)
Правильно делает: психопату же законы дорожного движения не писаны 😀
По правде, шутка эта скорее не о тех, кто сопровождает код, а о пользователях готовых программ. Программисты продумывают самые разные сценарии, которые могут сломать приложение. Например, чтобы обеспечить ввод корректных данных:
- не дают вводить отрицательные денежные суммы;
- скрывают или делают неактивными кнопки, которые не должны быть нажаты раньше времени;
- добавляют проверку и форматирование в поля для ввода телефонов и email-адресов.
Но всегда находятся пользователи, которые делают что-то настолько странное, что ни программистам, ни тестировщикам и в голову не могло прийти.
Есть и второй смысл: хороший программист понимает, что спецификация на программу может быть далека от того, что на самом деле реализовано. На заборе тоже много всего написано, а за ним дрова лежат.
Поэтому говорят:
Документация как секс: средненькая всяко лучше, чем никакой, а уж если хорошая — совсем здорово.
(Источник / перевод Skillbox Media)
Совсем без документации программеры обречены вслепую копаться в чужом коде. Особенно тяжко приходится, когда нужно не просто понять, что такой код делает, а исправить в нём ошибки или добавить новые возможности.
Так что использовать какую-нибудь отлично задокументированную библиотеку — это ни с чем не сравнимое удовольствие. Почти ни с чем. Ну, вы поняли 😏
Что программисты делают
Если судить по доле шуток про баги, то может показаться, что программисты большую часть времени не пишут код, а ищут в нём ошибки. Если вы тоже программист, то уже знаете секрет: так и есть! И в этом нет ничего плохого. Не зря же говорят:
Отладить код в два раза сложнее, чем написать его с нуля. Следовательно, если вы пишете код настолько умный, насколько можете, то вы по определению недостаточно умны, чтобы отладить его.
(Отсюда / перевод Skillbox Media)
Отсюда — вредный совет: код пишите в два раза глупее, чем можете, только тогда у вас хватит ума его отладить.
Конечно, это просто шутки: программисты вовсе не пишут глупости, которые потом долго исправляют, чтобы почувствовать себя умнее. Ладно, оговоримся, не пишут глупости намеренно. Shit Bugs, конечно, happen. И с ними приходится разбираться. Говорят, что:
Найти ошибки в коде бывает непросто. И ещё сложнее — если вы уверены, что их там нет.
(Источник / перевод Skillbox Media)
Программистам не чуждо творчество, а на свои творения сложно смотреть непредвзято. Иногда так хочется верить, что вот этот фрагмент уж точно написан идеально и ошибок там быть ну никак не может.
Так что один говорит: «У меня всё работает», и другой вторит: «И у меня всё работает!» В совсем запущенных случаях никто не хочет искать ошибки, в итоге же в программе работает примерно ничего.
Наверное, лучше быть к себе критичнее, чтобы не вышло как в истории с приложением Horizon. В этой программе была какая-то древняя ошибка в алгоритме расчётов. Из-за неё в почтовой компании Post Office Ltd., которая пользовалась этой программой, на протяжении 20 лет возникали недостачи денег.
Недостачи руководители вешали на рядовых служащих. В итоге — сотни пострадавших сотрудников: одни потеряли жильё и попали в тюрьму, а некоторые даже покончили с собой.
И всё, возможно, потому, что кто-то не хотел искать ошибку в программе.
А если поразмыслить над этой фразой во время чайной церемонии, можно увидеть аналогию с афоризмом «Самое трудное — это поймать кошку в тёмной комнате, особенно когда её там нет», который часто приписывают Конфуцию. По крайней мере, его вспоминал герой известного в СССР фильма «Место встречи изменить нельзя».
Однако ещё труднее — найти эту самую кошку в трактате Конфуция, особенно если её там нет.
И что в итоге получается
Не соврём ни на йоту — всё отражено в народном эпосе:
Почему не хватает времени, чтобы сразу всё сделать правильно, но всегда найдётся время, чтобы сделать больше неправильного?
(Отсюда / перевод Skillbox Media)
Эта фраза — самая что ни на есть грустная реальность, хоть и попалась нам в подборке шуток.
В настоящих проектах время на разработку ограничено: заказчикам нужно работающее приложение к определённому сроку, и мало кого волнует:
- насколько стройная у этого приложения архитектура;
- насколько оптимальны в нём алгоритмы;
как мощны его лапищ… ой, простите, кажется, это из другого сборника шуток 🐕- и что думают о применяемых подходах те крутые ребята на ютуб-канале о разработке.
Иногда приходится искать компромисс между тем, чтобы сделать правильно и просто сделать, чтобы работало. А если не предусмотреть для программы достаточно гибкую архитектуру, то реализация каждого нового пожелания заказчика добавляет новых и новых костылей, то есть больше неправильного.
К счастью, далеко не всегда приходится идти на такие жертвы. И даже остаётся время подумать о производительности. А уж мы знаем, как заставить программу работать быстрее:
Быстрее всего работает код, который отсутствует.
(Источник / перевод Skillbox Media)
Вы же не будете спорить, что процессор скорее справится с инструкцией, которую не надо выполнять, а браузер — со страницей, которую вовсе не надо рисовать? 😎
В этой фразе заложено по крайней мере два глубочайших смысла:
- Иногда при попытках оптимизировать код выясняется, что, если удалить целые куски, ничего не ломается. Напротив — работает, и работает быстрее.
- Не стоит доходить до крайности, стараясь ускорить и улучшить. Ведь крайность — это полное отсутствие кода.
Нет кода — нет багов.
(Отсюда / перевод Skillbox Media)
С одной стороны, это о том, что ошибки есть в любом коде. С другой — если вы удалите фрагмент программы, то можете быть уверены, что исправили в нём все ошибки.
И вот он, идеальный рецепт: хотите кода без ошибок — просто не пишите его 😄
А чтобы работа программиста не показалась вам совсем уж безрадостной и бессмысленной, закончим на позитивной ноте:
— Сколько программистов нужно, чтобы поменять лампочку?
— Размечтались, у вас же проблема с железом!
(Источник / перевод Skillbox Media)
Шутку оценят все, кто хоть раз слышал в свой адрес: «Ты ж программист!» За этой фразой может, к примеру, последовать просьба починить утюг, заменить экран смартфона или даже отремонтировать сливной бачок. В лучшем случае — переустановить Windows. Об этом мы рассказывали здесь.
«Логика» такая:
- программист работает на компьютере;
- компьютер — это техника;
- сантехника — это тоже техника (пишется же почти одинаково);
- значит, программисту можно дать любую технику и он сможет с ней работать.
Конечно, среднестатистический программист в состоянии заменить лампочку, но если он до того уже починил утюг и спас мир, то может просто не захотеть этого делать.
Так что применяйте ваших программистов по назначению — ведь теперь вы знаете в них толк 👼
Что дальше?
Если пропустили, бегите в первую часть статьи, почитайте краткую историю IT-терминов и как их понять или о программистских мемах.