Как и в любом искусстве, трудность составляет хорошее решение, основанное на очень большом пространстве решений. Там так много способов сделать это, как есть разработчики.
Я обычно трачу некоторое время на понимание проблемы и четко и кратко излагаю ее, желательно в письменной форме. Описание проблемы должно быть полностью абстрагировано от любых возможных решений. Далее я обычно перечисляю доступные ограничения, которые необходимо будет применять к решению (время, бюджет, правовая, политическая, производительность, удобство использования, доступность навыков в команде и т. Д.).
Тогда теория гласит, что вам нужно искать на рынке то, что решает проблему и одновременно отвечает ограничениям. На практике процесс не так прямолинейный: вы пытаетесь определить категории рынка, которые могут быть полезны, а затем исследовать их, видеть, что доступно, и постоянно стараться как можно больше сократить разрыв между ограничениями и возможностями, часто возвращаясь и пересматривая и пересматривая ограничения.
Несколько общих советов:
-
Во время исследования продолжайте возвращаться к первоначальной проблеме.
-
Всегда существует более одного решения, старайтесь расширить ширину (сосредоточиться на самых разных способах решения проблемы) пространства поиска, прежде чем идти глубже.
-
Будьте ясны по целому ряду вариантов, которые стоит исследовать, и времени, затрачиваемому на каждого из них, прежде чем принимать решение о дальнейшем расследовании.
-
Ita € ™ s редко стоит найти оптимальное решение, особенно тогда технологический пейзаж продолжает меняться очень быстро. Ищите решение, которое достаточно хорошо: «Парадокс выбора - почему больше меньше» .
-
Ita € ™ s редко стоит обратиться к пользователям за помощью (если они не являются экспертами по программному обеспечению) при выборе между несколькими вариантами. Если у вас есть несколько вариантов, которые выглядят одинаково привлекательно, это означает, что вам нужно вернуться назад и понять исходную проблему лучше, возможно, вы не выполнили требование или два.
-
Некоторые дополнительные замечания по использованию сторонних компонентов (относятся к компонентам GUI, но их легко применять и к другим областям программного обеспечения).
-
И еще больше замечаний по определению области, составлению и исследованию проекта.