Главы 10-13. Оставшиеся критические навыки
Эти главы представлены в компактном формате. Каждый навык важен, но с AI вы можете быстро освоить основы.
Глава 10. Навык #7: Git и контроль версий
Почему Git критичен с AI
С AI генерация кода ускорилась в 10 раз.
Но это значит:
- Больше изменений
- Больше экспериментов
- Выше риск сломать работающий код
Git — ваша страховка.
Основные команды
Базовый workflow
# Инициализация репозитория
git init
# Проверка статуса
git status
# Добавление файлов
git add .
git add file.py
# Коммит
git commit -m "Add user authentication"
# Просмотр истории
git log
git log --oneline
Ветвление
# Создать ветку
git branch feature/new-api
# Переключиться
git checkout feature/new-api
# Создать и переключиться (короче)
git checkout -b feature/new-api
# Список веток
git branch
# Удалить ветку
git branch -d feature/new-api
Слияние
# Перейти на main
git checkout main
# Слить ветку
git merge feature/new-api
# Разрешение конфликтов (если есть)
# 1. Открыть файлы с конфликтами
# 2. Выбрать нужные изменения
# 3. git add <файлы>
# 4. git commit
Хорошие commit messages
Плохо:
git commit -m "fix"
git commit -m "update"
git commit -m "changes"
Хорошо:
git commit -m "Fix: Handle null user in authentication"
git commit -m "Add: Email validation to registration form"
git commit -m "Refactor: Extract payment logic to separate service"
Структура:
<type>: <краткое описание>
<детальное описание — опционально>
Типы:
feat:— новая функцияfix:— исправление багаrefactor:— рефакторингdocs:— документацияtest:— тесты
С AI
AI может помочь:
AI, сгенерируй commit message для следующих изменений:
[показываешь git diff]
AI предложит хороший commit message.
Ключевые советы
✅ Коммитьте часто (каждая логическая единица изменений) ✅ Пишите понятные commit messages ✅ Используйте ветки для новых функций ✅ Регулярно пушьте в remote (backup!) ✅ Перед важными изменениями: создайте ветку
Глава 11. Навык #8: Debugging и отладка
AI делает ошибки — вы их находите
Типичная ситуация:
# AI сгенерировал код
def process_orders(orders):
total = 0
for order in orders:
total += order['total']
return total
# Вызов
process_orders([]) # KeyError: 'total'!
Проблема: AI не обработал пустой список.
Чтение stack traces
Python stack trace
Traceback (most recent call last):
File "main.py", line 15, in <module>
result = process_orders(orders)
File "main.py", line 10, in process_orders
total += order['total']
KeyError: 'total'
Как читать:
- Снизу вверх — последняя строка показывает ошибку
KeyError: 'total'— нет ключа 'total'File "main.py", line 10— где произошла ошибка
Использование debugger
Breakpoints
def process_orders(orders):
total = 0
for order in orders:
breakpoint() # Программа остановится здесь
total += order['total']
return total
В debugger:
(Pdb) print(order) # Посмотреть значение order
(Pdb) print(orders) # Посмотреть весь список
(Pdb) n # Next — следующая строка
(Pdb) c # Continue — продолжить
Систематический подход
Алгоритм отладки:
-
Воспроизвести ошибку
- Создайте минимальный пример, который вызывает баг
-
Изолировать проблему
- Какая функция/строка вызывает ошибку?
- Что происходит до ошибки?
-
Гипотеза
- Почему это происходит?
- Что должно быть, а чего нет?
-
Тестировать гипотезу
- Добавить print/breakpoint
- Проверить значения переменных
-
Исправить
- Внести изменение
- Проверить, что баг исчез
-
Добавить тест
- Чтобы баг не вернулся
Debugging с AI
Отличный workflow:
AI, помоги найти ошибку:
Код:
[вставляете код]
Ошибка:
[вставляете stack trace]
Что делаю:
[описываете шаги воспроизведения]
Ожидаемый результат:
[что должно быть]
Актуальный результат:
[что происходит]
AI часто сразу найдёт проблему!
Частые ошибки AI
1. Не обрабатывает edge cases:
# AI код
def divide(a, b):
return a / b # Забыл проверить b == 0
2. Неправильные типы:
# AI код
def calculate_age(birth_year):
return 2025 - birth_year # Что если birth_year строка?
3. Off-by-one errors:
# AI код
for i in range(len(arr) - 1): # Пропустит последний элемент!
print(arr[i])
Глава 12. Навык #9: Чтение документации
AI не знает всё
AI отлично знает:
- Популярные библиотеки (React, Django, Express)
- Стандартные подходы
- Общие паттерны
AI плохо знает:
- Новые библиотеки (вышли после cutoff date)
- Специфичные API вашей компании
- Нюансы последних версий
Вывод: Умение читать документацию остаётся критичным.
Как быстро найти нужное
Официальная документация
Структура обычно такая:
1. Getting Started — быстрый старт
2. Tutorial — пошаговое руководство
3. API Reference — детальное описание всех функций
4. Examples — примеры использования
5. FAQ — частые вопросы
Совет: Начинайте с Examples — это быстрее всего.
Чтение API docs
Пример (Python requests):
requests.get(url, params=None, **kwargs)
Parameters:
url (str) - URL for the request
params (dict, optional) - Query parameters
**kwargs - Additional arguments
Returns:
Response object
Example:
response = requests.get('https://api.github.com/users/octocat')
print(response.json())
Что искать:
- Parameters — что передавать
- Returns — что получите
- Example — как использовать
Workflow: Документация → AI → Применение
Эффективный подход:
- Найдите документацию библиотеки/API
- Прочитайте примеры — понять основы
- Дайте документацию AI:
AI, вот документация библиотеки XYZ:
[вставляете релевантную часть]
Создай функцию, которая:
[ваша задача]
- AI использует документацию → лучший результат!
Поиск решений
Ресурсы:
- Stack Overflow — огромная база вопросов/ответов
- GitHub Issues — проблемы и решения конкретных библиотек
- Reddit — обсуждения best practices
- Блоги разработчиков — детальные гайды
С AI:
AI, я нашёл такое решение на Stack Overflow:
[вставляете код]
Адаптируй это для моего случая:
[ваша задача]
Глава 13. Навык #10: Веб и сети
Большинство приложений — веб
Даже если вы не делаете веб-сайты, ваше приложение вероятно:
- Общается с API
- Отправляет данные на сервер
- Получает обновления из интернета
Понимание основ веба критично.
HTTP: Request / Response
Как работает веб
Клиент (браузер) Сервер
│ │
│ HTTP Request │
│ ─────────────────>│
│ │
│ HTTP Response │
│ <─────────────────│
│ │
HTTP методы
GET — получить данные
GET /users/123
POST — создать данные
POST /users
Body: {"name": "Alice", "email": "alice@example.com"}
PUT/PATCH — обновить
PUT /users/123
Body: {"name": "Alice Smith"}
DELETE — удалить
DELETE /users/123
REST API basics
REST — стандарт проектирования API.
Принципы:
- Ресурсы (существительные):
/users,/products,/orders - HTTP методы (глаголы): GET, POST, PUT, DELETE
- Stateless — каждый запрос независим
Пример REST API:
GET /products # Список товаров
GET /products/123 # Один товар
POST /products # Создать товар
PUT /products/123 # Обновить товар
DELETE /products/123 # Удалить товар
JSON и работа с данными
JSON — стандартный формат данных в вебе.
{
"id": 123,
"name": "Laptop",
"price": 999.99,
"inStock": true,
"tags": ["electronics", "computers"]
}
Python:
import json
# JSON → Python dict
data = json.loads('{"name": "Alice"}')
print(data["name"]) # Alice
# Python dict → JSON
json_str = json.dumps({"name": "Bob"})
print(json_str) # '{"name": "Bob"}'
Асинхронные запросы
Fetch API (JavaScript):
// GET запрос
fetch('https://api.example.com/users')
.then(response => response.json())
.then(data => console.log(data));
// POST запрос
fetch('https://api.example.com/users', {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({name: 'Alice'})
})
.then(response => response.json())
.then(data => console.log(data));
Python (requests):
import requests
# GET
response = requests.get('https://api.example.com/users')
data = response.json()
# POST
response = requests.post(
'https://api.example.com/users',
json={'name': 'Alice'}
)
Базовая безопасность
CORS (Cross-Origin Resource Sharing)
Проблема: Браузер блокирует запросы с другого домена.
Решение: Сервер должен разрешить CORS:
# Flask
from flask_cors import CORS
app = Flask(__name__)
CORS(app)
Аутентификация
JWT (JSON Web Token) — популярный способ.
Workflow:
- Пользователь логинится → получает JWT токен
- Каждый запрос включает токен в header:
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9... - Сервер проверяет токен
С AI
Создание API с AI:
AI, создай REST API для управления задачами (TODO):
- GET /tasks - список задач
- POST /tasks - создать задачу
- PUT /tasks/:id - обновить задачу
- DELETE /tasks/:id - удалить задачу
Используй Flask и PostgreSQL.
Добавь JWT аутентификацию.
AI создаст полноценный API!
Заключение Части II
10 критических навыков освоены!
✅ 1. Понимание кода — читаете и понимаете каждую строку ✅ 2. Архитектурное мышление — проектируете системы ✅ 3. Алгоритмическое мышление — понимаете сложность ✅ 4. Формулирование задач — основа промпт-инжиниринга ✅ 5. Паттерны — направляете AI к правильным решениям ✅ 6. Тестирование — TDD с AI ✅ 7. Git — контроль версий и коллаборация ✅ 8. Debugging — находите ошибки AI ✅ 9. Документация — читаете и применяете с AI ✅ 10. Веб и сети — основа современных приложений
Вы готовы к Части III
Теперь, когда фундамент заложен, переходим к:
- Работе с LLM на практике
- Созданию AI-агентов
- Командам агентов
- Growing Software в действии!
Следующая часть: ЧАСТЬ III — НОВАЯ ПАРАДИГМА: Growing Software с AI