- PVSM.RU - https://www.pvsm.ru -
Человек — ужасно ленивая зараза. Нет, ну я не о вас, конечно! Ну что вы! Я так, о себе. О 99% человечества. Но не о вас, нет. Вы сами за себя решайте. Но вот те 99%, так уж вышло — ужасно ленивы. Кто-то это отрицает, кто-то мирится, кто-то борется. А лично мне кажется, что это такая же неотъемлемая черта нашего вида, как, например, две руки и две ноги. Можно убиваться, что у нас нет крыльев или жабр — а можно научиться хорошо пользоваться тем, что есть. Так же и с ленью. Зачем её отрицать? Надо её использовать по-полной. И вот тут, поскольку мы с вами имеем кое-какое отношение к ИТ, давайте посмотрим, как с этим обстоит дело в нашей профессии.
Поначалу делу обстояло не важно. Если посмотреть на те технологии, которые были в ходу пару десятков лет назад, можно заметить, что все они были сильно требовательны к человеку. В компьютерах 30-летней давности меня больше всего удивляет не их размер или малая производительность, а то, насколько умным, точным, ответственным и грамотным должен был быть программист тех лет. Лишняя дырочка на перфокарте — и сутки работы на свалку. Читая рассказы Фейнмана о том, как они делали расчёты для Манхэттенского проекта [1], я поражался, что эти расчеты вообще были сделаны. Мне кажется нынче людей с такой силой воли и ответственностью найти было бы крайне сложно. Лени здесь было не место. Однако, поскольку компьютеров было мало, а инженеров — относительно много, среди них находились достойные.
Время шло. В профессию начало приходить всё больше и больше людей. А откуда? Из тех самых 99%, о которых я писал в начале. Из нас, из ленивых. В некоторых случаях лень сразу работала на результат — приводила к упрощению интерфейсов, унификации протоколов, выбрасывание ненужного. В других случаях лень проводила к провалам проектов. Надо было что-то решать. И тут начали появляться методологии разработки программного обеспечения.
-Любая методология разработки лучше просто «обычного программирования»!
-Нет, потому что если я назову методологией «писать код только ночью голым при луне в лесу на пеньке», то это не лучше просто «обычного программирования»
Сколько всего разного придумано в этой сфере! Вот, к примеру, идея формальной верификации [2] написанного кода. Ну круто же! Взять, и доказать математически, что созданный тобой код идеальный. Мечта. Песня. Но где это нынче используется? В марсоходах? В софте кардиостимуляторов? Всё? Где-то в одном проекте из миллиона. Ну а почему? А вы возьмите и представьте себе программиста, который после написания своего кода, после его успешной компиляции, запуска, smoke-теста и проверки тестировщиком — берёт и садится выводить формальное доказательство корректности кода. Много вы таких не ленивых знаете? Я вот — одного человека на несколько сотен моих знакомых программистов. И «один знакомый на пару сотен» — это еще результат серьёзно выше среднего.
Ну или вот идея водопада [3]. Хорошая же идея. Но тоже уже отживает своё. Теоретики говорят: «Не выдерживает текущей высокой динамики и быстро меняющихся требований». Тьфу, чушь. Всё дело в том, что под «водопадом» лентяи могли месяцами, годами прятаться и ничего не делать. Ну вот хорошо было там прятаться, а на выходе — провал проекта. Современные «гибкие» методологии рекламируют как «удобные для программистов» и «отвечающие сегодняшним реалиям». Снова — тьфу. Просто скрам очень быстро достаёт лентяев из нор, за уши просто вытягивает, ставит в центр комнаты и направляет на них все прожектора. Потому и популярен.
А вот самая касаемо отношения к лени интересная штука — это TDD [4]. Она, на самом деле, исходит из того, с чего я начал эту статью: все люди — лентяи. Однако, у TDD получилось поставить эту лень на службу человечеству в промышленных масштабах. Вот смотрите.
Допустим, вы программируете без TDD. Вы сразу пишете код. Например, какой-то функции. При этом вы ленитесь. Вы не особо думаете над названием функции, именами её аргументов, вы можете забыть проверить входные значения или не поймать какое-то исключение. Можете опечататься или вообще допустить принципиальную ошибку. И это всё можно понять — вы пытаетесь минимизировать количество своей работы, вот прямо сейчас, в эту самую секунду. Да, завтра у вас здесь выскочит ошибка. Или не выскочит. Или не у вас. В любом случае — это будет когда-то потом, потом и будем бороться. Такие мысли расхолаживают, позволяют писать откровенную лажу. Ну а что поделаешь? Минимизируем усилия.
Теперь допустим, что вы программируете с TDD. Вы начинаете с написания тестов. При этом вы, конечно же, тоже ленитесь (а ничего же не изменилось!). Но, внимание: ленитесь вы уже не при написании production-кода, а при написании теста. При этом вот в чём будет выражаться лень:
Лень всегда была, есть и будет. Мы не можем вот так взять и навсегда от неё избавиться. Но мы можем управлять направлением этой лени, заставить эту лень не вредить, а приносить пользу. Не ленитесь правильно лениться!
Автор: tangro
Источник [5]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/gtd/30414
Ссылки в тексте:
[1] Манхэттенского проекта: https://ru.wikipedia.org/wiki/%D0%9C%D0%B0%D0%BD%D1%85%D1%8D%D1%82%D1%82%D0%B5%D0%BD%D1%81%D0%BA%D0%B8%D0%B9_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82
[2] формальной верификации: http://habrahabr.ru/post/148709/
[3] водопада: http://ru.wikipedia.org/wiki/%D0%9A%D0%B0%D1%81%D0%BA%D0%B0%D0%B4%D0%BD%D0%B0%D1%8F_%D0%BC%D0%BE%D0%B4%D0%B5%D0%BB%D1%8C
[4] TDD: https://ru.wikipedia.org/wiki/%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0_%D1%87%D0%B5%D1%80%D0%B5%D0%B7_%D1%82%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5
[5] Источник: http://habrahabr.ru/post/174283/
Нажмите здесь для печати.