[Из песочницы] Как сойти за хорошего программиста
Привет, Хабр! Представляю вашему вниманию перевод статьи «How To Fake Being a Good Programmer» автора Stan Sootla.
Программисты — это, своего рода, волшебники: слегка потрепанные персонажи-бедняки, которые умеют превращать кофе в строчки кода. Я не владею магией, я всего лишь иллюзионист.
Моя работа заключается в том, чтобы быть более аутентичным в том, чтобы быть фальшивым программистом, чем настоящие программисты в том, чтобы быть самими собой.
Я хорош в своем деле, из меня вышел отменный шарлатан. Я дурачил бизнесменов и они делали меня своими техническими соучредителями. Я обманывал инженеров и они обсуждали со мной тему Универсального Искусственного Интеллекта. Разыгрываемое мною представление правдоподобно настолько, что однажды Министерство Юстиции спрашивало моего совета насчет создания GUI на Visual Basic, чтобы отследить IP-адрес серийного убийцы.
Секрет прост: дело не в том, что вы знаете, а в том, что вы показываете.
Настоящие программисты медленны и скучны, потому что они ограничены реальностью. Иллюзиониста же сдерживает лишь фантазия. Он свободен претворять в жизнь изощреннейшие из сценариев, и чем непристойнее, тем лучше. Часто образ хакера в глазах общественности формируется сценами гулянок и — стоит только стать тем редким человеком, играющим на этих заблуждениях, позволяя непосвященным побаловать свои фантазии, как тут же прослывешь героем.
Большому кораблю — большое плавание. Убедительному представлению — искусно сделанная сцена, ведь она помогает скрыть от аудитории тот факт, что вам ужасно не хватает глубины. В фильмах софт создается путем складывания друг на друга маленьких трехмерных блоков, или жонглирования голограммами. Конечно, все это выдумка. На самом деле, ближе всего можно подобраться к чему-то подобному используя комбинацию из всего трех технологий, изобретенных десятилетия назад.
Во-первых, у нас есть Vim — текстовый редактор, интерфейс которого с первого взгляда выглядит настолько непонятным, что миллионы разработчиков оказываются в нем потеряны, не имея ни малейшего понятия о том, как же закрыть эту штуковину. Один тот факт, что вы осмелились использовать его, поднимает ваш статус среди коллег. Вы выглядите чуть ли не мифично, просвещая остальных о таких древних темах, как Великая война редакторов и призывая слушателей идти крестовым походом на Церковь Emacs.
Во-вторых, есть tmux — утилита, позволяющая открыть несколько окон внутри консоли. Это означает, что вы можете писать код в одном окне, запускать команды в другом, и смотреть, как работают какие-нибудь бесполезные плагины (типа спектрограммы и огромных часов), в третьем. Вообще, лучше держать открытыми настолько много окон, насколько возможно, переполняя зрительские чувства навязчивым зрелищем. Лично я всегда слежу за тем, чтобы хотя бы одно окно было всегда открыто, ибо, как известно, бесполезный код не стареет.
В качестве примера, вот скриншот моего экрана когда я генерирую «дипфейки»:
Spectrogram credit: M.O. P. — Ante Up
Наконец, очень важно, чтобы вы в совершенстве освоили bash. Знание bash позволяет вам максимизировать время, которое вы проводите в консоли — оставлять этот навык без должного внимания будет кощунством, сравнимым с включением в кинозале света в середине фильма.
Нужно что-то сосчитать?
Пожалуйста:
echo "scale=0; 2 + 2" | bc
Хотите узнать загруженность процессора? Вот вариант:
mpstat | grep -A 5 "%idle" | tail -n 1 | awk -F " " '{print 100 - $ 12}'a
Ну, вы поняли.
Хуже, чем уйти от консоли, может быть только уйти от клавиатуры. Ничто не говорит о вашей некомпетентности больше, чем использование мышки. Если у вас есть ПК, сейчас же перегрызите хвост этого эргономического чудовища. Если вы обладатель ноутбука, приклейте наждачную бумагу к тачпаду — вы должны ассоциировать работу с ним с болью и кровью.
Затем установите Vimium — расширение для Chrome, которое позволяет работать в сети без использования мышки. Оно подсвечивает каждую ссылку на странице комбинациями клавиш. Вот, как это выглядит:
Pro tip: заметьте, что у меня одновременно открыты и браузер и консоль. Более того, если всмотреться получше, среди моих вкладок можно заметить множество статей с arXiv и постов со StackOverflow. Это не случайность. Стратегически оркестрированный массив вкладок дает понять, что вы сумели усесться на столь желанный стул инженера машинного обучения, одной ногой разбираясь в замысловатой теории, другой — в практике.
Декорации установлены, сцена готова и шоу может начаться. Как мы уже уяснили, все ваше поведение должно демонстрировать, что вы не имеете ни малейшей нужды в мышке или тачпаде. Откиньтесь назад, положите ноги на стол и клавиатуру на ноги. Лично я люблю раскинуться в моем кресле-мешке в трех метрах от моего 40-дюймового монитора.
Что до самого представления, помните: это барокко, а не минимализм. Вы хотите привести ваших зрителей в восторг молниеносными движениями пальцев и сложными переходами между окон. В vim вы прыгаете со строчки на строчку, с функции на функцию настолько быстро, что наблюдатели едва могут понять, что происходит. И как только их глаза начинают привыкать, как только они приближаются к тому, чтобы раскрыть ваш дешевый спектакль (лишь изредка эти строчки содержат рабочий код), вы переключаетесь на другое окно и их старания начинаются вновь.
Хорошее представление измеряется степенью вызванного им замешательства и смятения. А великолепное представление вообще должно вызывать тошноту. Оно буквально сбивает аудиторию с ног, бросает их на пол, оставляя их истекать слюной и биться в судорогах.
Возможно, вы сочтете такую макиавеллиевскую тактику слишком неискренней, слишком вычурной. Наверное, вы бы скорее залегли на дно и сконцентрировались на своем ремесле, затаив надежду, что признание придет к вам в конце, в результате сложной и честной работы.
Возможно, но зачем тратить десятилетия жизни на галерах? Почему бы сразу не положить ноги на стол и не вести себя, как специалист?
Я скажу: лучше быть поддельным кем-то, чем настоящим никем.