Чего мы уже никогда не узнаем
Сейчас проектирую одну достаточно сложную систему. Пишу техническое задание на её разработку — точнее, сегодня это называется спецификация – «спека», если по-модному. И делаю это, естественно, с помощью искусственного интеллекта. Для этого у меня есть специальная система анализа и проектирования, которая позволяет разложить задачу на составляющие, удобно обсудить каждую с ИИ, удобно развивать различные ветки и подветки обсуждения, потом эти ветки опять сводить в один документ и т.д. и т.п.. Плюс ко всему – тонкое управление контекстом, поэтому ИИ работает … эффективнее я еще не встречал! В общем, всё очень по-взрослому.
И эта же система помогает мне сформировать конкретное техническое задание для моего агента ИИ на разработку программного обеспечения, которое я сейчас проектирую и для которого пишу ТЗ.
Я впервые делаю такое упражнение — пишу техническое задание с помощью ИИ — и постоянно ловлю себя на мысли: «Какие я в своё время получал технические задания на разработку !... Показывать стыдно.» Там всё было просто ужасно. «Сделайте нам всё, чтобы было круто! Чтобы наши задачи все решались! И сделайте вон ту кнопочку справа красненькой!». Вот это был уровень написания ТЗ. С точки зрения предметики — «сделайте, чтобы всё круто» - ни много ни мало. Но при этом докопаются до какой-то совершенно незначимой мелочи и вокруг нее устроят кучу свистоплясок (именно в нашем – прогерском - понимании бантиков и свисточков). И так практически всегда.
Хороших, хорошо проработанных технических заданий я за свои сорок лет программистской жизни не получил ни разу. Но и сам никогда их не писал, потому что ума хватало понимать: если проект большой и сложный, то с реализацией проекта растёт понимание задачи, а соответственно и меняются требования, и все эти ТЗ очень быстро теряют актуальность. В таком случае детальное ТЗ - это просто иллюзия, ну или бюрократические игрища. Скорее – и/или.
Мы давно – еще году в девяносто втором - изобрели велосипед экстремального программирования: мелкие итерации, программирование в четыре руки и так далее. Потом, конечно, всё это стало модной фишкой где попало и с кем попало — аджайлы, скрамы, — но всё это ерунда. Эти ребята просто не знают, что такое настоящий экстрим. А мы это сами тогда изобрели и активно использовали. Итерации всегда. Заказчик всё время рядом, за соседним столом. Договорились сразу, чтоб всё было чётко: заказчик сидит на своём рабочем месте, а наш стол поставили рядом. И нам это обеспечили. Время было другое 😊 Шутка.
Потом то же самое было с другим заказчиком, когда мы сказали: «Разрабатывать будем только у вас – на вашей площадке. Выделите нам место, мы сядем и будем постоянно общаться с вашими специалистами, чтобы те были в курсе».
Потом были другие проекты, где специалисты уже другого заказчика ежедневно, в течение года, приходили на нашу площадку. Реально ежедневно — два специалиста приходили утром к нам, и мы с ними всё обсуждали, разбирались. Проект в итоге получился блестящий. До сих пор вспоминаю с гордостью.
А те проекты, где заказчик где-то там бултыхался и думал, что мы угадаем его хотелки по ТЗ, написанному, заказчиком «от балды», — это всё были очень сложные истории, и некоторые даже провалились.
Поэтому все эти спецификации, честно говоря, ерунда. Но тем не менее. Уровень написания ТЗ — это ладно. Бывает конечно заметно, что человек, который писал ТЗ, понимает истинную ценность этого документа, поэтому общими мазками что-то обозначил, а дальше — «на твоё усмотрение, главное то, о чём мы договорились, а не то, что мы написали». Это тоже опасная игра, очень опасная. Но хоть как-то что-то сделать получается.
Ну и, конечно, та широко известная в очень узких кругах история, когда заказчик пишет и утверждает ТЗ несколько лет(!), исполнитель берёт и выполняет всё слово в слово, а заказчик говорит: «Платить не буду, потому что то, что ты сделал, мне уже не нужно. Оно морально устарело!». Занавес! Не стану называть, где это произошло, но это произошло на моих глазах. Причем, не маленькая система, а как раз - очень большая. Судебные тяжбы, скандалы, снятие с должностей и т.п. - всё было. Но речь не об этом.
Речь о том, что я сейчас сижу и пишу ТЗ. Пишу какие-то свои мысли — где-то сбивчиво, где-то они друг другу не соответствуют, где-то я что-то важное недоопределяю. И иишка постоянно меня дергает: «Вот здесь не дописал! Вот это ещё включи в спецификацию!». Мы с нею в постоянном диалоге: я по ее подсказке отмечаю — это включить, это не включать, это исключить. И в итоге складывается спецификация.
Потом она по запросу делает общий анализ и смотрит: «Смотри, вот тут у тебя противоречие. Давай разбирайся, уточняй». Ну и так далее. А когда уже почти все пункты сформированы — не чистовой текст, а именно пункты, а у меня их больше двухсот пятидесяти, и я их сделал за полдня(и это пункты не про кнопкостроение!), — она говорит: «Вот смотри, в пятьдесят втором пункте и в сто пятьдесят третьем — возможны, из-за того, что они похожи по сути, — разночтения. Я-то знаю, что по всему протоколу нашего общения ты имел в виду нечто вполне определенное. Но реально, когда спецификация попадёт на исполнение, её могут понять иначе. Допиши еще вот это […] , чтоб было точнее».
И вот сижу, делаю. С одной стороны, психую от её занудности — до каждой мелочи докапывается. С другой — понимаю, что это лучшее, что в моей жизни происходило с точки зрения постановки задачи. Выжимает психологически она, конечно, просто ужасно. Когнитивно — полный капец – до тошноты. Но результат того стоит.
И вот я задумался: А представим, эту спецификацию положить на стол команде программистов — делайте! Как они это сделают? Наверное, идеально? … думаете вы…
Но мы этого уже никогда не узнаем. Потому что сегодня по такой детальной и точной спецификации хорошо работает уже даже нефлагманский искусственный интеллект. А команде программистов там теперь просто делать больше нечего.
Комментарии
Пока никто не писал.
Чтобы написать, войдите или зарегистрируйтесь.