Bardzo często mamy prośby o dodanie funkcji dla pól, które chce tylko jeden klient. W najlepszym razie zaśmieca to kod aplikacji. Często, gdy przeglądamy ich bazę danych kilka miesięcy po dodaniu pól, widzimy, że tak naprawdę nie korzystają nawet z dodatkowych pól. Ponadto jest to dość stara aplikacja, więc dodanie jednego pola wymaga wielu zmian kodu, zmiany raportów i upewnienia się, że nie wpłynie to na innych klientów, którzy nie muszą widzieć tego pola.
Jak możemy się upewnić, że klient rzeczywiście potrzebuje tych żądań funkcji?
Jak grzecznie powiedzieć „tak naprawdę tego nie potrzebujesz”?
Obecnie zaczynamy pobierać opłaty za niektóre żądania funkcji. (Wcześniej prośby o funkcje były zazwyczaj bezpłatne) Czy jest coś jeszcze, co możemy zrobić?
Odpowiedzi:
Czy płacą za dodatkowe funkcje? Jeśli tak, to naprawdę nie twoja firma korzysta z nich, czy nie. Daj im za co płacą. Jeśli jednak tak nie jest, to do twojego kierownictwa należy decyzja, czy chcą oni dodawać funkcje bez dodatkowych dochodów.
źródło
Mamy podobną sytuację. Sposób, w jaki sobie radzimy, polega na budowaniu relacji opartej na zaufaniu, która pozwala nam powiedzieć „nie potrzebujesz tego”. To wymaga czasu, cierpliwości i trzeba być przygotowanym na dużo rozmów, lunchów i innych nudnych zadań. Te nudne spotkania opłacą się na dłuższą metę, podczas których możesz skupić się na tworzeniu naprawdę ważnych funkcji.
Rozmowa sprawi, że zobaczysz, czy to, o co pytają, jest naprawdę tak ważne.
źródło
Nie sądzę, żebyś mógł przejść do pytania „czy naprawdę tego potrzebujesz?” spory z klientami. Osobiście chciałbym zapytać: „W jaki sposób zwiększy to twoją firmę?” ale faktem jest, że jakiś menedżer z jakiegoś powodu chce to wyśledzić i są przyzwyczajeni. Jeśli nie chcesz tego robić, powiedz „nie” lub obciąż tak dużą sumę pieniędzy, aby zniechęcić do żądania.
Zacznij rozważać sposoby ułatwienia aplikacji obsługi większej liczby pól klientów.
Może się okazać, że istniejący klienci rozwijają twój system. Branża może się zmieniać, więc pojawiają się nowe wymagania.
Przykro nam, ale jeśli nie możesz zaoferować swoim klientom tego, czego chcą wyłącznie z przyczyn technicznych, a nie zysku, musisz przyspieszyć. Nie będzie trudno nowemu przybyszowi wejść na rynek z większą liczbą pól, więc nie pozwól, aby tak się stało.
źródło
Patrząc przez chwilę z drugiej strony okna, w czasie mojej ostatniej pracy byłem narażony na system ERP, który pozwalał użytkownikowi dodawać „niestandardowe” kolumny do dowolnej jednostki / tabeli. Z moich krótkich interakcji z tym wyglądało, jakby dynamicznie dodawali kolumny do drugiej tabeli z mapowaniem jeden do jednego. Na przykład:
Tabela WIDGET ze statycznymi kolumnami:
Tabela WIDGETCUSTOM z kolumnami definiowanymi przez użytkownika:
Kolumna WIDGET_ID może powiązać je ze sobą. Automatycznie pokazywał dodatkowe pola podczas edytowania widżetu i można je uwzględniać w raportach dynamicznych, a nawet wyszukiwać według nich. Było dość wydajne, ponieważ baza danych nadal mogła je śledzić i w razie potrzeby indeksować te kolumny itp.
Z punktu widzenia programowania widzę, jak by to utrzymało przy zdrowych zmysłach. Każdy klient może mieć własne kolumny niestandardowe, ale te kolumny niestandardowe nie kolidują z podstawową logiką.
źródło
„Żądania” funkcji to tylko żądania. Jeśli stawiają wymagania, musisz zdecydować, ile warto dla firmy „zaśmiecać” tym samym kodem. Jeśli stanie się to problemem endemicznym, możesz go powstrzymać, ale jeśli są gotowi zapłacić za to, o co prosisz lub coś w pobliżu, a to tylko kilka funkcji tu i tam, mówię idź z pieniędzmi.
Idąc dalej, jeśli jest to stały problem z twoim produktem, a wielu klientów szuka tego rodzaju dostosowań, być może nadszedł czas, aby przemyśleć te części aplikacji i uelastycznić je w taki sposób, aby klienci mogli to zrobić same w sobie, czy to raportowanie ad hoc, elastyczne gromadzenie danych itp. Postaraj się zmienić te irytacje w zaletę sprzedaży. „Nasz model danych giełdowych nie jest dla Ciebie wystarczająco dobry? Sprawdź nasze opcje dostosowywania! Możesz to zrobić sam!”
źródło
Powinieneś dokładnie sprecyzować, co zamierzasz zrobić we wspomnianej funkcji i poświęcić szacowany czas na jej zbudowanie. Jeśli klient chce dodatkowych pól, które są w porządku, rozlicz je za to. Mówię moim klientom, że jeśli chcesz dodać funkcje po ich zbudowaniu, to w porządku, ale w niektórych przypadkach będzie to kosztować nieco więcej.
Trudno mi zrozumieć, dlaczego obchodzi cię, czy go używają, czy nie. To proste, budujesz, co chcą i dostajesz za to zapłatę.
Bałagan w bazie kodu? Jeśli musisz zmienić kod podczas pracy w nowej funkcji, obciąż go za to.
źródło
Utwórz listę kilku funkcji, które chcesz dodać, w tym dodając „tylko kilka dodatkowych pól”. Pokaż listę swoim klientom i poproś ich o opinię na temat tych, którzy chcieliby najpierw. Wyjaśnij, że twoje zasoby są ograniczone i że nie możesz zrobić wszystkiego naraz. Skorzystaj z informacji zwrotnych, aby zdecydować, w jakim kierunku chcesz iść z aplikacją.
Jeśli klient nalega, aby kilka dodatkowych pól było tak ważnych i nadal decydujesz się ich nie dodawać, mam nadzieję, że nadal będzie widział korzyści z wprowadzanych funkcji.
źródło
Wygląda na to, że możesz skorzystać z jakiegoś systemu ściągania. Pozwól użytkownikowi wybrać, która funkcja zostanie zaimplementowana w następnej kolejności, ale ogranicz liczbę, która może być opracowywana w dowolnym momencie. Tablica Kanban jest do tego świetna. Może dać użytkownikowi prawo do procesu podziału (czyli mniejszej odpowiedzialności i stresu dla Ciebie). Zaufaj mi, jeśli użytkownik będzie zmuszony zdecydować, która funkcja zostanie następnie uruchomiona, wiedząc, że inne żądania zostaną odłożone na bok, zainwestuje dużo więcej w naprawdę decydowanie, co powinien mieć.
źródło
Myślę, że powinieneś poprosić swojego klienta, aby przeprowadził jednego lub więcej z was przez „dzień w biurze”, aby zobaczyć, jak naprawdę korzystają z oprogramowania ... Poczekaj ... Zatrudnij mnie za 250 USD / godzinę, a ja się dowiem. Proszę też, proszę, nie złocić. Niech to zadziała. Większość firm nie dba o to, aby wyglądało brzydko, gdy działa dobrze.
źródło
Śledź żądania. W trakcie projektowania / rozwijania dużych funkcji wybierz kilka priorytetowych żądań do uwzględnienia w tej wersji.
źródło
Zbuduj standardowy system negocjacji zapytań. Może coś opartego na systemie zgłaszania błędów lub żądania funkcji, na przykład fogbugz. Pozwól swoim klientom złożyć wniosek i nadaj mu priorytet na podstawie:
źródło
Jeśli klient ma całkowitą własność aplikacji, zrób to, o co prosi. Niech wysadzą swoje pieniądze; to jest ich.
Jeśli jednak nie chcesz, chcesz znaleźć rozwiązanie dla tych pól pomocniczych, które polega na przechowywaniu ich poza podstawowym modelem danych. Następnie możesz użyć widoku bazy danych, aby ponownie połączyć dodatkowe pola dla tego konkretnego klienta. (Istnieje kilka sposobów tworzenia magazynu pomocniczego, w zależności od charakteru przechowywanych danych; najprostszym jest po prostu tabela, która ma taki sam klucz podstawowy jak niektóre PK w głównej tabeli, ale jest to nieefektywne, gdy użycie pola jest bardzo rzadka. Jest to naprawdę problem, gdy chcą cech pola, które wymagają takich rzeczy jak indeksowanie).
Możesz również odłożyć prośby klientów, mówiąc, że nie masz wystarczających zasobów, aby je wdrożyć na tym etapie. To naprawdę pomaga, jeśli w tym momencie wskażesz mapę drogową, która mówi (twoje najlepsze oszacowanie na), kiedy będzie można wdrożyć to, co chcą tanio. I priorytetem powinno być wprowadzenie aplikacji w stan, w którym będzie można tanio obsługiwać funkcje, ponieważ ta meta-funkcja staje się podstawową funkcją sprzedaży głównej aplikacji.
źródło