Czy deweloper powinien argumentować przeciwko niepotrzebnym lub szkodliwym funkcjom?

32

Jakie jest dobre podejście deweloperów do omawiania nowych funkcji, a mianowicie funkcji niekrytycznych / wątpliwych?

Załóżmy, że rozwijasz język Java, a szef mówi: „Potrzebujemy wskaźników, aby programiści mogli bezpośrednio manipulować pamięcią obiektów!”

Czy deweloper powinien zlikwidować ten pomysł, ponieważ dodaje niewyobrażalną złożoność i luki w zabezpieczeniach, czy powinien zrobić to, o co prosił?

To może nie być dobry przykład, ale co z rzeczami, które są bardziej w szarym obszarze, takie jak dodawanie przycisków, które przerywają przepływ pracy lub są sprzeczne z wewnętrzną strukturą programu itp.?

Jaka jest optymalna dystrybucja „potrafi” a „nie może” dla zwykłego programisty?

EDYCJA: Pytanie nie dotyczy złego szefa: D

Byłem bardziej zainteresowany, w jaki sposób ludzie podchodzą do nowych problemów, które dodają zauważalną liczbę problemów, a jednocześnie mogą być mało przydatne.

Czy ogólne podejście powinno być następujące:

  1. tak, zrobimy to, zepsujmy złożoność
  2. może
  3. nie, ogólna przeróbka i implikacje nie uzasadniają zmiany

Jaka powinna być reakcja dobrego programisty?

Koder
źródło
1
„sama zasada architektury” - która to zasada? Ten przykład jest tak zły, że nie biorę go z twojego pytania.
Jeremy,
@Jeremy: Masz rację, nie jestem native speakerem, naprawiony.
Koder
1
Wszyscy powinni spierać się z funkcjami, które uważają za niepotrzebne lub szkodliwe, dopóki nie zostanie osiągnięty konsensus. Niezależnie od tego, czy jest to projektant UX, programista backendowy czy cokolwiek innego, nie ma to większego znaczenia. Projektowanie funkcji jest trudne. Wszyscy (włącznie z klientami) jesteśmy do tego przywiązani, ponieważ wszyscy mamy bardzo konkretne oczekiwania wobec oprogramowania.
back2dos

Odpowiedzi:

26

Najlepszą rzeczą jest spotkanie i przedstawienie plusów i minusów w grupie, a następnie omówienie najlepszego rozwiązania. Jeśli masz zespół, poproś go o uzgodnienie rozwiązania. Gdy zespół coś uzgodni, menedżerowie i „szefowie” zwykle wybierają rozwiązanie.

Jeśli twój szef nadal się nie zgadza, to zrobiłeś wszystko, co możesz: zjednoczyłeś swój zespół i menedżerów, omawiając wady i zalety, a mimo to szef wybrał potencjalnie gorsze rozwiązanie.

Kluczem do tego jest omawianie zalet i wad jako grupy. W ten sposób omawiasz najlepsze rozwiązanie ze swoim zespołem, a jednocześnie wskazujesz decyzję szefa (zanim on to zrobi) bez politycznej reakcji po tym, jak mówi się ludziom, dlaczego uważasz, że decyzja szefa był zły.

Jest to delikatna sytuacja związana z polityką pracy, ale można sobie z nią poradzić polubownie.

