1 July 2016

Прощай, программирование…

Research and forecasts in IT
Translation
Original author: Lauren Mendoza

Лорен Мендоза
Инженер-программист. Воздушная акробатка. Родилась и живу в Сан-Франциско.


Когда многие продукты являются, по существу, одним и тем же приложением с различными цветовыми схемами и кнопкой копирования, почему мы всё ещё программируем?

Файлы в вашем компьютере могут быть представлены различными способами. Средством, с помощью которого большинство людей находит свои файлы, является графический интерфейс, такой как, например, Mac Finder. Но можно сделать также всё то же самое, используя текстовый интерфейс, как, например, Terminal. Оба интерфейса представляют собой различные пути для моделирования одной и той же информации и взаимодействия с нею.

Сетевое приложение может быть представлено также многими способами: архитектурная схема, диалог, модель. Разработчики программного обеспечения обычно работают с кодом. Но является ли он наиболее интуитивно понятным и производительным подходом?

Вдохновляющая идея

Для создания электронной музыки я использовала программу, называемую Reason. Мне она нравится, поскольку она позволяет «перетаскивать» провода между различными устройствами и точно показывает, как всё там соединено. Для меня наглядно показываемые проводки имеют намного больше смысла, чем бесконечное нагромождение меню и выплывающих окон, которое господствовало в самом передовом ПО в 2000-ных. (Я тебя люблю, Adobe Flash CS3 Professional). Благодаря интерфейсу Reason я лучше понимаю, что делаю, и успеваю сделать намного больше музыки, чем флэш-роликов.


Нам нужно больше удовольствия

Я не знаю, когда или как это произошло, но в какой-то момент «IT-специалист» стал «разработчиком», который превратился в «инженера-программиста». Мне, конечно, нравится называться инженером, особенно после лишь трёх месяцев «образования». Но основная часть того, что мы делаем — не инженерная деятельность. Быть инженером означает заниматься решением новых проблем, глубоким продумыванием задач. Это, действительно, интеллектуальная деятельность.

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

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

Инженеры должны решать новые и интересные задачи, а не воспроизводить одни и те же приложения снова и снова. Последнее — работа для роботов.

Тот же самый большой сайт, теперь с большим количеством CSS

Доказанный факт (вероятно), что, чем «оригинальнее» дизайн пользовательского интерфейса, тем меньше люди понимают, как его использовать. Неразумно повторно изобретать установившийся язык визуального общения. Интернет работал бы намного лучше, если бы мы договорились о некотором наборе общих элементов, а затем выражали бы наше мнение, комбинируя их. Стили должны генерировать себя на основе нескольких ключевых слов, таких как, например, «пусть будет металлический, чёрный и зловещий» или «пусть будет деловой, респектабельный и синий», «пусть будет хипповый, забавный и под Apple» или «пусть будет милый и привлекательный для мам». Категорически недопустимо вводить какой-то код, чтобы сдвинуть что-либо на 5 пикселей.

Проблемы значимости собственной личности

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

Но знание замысловатого синтаксиса и «навыки кодирования» не делают вас хорошим инженером и тем более не делают вас умнее. Можно быть великим кодером и никаким инженером. Разработка лучших, быстрых, расширяемых, креативных способов решения реальных проблем людей — вот что ценно и что будет становиться всё более важным в ближайшие годы.

Написание текстов программ — исключительно глупое занятие

Написание текстов программ допускает опечатки. Более того, оно допускает неограниченную «креативность», также известную как типовые проблемы кода («запахи кода»). Основная масса кода сделана довольно плохо. Инженеры проводят бесчисленные часы, занимаясь синтаксисом, опечатками, структурированием расположения, проверками стиля оформления, ошибками, спорами по стилю и методам наиболее успешной практики, разработкой клавиш быстрого доступа, чтобы попытаться заставить какую-то часть кода печатать саму себя. Это — абсурд. И это — пустая трата времени.

Мы уже пришли

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

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

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

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

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

Решение

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

Что касается всего пыла и преданности вокруг открытого исходного кода, то большинство этих проектов сделано плохо, не сохраняется и не используется на уровне бизнеса. Компании «изобретают велосипеды» и дублируют сделанное.

Я сейчас хочу создать простой в использовании интерфейс, использующий «перетаскивание», в котором любой может создать полнофункциональное комплексное приложение без какого-либо программирования. Пока не знаю, как я буду делать это, но, скорее всего, я использую навыки работы с Adobe Flash CS3 Professional, упомянутым ранее. Шучу — я, вероятно, возьму React.

Преимущества

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

Полезно для инженерной культуры

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

«Moneyball» или «Человек, который изменил всё»

Вообще-то, «Moneyball» («Человек, который изменил всё») — это великолепный фильм. Я знаю, что он старый, но я просто смотрела его вчера вечером и всё пыталась связать сказанное выше с этим удивительным фильмом, но не смогла. И меня это ничуть не беспокоит.

Вы знаете, что ещё было бы неплохо?

Строительный материал в виртуальной реальности. Я только что купила кое-что, и это обман.
Tags:программированиепользовательский интерфейсинженер-программисттекст программы
Hubs: Research and forecasts in IT
-15
7.5k 35
Comments 27