День 1008. #ProjectManagement
3 Принципа Хорошей Разработки ПО. Начало
Понимание особенностей ПО не может гарантировать хороших результатов, но помогает выяснить, почему так много проектов дают плохие результаты. Также они помогают сформулировать некоторые основные принципы работы, которые могут значительно повысить шансы на успех. Хотя необходимо учитывать множество более тонких факторов, следующие принципы образуют основу, позволяющую приступить к созданию хорошего ПО.
1. Начните с самого простого
Проекты, желающие сразу стать «супермаркетом» в определённой области, зачастую обречены. Намерения кажутся разумными: ведь здорово, когда приложение решает как можно больше проблем людей? В конце концов, проще зайти в супермаркет, где есть всё. Разница в том, что в магазин легко добавить новый товар, но приложение с вдвое большим количеством функций создать более чем в два раза сложнее и оно намного сложнее в использовании.
Создание хорошего ПО надо начинать с самого простого решения, которое могло бы решить проблему. В хорошо сделанном, но простом приложении никогда не возникает проблем с добавлением необходимых функций. А большую систему обычно невозможно упростить и исправить. Программные проекты редко терпят неудачу, потому что они слишком малы. Они терпят неудачу, потому что становятся слишком большими. На практике сохранить фокус проекта очень сложно: простой сбор требований от всех заинтересованных сторон уже создает огромный список функций.
Один из способов справиться с этим - использовать список приоритетов. Все требования собираются и помечаются как жизненно важные, важные дополнения или просто полезные функции. Затем заинтересованные стороны могут обсудить, какие функции являются наиболее важными, не беспокоясь о том, что что-то будет упущено. Если кто-то хочет повысить приоритет функции, нужно решить, приоритет каких функций придётся снизить. Команды могут начинать с самых важных задач, продвигаясь вниз по списку, если позволяют время и ресурсы.
2. Нанимайте лучших инженеров
Ключ к хорошей инженерии - это хорошие инженеры. В Google, Facebook, Amazon, Netflix и Microsoft, как известно, одни из самых избирательных процессов собеседований, при этом они ведут ожесточённую борьбу за набор самых сильных кандидатов и платят работникам сильно выше рынка. Этому есть причина. И Стив Джобс, и Марк Цукерберг заявили, что лучшие инженеры как минимум в 10 раз производительнее инженера среднего уровня. Не потому, что они пишут код в 10 раз быстрее, а потому, что они принимают лучшие решения.
Хороший инженер
- лучше разбирается в существующем ПО, которое можно использовать повторно,
- лучше разбирается в инструментах, автоматизируя большинство рутинных задач,
- сам проектирует надёжные и понятные другим системы.
Это имеет мультиплицирующий эффект, позволяя коллегам совершенствовать свою работу. В целом хорошие инженеры намного эффективнее потому, что решения, которые они принимают, избавляют вас от работы, о которой вы не знали, что её можно избежать.
Небольшие команды лучших инженеров эффективно используют доступный открытый код и сложные облачные сервисы и перекладывают рутинные задачи на автоматическое тестирование и другие инструменты, чтобы самим сосредоточиться на творческих аспектах решения проблем. Они быстро тестируют различные идеи с пользователями, расставляя приоритеты по ключевым функциям и исключая неважную работу. Они допускают меньше ошибок и проблем с безопасностью. Проблемы в коде влияют не только на работу автора кода, но и на работу его коллег. В крупных проектах плохие инженеры в итоге создают больше работы друг для друга, из-за ошибок и неправильного выбора решений.
Вот почему самые успешные технологические компании настаивают на самых талантливых специалистах, несмотря на их огромную зарплату. Жёсткий предел сложности системы - не количество инженерных усилий, а их качество.
Окончание следует…
Источник: https://www.csc.gov.sg/articles/how-to-build-good-software
Post #1235
1.39K