Jeff Welling
źródło
10
Po pierwsze, ustalenie zalet i wad nie pomoże, jeśli twój szef ma już silną opinię lub jest osobą, która po prostu lubi wytyczać kierunek, nie znając szczegółów. Być może będziesz musiał zająć pozycję i od czasu do czasu się o nią kłócić. Po drugie, jeśli odejdziesz i powiesz wszystkim, że masz lepszy pomysł, a potem okaże się, że masz rację, prawdopodobnie zwróci to uwagę twojego szefa. Nie oczekuj, że pomoże ci to w czasie przeglądu wyników, nawet jeśli będzie to niesprawiedliwe. Ta odpowiedź nie pasuje do sposobu działania prawdziwego świata.
PeterAllenWebb
4
Jeśli twój szef jest tak złośliwy, że nie może ci się sprzeciwić, że masz lepsze rozwiązanie, powinieneś napisać list rezygnacyjny z kserokopią dla swoich współpracowników, stwierdzającą, że rezygnujesz i dlaczego. Prawdą jest, że czasami słabi menedżerowie awansują, ale praca pod jednym, gdy masz zastępcę, tylko utrwala problem.
Jeff Welling,
2
@Jeff Welling Zgadzam się, że byłoby kiepsko, gdyby twój menedżer miał lepsze rozwiązanie przeciwko tobie z perspektywy czasu, ale nadal głupio jest rozpowszechniać, że powiedziałeś im X, ale zrobili Y zamiast tego, z implikacją, że są niekompetentni / głupi. Rozmowa powinna być między tobą a twoim przełożonym. Gdybym miał raport, który nieustannie próbował podważyć moje decyzje, mówiąc wszystkim: „Powiedziałem mu tak”, nie byłbym rozbawiony i nie sądzę, by to uczyniło mnie złym menedżerem.
PeterAllenWebb
1
@Jeff Welling I nie mogłem zgodzić się z tobą więcej na temat głosowania własnymi stopami. :) I zgadzam się z tą odpowiedzią bardziej w jej zredagowanej formie niż w oryginale, ale myślę, że teraz jest inna odpowiedź.
PeterAllenWebb
1
@PeterAllenWebb Rozumiem, co mówisz (dla tego, co warto, zredagowałem odpowiedź, co prawdopodobnie czyni dyskusję dyskusyjną), ale moim zdaniem, jeśli jako grupa, w tym twój szef, obejmujesz zalety i wady, a szef wybiera wyraźnie gorsze rozwiązanie , należy go wezwać. Rozumiem powszechną potrzebę, że menedżerowie muszą stłumić odmienne zdanie, ale wydaje mi się to przypadkiem menedżera, który nie chce przyznać, że się mylił - wada każdego menedżera IMO.
Jeff Welling,
14

Jeśli twój szef każe ci robić głupie zadania, powinieneś (uprzejmie) wyjaśnić, dlaczego to jest głupie.

Jeśli on lub ona nie rozumie, musisz robić głupie rzeczy. to jest to! On jest szefem. W takim przypadku możesz po prostu zrobić to, co on / ona mówi lub porozmawiać z szefem lub zmienić pracę.

Michał Šrajer
źródło
Z bossem nie ma problemu, chodzi o funkcje z ukrytą częścią góry lodowej.
Koder
3
@ Koder: W takim przypadku musisz poinformować kierownictwo, że analiza będzie wymagana, zanim będziesz mógł rozpocząć programowanie.
FrustratedWithFormsDesigner
1
Zgadzam się z FrustratedWithFormsDesigner. Ta prośba o czas analizy jest często uzasadniona i często wystarczy, aby funkcja została wypchnięta do tylnego palnika, chyba że jest to naprawdę konieczne.
PeterAllenWebb
9

Możesz powiedzieć szefowi, że chociaż jest to technicznie możliwe, będzie kosztować X czasu i pieniędzy wydanych na wysiłek poświęcony analizie, projektowaniu, przepisaniu istniejącego kodu, testowaniu, testowaniu regresji, ... A następnie zapytaj, czy funkcja jest tego warta . Czasami odpowiedź brzmi „tak! Musimy to mieć!”, Czasem odpowiedź brzmi „nie, chyba nie”.

Jeśli żądana funkcja narusza niektóre podstawowe zasady aplikacji (takie jak „Dodaj niebieski przycisk!” Do interfejsu użytkownika, który został określony i ma tylko czerwone przyciski zgodnie z życzeniem klienta), to myślę, że jest OK zapytać „Dlaczego?” i wspomnieć, że jest to sprzeczne z wcześniej ustalonym projektem.

