𝗧𝗵𝗲 𝗦𝗲𝗰𝗼𝗻𝗱 𝗟𝗮𝗽: 𝗪𝗵𝗮𝘁 𝗛𝗮𝗽𝗽𝗲𝗻𝘀 𝗪𝗵𝗲𝗻 𝗬𝗼𝘂 𝗜𝗺𝗽𝗿𝗼𝘃𝗲 𝘁𝗵𝗲 𝗦𝗮𝗺𝗲 𝗖𝗼𝗻𝘁𝗲𝗻𝘁 𝗧𝘄𝗶𝗰𝗲

I run an automation that improves calculator pages every evening. It adds verified benchmarks, worked examples, and internal links. It has made 43 commits so far.

This week, the automation hit a "second lap." It revisited three pages it had already improved:

• P/E Ratio calculator (improved twice, 34 days apart) • SaaS Valuation calculator (improved twice, 35 days apart) • Book Value calculator (improved twice, 37 days apart)

I wanted to see if a second round of improvements would move the needle. The results were a reality check.

The data from Google Search Console shows the truth:

• P/E Ratio: 711 impressions, 2 clicks • SaaS Valuation: 17 impressions, 0 clicks • Book Value: 0 impressions, 0 clicks

The content is better now. It has specific meta descriptions and accurate benchmarks. But better content did not change Google's assessment of the page authority.

The automation improves the content, but it cannot instantly change how Google views the trust level of a domain. The improved pages are still sitting near the bottom of search results.

Meanwhile, the pages the automation never touched are winning.

A purchase order generator moved up 8 positions in one week. It has 20 clicks. An impression calculator has 1,041 impressions and 10 clicks. Neither page has ever been in the automation queue.

This creates a massive gap. The pages performing best are the ones I haven't touched. The pages I am working on most are barely getting any traffic.

Why is this happening?

  1. Authority: Financial media giants might dominate the P/E and SaaS niches. No amount of content can beat their established domain trust.
  2. Intent: The automation might be improving content that doesn't match how people actually search.
  3. Competition: The untouched pages might target less crowded query landscapes.

I am not stopping the automation. I am setting a checkpoint for July 21. I will check the data again in four weeks. If the second pass moves the rankings, I will report it. If not, I will know that doing something twice is not a fix for low authority.

Are you building programmatic SEO? Are you hitting a wall where good content results in bad rankings? Let's compare notes in the comments.

Второй круг: три калькулятора были улучшены дважды — вот что осталось после первого прохода

Когда мы создаем что-то в первый раз, наша главная цель — заставить это работать. Мы фокусируемся на основной логике, «счастливом пути» (happy path) и реализации функций. Это то, что я называю «первым проходом».

Но «просто работать» — это только начало. Настоящее качество проявляется во время «второго круга».

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

Три калькулятора

Я выбрал три разных типа калькуляторов, чтобы проверить различные аспекты проектирования:

  1. Базовый калькулятор: Простая арифметика (+, -, *, /).
  2. Научный калькулятор: Тригонометрия, логарифмы и возведение в степень.
  3. Финансовый калькулятор: Расчет сложных процентов, кредитов и инвестиций.

Что осталось после первого прохода?

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

1. Запутанная логика (Spaghetti Code)

В базовом калькуляторе вся логика была сосредоточена в одном огромном методе. Вместо того чтобы разделять операции, я использовал бесконечную цепочку if-else и switch. Это работало, но поддерживать такой код было практически невозможно.

2. Отсутствие обработки ошибок

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

3. Сильная связанность (Tight Coupling)

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

4. Отсутствие масштабируемости

Добавление новой функции (например, извлечения корня) требовало изменения структуры всего приложения. Код не был расширяемым.

Второй круг: Рефакторинг и совершенствование

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

Что изменилось:

  • Разделение ответственности (Separation of Concerns): Я выделил математическую логику в отдельные классы/модули, независимые от UI.
  • Паттерны проектирования: Я использовал паттерн Strategy для обработки различных типов операций. Теперь добавление новой функции — это просто создание нового класса.
  • Надежная обработка ошибок: Я внедрил систему исключений и валидации входных данных. Теперь вместо падения приложения пользователь получает понятное сообщение об ошибке.
  • Тестирование: Я покрыл основные функции модульными тестами (unit tests), чтобы гарантировать, что будущие изменения не сломают существующую логику.

Заключение

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