СММ-АК-2024. Разложение в стек разработчика

Разложение в стек “разработка программного обеспечения” был уже пост СММ-АК-2024. Метод как объект первого класса где альфу метода раскладывал на подальфы и частично это обсуждалось в СММ-АК-2024. Стратегирование метода работы

Там же был хороший комментарий от @viktor-agroskin

Метод “разработка программного обеспечения” очень комплексный. Его как раз хорошо бы разложить по спектру практик разных уровней, где внизу математика, где-то в середине написание кода, выше управление разработкой. Тогда станет видно, куда привязаны очень разные дисциплины и инструменты. Например, теории алгоритмики и моделирования данных - на уровне написания кода, теории менеджерские (agile, job to be done и т.п.) - на уровне управления разработкой. Аналогично и с инструментами.

Разложил в стек мастерство “разработка программного обеспечения”, вот что из этого вышло. Первая версия

культура роль адепта учитель(создатель) разложение культуры на методы работы и предметы методов
ИТ-сообщество и индустрия разработки Участник сообщества / Инноватор Лидер мнений / Пионер отрасли - технические обсуждения на форумах
- публикации
- тестирование новых технологий
- проведение встреч и конференций
- организация профессиональных групп и сообществ
- социальный капиталл
- поддержка молодых специалистов
- разработка стандартов
Вклад в open-source проекты Контрибьютор Мейнтейнер проекта Контрибьютор:
- документирование проектов
- добавление нового функционала
- фикс багов

Мейнтейнер
- проверка и принятие PRs
- модерация обсуждений
- контрол за соблюдением стандартов
- работа с коммьюнити
Управление проектами и процессами разработки Менеджер проекта / Скрам-мастер Руководитель разработки - фасилитация проектного процесса
- планирование спринтов
- отслеживание задач
- координация с командой
- распределение задач
- части XP: малые релизы, адаптивное планирование
- работа с командой над улучшением процессов и взаимодействием с другими отделами
- ретроспективный анализ и постмортем
- методики анализа/метрик(burndown chart)
- Kanban/Lean/Agile
Архитектура программного обеспечения Системный архитектор Главный архитектор - выбор подходящих паттернов проектирования
- DDD
- анализ архитектурных изменений
- оценка технических рисков
- согласование архитектурных решений с долгосрочной стратегией
- проверка состояния технического долга
Разработка программных систем Разработчик Технический лидер / Ментор - анализ гипотез(технических требований) и написание кода на их основе
- работа с отзывами и ревью кода
- тестирование(unit, integration) для отладки и повышения надежности
- выбор оптимальных решений
- мониторинг/логирование
- безопасность
- TDD
- части XP: парное программирование, непрерывная интеграциия
Инструменты разработки и среды Пользователь инструментов разработки Эксперт по инструментам / “DevOps”-инженер - использование редакторов / IDEs / GithubCopilot(LLMs)
- профили, .dotfiles
- CI/CD pipelines для автоматизации
- git, mercurial
- использование облачных ресурсов
- контейнеризация/k8s
Программирование и кодирование Программист/кодер Наставник по языкам программирования - чистый код
- DRY
- SOLID
- паттерны проектирования
- соблюдение код-стандартов
- статический анализ кода
Алгоритмы и структуры данных Инженер-программист Эксперт по алгоритмам - решение задач с использование подходящих структур данных
- оптимизация алгоритмов
- теория сложности(big O notation)
- параллельные и распределенные алгоритмы
- графовые алгоритмы
Основы информатики и компьютерных наук Студент информатики Преподаватель информатики - использование базовых знание по логике/структур данных/алгоритмам
- использование базовых понятий вычислений
- теория автоматов
- криптография, безопасность
- компиляторы, интерпретаторы
Математическое мышление Аналитик / Логик Учитель математики / Логики - аналитические методы
- методы приближенных вычислений
- решение математических задач и уравнений
- применение методов логического анализа к проблемам
- использование формальной нотации для решения задач
- теория графов
- комбинаторика
- статистика, ТеорВер
- матрицы и линейная алгебра
Когнитивные и проблемно-решающие навыки Обучающийся Тренер по когнитивным навыкам / Специалист по развитию критического мышления - метод “5 почему”
- составление ментальных карт
- мышление письмом
- собранность
- дебатирование
- использование критического анализа
- мозговой штурм
- матрица Эйзенхауэра
- системное мышление
Жизнедеятельность и здоровье Здоровый человек Врач / Специалист по общему здоровью - физическое здоровье(упражнения, питание, сон, глубокое дыхание)
- ментальное здоровье(стресс-менеджмент, WLB, медитации)
- самообслуживание(чекапы, отыдх)
2 лайка

И сюда порассуждать про developer journey на базе идеи learner journey, eXperience management, организации самых разных touchpoints, где этому всему подучивают и touches (по мотивам customer journey, см. материал Клиентоориентированность. CEM/CXM.: ailev — LiveJournal и за ним Клиентоориентированность. CRM, CJM, CXP, DXP.: ailev — LiveJournal). Идея тут в том, что нельзя взять и как-нибудь “снизу-вверх” научить разработчика, да там ещё и пока выучишь – на каждом уровне разложения метода в табличке что-то ещё и поменяться успеет. Опять же, сколько “полноценному человеку, а не твари дрожащей” ни говори, в каком порядке и чему надо бы учиться – учится он всё одно как-то тому, что хочется, а не тому, что надо. А ещё работает – там тоже “опыт”, и явно не то, что планируется. Поэтому множество контактов с самыми разными учителями и работодателями, получается journey вместо “водопада”.

Ну, и как тут жить? Как стать крутым разработчиком, и куда потом? Ибо с такой табличкой даже удерживать этот статус долго не получится – это ж не язык выучить, который выучил, и на всю жизнь.

Само содержание таблички даже не трогаю, наверняка её создание породило много интересных мыслей – что уже хорошо.

3 лайка

эта таблица это не сверху вниз, ну по крайней мере я про нее так думал когда делал, это куча параллельных треков, понятно что все же не совсем параллельных, какие-то треки закрыты совсем пока хоть чуть-чуть из других не возьмешь. Да journey.

Да, наверное, так же как и с остальными подобными табличками: принять к сведению и поглядывать в своем развитии, посматривать где есть белые пятна и что еще подтянуть. Проводить регулярно “чекап”/стратегирование на основе этой таблички(которая все это время будет развиваться и куда-то дальше уходить) до какого-то уровня. А с какого-то уровня если будет хватать желания/мозгов/амбиций - есть возможность влиять на то, что в эту табличку будут заносить.
Что эта табличка точно не - это не учебный план, следуя которому обязательно придешь к успеху. Ну по крайней мере я так понимаю.

Ну вот берём танцы, капоэйру, плавание – и смотрим на эти таблички в курсе методологии, как они устроены. По ним можно как-то планировать dancer journey, capoeirista journey, swimmer journey. Курс “Интеллект-стек” по сути дела – такая же табличка чуть ли не на пару десятков строк, только она изложена в форме учебного курса, там по паре десятков страниц текста на одну строку таблички. И в вашей табличке кроме роли адепта, у которого есть мастерство, есть ещё и имя учителя. Это не учебный план, но учебная стратегия. Стратегия есть, теперь можно планировать ресурсы (touchpoints) и порядок работ (какие touches в каком порядке прходить) – да, табличка не учебный план, но ровно материал для его построения!

2 лайка

У бюрошников на эту тему есть техника “Осьминожка навыков”.
Раз пример
Два пример
@aliaksandr-kantsevoi ничего не напоминает?

3 лайка

Классное название)