W końcu prawie wszystko można „zrobić” (z technicznego punktu widzenia dodanie czerwonego przycisku do niebieskiego interfejsu użytkownika może nie być trudne ), chodzi raczej o to, co należy zrobić?


Aby odpowiedzieć na twoje edytowane pytanie, myślę, że odpowiedź powinna brzmieć „2”, być może, w oczekiwaniu na dalsze badanie i analizę.

Nie chcesz odpowiedzieć # 1 „Tak, bezwarunkowo”, ponieważ możesz utknąć w zobowiązaniu do czegoś, czego nie jesteś w stanie dostarczyć w określonym czasie.

Nie chcesz odpowiedzieć # 3 „Nie, to za dużo pracy”, ponieważ wtedy wygląda na to, że jesteś niechętny do współpracy i niepotrzebnie trudny.

FrustratedWithFormsDesigner
źródło
6

Z perspektywy programisty: NIGDY nie mów nikomu, kto płaci rachunki, że nie może mieć tego, czego chce. Zamiast tego możesz im powiedzieć, że nie mogą go mieć za tę cenę lub że nie mogą mieć dokładnie takiego, w jakim go pierwotnie wymyślili.

Do twojego „wskaźnika” przykład; .NET, środowisko kodu zarządzanego, ma wskaźniki. Są one niezbędne do zapewnienia dużej interoperacyjności z niezarządzanym kodem. Jednak „bezpieczne” korzystanie z nich jest ściśle regulowane, a jeśli jest używane w „niebezpiecznym” kodzie, kod ten wymaga wyższych uprawnień bezpieczeństwa w czasie wykonywania. Jeśli opracowujesz język zarządzany, który również wymaga bezpośredniego dostępu do pamięci za pośrednictwem wskaźników, możesz wymyślić podobny schemat zestawiania za kulisami, używając możliwych wskaźników tylko do odczytu, w których nie można automatycznie zestawiać, i zezwalając na „ true ”wskaźniki tylko w najbardziej zaufanych obszarach bazy kodu.

Do przykładów graficznego interfejsu użytkownika: jeśli wiesz, że nowa funkcja „przerwie” bieżący przepływ kodu, możesz go przetestować i rozwinąć w sposób bardziej niezawodny, aby cofnąć wszelkie wcześniejsze prace wykonywane przez przepływ pracy. Twoi klienci, a czasem nawet kierownik, zwykle nie mają pojęcia ani zainteresowania strukturą programu; jeśli coś, czego chcą, jest trudne ze względu na strukturę programu, to z definicji struktura jest zła, ponieważ nie pozwala ci robić tego, czego chce klient.

We wszystkich przypadkach ta nowa funkcja może zwiększyć zakres wymaganej pracy, wykraczając poza to, co myślał klient. To z kolei będzie wymagało albo przedłużenia harmonogramu, więcej pieniędzy i / lub ograniczenia innych planowanych prac.

Jeśli jednak znasz sposób na uzyskanie tego samego podstawowego wyniku w łatwiejszy lub bardziej logiczny sposób, możesz to zasugerować klientowi. Chociaż na pewno istnieją, na szczęście jeszcze nie widziałem klienta, który kategorycznie odmówił wysłuchania opinii programistów, szczególnie w środowisku Agile, w którym istnieje „właściciel produktu”, którego jedynym zadaniem jest komunikowanie się z programistami w zakresie różnych potrzebnych szczegółów, takich jak te.

