You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: content/015-upgrade.md
+18-7Lines changed: 18 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,7 +1,7 @@
1
1
# Не отказывайтесь от будущего
2
2
3
3
Часто можно услышать от разработчиков фразу **«пока работает — не трогай»**.
4
-
Это звучит как здравый смысл. Но это в корне не верно.
4
+
Это звучит как здравый смысл. Но это в корне не верно.
5
5
Очень плохая практика котороя являеться на самом деле самообманом.
6
6
Как бы аккуратно ни был написан код — он не живёт в вакууме.
7
7
Фреймворки развиваются, стандарты обновляются, экосистема не стоит на месте.
@@ -17,19 +17,30 @@
17
17
18
18
### Временные решения всегда становятся постоянными
19
19
20
-
Разработчики вынуждены тратить время на создание временных решений и костылей для работы с устаревшими компонентами, вместо использования стандартных средств и функциональности, доступных в новых версиях.
20
+
Разработчики вынуждены тратить время на создание временных решений и костылей для работы с устаревшими компонентами,
21
+
вместо использования стандартных средств и функциональности, доступных в новых версиях.
21
22
22
23
Пример:
23
-
> Разработчики, использующие Laravel 5.0, разрабатывали собственную проверку, чтобы клиент мог просматривать только свои заказы в интернет-магазине. Однако менее чем через полгода в версии 5.1 были представлены Policies, ставшие стандартом. Вместо обновления как можно скорее, увеличение кодовой базы лишь увеличивало время на последующее устранение технического долга.
24
+
> Разработчики, использующие Laravel 5.0, разрабатывали собственную проверку, чтобы клиент мог просматривать только свои
25
+
> заказы в интернет-магазине. Однако менее чем через полгода в версии 5.1 были представлены Policies, ставшие стандартом.
26
+
> Вместо обновления как можно скорее, увеличение кодовой базы лишь увеличивало время на последующее устранение
27
+
> технического долга.
24
28
25
29
### Усложнение процесса обновления
26
-
Большие разрывы в обновлениях создают снежный ком эффект, который требует значительных усилий и ресурсов для обновления проекта. Это может привести к тому, что если вы захотите обновиться, придется потратить на это несколько месяцев без внедрения какого-либо нового функционала.
27
30
28
-
Пример:
29
-
> Разработчики “Яндекс.Еда” пропустили три мажорных релиза, и полное обновление заняло целый год. За время накопления технического долга поддержка фреймворка, пакетов и самого PHP изменилась.
31
+
Большие разрывы в обновлениях создают снежный ком эффект, который требует значительных усилий и ресурсов для обновления
32
+
проекта. Это может привести к тому, что если вы захотите обновиться, придется потратить на это несколько месяцев без
33
+
внедрения какого-либо нового функционала.
30
34
35
+
Пример:
36
+
> Разработчики “Яндекс.Еда” пропустили три мажорных релиза, и полное обновление заняло целый год. За время накопления
37
+
> технического долга поддержка фреймворка, пакетов и самого PHP изменилась.
31
38
32
39
### Актуальность — это и про найм тоже
33
40
34
-
Использование поддерживаемых версий также облегчает процесс найма новых разработчиков. Большинство опытных разработчиков предпочитают работать с современными и актуальными технологиями. Кроме того, знание того, что проект использует поддерживаемые версии, может быть важным моментом для кандидатов при принятии решения о присоединении к команде. Это также позволяет обеспечить более плавный процесс адаптации новых членов команды, так как они уже знакомы с особенностями работы с актуальными версиями.
41
+
Использование поддерживаемых версий также облегчает процесс найма новых разработчиков. Большинство опытных разработчиков
42
+
предпочитают работать с современными и актуальными технологиями. Кроме того, знание того, что проект использует
43
+
поддерживаемые версии, может быть важным моментом для кандидатов при принятии решения о присоединении к команде. Это
44
+
также позволяет обеспечить более плавный процесс адаптации новых членов команды, так как они уже знакомы с особенностями
Copy file name to clipboardExpand all lines: draft/llm.md
+41-10Lines changed: 41 additions & 10 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,18 +1,30 @@
1
1
# Второй пилот — не капитан
2
2
3
-
Сегодня в нашей разработке появился второй пилот — только теперь он не сидит рядом на соседнем стуле, а прямо в редакторе кода.
4
-
Это ChatGPT, Copilot, LLM — как ни назови. Он хорош, быстр, дружелюбен. Но он всё ещё второй пилот.
3
+
В начале книги мы уже говорили: код читают чаще, чем пишут.
4
+
Сегодня у нас появился второй пилот — только теперь он не сидит рядом на соседнем кресле, а встроен прямо в редактор.
5
+
ChatGPT, Copilot и другие LLM-инструменты. Быстрые, дружелюбные, полезные.
6
+
Но не обманывайтесь: это всё ещё второй пилот, не капитан
5
7
6
-
## Мусор на входе — мусор на выходе
8
+
Обычно код не меняют просто так.
9
+
Чаще всего причина — баг или новая фича.
10
+
И мы формулируем задачу примерно так:
7
11
8
-
Если ты суёшь ему в метод полотно на 800 строк, полное противоречий, логических дыр и нелепых зависимостей — не надейся,
9
-
что он сделает из этого чистую архитектуру. Он будет **продолжать**. Механически, без разбора. Потому что его задача — *
10
-
*продолжить твой стиль**, а не **исправить твой хаос**.
12
+
> «Иногда этот код выбрасывает исключение XXX. Исправь, пожалуйста».
11
13
12
-
> GIGO — *Garbage In, Garbage Out*.
14
+
~~Обычно мы не меняем код без причины, самыми популярными являются исправление ошибки и добавление новых функций.
15
+
По этому мы ставим задачу второму пилоту в духе: "Этот код иногда выдает Exception XXXX" пожалуйста исправь".~~
13
16
17
+
Но именно в таких формулировках и кроется проблема.
14
18
15
-
Небольшой пример:
19
+
Если передать ему метод на 800 строк, полных противоречий, логических дыр и нелепых зависимостей — не надейся,
20
+
что он сделает из этого конфетку.
21
+
Он будет **продолжать**. Механически, без разбора.
22
+
Потому что его задача — **продолжить твой стиль**, а не **исправить твой хаос**.
23
+
Старое правило `GIGO — *Garbage In, Garbage Out*.` никуда не делось.
24
+
25
+
26
+
Рассмотрим простой пример: функция, которая записывает email в базу и отправляет приветственное письмо.
27
+
Попросим второго пилота добавить логирование:
16
28
17
29
```diff
18
30
// >_ Добавь логирование
@@ -32,15 +44,27 @@ function store()
32
44
}
33
45
```
34
46
35
-
В этом коде многое выглядит очень плохо, например:
47
+
Он чертовски хорошо выполнил свою задачу, но проблема не в его работе, а в том, что переданный код
48
+
выглядит очень плохо, потому что в нем:
36
49
37
50
- Нет возврата осмысленного результата.
38
51
- SQL-инъекция (строка вставляется напрямую).
39
52
- Нет обработки ошибок.
40
53
41
-
Если ты передал в LLM нарушенный SRP — метод, который и швец, и жнец, и на дуде игрец — то не удивляйся, что он туда ещё
54
+
Если ты передал мусор — метод, который и швец, и жнец, и на дуде игрец — то не удивляйся, что он туда ещё
42
55
и трубача припишет. Он **не откажет**, он скажет: «Да, командир!» — и продолжит кромсать.
43
56
57
+
58
+
На сайтах помощи, типа "Stack Overflow" спросить/ответить на вопрос, в ручном режиме от человека.
59
+
И там достаточно часто были помеченные как "Решение" ответы заминусованные, где в пояснениях обьясняли что решение может быть и рабочее, но приведет к плачевным последствиям.
60
+
Важно отличие второго пилота, в том, что он не скажет какой ваш код пока вы его об этом не попросите, а вы сосредоточены на решении бизнес-проблем.
61
+
А большинство разработчиков будут сосредоточены на бизнес-задаче, а не на качестве кода.
62
+
63
+
Большинство разработчиков именно так и поступают.
64
+
Поэтому пилот продолжает путь туда, куда ведёт плохая трасса.
65
+
66
+
67
+
44
68
---
45
69
46
70
Когда мы запускаем LLM не ради рефакторинга, а ради **решения задачи** — будь то баг, фича или интеграция — мы часто
@@ -60,5 +84,12 @@ function store()
60
84
61
85
### Начинай правильно
62
86
87
+
Поэтому пилот продолжает путь туда, куда ведёт плохая трасса.
88
+
И вот тут начинается самое страшное: мы **раздуваем MESS**. И не просто раздуваем, а автоматизируем его рост.
89
+
63
90
Вот почему так важно начать с сильной позиции.
64
91
С чистого кода, с понятной архитектуры, с ясных методов и простых имён.
0 commit comments