Czy to normalne, że programiści sugerują pomysły na funkcje właścicielom produktów? [Zamknięte]

16

Niedawno zacząłem pracować jako programista, wcześniej jako administrator systemu.

Rozumiem, w jaki sposób zespół programistów korzystający z funkcji Agile jest taki, że komunikacja „tego, co musimy wdrożyć” odbywa się głównie w jednym kierunku, od właściciela produktu do programistów. Programiści mogą wyrazić swoje obawy właściciela produktu dotyczące długu technicznego, ale wymyślanie pomysłów na funkcje nie powinno być jednym z ich głównych obowiązków.

Firma, w której pracuję, ma inne zdanie. Dla nich programiści powinni nie tylko udać się do właścicieli produktów własnego zespołu, aby zasugerować pomysły na nowe funkcje, ale także do właścicieli innych zespołów, jeśli uważają, że mają coś wspólnego z produktem tego zespołu. Chodzi o to, że wszyscy jesteśmy jednym wielkim zespołem <nazwa firmy> i wszyscy programiści powinni wykorzystać swoją wiedzę specjalistyczną, aby udostępnić funkcje, które ich zdaniem będą przydatne.

Czy takie podejście jest „normalne” z powodu braku lepszego słowa? Czy jestem zbyt pasywny, czy powinienem przejąć inicjatywę i zacząć przekazywać pomysły właścicielom produktów? I odwrotnie, czy firma całkowicie się pomyliła i powinienem szukać pracy gdzie indziej?

louniks
źródło
15
Jasne, programiści często wiedzą wiele rzeczy, o których właściciel produktu nigdy nie słyszał. Rozwijaj tworzenie stron internetowych, są usługi, api, dowolna liczba bibliotek i wtyczek oraz elementy interfejsu użytkownika. Często współpracujemy z klientami, którzy nie mają większego pojęcia niż to, co chcą zrobić, ale nie wiedzą, jakie są typowe sposoby ich wdrażania lub jakie dodatkowe funkcje byłyby możliwe.
thorsten müller
1
Czy odczuwasz urazy lub negatywne konsekwencje braku sugerowania funkcji? Wygląda na to, że Twoja firma chce zachęcać do ćwiczeń i nie karać tych, którzy tego nie robią.
JeffO
Jest to normalny proces w dwóch firmach, w których pracowałem. Uświadomiłem sobie, że ludzie biznesu nie mają pojęcia, jak cenni są nas programiści w zakresie rozwiązań / umiejętności rozwiązywania problemów. Skaczący statek może napotkać ten sam problem. Sugerowanie nowych funkcji produktom, jakby to było rozwiązanie, nazywa się zarządzaniem menedżerami i działa dobrze. Jedynym problemem jest to, że nie dostajesz uznania za swoje pomysły, ale przynajmniej wdrażasz funkcje.
Jason
IMO to bardzo dobra i bardzo zdrowa rzecz. Właściciele produktów mogą być ekspertami w dziedzinie biznesu, ale prawdopodobnie nie znają każdej dostępnej nowej technologii lub podejścia technicznego. Ponadto programiści mogą mieć wgląd w system, który pochodzi z innej perspektywy bezpośredniej pracy z kodem. Na pewno chcesz pozostać w firmie, która przyjmuje pomysły od wszystkich, bez względu na rolę. Nie oznacza to, że właściciele nie mają pojęcia, to znaczy, że są otwarci na pomysły wszystkich.
Ken Liu

Odpowiedzi:

2

To zależy od tego, co rozumiesz przez pomysły na funkcje.

W grze planistycznej programiści nierzadko przekazują informacje na temat historii, która może zakończyć się iteracją. Jest to jednak bardzo różne od twórców tworzących własne historie.

W dojrzałych systemach programiści mogą zaproponować obejście znanego problemu, który mógłby przekształcić go w iterację.

Ulepszenia mogą być OK, np. Dodanie wykresu do raportu, ale dzwonki alarmowe zadzwoniłyby do mnie, gdyby deweloperzy wymyślili nowe historie w dobrej wierze. Gdyby była w tym prawdziwa wartość, zastanawiałbym się, dlaczego nie istniała za to niezaimplementowana historia lub dlaczego nigdy nie pojawiła się w retrospekcji.