KeithS
źródło
To bardzo dobra odpowiedź. Niestety widziałem, że zgoda na niektóre funkcje prowadzi do niebezpiecznego kodu - „brak sprawdzania błędów”, „nieobsługiwane przypadki narożne” itp. A gdy funkcja zostanie zaakceptowana, następnym krokiem jest ograniczenie sieci bezpieczeństwa, gdy nikt nie chce płacić za nie.
Koder
3
Całkowicie się nie zgadzam. Deweloper, który daje ludziom to, czego chcą, a nie to, czego potrzebują (lub ze szkodą dla nich, że otrzymują to, czego potrzebują), jest strasznym programistą.
David Schwartz
2
@David Schwartz - Istnieje drobna linia prób ustalenia, czego potrzebują i czego chcą. Nie możesz po prostu powiedzieć klientowi, że nie może czegoś mieć, ponieważ może to spowodować problem, który z pewnością można zakodować.
Ramhound,
10
99 razy na 100, zawsze istnieje POTRZEBA biznesowa za podanym WANT. Zawsze musisz znaleźć i spełnić POTRZEBĘ, nawet jeśli nie jest spełniona w dokładnej formie CHCĘ. I NIGDY nie możesz im powiedzieć wprost, że tego, czego CHCĄ, nie da się zrobić, ponieważ usłyszą, że nie możesz dać im tego, czego POTRZEBUJĄ. Właśnie za to płacą ci dobre pieniądze, a oni mogą bardzo łatwo odciąć cię i dać kod komuś, kto da im dokładnie to, czego CHCE, list i obwini za wszelkie problemy z tą funkcjonalnością .
KeithS,
2
@KeithS: Dokładnie! Dziękuję, że powiedziałeś to lepiej niż mogłem.
David Schwartz
5

Jeśli spędzasz wiele lat na programowaniu dla dużych aplikacji i po drodze zastanawiasz się nad tym krytycznie, rozwiniesz precyzyjnie dostrojone poczucie, kiedy dana funkcja spowoduje problemy, które przewyższą jej użyteczność. Innym słowem na ten temat jest mądrość i podobnie jak w przypadku innych rodzajów mądrości, wyzwaniem może być uczynienie tych, którzy nie widzą jej wartości.

Inne plakaty argumentowały, że powinieneś spróbować obliczyć koszt problemu, który zostanie wprowadzony przez problematyczną funkcję, i jest to dobry pomysł, gdy jest to możliwe, ale zwykle tak nie jest. Zazwyczaj możliwe jest jedynie oszacowanie natychmiastowych kosztów wdrożenia. Nawet to jest często trudne w przypadku większych funkcji. Jeśli chodzi o przyszłe koszty, jesteś w trudnym miejscu. Nie masz pewności, jakie inne funkcje będą wymagane ani jak długo produkt będzie konserwowany. Koszt zwykle jest znacznie wyższy niż można by poprzeć szacunkami opartymi na twardych faktach.

Im więcej kompetencji wykazałeś w przeszłości, tym więcej swobody będziesz musiał po prostu zadeklarować jako zły pomysł. To może nadejść tylko z czasem i udokumentowanym zapisem sukcesu. To powiedziawszy, zawsze powinieneś wyrazić gotowość spełnienia prośby, ponieważ jest to tym, czego chce twój klient. Powinieneś wyrazić zastrzeżenia w oparciu o swoje doświadczenie, a kiedy już to zrobisz, stanie się to problemem w 90% przypadków, ponieważ zaczniesz rozmowę, która doprowadzi do sedna problemu, a mianowicie: Dlaczego poprosili Cię o dodanie ta funkcja w pierwszej kolejności? W tym momencie możesz zaoferować alternatywy lub być może zgodzić się, że chociaż żądana funkcja spowoduje problemy, nadal jest konieczna.

Oczywiście możliwe jest również, że się mylisz. Czy inżynieria oprogramowania nie jest fajna?

PeterAllenWebb
źródło
3

Ponieważ pytanie jest dość niejasne, trochę uogólnię z moją odpowiedzią.

Zawsze pytaj ich, ale słuchaj ich uzasadnienia. Czasami ludzie po prostu zapominają o praktyczności danej funkcji lub o tym, jak długo zajmie programowanie. Z drugiej strony czasami uwikłani jesteśmy w mentalność programisty polegającą na byciu wydajnym / bez fanaberii / itp. I zapominamy, że to, co uważamy za nieistotne dla projektu, tak naprawdę nie jest dla klienta.

