До изучения программной инженерии я часто задавался вопросом: что собственно делает человека инженером? В процессе 5-летнего обучения в колледже у меня было достаточно времени, чтобы подумать об этом. Не сразу, но в конце концов мне удалось найти ответ на свой вопрос. Он выразился в определении трех основных законов, которым должен следовать каждый инженер-программист.
Чтобы стать инженером-программистом, требуются годы обучения. Однако основные принципы, на которых базируется подход к разработке программного обеспечения, можно свести к 3 фундаментальным законам.
Рассмотрим каждый из этих законов, чтобы лучше понимать образ мышления инженеров-программистов.
1. Проектирование предшествует написанию кода
Первое, что я усвоил во время изучения программной инженерии, — это то, что инженеры сначала думают, а потом действуют. В применении к разработке ПО это означает, что инженеры сначала проектируют, а затем пишут код.
Точнее говоря, большинство инженеров-программистов даже не программируют. Их работа сосредоточена на проектировании базы данных и архитектуры ПО, принятии решений о технологическом стеке и обеспечении команды разработчиков всем необходимым для реализации приложения.
В конце концов, контроль над процессом — один из основных принципов инженерной деятельности. Вот почему инженер должен определять, что и как сделать, а также какие инструменты применить.
2. Стоимость неудачи должна быть минимизирована
Мои преподаватели говорили: “Если проекту суждено провалиться, он провалится в первые несколько недель. Чем раньше он провалится, тем лучше”. Я до сих пор придерживаюсь этого правила.
При разработке ПО приоритет отдается тем ключевым функциям, которые сложнее всего реализовать. Ведь если команда разработчиков не сможет их реализовать, проект сразу же провалится. И это будет наилучшим исходом наихудшего сценария развития событий.
Это просто объяснить: немедленный провал означает экономию большого количества времени, денег и сил. Именно в этом и заключается минимизация стоимости неудачи. Такой подход применим и ко многим другим сферам жизни. Вот почему я считаю его самым важным уроком, полученным во время обучения.
3. Результаты должны быть измеримы
Инженеры не просматривают результаты — они их измеряют. Это еще один ключевой аспект инженерного подхода к ПО. Вместо того чтобы просто принимать к сведению результаты, инженеры измеряют их, чтобы точно знать, как и почему команда смогла их достичь. Только тогда можно понять, где и что нужно улучшить.
Каждый проект преследует свои цели, и не всегда легко найти правильные показатели для измерения результатов. Именно здесь опыт инженера играет ключевую роль.
В большинстве случаев чем раньше будут определены эти показатели, тем лучше. Однако каждый проект со временем развивается, и хороший инженер должен уметь адаптировать и изменять инструменты и подходы к измерению результатов в соответствии с этими изменениями. Такой подход помогает сохранить контроль над проектом.
Заключение
Программная инженерия — искусство, на овладение которым уходят годы. Однако есть три фундаментальных аспекта, на которые она опирается. Читая эту статью, вы получили возможность рассмотреть три основных закона программной инженерии. Если вы только мечтаете о карьере инженера-программиста, они вдохновят вас. Если же ваш путь в профессию уже начался, они послужат вам уроками, не теряющими своей актуальности.
Читайте также:
Читайте нас в Telegram, VK и Дзен
Перевод статьи Antonello Zanini: The 3 Basic Laws of Software Engineering