Robbie Dee
źródło
1
Nie interpretuję filozofii mojej firmy jako proszenia programistów o wymyślanie historii i nie przypominam sobie, że tak się dzieje. Wydaje mi się, że chcą, gdy pomysł zostanie wyemitowany, a deweloper przejmie na własność jego wykonanie, to odpowiedzialność dewelopera za jego poparcie do końca.
louniks
1
Mówisz, że dzwonki alarmowe dzwonią, gdy deweloper myśli o pomyśle, o którym nie pomyślał właściciel produktu? Dlaczego miałoby to być takie złe?
Stefan Billiet
1
Rzucanie pomysłami jest w porządku - to nieodłączna część gry planistycznej. Gdyby to była nowa historia, zadałbym to pytanie. Historie dostarczają wartości dla klientów, a szczerze mówiąc programiści zwykle nie są najlepiej przygotowani do oceny (chyba że są ekspertami w dziedzinie). To, czy coś pojawi się w iteracji, zależy od wartości fabuły i wysiłku programisty w grze planistycznej. Zaangażowanie programistów w tworzenie opowieści może powodować potencjalny konflikt interesów. Nie oznacza to, że tak się nie stanie - wystarczy, że właściciel produktu będzie musiał ją poprowadzić, w przeciwnym razie jest to ogon machający psem.
Robbie Dee,
47

Powodem, dla którego wielu programistów jest „pasywnych”, jest to, że potrzeba dobrej wiedzy i doświadczenia w dziedzinie, zanim pojawią się dobre pomysły na produkty. Ale jeśli przyjdą, nie ma powodu, aby ich nie sugerować i nie popierać.

Należy pamiętać - programiści, właściciele produktów, sprzedawcy itp. Należą do tego samego zespołu, mając ten sam cel: zbudowanie udanego produktu. Pracuj w kierunku tego celu, jak tylko możesz.

Stefan Billiet
źródło
Myślę, że go przybiłeś - wylądowałem w zespole pracującym z technologiami, z którymi mam bardzo małe doświadczenie, dlatego trudno mi być proaktywnym. Musi istnieć okres nauki, podczas którego pozostanę pasywny. Potem, kiedy zacznę czuć się komfortowo z technologią, mogę zacząć być proaktywny.
louniks
1
@louniks nie, brakuje Ci sensu. Technologia nie ma znaczenia. Liczy się biznes. Jak transparentni są ludzie biznesu? Czy wiesz, jak firma zamierza zarabiać pieniądze? Czy wiesz, jak produkt, nad którym pracujesz, pasuje do innych produktów w firmie? Jeśli nie, to twój pracodawca jest wobec ciebie niesprawiedliwy. Nie możesz zaproponować funkcji, jeśli nie znasz biznesplanu.
RibaldEddie
3
@RibaldEddie Nie zgadzam się z ostatnią częścią. Każdy powinien mieć swobodę proponowania funkcji. Kierownictwo i właściciele produktów mogą nadal swobodnie określać, czy dana funkcja jest dostępna. Nie zapominaj o możliwości, że programista posiadający wystarczającą wiedzę na temat domeny i wiedzy technicznej może zaproponować ogromną, zarabiającą pieniądze funkcję, która całkowicie wykracza poza pierwotny biznesplan. Właściciel produktu może nigdy nie wymyślić tego samego pomysłu z powodu ograniczonej wiedzy technicznej.
Dan Lyons,
1
To brzmi jak niebezpieczna sytuacja: oznacza, że ​​ludzie biznesu, dla których pracujesz, nie wiedzą, co robią. TO ICH PRACA być ekspertami w tej dziedzinie. W przeciwnym razie dlaczego tam są? Poważnie. Jeśli programiści zapewniają taki wgląd, to równie dobrze mogą po prostu prowadzić firmę. Wszystko inne jest marnotrawstwem.
RibaldEddie
Nie zawsze potrzebujesz szczegółowej wiedzy na temat domeny, aby zasugerować ulepszenia techniczne ...
Robbie Dee
5

Mówiąc o programistach i właścicielach produktów, wydaje mi się, że nie masz żadnej pośredniej osoby odpowiedzialnej za funkcje w swojej organizacji.

Cóż, w mojej organizacji jestem tą osobą. Jestem inżynierem wymagań, tym, który nauczył się robić dobre specyfikacje i wybierać funkcje, które dają wysokiej jakości oprogramowanie z przyjaznym dla użytkownika projektem interakcji. (W innych organizacjach to osoba z UX dostaje tę samą pracę, możesz być bardziej zaznajomiony z tym terminem).

I mogę powiedzieć: uzyskanie dobrej specyfikacji jest trudne. Oczywiście programiści nie lubią tego robić. Jest to dla nich ciężar - mają oni zbudować oprogramowanie, a nie myśleć o grze sił wśród interesariuszy i modelach mentalnych leniwych użytkowników. Ale wiesz co? Jest to również ciężar dla właścicieli produktów. Nie wiedzą lepiej, jakie funkcje powinny zawierać ich oprogramowanie niż deweloperzy lub użytkownicy. Tworzenie realnej specyfikacji jest wyuczoną umiejętnością, a jeśli nigdy się jej nie nauczyłeś, nie możesz być w tym dobry. Pewnie, jest wielu programistów i właścicieli produktów, którzy mogą to zrobić, ponieważ musieli to zrobić w poprzednich projektach. Ale przeciętny właściciel produktu lub programista ma z tym problem, ponieważ oczywiście nie jest to ich zadaniem. Nie każdy, kto umie prowadzić samochód, może zaprojektować samochód; podobnie,