Jeśli mają dobry powód, daj im znać, ile czasu zajmie programowanie i wszystkie możliwe nierówności, które napotkasz podczas implementacji, i sprawdź, czy nadal będą chcieli to kontynuować. W przeciwnym razie podaj, dlaczego nie uważasz, że to dobry pomysł, i sprawdź, jaka jest ich reakcja. Wypłukać i powtórzyć.

Mateusz
źródło
2

Większość już powiedziano, ale w moim obecnym środowisku pracy chciałbym podkreślić jedną rzecz. Pracuję dla firmy, która jest kontrahentem dla innych firm, a nasze aplikacje są związane z procesami biznesowymi (w sporej wysokości napędzają sprzedaż i komunikację z klientem).

Procesy biznesowe wraz z towarzyszącymi im produktami mogą być (przynajmniej jeśli firma jest wystarczająco duża) bardzo złożone. W pewnym stopniu, jeśli modelujesz złożoną rzecz, wynikowa aplikacja będzie miała odpowiednią złożoność. Ponieważ większość ludzi biznesu widzi swoją część procesu, cała aplikacja / proces opiera się na większej złożoności niż to, co jest widoczne tylko dla jednego użytkownika.

Chodzi mi o to, że gdy pojawi się nowy wymóg biznesowy, będzie on działał dla ludzi biznesu, ponieważ nie podnosi to znacznie złożoności, ale może mieć większy wpływ na cały system. Moim zdaniem nie jest to powód do argumentowania przeciwko tej zmianie. To jest właściwy punkt, aby omówić wysiłki (i wydatki) z klientem. Prawdopodobnie nie powstrzyma to klienta przed zbudowaniem tej funkcji, ale z czasem wyczują aplikacje i dyskusje na temat „uuh, jesteś taki drogi!” będzie znacznie mniej wybredna.

Nie wiem, czy znajdujesz się w porównywalnej sytuacji, ale dowiedziałem się, że sytuacja interesariusza niekoniecznie wiąże się z tym samym wzrostem złożoności, jak w przypadku deweloperów i architektów systemu informatycznego. W tej sytuacji komunikacja pomaga obu stronom.

Sascha
źródło
2

Przepraszam, ale to pytanie brzmi jak drobna prośba o ojcowską radę. W takim przypadku dobry programista będzie musiał przyjąć te przykazania:

  • Pozostańcie sobie wierni. Jeśli twoje jelita czują się nieswojo z powodu funkcji, wypowiedz swoje obawy na głos. Są duże szanse, że zespół czeka właśnie na otwarcie.
  • Nie próbuj zastępować doświadczenia regułami doświadczonego. Dla Ciebie każda sytuacja jest inna, każda funkcja jest nowa. To plus, którego nie mają twoi seniorzy.
  • Tworzenie oprogramowania nie jest nauką ścisłą, nigdy nie będzie. Dlatego gromadzą mądrość, a nie zachowanie.
  • Zaakceptuj porażkę. Jeśli zespół zgodzi się inaczej, nie powtarzaj swoich obaw ad nauseam.
  • Myśl pozytywnie. Jeśli pomysł jest naprawdę błagający o „zestrzelenie go”, spróbuj znaleźć i nazwać go pozytywnymi aspektami, zanim wymienisz jego braki.
  • Dowiedz się, jak wchodzić w interakcje z ludźmi. My, programiści, często stawiamy wiedzę techniczną na kompetencje społeczne. Umiejętności techniczne osiągają szczyt we wczesnym okresie życia, ale kompetencje społeczne mogą rosnąć aż do przejścia na emeryturę.
aquaherd
źródło
2

Wierzę w odsuwanie złych wymagań. Ale wierzę również, że kiedy postarałeś się jak najlepiej wyjaśnić, dlaczego są źli i nadal ich chcą, to zgadzasz się i wykonujesz swoją pracę.

