7 грехов программиста: Чревоугодие

Illya Klymov
5 min readAug 7, 2016

--

Конечно же «чревоугодие» — это метафора. Разговаривать о программистах, покупающих сыры по 500 гривен и индексе Биг-Мака мы не будем. Все-таки это относится скорее к личным качествам, чем к нашей профессии, и, как следствие — в рамках этого цикла не очень-то мне интересно. Вместо этого мы поговорим о вещах, про которые в народе говорят «что занадто, то нездраво».

Любовь ко всему новому

Одно из типичнейших проявлений «чревоугодия» — любовь ко всему новому в проекте. В самой любви к новому ничего постыдного нет — любой программист должен развиваться (мы об этом уже говорили) и неотъемлимая часть такого развития — постоянно брать что-либо “на поиграться”. Проблемы начинаются тогда, когда это “на поиграться” начинает попадать в проект, еще не будучи обкатанным в производстве. Будем откровенны, многим из нас лень делать сколь-нибудь серьезные pet-project, вместо этого все происходит по принципу “потыкал — вроде нравится, вроде ок, вроде особых проблем нет”. Вроде бы, все будет хорошо. Вроде бы.

Каюсь, сам грешен подобным образом. Однажды мы сделали огромное банковское приложение на PHP, стартовав его на Symfony 2 Preview Release 7 (даже не на Beta и не на Release Candidate). Сейчас, оглядываясь назад, я осознаю, какой колоссальный риск это был и насколько мне лично повезло, что все прошло хорошо.

Каждый раз, перед тем, как установить новый модуль в проект или стартовать что-нибудь на неопробованной технологии, задайте себе несколько вопросов:

  • простит ли вас заказчик, если посреди проекта внезапно возникнут трудности технологического характера и это сдвинет дату завершения проекта? (глупо стартовать на новых технологиях проект с неизменяемым сроком сдачи, к примеру под олимпийские игры)
  • есть ли у вас желание и ресурсы тратить свое личное время на разрешение проблем? Помните — перефразируя Экзюпери — мы в ответе за тех, кого подключили — и может оказаться так, что из-за какой-нибудь проблемы будет простаивать вся команда, радостно (или не очень, это не суть важно) указывая на вас, как главного виновника их несомненно “вынужденного” отдыха?
  • Есть ли у вас “рядом” эксперт в этой технологии, которого вы можете “дернуть”, если будет совсем уж туго?

Если хотя бы на один из этих вопросов ответ “нет” — поверьте моему опыту, не ищите себе приключений. Да, все может окончиться успешно, но суть крутых и высокоэффективных программистов — не в единичных идеальных проектах, а в том что они стабильно и предсказуемо выдают результат выше среднего. Да, на короткой дистанции энтузиаст с красивым модным фреймворком может и “уделать” эксперта, но поверьте — их соперничество уж очень напоминает диалог двух быков на горе.

Еще одним забавным проявлением “чревоугодия” и, как я его называю “синдрома сороки”, является любовь к новым инструментам, которые точно ускоряют работу. Сегодня у такого человека установлен WebStorm, вчера был установлен VIM, завтра это будет Atom, а послезавтра — Visual Studio Code. И каждая встреча с человеком будет начинаться с показа “крутых фишечек”, с которыми “так удобно писать код”.

Правда в том, что большую часть времени мы не пишем код. Вы можете до умопомрачения настраивать Emmet, чтобы писать метод нажав 4 буквы, но основное время будет уходить на мыслительный процесс, а не “стучание по клавиатуре”. Любая новая “штука”, которую вы добавляете в свой рабочий процесс первично неизбежно замедляет его — пока вы привыкаете, запоминаете горячие клавиши и т.д. и т.п. И если вы меняете эти штуки как перчатки — вы постоянно работаете медленнее, чем ваш коллега, который пишет код, допустим, в ископаемом NetBeans уже 3-й год кряду. (Справедливости ради, из правила “мы основное время думаем” бывают исключения. Однажды мне довелось наблюдать за работой высококлассного верстальщика в редакторе, с настроенным Emmet’ом. Такой скорости вёрстки я больше никогда не видел — человек просто смотрит на картинку и видит свёрстанный макет. Это божественно)

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