Czy potrafisz opracować oprogramowanie bez inżyniera wymagań? Oczywiście że możesz. Ale umieszczenie całej wagi specyfikacji na barkach właściciela produktu jest niesprawiedliwe i nie jest dobre dla wyniku projektu. Zwłaszcza, że ​​staje przed niezwykle trudnym zadaniem, bardzo pomocne jest uzyskanie wkładu i wsparcia od innych. Jeśli jesteś w takiej sytuacji, nie patrz na swojego biednego właściciela produktu i powiedz „powiedz mi, co mam dla ciebie zrobić, a ja cię stworzę”, on naprawdę nie wie, czego potrzebuje. Ale dyskusja z tobą pomoże mu wyartykułować swoje myśli i zbadać jego pomysły.

Gdy w strukturze projektu nie ma inżyniera wymagań, pojawia się inny problem: nie ma moderatora. Wszyscy programiści są po stronie technicznej, wszyscy właściciele produktów po stronie biznesowej. Kiedy zderzają się obie kultury, mogą powstać konflikty, a każda ze stron ocenia drugą głupią i nierozsądną (ponieważ używa własnego systemu wartości do oceny). Porozmawiaj więc z właścicielem produktu na temat możliwych funkcji, ale bądź uprzejmy i cierpliwy, nawet jeśli uważasz, że na to nie zasługuje; sukces projektu zależy od tego, jak dobrze się dogadacie, a czasem podjęcie decyzji suboptymalnej jest lepsze niż niepodjęcie żadnej decyzji z powodu konfliktu. Pomocne może być ustanowienie hierarchii i podanie jednemu z was ostatniego słowa, ponieważ zapobiega to zakleszczonym konfliktom. Jeśli dostanie ostatnie słowo, odłóż je na później, nawet jeśli uważasz, że to niesprawiedliwe.

O części „pasywnej”: jeśli nie masz pomysłów, nie próbuj wymyślić czegoś tylko po to, by pokazać aktywność. Jeśli właściciel produktu jest już niepewny i nie zna dobrych kryteriów oceny swoich lub twoich pomysłów, dziwne pomysły „po prostu coś mieć” jeszcze bardziej utrudnią i tak trudną sytuację. Wymyślanie dobrych pomysłów na funkcje nie jest magią, ale wymaga wiedzy. Jeśli nie nauczyłeś się tego z podręczników, prawdopodobnie będziesz potrzebować kilku lat doświadczenia programisty, szczególnie w projektach, w których jesteś narażony na użytkowników lub dane użytkowe generowane przez użytkowników (analizy, pomiary satysfakcji), zanim twój mózg sam uporządkuje wzorce dla siebie i zaczynasz zauważać: istnieje problem, który możemy rozwiązać. Wygląda na to, że użytkownikom brakuje czegoś na tej stronie, co to może być? Będziesz miał dobre pomysły do ​​podzielenia się.

Wniosek 1: W projektach bez inżyniera wymagań dobrze jest sugestie, gdy je masz. Rób to z wyczuciem i taktem - konieczne jest unikanie konfliktu, nawet jeśli oznacza to, że twój dobry pomysł zostanie ugryziony w zarodku.

A jeśli pracujesz w zespole z inżynierem wymagań?

Uwielbiam słyszeć pomysły od wszystkich! Tak, czasami pomysły deweloperów są okropne (kiedy chcą, aby interfejs użytkownika działał zgodnie z logiką programowania). Pomysły właścicieli produktów są również często okropne (gdy chcą słońca i księżyca w zawrotnym budżecie - och, a użytkownik powinien wprowadzić strony danych osobowych w najwyższej jakości danych, nie otrzymując nic w zamian). Ale moim zadaniem jest opracować specyfikację, która jest dobra dla wszystkich członków zespołu. I nawet jeśli twój pomysł nigdy nie zadziała, usłyszenie go uświadamia mi, że masz obawy. Być może wybrałeś niewłaściwe rozwiązanie do zasugerowania, ale to nie oznacza, że ​​twoje obawy są mniej aktualne. Jeśli to zauważyłeś, prawdopodobnie należy się nim zająć (lub muszę podać powód, dla którego nie jest to zagrożenie). Jeśli masz inżyniera wymagań odpowiedzialnego za specyfikację, nie wahaj się iść do nich z sugestiami. Jeśli cię nie wysłuchają, robią coś złego (zauważ, że „rozważ” nie oznacza „zaakceptuj”).