Na przykład miałem ludzi, którzy chcą wymagań, które wykluczają się z czegoś, co aplikacja już robi. Jeśli to zrobię, będzie to, w 100% gwarantowane, przerwa. Odsyłam więc wymaganie z powrotem i mówię, że to złamie tę inną regułę biznesową, którą już mamy i czy oni też chcą zmienić tę regułę? Często mała grupa, która spełnia określone wymagania, nie ma dostępu do większego obrazu tego, co może zrobić reszta aplikacji. Przez większość czasu, gdy odesłałem jedną z nich, klient zdał sobie sprawę, że zasada intialna była bardziej krytyczna i zdecydował, że pożądana zmiana nie była tego warta. Kiedy zdecydowali się dokonać zmiany, zrobili to po konsultacji z ludźmi, którzy wprowadzili początkowy wymóg.

Czasami samo zadawanie pytań wyjaśniających sprawi, że zauważy, że problem nie jest tak prosty, jak im się wydawało. Czasami chcesz zapytać, dlaczego czegoś chcą i dojść do prawdziwej potrzeby, która napędza zmianę. Kiedy to zrozumiesz, często łatwiej jest znaleźć alternatywne rozwiązanie, które działa jako programista i spełnia ich potrzeby. Jeśli potrafisz przedstawić to rozwiązanie pod kątem tego, w jaki sposób lepiej zaspokoi ich potrzebę niż pierwotna sugestia, znacznie zwiększyłeś swoje szanse na zaakceptowanie zmiany.

Czasami, gdy zmiana spowoduje spustoszenie na podstawowym poziomie w twoim projekcie, wystarczy podać im nowy szacunkowy czas potrzebny na zmianę, aby ją wyłączyć. Jeśli połączysz to z oceną ryzyka, która wskazuje, na jaką krytyczną funkcjonalność możesz wprowadzać nowe błędy, mówiąc im, że zajmie to 6 tygodni poświęconego wysiłku przez 3 osoby, nagle nie jest to już tak ważne.

Ale czasami mówisz im, że to nie jest dobry pomysł i dlaczego, a oni wciąż mówią: „Szkoda, że ​​tego potrzebujemy”. Niektóre wygrywasz, a niektóre tracisz, a czasem potrzeby biznesowe naprawdę się zmieniły i aplikacja musi to uwzględnić. Po sfinalizowaniu decyzji nie ma już czasu, aby zadawać pytania o to, co robisz, i czas na zrobienie tego. Jeśli udokumentowałeś swoje zastrzeżenia, to osobiście powinieneś być w dobrym miejscu, gdy przekroczy budżet i spowoduje nowe i bardziej ekscytujące błędy. I mogą być nawet bardziej skłonni cię wysłuchać następnym razem, gdy osiągniesz dobre wyniki w tego rodzaju sprawach.

Kluczem do wygrania wielu z tych dyskusji (nikt ich nie wygra) jest przede wszystkim zdobycie doświadczenia w zakresie wiedzy o tym, o czym mówisz. Następnie wyślij pisemny dokument z informacją o swoich obawach (wielu menedżerów jest ryzykownych, częściej nie chcą, aby ktoś miał dokument potwierdzający ich późniejszy błąd, więc zwracają większą uwagę na to, co napisałeś) aby upewnić się, że rozumieją wszystkie koszty (nie tylko godziny, ale także zagrożenia bezpieczeństwa, wprowadzanie nowych błędów, niedotrzymywanie terminów itp.) wprowadzenia zmiany. Zmiana nie jest darmowa i muszą to zrozumieć. Następnym kluczem jest zrobienie tego jak dorosły, a nie jak jęczące dziecko („ale nie chcę używać ... bo mi się nie podoba”). Zrób uzasadnienie biznesowe, że tego nie zrobisz, a dostaniesz znacznie więcej, odpychając złe wymagania.

HLGEM
źródło
1

Jeśli dobrze cię przeczytam, prawdziwe pytanie dotyczy nieznanej złożoności. Początkowo czytam twoje pytanie: „Widzę niezwykle prawdopodobne ryzyko nadmiernej złożoności, ale szef nie”. Ale mówisz, że szef nie jest problemem, więc rozumiem, że nie jesteś pewien, jakie ryzyko dodawania niedopuszczalnej złożoności są.

