Szybkie prototypowanie to proces tworzenia realistycznego modelu przyszłego programu lub interfejsu programowalnego produktu w celu uzyskania wczesnego wglądu w użyteczność, potrzeby i funkcje produktu. Szybko prototypowane interfejsy użytkownika są łatwe do modyfikacji i pozwalają użytkownikowi końcowemu na wprowadzenie danych wejściowych do projektu. Chociaż szybkie prototypowanie oferuje przewagę wkładu użytkownika w projektowanie oraz zdolność wykrywania i korygowania wad podczas programowania, pojawia się również kilka wyzwań.
Kody wielokrotnego użytku
Niektóre narzędzia do prototypowania umożliwiają programistom tworzenie kodu wielokrotnego użytku, ale tworzą one interfejsy użytkownika, które później trudno jest zmienić. Bardziej powszechne podejście, za pomocą narzędzi, które pozwalają na szybkie opracowywanie interfejsów użytkownika, które są łatwiejsze do modyfikacji, nie daje użytecznego kodu. Kod generowany przez te narzędzia jest wysoce wyspecjalizowany i zintegrowany w złożone sposoby, które uniemożliwiają jego częściową reprodukcję lub przeniesienie do innej aplikacji. W większości przypadków korzyścią płynącą z używania szybszych narzędzi do prototypowania jest większa satysfakcja klienta i produkt, który z większym prawdopodobieństwem spełni preferencje, priorytety i wymagania klienta. Biorąc pod uwagę te zalety, wadą braku kodu wielokrotnego użytku jest często uznawane za dopuszczalne poświęcenie w szybkim prototypowaniu.
Wolniejszy proces rozwoju
Bezpośrednie zaangażowanie klienta w proces rozwoju może potencjalnie wprowadzić nowe potrzeby i funkcje, które będą wymagać dalszego kodowania. Chociaż może to poprawić zarówno doświadczenie klienta w zakresie rozwoju, jak i użyteczność końcowego produktu, każda nowa specyfikacja zwiększy całkowity czas potrzebny na ukończenie programowania. W przypadku wykrycia kilku nowych potrzeb w procesie szybkiego prototypowania, niewielkie opóźnienia spowodowane każdą z tych zmian mogą spowodować znaczne opóźnienie.
Punkt zatrzymania
Programiści, którzy mogą dodawać lub modyfikować funkcje w dowolnym momencie, ryzykują stworzenie interfejsu, który zawsze będą chcieli dodać. Możliwość integracji niezliczonych dodatkowych usprawnień może wydłużyć czas potrzebny na rozwinięcie produktu tak samo, jak zaangażowanie klienta może, jak wspomniano powyżej. Bez ścisłego punktu zatrzymania narzuconego przez harmonogramy, terminy lub limity budżetowe, projekt może pozostać w fazie rozwoju bez końca, a gotowy, nadający się do sprzedaży produkt może nigdy nie ujrzeć światła dziennego.