Jak obsłużyć żądania „czy możesz dodać tylko kilka dodatkowych pól” od klientów?

12

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ć?

Earlz
źródło
Z wieloma narzekaniami i przekleństwami pod nosem>. <W końcu płacą mi ...
Rachel

Odpowiedzi:

16

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.

John Kraft
źródło
2
Cóż, płacą, ale naprawdę chcielibyśmy skupić się na większych żądaniach funkcji, które ostatecznie wykorzystają (i które mogą nam w przyszłości zapewnić więcej klientów), a nie na wielu drobnych drobnych prośbach, które po prostu zaśmiecają kod
Earlz
8
@Ellz - „Naprawdę chcielibyśmy się skupić na ...” - Jestem pewien, że tak nie jest w przypadku relacji z klientami. Te małe prośby (które mogą znacznie zwiększyć wartość dla klienta) to cena, jaką płacisz za rozpoczęcie pracy nad większymi rzeczami. Potrzebują dostawcy, który odpowiada na ich potrzeby, a nie kto wybiera i wybiera. Sposobem na poradzenie sobie z tym jest uczciwa wycena, ale zwrócenie uwagi na to, że łączenie ich w większe wersje jest opłacalne (mniej testów regresji itd.) I spróbuj uczynić je bardziej atrakcyjnym, aby traktować je w ten sposób, ale nie możesz grymasić.
Jon Hopkins,
2
Jeśli możesz obniżyć koszty o 50%, tracąc 5% klientów, to dobra okazja, idzie konwencjonalna mądrość. Czy te niestandardowe pola to naprawdę dużo potu za niewielką nagrodę?
9000
5
Programiści mają słabą tendencję do tego, aby nie chcieć robić tego, czego chce klient, ponieważ nie jest to fajne ani zabawne. My, programiści, stawiamy nasze własne szczęście prawie na całym świecie. Nie chodzi jednak o naszą zabawę i przyjemność. Chodzi o klienta. Klient jest tym, który płaci rachunki, lepiej uszczęśliw je. Jeśli zajmujesz się pisaniem dostosowywanego oprogramowania, jest to część pracy.
John Kraft
3
@Wayne M dziękuję za wykazanie postawy, o której mówiłem. Klienci mogą nie rozumieć technologii, ale zwykle nie są idiotami. Zwykle to programista nie rozumie potrzeby biznesowej. Co więcej, jeśli dodanie funkcji zagraża integralności aplikacji, jest to oznaką złego projektu aplikacji.
John Kraft
3

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.

Pedro
źródło
3

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.

  1. Zezwalaj klientowi na ustawianie etykiet w raportach i formularzach w celu wykorzystania istniejących pól.
  2. Dodaj pola ogólne (String12) do istniejących lub dodatkowych niestandardowych tabel pól.
  3. Mieć zdefiniowany przez użytkownika system pól, w którym wszystko to jest obsługiwane przez wprowadzanie danych i nie musi tworzyć nowych kolumn w tabelach (nie pamiętam, jak to się nazywa-pomoc).

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.

JeffO
źródło
3

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:

  • WIDGET_ID
  • NAZWA WIDŻETU
  • WIDGET_COST
  • itp.

Tabela WIDGETCUSTOM z kolumnami definiowanymi przez użytkownika:

  • WIDGET_ID
  • WIDGET_WEIGHT
  • DID_BOB_WORK_ON_WIDGET
  • itp.

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ą.

Scott Whitlock
źródło
Ta aplikacja jest zbyt złożona, aby dodać taką funkcjonalność bez ogromnego remontu. To rozwiązanie jest już dostępne (ale planowane w głównej aktualizacji wersji, która, mam nadzieję, pojawi się za rok)
Earlz
1
Jeśli poradzisz sobie z tym w ciągu roku, o co chodzi?
JeffO
@Jeff rok przy założeniu, że nie jesteśmy w międzyczasie zanurzeni w żądaniach funkcji. Rok zasadniczo nieprzerwanego rozwoju
Earlz
1

„Żą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!”

MattC
źródło
2
Pamiętaj, że za każdym problemem kryje się okazja do rozwiązania problemu, a następnie sprzedania go komuś;)
MattC
0

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.

The Muffin Man
źródło
0

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.

Buhb
źródło
0

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ć.

Morgan Herlocker
źródło
Metody Kanban działają tylko wtedy, gdy możesz przejść do Gemba: miejsca, w którym występuje problem. Bądź w przestrzeni fizycznej, rozmawiaj z ludźmi, którzy wykonują pracę, patrz, jak pokazują ci, jak to robią. Zobacz oczami, dotknij palcami. Wtedy i tylko wtedy spróbuj dowiedzieć się, jak to poprawić. I zapytaj ich, jak to poprawić.
Christopher Mahan
@Christopher - punkt zajęty, ale na pewno system można do pewnego stopnia zmodyfikować. Być może zapomnij o Kanbanie, ale spróbuj zachować ideę systemu ściągania. Bez względu na to, jak to działa konkretnie, użytkownik musi mieć sposób na ustalenie priorytetów zadań i wybranie, które z nich zostaną wykonane w środowisku, w którym rozwój jest ciągły. Deweloper nie ma sposobu, aby naprawdę wiedzieć, jakie funkcje należy wykonać samodzielnie.
Morgan Herlocker
1
Ironcode, masz rację. Pracuję w Bank of America, a nasz zespół pozwala jednostce biznesowej nadać priorytet żądaniom funkcji za pomocą priorytetu błędu bugzilli. Zgłaszają błędy, a następnie ustalają priorytety błędów. Mogą zmienić priorytet w dowolnym momencie, a my dostosowujemy. Tak, czasami wiąże się to z kosztami zmiany, ale okazało się, że jest bardziej skuteczny dla firmy. Pamiętaj, że prawdopodobnie nie zadziałałoby to w przypadku oryginalnego plakatu, ponieważ kierownictwo może mieć cele względem celów swoich klientów. (na marginesie, takie podejście do zarządzania wydaje się błędne)
Christopher Mahan
0

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.

Christopher Mahan
źródło
Zrobiliśmy to. Dlatego wiemy, kiedy żądania funkcji prawdopodobnie nie zostaną wykorzystane.
Earlz
Ach, cóż, w firmie klienta są walki polityczne. Masz przechlapane. Lub możesz je Steki i Ściągacze.
Christopher Mahan
0

Śledź żądania. W trakcie projektowania / rozwijania dużych funkcji wybierz kilka priorytetowych żądań do uwzględnienia w tej wersji.

IAbstract
źródło
0

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:

  • techniczną wykonalność / koszt funkcji
  • czy żądanie funkcji jest płatne? Jeśli jest to w umowie i / lub zapłacili za to, to wstaw
  • czy funkcja „ma sens”? To trochę sztuka, ale ogólnie, jeśli wystarczająca liczba klientów poprosi o funkcję, to zaimplementuj ją za darmo. To okazja, aby ulepszyć twój produkt i ułatwić sprzedaż następnemu klientowi
  • czy masz dostępne niewykorzystane, płatne cykle? Jeśli w ramach umów podasz zestaw miesięcznych godzin na konserwację / wsparcie (gorąco polecam, nawet jeśli liczba ta jest bardzo niska), a one się nie przyzwyczają, zacznij je rzucać przy wprowadzaniu tego rodzaju zmian
Blueberryfields
źródło
0

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.

Donal Fellows
źródło