W takim przypadku zaleciłbym jakąś strategię ograniczania ryzyka. Obraz, który zastanawiasz się nad dodaniem usług WCF / sieciowych do interfejsu API, co może być niesamowite lub skomplikowane bez nagrody:

  • dodaj funkcję do oddziału. Jeśli to działa, połącz je. Jeśli zamieni się w gniazdo szczurów, zabij je.
  • odpal nowy jednostronicowy projekt i zrób dowód koncepcji. Jeśli nie możesz zrobić dowodu koncepcji w krótkim czasie, upuść go. Jeśli dowód koncepcji działa, powiększ go i zintegruj ze swoim
  • przeszukuj Internet w poszukiwaniu osób, które interesują się tą funkcją lub technologią. Tam, gdzie dzieje się wiele problemów, technologia może stanowić realne ryzyko nadmiernej złożoności. Java Beans i COM + są prawdopodobnie starymi, ale dobrymi przykładami funkcji, które naprawdę zwiększyły złożoność i mogły, ale nie muszą, dostarczyć korzyści po stronie równania
MatthewMartin
źródło
1

Argument nr Omów ewentualnie tak. Ale należy to traktować jako dodatek do specyfikacji i traktować priorytetowo z innymi funkcjami. Jeśli wiesz, że prośba doda nieuzasadnionego czasu i złożoności do wdrożenia, poinformuj o tym z góry. Nie jako sprzeciw wobec wykonania prośby, ale jako wyjaśnienie tego, co twoim zdaniem zajmie wdrożenie.

To bardzo zależy od żądania. Implementacja wskaźnika jest na tyle duża, że ​​ma wpływ na cały projekt, więc jego zalety należy rozważyć, jeśli zostanie podjęty wybór.

Wdrożenie przycisku, który przerywa przepływ. Może nie jest to taka wielka sprawa, jeśli formularz można ułożyć w taki sposób, że przycisk jest opcjonalny. Zrobiłem to w rzeczywistości. Dodałem przycisk, ale zebrałem też wystarczającą ilość informacji, zanim przycisk stał się opcjonalny. Użytkownicy, którzy spodziewali się, że tam będzie, korzystali z niego, a ci, którzy zdali sobie sprawę, że jest po prostu zbędny, nie korzystali.

Chodzi o równowagę i wiedzę, kiedy wybrać bitwy. Niektóre rzeczy i tak łatwiej jest po prostu wdrożyć niż zajmować się społecznymi aspektami ich nieuwzględnienia.

RJay75
źródło
1

Problem, jaki widzę, polega na tym, że używasz słowa argument.

Musisz poruszyć problemy projektowe i ich uzasadnienie, ale bądź ostrożny, ponieważ programiści mają tendencję do obrony przed zajmowanymi pozycjami i argumentują punkty tylko ze względu na kłótnie (czasami). Muszę powstrzymać się od kłótni - i nie zawsze mi się to udaje. Również z wiekiem stwierdzam, że się mylę częściej niż kiedyś - albo, co gorsza, nie rozpoznałem, jak często się myliłem :)

Jeśli masz jasno określone wymagania (język musi być bezpieczny, potrzebujemy wskaźników, aby uzyskać dostęp do starszych procedur), możesz przedstawić, w jaki sposób oba wymagania kolidują i zapytać, co jest ważniejsze. Gdy masz już wymagania i powody, możesz nawet znaleźć zupełnie inne rozwiązanie, które obsługuje oba wymagania (JNI - kinda).

Jeśli tak się nie stanie, być może jest to dobry moment na ich skodyfikowanie!

