Перевод статьи Роберта Мартина "We Programmers", в которой он рассуждает о значимости программистов в современном мире.


Хорошо


image


Небольшой красный спортивный автомобиль направляется к поясу астероидов, и это мы программисты отправили его туда. О, я не имел ввиду уменьшение заслуг Илона Маска, ученых-ракетостроителей и инженеров SpaceX. Это их видение и достижение. Но они бы не добились этого без нас.


Задумайтесь на мгновение о всем программном обеспечении задействованном в этом проекте. Подумайте об автоматизации в самом космическом корабле. Подумайте о способности ускорителей приземляться в тандеме. Подумайте о рулевых рейках, карданах двигателя и дросселях. О наземном управлении, протоколах связи, ...


Подумайте о том как работают инженеры. Подумайте о программном обеспечении CAD/CAM. Подумайте о сетевых компьютерах и программах для 3D моделирования. Подумайте о симуляции динамики жидкости, анализе конечных элементов, орбитальных рассчетах, электронных таблицах, текстовых процессорах, электронной почте, текстовых сообщения, звонках ...


Я думаю, что вы уже поняли к чему я веду. Каждая шаг на пути от мечты до реализации был поминутно смазан, облегчен, расширен и упрощен с помощью программного обеспечения. Миллиарды и миллиарды строк программного обеспечения, которые были написаны нами программистами. [Да, саганизм был преднамеренным.]


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


Это было послание, которое мы отправили себе и во Вселенную целиком, заявив, что мы придем и ничто во Вселенной нас не остановит.


И именно мы программисты вложили в отправку этого сообщения больше, чем кто-либо другой. Это то, почему и я, и ты, и все программисты в мире должны чувствовать себя очень хорошо.


Плохо



Элейн Герцберг (Elaine Herzberg) мертва. Она была сбита самоуправляемым автомобилем, когда переходила с велосипедом через дорогу. И мы программисты убили ее. О, я не хочу сказать, что кто-то из программистов злонамеренно или небрежно написал код, который ее убил. Но, не ошибитесь в этом, то что ее убило было кодом.


Возможно в этом коде есть оператор IF, который, если бы булев предикат находился в противоположном состоянии, предотвратил бы столкновение. Или возможно это была функция, которая породила число, которое будь оно отличным на несколько бит, предотвратило бы столкновение.


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


Но мы можем сказать, что это мы программисты, написали код, который ее убил. И поэтому, и я, и ты, и все программисты в мире, должны чувствовать себя очень плохо.


Уродливо


Среди программистов есть мнение, что аргументы этики и морали не должны играть роли в наших дискуссиях о знаниях и опыте.


Те кто придерживается этого мнения, говорят, что наши знания и опыт должны быть делом чистой логики и экономики. Учитывая два сценария выше я нахожу это тревожным. Мне кажется, что этика и мораль стали неотъемлемой частью всего, что мы программисты делаем; потому что очень много зависит от качества нашей работы.


Наш Девиз


Это хорошо, что прошло время когда мы программисты могли обезопасить и изолировать себя от окружающего мира. Мы программисты, больше не должны прятаться в наших маленьких технических пузырьках из кода, который мы программисты пишем. Код который мы пишем, важен для надежд и мечтаний нашего общества и цивилизации. Для людей важно передвигаться на велосипедах и переходить через улицы с ними или без них. Это важно для всех и каждого, потому что код, который мы программисты пишем смазывает, облегчает, улучшает и упрощает практически каждый аспект повседневной жизни. Во всем, от чего-то небольшого вроде молодой матери проверяющей монитор своего ребенка, до таких масштабных вещей как международная политика в области ядерного вооружения и межпланетные путешествия, имеет значение наш код.


Недавно Грэди Буч (Grady Booch) написал в твиттере, то, что как мне кажется, мы программисты должны принять в качестве нашего девиза:


Каждая строка кода представляет собой этическое и моральное решение.

