Skip to content

Commit e84a824

Browse files
committed
WIP
1 parent 7c4b483 commit e84a824

File tree

4 files changed

+130
-18
lines changed

4 files changed

+130
-18
lines changed

content/006-naming.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ $shouldRetry
136136
```
137137

138138

139-
## Единицы измерения
139+
### Единицы измерения
140140

141141
Теперь давайте рассмотрим пример именования с единицами измерений
142142

content/015-upgrade.md

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# Не отказывайтесь от будущего
22

33
Часто можно услышать от разработчиков фразу **«пока работает — не трогай»**.
4-
Это звучит как здравый смысл. Но это в корне не верно.
4+
Это звучит как здравый смысл. Но это в корне не верно.
55
Очень плохая практика котороя являеться на самом деле самообманом.
66
Как бы аккуратно ни был написан код — он не живёт в вакууме.
77
Фреймворки развиваются, стандарты обновляются, экосистема не стоит на месте.
@@ -17,19 +17,30 @@
1717

1818
### Временные решения всегда становятся постоянными
1919

20-
Разработчики вынуждены тратить время на создание временных решений и костылей для работы с устаревшими компонентами, вместо использования стандартных средств и функциональности, доступных в новых версиях.
20+
Разработчики вынуждены тратить время на создание временных решений и костылей для работы с устаревшими компонентами,
21+
вместо использования стандартных средств и функциональности, доступных в новых версиях.
2122

2223
Пример:
23-
> Разработчики, использующие Laravel 5.0, разрабатывали собственную проверку, чтобы клиент мог просматривать только свои заказы в интернет-магазине. Однако менее чем через полгода в версии 5.1 были представлены Policies, ставшие стандартом. Вместо обновления как можно скорее, увеличение кодовой базы лишь увеличивало время на последующее устранение технического долга.
24+
> Разработчики, использующие Laravel 5.0, разрабатывали собственную проверку, чтобы клиент мог просматривать только свои
25+
> заказы в интернет-магазине. Однако менее чем через полгода в версии 5.1 были представлены Policies, ставшие стандартом.
26+
> Вместо обновления как можно скорее, увеличение кодовой базы лишь увеличивало время на последующее устранение
27+
> технического долга.
2428
2529
### Усложнение процесса обновления
26-
Большие разрывы в обновлениях создают снежный ком эффект, который требует значительных усилий и ресурсов для обновления проекта. Это может привести к тому, что если вы захотите обновиться, придется потратить на это несколько месяцев без внедрения какого-либо нового функционала.
2730

28-
Пример:
29-
> Разработчики “Яндекс.Еда” пропустили три мажорных релиза, и полное обновление заняло целый год. За время накопления технического долга поддержка фреймворка, пакетов и самого PHP изменилась.
31+
Большие разрывы в обновлениях создают снежный ком эффект, который требует значительных усилий и ресурсов для обновления
32+
проекта. Это может привести к тому, что если вы захотите обновиться, придется потратить на это несколько месяцев без
33+
внедрения какого-либо нового функционала.
3034

35+
Пример:
36+
> Разработчики “Яндекс.Еда” пропустили три мажорных релиза, и полное обновление заняло целый год. За время накопления
37+
> технического долга поддержка фреймворка, пакетов и самого PHP изменилась.
3138
3239
### Актуальность — это и про найм тоже
3340

34-
Использование поддерживаемых версий также облегчает процесс найма новых разработчиков. Большинство опытных разработчиков предпочитают работать с современными и актуальными технологиями. Кроме того, знание того, что проект использует поддерживаемые версии, может быть важным моментом для кандидатов при принятии решения о присоединении к команде. Это также позволяет обеспечить более плавный процесс адаптации новых членов команды, так как они уже знакомы с особенностями работы с актуальными версиями.
41+
Использование поддерживаемых версий также облегчает процесс найма новых разработчиков. Большинство опытных разработчиков
42+
предпочитают работать с современными и актуальными технологиями. Кроме того, знание того, что проект использует
43+
поддерживаемые версии, может быть важным моментом для кандидатов при принятии решения о присоединении к команде. Это
44+
также позволяет обеспечить более плавный процесс адаптации новых членов команды, так как они уже знакомы с особенностями
45+
работы с актуальными версиями.
3546

content/017-copilot.md

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
# Второй пилот — не капитан
2+
3+
В начале книги уже было отмечено: код читают гораздо чаще, чем пишут.
4+
Сегодня у нас появился второй пилот — только теперь он не сидит рядом на соседнем кресле, а встроен прямо в редактор.
5+
ChatGPT, Copilot и другие LLM-инструменты. Быстрые, дружелюбные, полезные.
6+
Но не обманывайтесь: это всё ещё второй пилот, не капитан
7+
8+
Обычно код не меняют просто так.
9+
Чаще всего причина — баг или новая фича и
10+
задача для инструмента формулируется примерно так:
11+
12+
> «Выступи в роли X. Иногда этот код выбрасывает исключение XXX. Исправь, пожалуйста».
13+
14+
Но именно в таких формулировках и кроется проблема.
15+
16+
Если передать ему метод на 800 строк, полных противоречий, логических дыр и нелепых зависимостей — не надейся,
17+
что он сделает из этого конфетку.
18+
Он будет **продолжать**. Механически, без разбора.
19+
Потому что его задача — **продолжить твой стиль**, а не **исправить твой хаос**.
20+
Старое правило `GIGO — *Garbage In, Garbage Out*.` никуда не делось.
21+
22+
23+
Рассмотрим простой пример: функция, которая записывает email в базу и отправляет приветственное письмо.
24+
Попросим второго пилота добавить логирование:
25+
26+
```diff
27+
// >_ Добавь логирование
28+
29+
function store()
30+
{
31+
$email = $_POST['email'];
32+
33+
$conn = new mysqli('localhost', 'user', 'pass', 'db');
34+
$conn->query("INSERT INTO users (email) VALUES ('$email')");
35+
36+
mail($email, 'Hi', 'Welcome!');
37+
38+
+ file_put_contents('log.txt', "User $email\n", FILE_APPEND);
39+
40+
echo 'Done';
41+
}
42+
```
43+
44+
Он чертовски хорошо выполнил свою задачу, но проблема не в его работе, а в том, что переданный код
45+
выглядит очень плохо, потому что в нем:
46+
47+
- Нет возврата осмысленного результата.
48+
- SQL-инъекция (строка вставляется напрямую).
49+
- Нет обработки ошибок.
50+
51+
Если ты передал мусор — метод, который и швец, и жнец, и на дуде игрец — то не удивляйся, что он туда ещё
52+
и трубача припишет. Он **не откажет**, он скажет: «Да, командир!» — и продолжит работу.
53+
54+
55+
На сайтах вроде Stack Overflow вопросы задают и решают вручную, люди. Нередко там встречаются ответы, помеченные как "
56+
решение", но при этом заминусованные — в комментариях поясняют: да, работает, но приведёт к плачевным последствиям в
57+
долгосрочной перспективе. "Второй пилот" — помощник kkдругого типа. Он не будет указывать на архитектурные проблемы или спорные решения, пока вы
58+
сами его об этом не попросите. Его задача — помогать вам как можно быстрее двигаться к результату, решать
59+
бизнес-проблемы здесь и сейчас. Но и большинство разработчиков настроены точно так же: задача должна быть закрыта, сроки — вчера, и мало кто будет
60+
тратить время, чтобы просить помощника подумать над более выразительными именами переменных, архитектурой или стилем.
61+
62+
Поэтому пилот продолжает ехать по плохой дороге.
63+
А это самое страшное — мы просто раздуваем MESS.
64+
И не просто так, а ещё и автоматизируем его рост.
65+
66+
Вот почему важно начать с хорошей базы: чистого кода, понятной архитектуры, простых методов и имён.
67+
68+
Второй пилот не заменит твоё мышление — он просто помогает писать.
69+
70+
А хороший код начинается с тебя, а не с него!

draft/llm.md

Lines changed: 41 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,30 @@
11
# Второй пилот — не капитан
22

3-
Сегодня в нашей разработке появился второй пилот — только теперь он не сидит рядом на соседнем стуле, а прямо в редакторе кода.
4-
Это ChatGPT, Copilot, LLM — как ни назови. Он хорош, быстр, дружелюбен. Но он всё ещё второй пилот.
3+
В начале книги мы уже говорили: код читают чаще, чем пишут.
4+
Сегодня у нас появился второй пилот — только теперь он не сидит рядом на соседнем кресле, а встроен прямо в редактор.
5+
ChatGPT, Copilot и другие LLM-инструменты. Быстрые, дружелюбные, полезные.
6+
Но не обманывайтесь: это всё ещё второй пилот, не капитан
57

6-
## Мусор на входе — мусор на выходе
8+
Обычно код не меняют просто так.
9+
Чаще всего причина — баг или новая фича.
10+
И мы формулируем задачу примерно так:
711

8-
Если ты суёшь ему в метод полотно на 800 строк, полное противоречий, логических дыр и нелепых зависимостей — не надейся,
9-
что он сделает из этого чистую архитектуру. Он будет **продолжать**. Механически, без разбора. Потому что его задача — *
10-
*продолжить твой стиль**, а не **исправить твой хаос**.
12+
> «Иногда этот код выбрасывает исключение XXX. Исправь, пожалуйста».
1113
12-
> GIGO — *Garbage In, Garbage Out*.
14+
~~Обычно мы не меняем код без причины, самыми популярными являются исправление ошибки и добавление новых функций.
15+
По этому мы ставим задачу второму пилоту в духе: "Этот код иногда выдает Exception XXXX" пожалуйста исправь".~~
1316

17+
Но именно в таких формулировках и кроется проблема.
1418

15-
Небольшой пример:
19+
Если передать ему метод на 800 строк, полных противоречий, логических дыр и нелепых зависимостей — не надейся,
20+
что он сделает из этого конфетку.
21+
Он будет **продолжать**. Механически, без разбора.
22+
Потому что его задача — **продолжить твой стиль**, а не **исправить твой хаос**.
23+
Старое правило `GIGO — *Garbage In, Garbage Out*.` никуда не делось.
24+
25+
26+
Рассмотрим простой пример: функция, которая записывает email в базу и отправляет приветственное письмо.
27+
Попросим второго пилота добавить логирование:
1628

1729
```diff
1830
// >_ Добавь логирование
@@ -32,15 +44,27 @@ function store()
3244
}
3345
```
3446

35-
В этом коде многое выглядит очень плохо, например:
47+
Он чертовски хорошо выполнил свою задачу, но проблема не в его работе, а в том, что переданный код
48+
выглядит очень плохо, потому что в нем:
3649

3750
- Нет возврата осмысленного результата.
3851
- SQL-инъекция (строка вставляется напрямую).
3952
- Нет обработки ошибок.
4053

41-
Если ты передал в LLM нарушенный SRP — метод, который и швец, и жнец, и на дуде игрец — то не удивляйся, что он туда ещё
54+
Если ты передал мусор — метод, который и швец, и жнец, и на дуде игрец — то не удивляйся, что он туда ещё
4255
и трубача припишет. Он **не откажет**, он скажет: «Да, командир!» — и продолжит кромсать.
4356

57+
58+
На сайтах помощи, типа "Stack Overflow" спросить/ответить на вопрос, в ручном режиме от человека.
59+
И там достаточно часто были помеченные как "Решение" ответы заминусованные, где в пояснениях обьясняли что решение может быть и рабочее, но приведет к плачевным последствиям.
60+
Важно отличие второго пилота, в том, что он не скажет какой ваш код пока вы его об этом не попросите, а вы сосредоточены на решении бизнес-проблем.
61+
А большинство разработчиков будут сосредоточены на бизнес-задаче, а не на качестве кода.
62+
63+
Большинство разработчиков именно так и поступают.
64+
Поэтому пилот продолжает путь туда, куда ведёт плохая трасса.
65+
66+
67+
4468
---
4569

4670
Когда мы запускаем LLM не ради рефакторинга, а ради **решения задачи** — будь то баг, фича или интеграция — мы часто
@@ -60,5 +84,12 @@ function store()
6084

6185
### Начинай правильно
6286

87+
Поэтому пилот продолжает путь туда, куда ведёт плохая трасса.
88+
И вот тут начинается самое страшное: мы **раздуваем MESS**. И не просто раздуваем, а автоматизируем его рост.
89+
6390
Вот почему так важно начать с сильной позиции.
6491
С чистого кода, с понятной архитектуры, с ясных методов и простых имён.
92+
93+
94+
Второй пилот не думает за тебя. Он просто пишет.
95+
Хороший код начинается с тебя, не с него!

0 commit comments

Comments
 (0)