Bill K.
źródło
1
  1. Uświadom sobie, że nie wiesz wszystkiego i nie możesz zrobić wszystkiego.

  2. Jeśli jesteś pewien, że to zły pomysł, powiedz, co jest złe.

  3. Jeśli spróbują narzucić ci to, powiedz albo - Potrzebujesz więcej czasu na analizę, jeśli potrzebujesz więcej czasu lub powiedz, że nie znaleźliśmy dobrego rozwiązania tego problemu.

  4. Jeśli nadal nalegają na wdrożenie złego pomysłu, uzyskaj od nich potwierdzenie, że odradzałeś go, podając powody. Możesz nawet wysłać wiadomość e-mail z podsumowaniem dyskusji z kopią do swojego kierownika. To może zaoszczędzić ** później.

RHT
źródło
0

W idealnym scenariuszu miałbyś wiodącego programistę, który podejmuje ostateczne decyzje po stronie technicznej, oraz biznesowego lidera, który podejmuje ostateczne decyzje po stronie biznesowej. Pozwoliłoby to odpowiedzieć na dwa główne pytania:

1 co? Czego chce klient?

2) Jak? Jak to osiągnąć z perspektywy technologii.

Klient chce ostatecznego decydenta, ponieważ to oni płacą rachunki

koder
źródło
0

Jako programista nie powinieneś przejmować się, które wymagania należy wdrożyć.

Powinieneś jednak wyjaśnić, czy coś jest nierealne i czy istnieją lepsze sposoby.

BЈовић
źródło
Właśnie takim deweloperem byłem (który „nie powinien tak naprawdę obchodzić”) w mojej poprzedniej pracy. Myślę, że możesz zrobić znacznie lepiej, jeśli naprawdę troszczysz się o projekt, w którym to przypadku nie pozwolisz, aby stało się z nim coś złego tylko dlatego, że kierownik projektu sam nie jest programistą.
Attila O.
@Attila Źle zrozumiałeś. „Nie
zajmowanie
0

Czasami jest to w rzeczywistości żądanie klienta (pochodzące z wewnętrznej polityki klienta). Wtedy jest to beznadziejne i musi zostać wykonane (ale kierownictwo powinno również rozważyć, czy kontynuować taki projekt, czy też powinny renegocjować cenę).

użytkownik470365
źródło
0

Jest to dla mnie prawie codzienne zadanie i tak naprawdę się cieszę.

Jeśli masz zamiar wydać opinię na temat tego, czy określone wymaganie powinno być częścią wniosku, osoby nietechniczne będą oczekiwać, że uzupełnisz swoją wiedzę techniczną (np. „Użycie wskaźników spowodowałoby niestabilność aplikacji” lub „użycie parametr GET dla X jest zagrożeniem bezpieczeństwa ”). Pracownicy techniczni również doceniliby Twoją opinię na temat określonych zalet lub wad, o których być może nie pomyśleli.

Oczywiście jest ciężko, gdy wszyscy chcą funkcji X, a ty w końcu mówisz „to może nie być dobre”, ale ostatecznie wszyscy starają się stworzyć bezpieczną, solidną i stabilną aplikację (łatwą w utrzymaniu, elastyczną itp.) ) i każdy głos powinien się liczyć.

Odpowiadając na twoje pytanie, nie jest to zadanie programisty (czyli programowanie), ale jest to „dodatkowe” narzędzie, które zapewnia jakość i pracę zespołową.

Alfa
źródło
0

Jeśli jesteś w stanie zrozumieć wady robienia tego (złożoność, brak użyteczności itp.), To w najlepszym interesie wszystkich leży wyjaśnienie tego najlepiej, jak potrafisz. Często osoby niebędące programistami nie rozumieją problemów związanych z dodawaniem nowych funkcji. Jest to dla nich łatwe, ponieważ nie muszą nic robić ani nawet o tym myśleć.

Jeśli jednak moce decydują o dodaniu nowej funkcji, powinieneś wykonać najlepszą możliwą pracę. To wyzwanie.

A jeśli nowa funkcja jest zbyt głupia lub środowisko pracy jest zbyt kiepskie, nadszedł czas, aby znaleźć inną pracę.

B Seven
źródło