Inżynier wymagań musi spojrzeć na projekt z punktu widzenia każdego interesariusza osobno (a czasem jednocześnie). Jesteśmy tylko ludźmi i często zawodzimy. Jeśli jesteś tam, aby dostarczyć swój prawdziwy punkt widzenia, zamiast punktu widzenia, który naszym zdaniem masz, to twój wkład jest bardzo cenny.

Możesz być bardziej wolny w swoim zachowaniu tutaj. Moim zadaniem jest wykonywać taniec wrażliwości. Nie bądź otwarcie agresywny, to utrudnia mi pracę, ale potrzebujesz mniej samokontroli i świadomości kulturowej / komunikacyjnej, ponieważ mogę wziąć luz. Nie unosisz się również w sytuacji, gdy istnieją dwa sprzeczne pomysły i nikt nie może ocenić, co jest lepsze. Powinienem to wiedzieć, a jeśli to się nie uda, to moja głowa w pętli.

Wniosek 2: Jeśli w zespole jest inżynier wymagań, przejdź do niego z sugestiami dotyczącymi funkcji produktu. Tym razem nie potrzebujesz aksamitnych rękawiczek.

I na koniec, co jeśli nie ma inżyniera wymagań, właściciel produktu jest przytłoczony i walczy o pomysły, szef patrzy na ciebie, a ty nie masz pomysłów do zaoferowania?

Masz kilka opcji. Jak już wspomniałeś, jednym z nich jest wyjście. Nie wszystkie organizacje działają w ten sposób, a jeśli to środowisko nie jest dla Ciebie odpowiednie, znajdź lepsze. W dłuższej perspektywie będzie to dla ciebie dobre.

Możesz także poczekać i sprawdzić, czy coś się zmieni. Kolejny projekt może mieć bardziej doświadczonego właściciela produktu (lub takiego z większym przywództwem). Ale nie możesz utknąć na zawsze.

Trzecią opcją jest samodzielne nauczenie się inżynierii wymagań. Jest to umiejętność bardzo poszukiwana w dzisiejszych czasach. Nawet jeśli nigdy nie planujesz zajmować stanowisk, w których jesteś pełnoetatowym inżynierem wymagań, posiadanie tej umiejętności zwiększa twoją wartość jako programisty, ponieważ pozwala lepiej zrozumieć innych członków zespołu (i użytkowników) oraz sprawia, że proces rozwoju przebiega sprawniej. I nie musisz wchodzić w całą jego głębię. Podręcznik na poziomie podstawowym, który wyjaśnia zadania, przepływy pracy, modele mentalne i modele danych zorientowane na użytkownika, już pozwala dostrzec wiele możliwości ulepszeń w oprogramowaniu zaprojektowanym przez zespół biznesmenów i programistów. Don' sięgnij po najgrubsze książki przeznaczone jako odniesienie dla nauczycieli akademickich (jak ostatnie tłumaczenie Pohla na angielski) - są raczej listą wszystkich możliwych metod dla każdego małego kroku, bez wyjaśnienia, jak to zrobić. Wybierz coś zorientowanego na praktykę.

Jeśli spróbujesz i okaże się, że nie interesujesz się tym obszarem, nadal będzie dobrze. Nie zmuszaj się do robienia czegoś, czego nie lubisz. Ale prawdopodobnie powinieneś szukać pracy w organizacji o innej strukturze zespołu.

Wniosek 3: Zamiast czekać przez lata na intuicyjne zrozumienie, przeczytaj książkę lub dwie, a będziesz już miał dobre pomysły na dostarczenie

rumtscho
źródło
+1 To naprawdę wyczerpująca odpowiedź. „Wnioski” działają dobrze TL;DR.
James Khoury
4

Tak, to całkiem normalne.

W Google jest dobrze znany 80% pracy - 20% innowacyjny model, w którym ludzie 20% swojego czasu poświęcają na coś, co lubią. W ten sposób otrzymują nie tylko nowe funkcje, ale także zupełnie nowe produkty i usługi.

Czy jestem zbyt pasywny, czy powinienem przejąć inicjatywę i zacząć przekazywać pomysły właścicielom produktów?

To zależy od twojej osobowości. Pracowałem z naprawdę pasjonującymi ludźmi, ale także z ludźmi bez emocji, którzy zmieniają swoje 8 godzin i wracają do domu.

BЈовић
źródło
Wygląda na to, że w Google twórcy spędzają trochę czasu jako właściciel produktu.
JeffO
Pracownicy Google pracujący nad własnymi projektami to nie to samo, chyba że mówisz o innej inicjatywie?
Robbie Dee
@RobbieDee Tak, racja. Pracują nad swoimi projektami, ale Google sprzedaje usługi, które pochodzą z tych projektów.
BЈовић
Mam na myśli to, że takie projekty niekoniecznie mieszczą się w sferze istniejącego projektu zwinnego. Mogą być całkowicie autonomiczne.
Robbie Dee,