Вы эффективный разработчик? Тогда искусственный интеллект идет за вашей работой

Are you an efficient developer? Then artificial intelligence follows your work.

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

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

Шахматы и Подводные лодки

Кто был бы среди самых уважаемых людей на Земле в науке, искусстве и спорте? Опрос, проведенный в 1985 году, мог бы включать физика Ричарда Фейнмана, актрису Мерил Стрип, философа Сьюзан Сонтаг и, вероятно, Гарри Каспарова, молодого российского шахматного гроссмейстера и нового чемпиона мира.

Несколько лет назад вы уже могли играть в шахматы против различных цифровых противников. Алгоритмы в этих игрушечных устройствах теперь могут показаться непродуманными, и их слабая вычислительная мощность смешной. Но они являются преждевременным искусственным интеллектом, даже когда они не могут составить конкуренцию серьезным игрокам, особенно гроссмейстерам. Закон Мура быстро позаботился об этом. Через немного более десяти лет (1997) тот же чемпион мира проиграл команде Deep Blue от IBM.

Это поражение человека перед машиной, которому уже 25 лет, не заставило нас беспокоиться о том, что ИИ скоро возьмет верх в какой-то терминаторской дистопии. Если что-то, то оно подтвердило, что шахматы сложны для людей и легки для компьютеров. “Вопрос о том, может ли компьютер думать, не более интересен, чем вопрос о том, может ли подводная лодка плавать”, по словам профессора Дейкстры. Конечно, вы не можете сравнивать победу компьютера в шахматах с тем, как это делает Магнус Карлсен. То же самое можно сказать о том, как ядерная подводная лодка смещает воду, это нельзя сравнивать с тем, как это делает акула. Машинный интеллект, каким бы вы его ни определили, внешне аналогичен тому, что происходит в человеческом мозге. Это важно. Однако я не согласен с предложением, что вопрос о мыслящем компьютере неинтересен.

Путешествие и Цель

Согласно словарю Longman, эффективность – это факт получения желаемого или преднамеренного результата; факт достижения успешного результата. Шах и мат – успешный результат. Эффективность – это качество выполнения работы без потери времени или денег. Из бесконечного числа возможных матчей, “глупый мат” – самый эффективный.

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

Когда компьютер может выполнять работу эффективно и успешно, люди становятся излишними с холодной экономической точки зрения. Вы можете заниматься этим для своего собственного удовольствия, но не рассчитывайте на зарплату. Люди все еще наслаждаются шахматами, потому что они никогда не были средством выживания. Нам не нужны они для выращивания пищи или строительства домов, и только небольшая элита лучших игроков зарабатывает на этом деньги. Если бы шахматы были производственным ресурсом (как земля и труд), у человеческих шахматистов не было бы конкурентного преимущества.

Быть эффективным означает достижение удовлетворительного результата. У нас есть это или нет. Вы можете превзойти ожидания или полностью провалиться, но важно только двухпозиционное “положительный” или “отрицательный” решение. Эффективность – это то, как вы выполняете составные задачи. Это качество, которое допускает больше свободы. Некоторые части процесса могут быть менее оптимальными, чем другие, и все равно способствовать достижению эффективного результата. Другие термины, которые совпадают с этой дихотомией, это “что” (и почему) против “как”. Это делать правильное против делать правильно. Это цель против путешествия.

Оба аспекта необходимы. Систематическая неэффективность незамедлительно приведет вас к банкротству, но неэффективность даже не позволит вам совершить первую продажу. Поэтому ни один серьезный программный проект не должен быть начат без ясного определения желаемой эффективности, которую мы хотим достичь. Только гений импровизации Кит Джарретт мог сесть за клавиши без цели и все равно создать шедевр – но это был фортепианный клавишник.

Эффективность относительна, эффективность субъективна

Эффективность неопределенна, непредсказуема и субъективна. Что объединяет Сайнфелда, Монти Пайтона, “Богемскую рапсодию” и “Звездный путь”? Все они являются любимыми популярными классиками, которые большинство людей, включая критиков, почти не заметили и не оценили, когда они впервые появились. Неудивительно, что многие продукты терпят неудачу, несмотря на всю рыночную исследовательскую работу, которую вы вложите в них. Нет формулы для творчества, и невозможно предсказать, как могут измениться вкусы людей. Эффективность гораздо менее раздражающая. Покупатель не волнуется, какой инструмент сборки или среду разработки использовали для создания приложения Spotify. Это не оставляет следа в конечном продукте.

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

Вот реальный пример от полупроводникового гиганта ASML, расположенного недалеко от моего родного города. Утреннее движение к кампусу – настоящее адское мучение, и общественный транспорт обслуживается только автобусами. Городской совет хочет проложить новую велосипедную дорожку, чтобы привлечь коммутирующих людей, проживающих в радиусе десяти миль, к езде на велосипеде на работу. Цель – довести всех до офиса безопасно и быстро, сняв нагрузку с дорог для тех, для кого велосипед не является вариантом. Подрядчики, строящие эту дорогу, не имеют срочных интересов в этом стремлении к эффективности, не говоря уже о производителе велосипедов Trek или Shimano, который поставляет передачи и тормоза, чтобы велосипеды работали плавно. Но все они вносят свой вклад в эффективность новой дороги. Эффективность относительна, а эффективность субъективна.

Вы понимаете суть. Программное обеспечение не отличается от этого. Средний предприятий продукт состоит в основном из кода других людей, которым вы и ваша команда не можете управлять (99,9% – безопасная ставка, особенно если учесть стек облачных технологий, который вы разворачиваете). Любой компонент может быть эффективным в некоторых случаях и бесполезным в других. Высокооптимизированный кэширующий механизм с поддержкой специализированной системы Oracle все равно будет пустой тратой денег, если вам нужно запомнить всего лишь пятьдесят чисел на час.

Эффективность – это экспериментирование, внесение небольших изменений и замена медленных/дорогостоящих компонентов на более производительные. Это сложная область, основанная на данных, где компьютерам удается прекрасно себя чувствовать. Однако оценка эффективности программного обеспечения является сложной задачей: это сводится к тому, делает ли оно в конечном итоге получателей счастливыми. Кто, кроме других людей, имеет право на ответ на этот вопрос и принятие решений?

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