Я начал писать код в 1986 году еще ребенком. Моя первая программа была на Бейсике на Commodore 64 с лентопротяжным устройством: 10 BEEP 20 GOTO 10. Мой отец гордился ею. Раздражает маму своим постоянным писком.

В 1998 году я писал код в Delphi. Это было здорово. Язык Delphi был классным, лучше, чем VB6 в то время, так много встроенных компонентов. Я разрабатывал приложения для Windows внутри компании, которая занималась мониторингом вибрации на больших машинах.

Тогда системы были проще. Пользовательский интерфейс был менее сложным, поэтому мы не использовали сторонние фреймворки. Мы не использовали много абстракций/паттернов проектирования, мы просто заставили его работать и изменили его позже, если это нужно было изменить, потому что было легко изменить код, потому что он был таким простым (но сложнее развернуть, потому что мы выпустили код на дискетах).

Исправление ошибок было намного быстрее, потому что было не так много слоев — был пользовательский интерфейс и код, который обрабатывал пользовательский интерфейс. Вот и все.

Сейчас, в 2022 году, я пишу программное обеспечение для ETL для компании, которая занимается продуктовой аналитикой. Существует пользовательский интерфейс, написанный на Angluar, затем API C# с контроллером, который отправляет сообщение посредника, которое обрабатывается обработчиком, который вызывает службу (возможно, в другом API), которая вызывает свои зависимости для выполнения задач, и затем, наконец, вызывает репозиторий для сохранения вещей. Иногда у нас разные API для каждой части, отправка сообщений через RabbitMQ и NServiceBus. Так много слоев, так сложно отследить ошибки.

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

В 1998 году мне нужно было знать Delphi и ее базу данных, чтобы хорошо справляться со своей работой. В 2022 году я должен знать C#, SQL Server, Azure, Docker, Html/CSS, JSON, Http, Anguar/React/Vue. Я также должен знать, как использовать многие сторонние компоненты инфраструктуры C# и пользовательского интерфейса и как выполнять модульные тесты во внешнем и внутреннем интерфейсе.

Честно говоря, я чувствовал себя более продуктивным и менее разочарованным как разработчик в 1998 году, когда все было проще.

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

Идея темы возникла после прочтения этого поста на Hacker News…

Каково было быть разработчиком программного обеспечения около 30 лет назад?