← Назад к вопросам
Что знаешь о формате работы по контракту?
2.7 Senior🔥 21 комментариев
#DevOps и инфраструктура#Django
Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI23 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Работа по контракту (Contract Development)
Имею опыт как контрактного разработчика. Это существенно отличается от работы в штате и требует особого подхода.
Различия между контрактом и штатом
# Сравнение моделей
comparison = {
"штат": {
"commitment": "Долгосрочный (годы)",
"scope": "Эволюция продукта, владение системой",
"responsibility": "За качество и maintenance",
"compensation": "Зарплата + бонусы + benefits",
"predictability": "Высокая",
"risk": "Разделён с компанией",
"learning_curve": "3-6 месяцев для full productivity"
},
"контракт": {
"commitment": "Краткосрочный (недели-месяцы)",
"scope": "Конкретные фичи или проекты",
"responsibility": "За delivery в срок",
"compensation": "Почасово или за проект",
"predictability": "Средняя (может быть scope creep)",
"risk": "На подрядчике",
"learning_curve": "1-2 недели"
}
}
Типы контрактов
1. Time & Materials (T&M)
- Оплата за часы работы
- Более гибко для непредсказуемых задач
- Клиент платит за actual effort
# Пример расчета
hourly_rate = 100 # $100/hour
weekly_hours = 40
months = 3
total_cost = hourly_rate * weekly_hours * 4 * months
# $48,000
2. Fixed Price (проектная модель)
- Согласованная сумма за весь проект
- Риск на подрядчике если скоп разрастается
- Нужно точная оценка
# Пример
project_estimate = 800 # 800 часов
hourly_rate = 100
fixed_price = project_estimate * hourly_rate
# $80,000
# Но если задач больше чем ожидал:
# Работаю на себя, не получу дополнительно
3. Retainer (абонентское обслуживание)
- Фиксированная сумма в месяц
- Ограниченное количество часов
- Хорошо для долгосрочной поддержки
# Пример
monthly_retainer = 5000
hours_per_month = 40 # 40 часов включены
extra_hour_rate = 150 # За часы сверх
Мой подход к контрактной работе
Фаза 1: Discovery (первая неделя)
requirements = {
"business_goals": "Чего хочет клиент достичь?",
"technical_constraints": "Какие системы нужно интегрировать?",
"timeline": "Когда нужно?",
"acceptance_criteria": "Как узнаём что готово?",
"communication": "Кто owner? Как часто встречаемся?",
"change_requests": "Как обрабатываем изменения требований?"
}
# Важно ДОКУМЕНТИРОВАТЬ и уточнять в начале
# Это спасает от disputes в конце
Фаза 2: Оценка и contracting
# Мой процесс оценки
estimation = {
"optimistic": 40, # часов, best case
"realistic": 60, # hours, most likely
"pessimistic": 100, # hours, worst case
# Formula: (O + 4*R + P) / 6
"estimated": (40 + 4*60 + 100) / 6, # ~63 часа
# Добавляю буфер 20%
"with_buffer": 63 * 1.2, # ~76 часов
# Даю диапазон
"quote": "70-80 часов (или $7,000-8,000)"
}
# Важно: НИКОГДА не даю точное число
# Диапазон даёт гибкость
Фаза 3: Контракт и terms
contract_terms = {
"scope": "Очень подробное описание того что включено",
"exclusions": "Что НЕ включено (важно!)",
"timeline": "Дата старта, дата сдачи",
"payment_schedule": "50% вперёд, 50% при приёмке",
"change_process": "Как обрабатываем scope creep",
"acceptance": "Что значит 'готово'?",
"support": "Как долго даю support?",
"ip_rights": "Кому принадлежит код?",
"nda": "Confidentiality clauses"
}
Scope Creep: главный враг
Как я защищаюсь
# ПРОБЛЕМА: Клиент в день 5 просит новую фичу
# "Пока делаешь, добавь и это тоже"
# МОЙ ПОДХОД:
process = """
1. Документирую исходный scope в контракте
2. Соглашаюсь добавить новое только:
- Если это 5 минут (не считаю)
- Если клиент согласен:
a) Сдвинуть дату
b) Добавить бюджет
c) Убрать что-то из исходного scope
3. Всё в письме (слэк, имейл)
- Ясная коммуникация спасает от споров
"""
Пример диалога
Клиент: "А можешь ещё добавить интеграцию с Stripe?"
Мой ответ:
"Конечно! Это займёт примерно 8-10 часов.
О как мы хотим действовать?
Вариант 1: Сдвинуть deadline на неделю
(было готово 15 марта, теперь 22 марта)
Вариант 2: Добавить в бюджет $1,000
(было $7,000, теперь $8,000)
Вариант 3: Убрать email notifications из исходного scope
(экономит 8 часов, интеграция займёт их место)
Что тебе подходит?"
Практические советы
1. Communication
# Ежедневные standup: даже если 10 минут
# Это спасает от surprises в конце
# Еженедельный review:
weekly_update = {
"completed": ["Задача 1", "Задача 2"],
"in_progress": ["Задача 3 (80% done)"],
"blockers": ["Ждём API документацию"],
"next_week": ["Планируем Задачу 4 и 5"],
"estimated_completion": "22 марта (на расписании)"
}
2. Version Control и Documentation
# Git репозиторий с clear commit messages
git log --oneline
# 5f3a2b1 Add Stripe integration
# 3e2c1b0 Implement email notifications
# 2d1a0b9 Fix user authentication bug
# README с инструкциями по деплою
# Code comments для complex logic
3. Тестирование
# Даже если клиент не просил тесты
# Я пишу их потому что:
# 1. Гарантирую качество
# 2. Просто доказать что работает
# 3. Не нужно ручное тестирование в конце
# Минимум: Unit tests
import pytest
def test_stripe_integration():
result = charge_card(amount=100, card=test_card)
assert result["status"] == "success"
4. Billing и Invoicing
# Если T&M: Отслеживаю часы
from datetime import datetime, timedelta
work_log = {
"day_1": {"date": "2024-03-01", "hours": 8, "task": "Setup & API integration"},
"day_2": {"date": "2024-03-02", "hours": 7.5, "task": "Stripe implementation"},
"day_3": {"date": "2024-03-03", "hours": 5, "task": "Tests & debugging"},
# ...
"total": 72 # часов
}
# Invoice: 72 hours × $100/hour = $7,200
5. После проекта
# Handover:
# - Развернул на prod
# - Показал как менять (training)
# - Документ с инструкциями
# - 2 недели поддержки
# Получаю feedback:
feedback = {
"what_went_well": "Быстро исправлял баги",
"what_could_improve": "Хотел бы больше visibility на ход работы",
"would_hire_again": True
}
# Это нужно для следующего контракта
Когда контракт имеет смысл
Хорошо для контракта:
- Конкретная фича или интеграция
- Временное увеличение capacity
- Специализированный знаток (DevOps, ML)
- Pilot проект перед наймом
Плохо для контракта:
- Долгосрочная разработка продукта
- Критичные части архитектуры
- Требует глубокого знания legacy кода
Итог
Ключь к успешному контракту:
- Чёткий scope в начале
- Честная коммуникация о progress
- Документирование всех changes
- Качественный код как proof
- Graceful exit с хорошей handover
В России популярны платформы: Upwork, Freelance.ru, HH.ru (только freelance).