Вы до сих пор думаете, что огромные корпорации обладают большим штатом разработчиков, которые пишут им программный код руками? Наивно. На дворе 2016 год, и правила полностью изменились. Сейчас легко доступны чудовищные вычислительные мощности, о которых 10 лет назад нельзя было и заикнуться. Ваш телефон мощнее, чем вычислительные модули, которые ставили на космические корабли. А человеческое время стоит страшно дорого — в особенности время квалифицированных программистов, которыми, словно пчёлами, якобы набиты офисы технологических гигантов.
Не знаю, кто начал это первым, но это был изящный и логичный ход — во всей своей безумной топорности. Если на обычном пользовательском компьютере мы можем генерировать случайный программный код и проверять его сотнями килобайт тысячи раз в секунду — то только представьте, что могут мейнфреймы, кластерные системы, и даже системы, построенные на видеокартах, которые обладают огромной производительностью на параллельных вычислениях. Как вы думаете — зачем нужен штат из сотен технических писателей, которые выверяют техническое задания и вылизывают до последнего символа, чтобы было понятно даже дровосеку из лесов, который никогда не видел компьютера? Возможно, вы уже сделали единственный логичный вывод. Эти технические задания в качестве входных и выходных параметров скармливаются огромным генераторам случайного кода, которые за считанные часы или даже секунды выдают готовый программный продукт, на написание которого у живых людей ушли бы годы жизни.
Вы чувствуете звоночек в голове? Всё резко встало на свои места! Например, производительность современных программ, которые требуют кучу места на диске, памяти и процессорного времени. Конечно — ведь код случаен и совершенно не оптимален! Пока вы делаете свою работу, программа может заниматься вычислением абсолютного значения числа пи, прокладыванием маршрутов звёздного неба, общением в чатах или просто зависнуть в сотнях бесконечных циклов. Никто не знает, что там происходит на самом деле — но никого это не волнует, ведь программа выполняет поставленную задачу!
Всё стало ясно. Политики, запрещающие раскрывать код приложений. Объём и требования приложений. Глюки и зависания. Уязвимости. Странные, непонятные или односимвольные названия переменных в коде. Сложность поддержки легаси кода. Даже опечатки это просто случайно сгенерированные ошибки, вкравшиеся в недостаточно точно поставленное техническое задание!
Уровень заговора ужасает. Впрочем, не все знают, в чём принимают участие. Созданы даже специальные концепции и методологии, чтобы показать, что случайный код в порядке вещей. Как иначе кому-то в голову могла прийти концепция TDD, когда сначала пишутся тесты, а потом сам код? Зачем иначе сотни фреймворков и автоматизированных инструментов тестирования? Всё — для того, чтобы прикрыть, что разработчиков в компании больше нет.
Какие-то несколько лет, и проблема выйдет на качественно новый уровень с появлением квантовых компьютеров, вычислительная мощность которых просто необъятна для человеческого разума. После этого любая задача будет решаться генератором случайного кода. И нет — не подумайте, что я боюсь за свою профессию. Я боюсь, что однажды кости случайности так ударятся о стол вероятностей, что простейший текстовый редактор в качестве побочной функции сможет внедриться в центры управления ядерным вооружением и устроить настоящий апокалипсис.
Запомните это. Распространите это. Человечество должно знать настоящую угрозу, которая над ним возникла — беззлобного и безжалостного мутанта из симбиоза технологий и жадности. Я не знаю, сколько провисит этот пост. На прошлой неделе нам в офис поставили огромный гудящий шкаф. Директор сказал, что это биткоин майнер, но зачем он нам тут? А на этой неделе уже пошли слухи о сокращении отдела разработки… Возможно, вы обо мне больше не услышите.
P.S. Сегодня пятница, и пост этот пятничного формата, но эта шутка — повод задуматься о качестве того, что мы делаем. Поскольку очень часто я провожу целые сутки в позе Мыслителя — только рука закрывает моё лицо в искажённом фейспалме. Порой объяснить некоторые вещи я могу только генератором случайного кода или состоянием тяжёлой наркотической зависимости. Ребята, давайте писать код, который качественно лучше случайной последовательности байт! Кстати, хех, майнер у нас действительно стоит.
P.P.S. Отвечу на комментарии позже, тут какие-то люди пришли, вероятно партнёры. НЕЕЕЕЕЕЕЕ
Комментарии (58)
SamoilowAlex
02.12.2016 12:07+4Так вот откуда берется это бесчетное число js-библиотек, фреймворков и просто js-шлакософта, которые дублируют друг друга и сами себя(переписывая с нуля при каждом обновлении версии), и код которых здоровый человек не в состоянии понять.
Стоп, а существует-ли Поттеринг? Может шумы в Пыщ-пыщ-аудио и жиреющий с каждой версией код systemd — это просто результат работы генератора кода.
А если запустить генератор кода на выполнение невозможного проекта, то «свободные радикалы» не сформируют в нем искусственный интеллект?
aikeps
02.12.2016 12:16-2You make my friday!
A-Stahl
02.12.2016 12:58+3Может таки «made»? Или каждый раз? Каждую пятницу? :)
aikeps
02.12.2016 13:17Ну как бы пятница еще не закончилась ))
A-Stahl
02.12.2016 13:22+1Ну тогда «You are making my friday». В процессе, так сказать…
roir
03.12.2016 14:37+1И это не совсем верно. Получается, что процесс еще продолжается, но очевидно, что человек уже прочитал статью. Это чистый present perfect — действие завершено, но период времени еще не закончен.
You have made my friday
Varim
02.12.2016 12:20+2Ребята, давайте писать код, который качественно лучше случайной последовательности байт!
Это для себя, для души такое может быть, хочу качественный код, хочу спагетти код.
А на работе надо — как работе надоmartin_wanderer
03.12.2016 11:54даже на работе надо так, как готов завтра мучаться, сопровождая сегодняшний код
qw1
03.12.2016 16:50На работе никогда не знаешь, что будет завтра.
Можно потратить 2 дня, делая универсальный механизм вместо простейшего костыля, но потом к этому месту никто никогда не вернётся, или вернётся, но понять костыль будет гораздо легче, чем универсальный механизм.
Или послезавтра заказчик скажет: «верни всё, как было, — не пригодилось».martin_wanderer
04.12.2016 02:46Так я о том и говорю, что если нет код-ревью, то это личное дело разработчика, спагетти он пишет, или хоть сколько-то структурированный код. В моей практике «код возвращается», поэтому я пишу так, чтобы мне завтра было понятно.
А вот любители «универсальных механизов» у меня в печенках сидят — гениальная же идея, запилить убер-комбайн, который никогда, кроме как для текущей задачи, использован не будет. Даже если будет еще одна похожая задача. Потому что мало универсальный механизм сделать, надо еще сделать так, чтобы о его существовании знали те, кому он может понадобиться.
Я считаю, что универсальный vs костыль — вообще некорректная постановка вопроса. Код должен быть а) понятным, б) легко переделываемым. Например: понадобилась мне переменная с какой-то, скажем, датой, ок — сделали переменную. Завтра появилась какая-то минимальная логика ее вычисления — тут же выкинули ее в отдельную функцию. Понадобилось ее читать из базы и еще черти-откуда, все уже внутри функции. Послезавтра стало ясно, что вся эта логика не нужна и вообще можно захардкодить — так и сделали, выкинув функцию, чтобы не затрудняла чтение.
Sega100500
02.12.2016 12:38+1Вы что там такое курите, а?
Garbus
02.12.2016 13:03Пятница, что тут еще сказать?
Но по сути, недалеко от истины. Чем больше проект, тем монструознее не просто код, а грамотно написанное ТУ и схема взаимодействия данных в нем. Какой уж тут ИИ, если простая оптимизация учета в организации, порой выглядит подвигом Геракла в конюшнях?Am0ralist
02.12.2016 16:17+1Пффф. Ему всего-то пришлось речкой смыть все содержимое.
Если б все было так просто, то для оптимизации учета в организации хватило бы одного пожара, да.
Fedarod
02.12.2016 12:57В программировании произошло то, что когда-то произошло в строительстве. Теперь код будут писать джамшуты за еду, а настоящих программистов-архитекторов будет так мало, что их будут знать поименно. Так что у рядового погроммиста сегодня два пути — бригадиром-тимлидом в бэкэнд или архитектором-дизайнером во фронтэнд и работать пока не сядут глаза и не отвалятся руки.
Altaisky
02.12.2016 12:57+1Если серьёзно, то нейросеть, пишущая код, должна появиться с минуты на минуту, если уже не появилась.
kristoferrobin
02.12.2016 14:05+1знаете как называется самое полное, понятное и корректное ТЗ? код (с) commitstrip
Sormovich
03.12.2016 21:21Эту нейросеть ждут с нетерпением для написания симулятора живой клетки
http://www.nanonewsnet.ru/news/2016/uchenye-rabotayut-nad-sozdaniem-pervoi-trekhmernoi-modeli-zhivoi-kletki
Далее, для симулятора органов и организма человека
И далее, Биг Дата, ИИ, глубокое машинное обучение для диагностики и лечения стволовыми клетками in vivo
Olorin111
02.12.2016 12:57Это даже страшнее, чем у Пелевина. Вам бы писать попробовать. И я сейчас не о софте.
glockbender
02.12.2016 16:35Подскажите в какой книге он об этом писал?
Olorin111
06.12.2016 00:05Конкретно об этом у него не было. То о чем здесь — сюжетной линией Омон Ра навеяно, скорее.
GeraldIstar
02.12.2016 12:57+4Уважаемый jehy, Мы же предупреждали вас о том, что будет, за разглашение информации. Извините, но за Вами уже выехали. Сами понимаете, кому дорогу перешли.
Keyten
02.12.2016 13:20+1А у вас запятая лишняя.
JerleShannara
02.12.2016 15:53+1Спокойно, сейчас наша новая нейросеть поправит нейросеть предупреждения о разглашении в области пунктуации. Эээ, а зачем мне калашников в лицо су
iehrlich
02.12.2016 12:57Уровень заговора ужасает. Впрочем, не все знают, в чём принимают участие. Созданы даже специальные концепции и методологии, чтобы показать, что случайный код в порядке вещей. Как иначе кому-то в голову могла прийти концепция TDD, когда сначала пишутся тесты, а потом сам код? Зачем иначе сотни фреймворков и автоматизированных инструментов тестирования? Всё — для того, чтобы прикрыть, что разработчиков в компании больше нет.
Шутка перестаёт быть шуткой, если поменять настоящее время на будущее, с учётом ретроспективы последних 40-50 лет. Ну и разработчики конечно останутся, в реальном-то мире. Хотя с академической точки зрения они в такой системе действительно не очень нужны с определенного момента. А что вы думаете про UML? :)
Mii
02.12.2016 13:48Преимущество от реализации такой схемы перевешивают все ваши примитивные страхи. Скорее бы
Nekto_Habr
02.12.2016 15:00Вот и я думаю. Скармливаешь компьютеру свои пожелания (пока еще оформленные в ТЗ, но думаю в будущем можно и в свободной форме, и даже с матом), а он тебе — решение. Что плохого? Ошибки? А кто из «живых» разработчиков (то есть, людей) их не допускает?
:)
jedishat
02.12.2016 14:05На самом деле, смех смехом, а я подозреваю, что весь говнокод лет через 10 будет писать нейросеть, а из живых людей останутся только архитекторы.
qw1
03.12.2016 01:39Думаю, что нет. Либо появится сильный ИИ, который вытеснит всех, и архитекторов тоже. Либо останется посредник-программист, который пожелания заказчика будет транслировать в задание для нейросети (или что там будет).
mictiax
02.12.2016 14:05+2Замечательная небольшая антиутопия. Вообще, если уж программистов смогут заменить ИИ, то большинство других специальностей тем более. Мы будем одними из последних в этом великом плане по автоматизации. А потом SkyNet пофиксит нас, как излишний биологический вид.
Программисты — не нужны. Программисты — это лишняя прокладка между ученым и компьютером.
Программисты не разбираются ни в одной предметной области. Это мне так одна преподша по физике в универе говорила.
edd_k
02.12.2016 14:26+1Зачем писать качественный код, когда есть «as is»?
Бесполезно призывать к качеству в asis-бизнесе. Не будет его там никогда.
AgentSIB
02.12.2016 15:40Автор слишком много знает… Братство программистов скомпрометировано… НА КОЛ ЕГО!
Equin0x
02.12.2016 17:12Немного устаревшая информация. Сейчас обычная Nvidia Tesla, подключенная к /dev/random и гитхабу вполне справляется с написанием винды за 3 месяца.
kelevra
02.12.2016 20:40шутки шутками, но, знаете, содержимое очень многих энтерпрайз систем очень похоже на то, что описано в статье. есть, конечно, исключения, но они лишь подтверждают правило.
Alexey2005
02.12.2016 22:16+1Предметная область фрагментируется всё сильнее, причём время жизни отдельных фрагментов быстро падает.
Это лет 20 назад вы могли всю свою жизнь оттачивать ваши знания C++ и изучать нюансы кодирования под WinAPI. Теперь же не существует по-настоящему универсальной, всеобъемлющей и при этом живучей технологии. Например, изучая JS и React, можете ли вы быть уверены, что через 3 года они ещё будут востребованы?
Отсюда возникает потребность в кроссплатформенности. Никто не может себе позволить писать код для всех 256 платформ, все хотят написать один раз, и чтоб более-менее работало везде. Именно в эту бездонную дыру и улетает вся производительность современных систем — чтобы выстроить кучу абстракций, способных сделать код универсальным. Если бы существовала одна-единственная платформа с чётко очерченными и неизменными характеристиками, из неё удалось бы выжать максимум…
Второе — никто не может позволить себе быть профессионалом, т.к. уже невозможно изучить ни одну предметную область за сколь-нибудь разумный срок, хотя бы сравнимый со сроком её существования. Уже сейчас кодеры вынуждены играть в лотерею, пытаясь наугад выбирать платформы, языки и фреймворки «новой волны» пока те ещё не стали популярными. Потому что когда станут, учить их будет уже поздно, как раз изучите к моменту их кончины.
В дальнейшем проблема будет только нарастать, и в пределе любой софт будет писаться кодерами, которые в первый и последний раз в жизни видят используемый стек технологий — ведь все эти фреймворки и инструменты загнутся даже быстрее, чем будет дописан продукт.qw1
03.12.2016 01:43+1Если бы существовала одна-единственная платформа с чётко очерченными и неизменными характеристиками, из неё удалось бы выжать максимум…
Да, но рано или поздно на рынке возникло бы предложение, от которого трудно отказаться: «Вы из платформы выжали максимум, поэтому, если хотите большего, вот вам новая платформа. Она почти как старая, но на 20% лучше» )))
klod_ua
02.12.2016 22:40+2уже можно плакать, ибо есть заказчики, прочитав такое, не поверят в последний абзац, и в понедельник будут требовать новую ОС через 3… ну 5 дней. Мне было сказано, что не компьютеры управляют нами, а мы ими… и не важно что там кто-то криворукий внес…
maydjin
03.12.2016 21:14+1Полностью согласен, половина моего офиса, включая меня генерирует случайный код. Особенно в пятницу.
netch80
03.12.2016 21:49+3Мне тут подсказали, что техзадание обычно пишут тем же методом. Так что всё в порядке.
hzs
05.12.2016 11:24+1Не, не стоит бояться кода машины.
Я вчера вечером такого наговнокодил, оно хотя и работает, но ни одному генератору случайных чисел такой код и не снился.
Если Скайнет решит захватить планету, с десяток говнокодеров его быстренько утихомирят.
Mabusius
Аминь брат! Теперь мне все стало понятно! Понятно откуда берутся эти люди-роботы, которые пишут сразу и бек и фронт и о которых вечно мечтают работодатели!
inkvizitor68sl
Ещё и админят всё это на сдачу.
MaximChistov
еще и работодателю приплачивают за такое-то счастье самореализации