Попытка максимально кратко перечислить основное, что имеет отношение к разработке. Ничего не потерялось?
Простота.
Противоречия. (Разрешение противоречий. Поиск компромиссов)
Изменяемость.
Повторная используемость.
Абстрактность. (Обобщения и конкретизации)
Полнота.
Декомпозиция. (и композиция)
Классификация/группирование/кластеризация/cohesion.
Инкапсуляция. (простой маленький интерфейс к сложной громоздкой реализации)
Ограничения. Автоматическая защита от ошибок. (Например, типизация отлавливает ошибки во время компиляции.)
Availability. Диагностируемость. Читабельность.
(Или как это назвать?). Возможность найти нужную часть кода, ошибку. Скорость навигации по коду. Самодокументирование. Возможность подсмотреть через Debugger, что происходит внутри.
Разработчики.
Инструменты:
. . — Знания. Науки (физика, математика, ...)
. . — ЯП
. . — Средства разработки
Сторонние библиотеки.
Код разрабатываемой системы.
Функциональность системы, требования (независимо от того какой код, ЯП, ...).
Эффективность, производительность системы. (или это не здесь должно быть?)
Пользователь. Тестировщик. Заказчик.
Операции с кодом (низкоуровневые/"тактические" действия):
Изучение кода.
Поиск. Локализация нужного функционала в коде.
Добавление кода, почти не меняя существующий. Либо написание с нуля.
Изменение. Добавление функционала, когда требуются изменения в многих местах.
Breaking changes. Изменения в критической части кода, от которой много зависит(на которую много ссылок). Где-то может что-то отвалиться.
Рефакторинг
Поиск/отладка ошибок.
Тестирование
Документирование.
Жизненный цикл разработки (высокоуровневые/"стратегические" действия):
Прогнозирование. Анализ, составление требований к продукту.
Исследования. Эксперименты. Proof of concept.
Планирование.
Проектирование и дизайн.
Разработка.
Тестирование.
Развертывание, эксплуатация, поддержка.