Swiss Knife
Принцип «швейцарского ножа» говорит о том, что каждый инженер-программист (software engineer) должен стремиться к тому, чтобы быть универсальным игроком в моменты, когда это необходимо для команды. Базово его задачи не ограничиваются только написанием кода, он также участвует в проектировании архитектуры, системном анализе, написании документации и тестов, тестировании своего кода и мониторинге работы своих сервисов (продукта). При этом он, безусловно, остается в первую очередь экспертом в своей изначальной области, но это не должно быть преградой для развития и применения других навыков.
Отсутствие в команде выделенного специалиста узкой направленности, например архитектора, системного аналитика или специалиста по контролю качества (QA), не должно мешать или, тем более, блокировать работу команды.
Естественно, есть исключения, которые можно понять на основе здравого смысла. Например — всё, что связано с дизайном. Дизайн — это специализированная область, где часто применяются решения и процессы, отличные от тех, которыми занимаются разработчики. Тем не менее, даже в таких случаях важно, чтобы разработчики имели базовое понимание принципов дизайна и умели взаимодействовать с дизайнерами, чтобы обеспечить гармоничное взаимодействие в команде.
В итоге принцип «швейцарского ножа» означает, что каждый инженер-программист должен стремиться обладать не только глубокой специализацией в своей основной области, но и широким набором навыков и знаний для гибкого и эффективного решения разных задач.
Практики
- Инженер-программист стремится не только к глубокой специализации в своей основной области, но и к развитию разносторонних навыков.
- Инженер-программист должен иметь общее представление о работе всей системы, в которой реализуется проект. Это помогает ему принимать правильные решения при разработке и понимать, как его код взаимодействует со всем проектом.
- Инженер-программист должен стремиться к улучшению своих навыков. Он должен быть готов к изучению новых технологий и инструментов, чтобы быть в курсе последних тенденций в области разработки.