Ловушка «все будет хорошо», как и ловушка выгодной цены, базируется на фатальных дефектах человеческой психики. «Выгодная цена» эксплуатирует жадность, а «все будет хорошо» — страх и лень. Мы не любим, когда случается что-то плохое, нам это неприятно. Думать о неприятном заранее — живот заболит. Да и незачем думать, ну вот что может случиться? Все будет хорошо, этой мысли достаточно.
Подход посложнее — не приступать к написанию кода раньше времени, не пытаться сэкономить на ресурсах лишний грошик. Разработка даже самого простого механизма, самой элементарной, казалось бы, функции выстраивается в пять стадий.
1. Анализ. Изучение задачи, изучение текущего положения, выявление противоречий, уточнение неочевидных мест, допущений и ограничений.
2. Проектирование. Разработка «на бумаге». Принятие основных проектных решений (при необходимости с проверкой на быстром прототипе).
3. Кодирование. Собственно написание и отладка кода. Честно говоря, это не самое захватывающее занятие — если все продумано и правильно спроектировано, код является очевидным, и очень жаль, что сам себя он писать пока еще не способен.
4. Проверка. Прежде чем передавать какую-то разработку (даже на тестирование), разработчик обязан самостоятельно проверить, по крайней мере, основной поток событий и поток наиболее очевидных ошибок.
5. Документирование. Написание инструкций по развертыванию, эксплуатации, разрешению известных проблем. Фиксация «на бумаге» наиболее важных и/или сложных проектных решений.
Принцип GIGO действительно является законом природы. Разница между программистом и разработчиком — в практическом следствии. Программист заботится только о корректности работы своих алгоритмов. Разработчик программного обеспечения проверяет и валидирует входные данные, не допуская мусор дальше порога.
Программист оперирует понятиями изящности, оптимальности, оригинальности. Разработчик программного обеспечения оперирует принципом экономии сил, экономической эффективностью и коэффициентом полезного действия.
Памятка для самопроверки. Попробуйте поискать в своем коде следующие видовые признаки:
Эти принципы написаны кровью «убитых систем», «проваленных проектов» и «утопленных талантов».
1. Целью производственной деятельности не является решение каких-либо задач только ради их решения:
• основой целью в коммерческом производстве является создание добавленной стоимости через изготовление продукции и/или оказание услуг;
• в некоммерческом производстве (если такое вообще бывает) цель описана в соответствующем положении устава.
2. Любая задача по разработке программного обеспечения решается с прицелом на дальнейшее развитие, дополнительную продажу, возможность тиражирования.
3. При разработке программного продукта уже на этапе эскизного проектирования сразу принимается во внимание фактор эксплуатации:
• возможность сопровождения даже специалистами не очень высокой квалификации;
• необходимость устойчивости к изменениям в окружении (в самом широком смысле слова «окружение»);
• снижение лишних расходов, где только возможно.
Разработка даже самого простого механизма, самой элементарной, казалось бы, функции выстраивается в пять стадий.
1. Анализ. Изучение задачи, изучение текущего положения, выявление противоречий, уточнение неочевидных мест, допущений и ограничений.
2. Проектирование. Разработка «на бумаге». Принятие основных проектных решений (при необходимости с проверкой на быстром прототипе).
3. Кодирование. Собственно написание и отладка кода. Честно говоря, это не самое захватывающее занятие — если все продумано и правильно спроектировано, код является очевидным, и очень жаль, что сам себя он писать пока еще не способен.
4. Проверка. Прежде чем передавать какую-то разработку (даже на тестирование), разработчик обязан самостоятельно проверить, по крайней мере, основной поток событий и поток наиболее очевидных ошибок.
5. Документирование. Написание инструкций по развертыванию, эксплуатации, разрешению известных проблем. Фиксация «на бумаге» наиболее важных и/или сложных проектных решений.
Разработка даже самого простого механизма, самой элементарной, казалось бы, функции выстраивается в пять стадий.
1. Анализ. Изучение задачи, изучение текущего положения, выявление противоречий, уточнение неочевидных мест, допущений и ограничений.
2. Проектирование. Разработка «на бумаге». Принятие основных проектных решений (при необходимости с проверкой на быстром прототипе).
3. Кодирование. Собственно написание и отладка кода. Честно говоря, это не самое захватывающее занятие — если все продумано и правильно спроектировано, код является очевидным, и очень жаль, что сам себя он писать пока еще не способен.
4. Проверка. Прежде чем передавать какую-то разработку (даже на тестирование), разработчик обязан самостоятельно проверить, по крайней мере, основной поток событий и поток наиболее очевидных ошибок.
5. Документирование. Написание инструкций по развертыванию, эксплуатации, разрешению известных проблем. Фиксация «на бумаге» наиболее важных и/или сложных проектных решений.
• «HTTP-сервис» —> «REST-сервис».
• REST = Representational State Transfer, «передача репрезентативного состояния»;