Старайтесь быть чуть более переборчивыми и критичными ко всему новому. Да, я предлагаю Вам следовать старой поговорке “Старый друг лучше новых двух”. Или она тоже недостаточно новая и хипстерская для Вас?

Любовь ко всему старому

Чревоугодие имеет два аспекта — любовь к новым вкусовым ощущениям (назовем это гурманством) с одной стороны, и с другой стороны — просто набивание брюха в свое удовольствие. Точно так же и в программировании вы можете встретить людей, которые упорно начинают проект ровно на одной и той же технологии, которую они хорошо знают и не приемлют ничего другого. Фактически, вместо разнообразия на своем обеденном столе (и не только на своем, если это руководящая должность), они предпочитают ровно одно блюдо, но много. За таким поведением может скрываться как профессионал, который освоил конкретный стек “от А до Я”, и может использовать его на все 100, так и неуверенная в себе личность, которая боится выйти из своего кокона в поисках чего-то нового. Как различить? Очень просто — поговорить и задать буквально пару-тройку вопросов (их я предпочитаю задавать всем людям, которые позиционируют себя к примеру как “Senior AngularJS Developer” — в моей картине мира быть “сеньйором” в одном фреймворке — недопустимо узкая специализация):

  • расскажите о недостатках вашего стека и какие проекты на нем не стоит делать? Невозможно быть максимально эффективным, не зная слабых мест своего решения. Пилоты истребителей зачастую выигрывают воздушные бои (те, которые любяти называть “dogfights”) не только и не столько благодаря техническому превосходству летательного аппарата, а благодаря знанию и умелому использованию сильных и слабых сторон пилотируемого самолета. Про сильные стороны технологий говорят все — “это помогает продавать”. Про слабые же каждый из нас докапывается сам. Если выбранная человеком технология “идеальна” — он не познал её дао, не доверяйте ему;
  • расскажите о том, что ваш стек мог бы позаимствовать из других языков / технологий. Вопрос с подвохом. Здесь сразу проверяется способность человека аналитически мыслить, выделять важное, приводить аргументы и контраргументы, но сейчас самое главное не это. Самое главное — мы поймем насколько хорош у этого человека кругозор — я не люблю .NET, но слежу за развитием и знаю что происходит в стане у “потенциального противника”. Точно так же я считаю Elm хипстерским баловством, но это не мешает мне находить в нем отличные идеи и применять их у себя
  • расскажите о том, что другие технологии могли бы позаимствовать у вашего стека и зачем это им может быть нужно (как это им облегчить жизнь). Еще более коварный вопрос. Если в предыдущем вопросе человек мог перечислить все известные ему buzzwords, то в рамках одного стека клевых фишечек не так много, прийдется думать

Превосходным примером подобного профессионала является Andrey Listochkin. Будучи самым известным мне апологетом Ember’а на территории Украины и близлежаших стран, Андрей имеет очень широкий кругозор, имеет иммунитет к хайпу и всегда более чем конструктивен. На него стоит равняться.

Неуклюжее послесловие

Поддерживать темп моего спринта “7 статей за 7 дней” становится все сложнее — как всегда вмешивается реальная жизнь. Эту статью я дописываю в небольшой пристройке на даче, где нет стола, на котором можно было бы разложить мой “перепланшет-недоноутбук” с температурой +30 за бортом и явно больше +36.6 у меня. Именно поэтому эта статья чуть короче, чем остальные — очень тяжело быстро-быстро стучать по клавиатуре, истекая потом :) Тем не менее, способность “доводить дела до конца” является фундаментально важной для программиста (слишком многие ею просто не обладают) — именно поэтому я просто прошу вас поставить лайк этой статье — это вдохновит меня на последний рывок завтра, чтобы закрыть этот цикл.

Всех благ вам и здоровья.
Илья.

--

--