Комментарии (25)


  1. Aquahawk
    04.04.2018 14:15
    +8

    Но они бы не добились этого без нас.

    А также без уборщиц тоже бы этого не добились. И без повара который готовил им еду пока они это делали. И без китайца который собрал их лаптоп своими руками они тоже бы ничего такого не сделали.


    1. Inine
      04.04.2018 14:44
      +1

      Так и знал. Велосипедистку убила уборщица!


      1. de1vin
        04.04.2018 17:28

        Думаю, как-то протекает ход мыслей у Донцовой.


    1. Oxoron
      04.04.2018 14:53

      В этом списке нужны производитель велосипеда, строитель дороги… Для них мы тоже писали программы.


  1. Kolyuchkin
    04.04.2018 14:33
    +5

    «Все профессии важны. Все профессии нужны.»


    1. Naglec
      04.04.2018 15:40

      Пока что :)


      1. Szer
        04.04.2018 18:53

        А потом изобретут настоящий ИИ, который заменит всех программистов.


        И вот тут-то художники и артисты всех мастей оторвутся!


        1. Azoh
          05.04.2018 11:19

          А чем артисты и художники принципиально отличаются? ИИ будут ровно так же синтезировать музыку/изображения/тексты. Более того, при достаточных вычислительных ресурсах, человек может попросить "а сделай мне Х с характеристиками A, Б и В", ИИ подумает немного и выдаст готовое произведение. Просто и удобно.


          И не нужны будут ни программисты, ни инженеры, ни художники, ни артисты.


          1. Free_ze
            05.04.2018 11:28

            А чем артисты и художники принципиально отличаются?
            Тем, что их произведения не ориентированы на объективно измеримый практический результат, в отличие от подавляющего количества софта. Пожалуй, навскидку находится аналогия только в виде геймдева, да и там многие технические задачи не имеют ничего общего с абстрактным творчеством.

            ЗЫ Художники не умрут, умрут дизайнеры.


            1. Azoh
              05.04.2018 12:19

              Во-первых, предыдущий комментарий предполагает наличие мифической сущности "настоящий ИИ". Как мы понимаем, это сильно меняет дело.


              Во-вторых, "объективно измеримый практический результат" — это не про разработку софта. С точки зрения программиста результатом его работы является программный код. Для объективной оценки кода требуется его проверить на корректность, т.е. соответствие формальным требованиям. Процесс создания формальных требований сам по себе не формализуем. Таким образом нам требуется ИИ достаточно мощный, чтобы работать на семантическом (т.е. понятийном) уровне естественных языков. Это уже ставит его на уровень достаточный для понимания и оценки искусства.


              Вопрос: почему такой ИИ не сможет создавать произведения искусства?


              1. Free_ze
                05.04.2018 12:37

                Таким образом нам требуется ИИ достаточно мощный, чтобы работать на семантическом (т.е. понятийном) уровне естественных языков.
                Нас вполне может устроить какой-нибудь декларативный DSL. Бизнес-процессы зачастую типовые, а программисты часто занимаются лишь написанием интеграции.

                Это уже ставит его на уровень достаточный для понимания и оценки искусства.
                Множество людей достаточно развиты для использования естественного языка, но при этом в высоком искусстве не находят ничего очаровательного.

                почему такой ИИ не сможет создавать произведения искусства?
                Подозреваю, что для этого нужен не столько крутой ИИ, сколько исследования человеческой психологии.


                1. Azoh
                  05.04.2018 14:30

                  Нас вполне может устроить какой-нибудь декларативный DSL. Бизнес-процессы зачастую типовые, а программисты часто занимаются лишь написанием интеграции.

                  Это не наш случай, ибо мы говорим про ИИ, способный заменить программиста, т.е. он должен быть способен решать задачу формализации в общем.


                  Множество людей достаточно развиты для использования естественного языка, но при этом в высоком искусстве не находят ничего очаровательного.

                  <sarcasm>
                  А искусствоведы — это вообще такие хитрые жуки, которые собирают деньги с наивных граждан за откровенную чепуху. Прям как философы какие-то.
                  </sarcasm>


                  Между "находить что-то очаровательным" и "быть способным это что-то создать" довольно большая разница. При этом характеристика "быть очаровательным", очевидно, не должна входить в любое приемлемое определение произведения искусства.


                  1. Free_ze
                    05.04.2018 15:18

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

                    «быть очаровательным», очевидно, не должна входить в любое приемлемое определение произведения искусства.
                    Я утрировал. Искусство должно вызывать определенные эмоции. Для этого мало что-то создавать. И тут же есть грань между искусством и попсой, о чем я намекал, говоря о людях, которые не могут в оценку.


    1. cynovg
      04.04.2018 16:05

      Не все, не так давно стенографисток выпилили.


  1. saag
    04.04.2018 17:23

    А еще космическая станция «Вега» улетела в неизвестном направлении из-за ошибки в софте


    1. OKyJIucT
      04.04.2018 22:19

      Википедия говорит, что он Веги успешно справились с поставленными задачами. О каком проекте речь?


      1. saag
        05.04.2018 06:08

        Был такой проект в 80-е «Венера-Галлей», сокращенно «Вега» ставилась им задача изучения Венеры и кометы Галлея, станций было две, и одна из-за ошибки в софте ушла не тем курсом в межпланетное пространство


  1. Szer
    04.04.2018 19:08
    +1

    Программисты зазнались.


    Их работа не важнее (и что самое главное не сложнее) работы инженеров, которые делают, предположим автомобили.


    За эти чужие слова стыдно почему-то мне:


    это мы программисты отправили его туда
    они бы не добились этого без нас.
    мы программисты вложили в отправку этого сообщения больше, чем кто-либо другой.

    У меня в прошлом работа конструктором, технологом как на Российских оборонных предприятиях, так и на зарубежных (Boeing). Я могу скзазать точно, что все ведущие инженеры владели формальной логикой, матаном и способностью разбираться в чем-то новом в достаточной мере чтобы сесть и написать рабочую программу на каком-нибудь C/Asm/C++. Да, без хипстерских выкрутасов, но это будет абсолютно рабочий и надёжный код. Это не считалось чем-то сверхъестественным, если ты умеешь составлять алгоритмы будучи инженером.


    Ты их постоянно составляешь — как правильно изготовить деталь? Как собрать узел? Как установить её в сборку? Как в итоге создать самолёт? Эти вопросы решает технолог на основе готовой конструкции.


    А создать конструкцию… Ну я вам скажу, программистам до этого уровня организации рабочего процесса идти ещё десятилетия. И требования к тем же самолётам, автомобилям, лифтам, да хотя бы к зданиям в которых мы живём гораздо суровее чем к вебсервисам или сайтам.


    Если автор вещает за всех программистов, то я пожалуй останусь инженером.


    1. belousovsw
      04.04.2018 20:52

      По качеству вы напишите ровно такие же программы, как и мы программисты изготовим детали и соберем узел.
      Этот спор ведёт обсалютно вникуда!
      У меня на работе полно таких примеров.
      Поэтому давайте каждый займётся своим делом.


      1. Matshishkapeu
        05.04.2018 09:58

        Знавал одного программиста, который помимо основной работы занимался изготовлением редких деталей для джипов Ровер старых моделей (тех что трудно найти на английских авторазборах в инете, у ровероводов свое ламповое коммьюнити), чертежи делал, заказы размещал, исполнителей учил правильной металообработке. Ничо так детали были, на раллийных джипах по гОвнам исправно служили, разлетались по страждущим со свистом. Эт я к чему, ни в том ни в другом нет никакой магии, а software engineer и software developer часто используются взаимозаменямо.


    1. MaxKot
      05.04.2018 21:34

      А самое интересное, что Боб Мартин, по сути, не программист. Возможно когда-то и был программистом. Да, он собрал хорошие принципы в красивую аббревиатуру SOLID. Но, насколько я понимаю, зарабатывает он тем, что продаёт менеджерам тренинги для персонала и обучает менеджеров agile, а не продумывает программы и не пишет код.
      Возможно, менеджеры охотнее покупают тренинги у "запустившего Теслу в космос" "программиста", и который объяснит программистам компании, что именно они несут отвественность за всё. Но я не могу воспринимать его рассуждения про "мы" и что "мы" "сделали" всерьёз.


  1. Zifix
    04.04.2018 19:24
    +2

    Энергетики/Электронщики могут написать похожие статьи. Но смысла в этом нет.


  1. dmsav
    05.04.2018 07:30

    Почему нельзя было написать вместо «мы программисты» — «мы инженеры»? Почему программисты считают себя не инженерами, а отдельным классом технических специалистов?
    А статья в итоге получилась в виде призыва к коммунизму и достаточно эгоистичная.


    1. Straven Автор
      05.04.2018 09:59

      Вопрос риторический и ответить сможет только Дядя Боб.


      1. dmsav
        05.04.2018 10:20

        Тогда скажите пожалуйста, в чём цель статьи? Для чего вы её опубликовали?