Jak przekonać programistów do korzystania z przełączników flagi funkcji?


20

Zakładając, że przełączanie flag funkcji jest dobrym pomysłem i powinno być zaimplementowane w kodzie pisanym przez programistów. Na przykład Etsy przysięgają na nich jako znaczną część ich kultury .

Jaki jest dobry sposób przekonania (i wymuszenia) programistów, aby zaczęli używać przełączników flagi funkcji?

Więcej informacji na temat przełączania flag funkcji wyjaśniono w P: Jak używać przełączników flag funkcji , P: Co to są przełączniki flag funkcji i bardzo obszernie w artykule Pete'a Hodgsona na ten temat na blogu Martina Fowlera .



1
Oj, dopiero teraz widzę nowy komentarz (i aktualizację). Po tym, jak właśnie opublikowałem nowe pytanie na ich temat. Może chcesz opublikować odpowiedź na moje nowe pytanie (gdzie masz dużo więcej miejsca na wyjaśnienie tych rzeczy)? Jeśli tak, upewnij się, że nie jest to odpowiedź tylko do linku (ufam, że wiesz, co to znaczy na stronach SE, prawda?).
Pierre.Vriens

Odpowiedzi:


18

Przełączniki funkcji są powszechną praktyką w programowaniu z dużą prędkością, ponieważ rozłączają rozwój od momentu wydania. Zespoły deweloperów mogą „miękko wydać” nową funkcję produkcyjną w stanie wyłączonym. Umożliwia to zwolnienie funkcji w dowolnym momencie. Jeśli funkcja jest zależna od innych prac lub przygotowań, nie musi czekać na wydanie głównej wersji.

Jeśli chodzi o „przekonanie” programistów do korzystania z nich, jest to ćwiczenie polegające na uzasadnieniu oferowanej przez nie wolności. Z mojego doświadczenia wynika, że ​​nie jest to trudna sprzedaż dla programistów. To kierownictwo niechętnie próbuje nowych rzeczy. Spróbuj tego:

  • Znajdź strukturę przełączania funkcji. Zarząd / firma może być bardziej podatna na wypróbowanie czegoś obsługiwanego przez wspólny system
  • Zacznij od małego. Wprowadź system przełączania na zasadzie próbnej dla funkcji, która zademonstruje jego użyteczność.
  • Zademonstruj zdolność przełącznika do wykonywania testów A / B. Włącz przełącznik dla podzbioru swojej farmy internetowej, a następnie zbierz dane dotyczące zachowania. Małe różnice w układzie strony mają ogromny wpływ na przychody z aplikacji detalicznych (np. Ebay, Amazon)

2
+1 za bit ramowy. Widziałem zbyt wielu ludzi, którzy włączają własne funkcje, i zawsze jest to nieprzyjemny, nieprzyjemny kod.
Jduv

Jeśli chodzi o bit frameworku, istnieje interesujący OSS firmy Intuit o nazwie Wasabi github.com/intuit/wasabi
Evgeny

Rekomendacja książki o przekonaniu innych programistów - Kierowanie zmianami technicznymi przez Terrence'a Ryana
Liath

8

W idealnym świecie myślę, że wprowadzasz nową wersję i zaskakujesz! Nic się nie zmienia. Wynika to z faktu, że wszystkie nowe funkcje znajdują się za przełącznikami, które wyłączają się po wyłączeniu.

Po wdrożeniu upewniasz się, że Twoja wdrożona usługa nadal działa, telefony nie dzwonią (chyba że Twoim celem jest dzwonienie na telefon) itp. Po powrocie do znanej stabilnej operacji zaczniesz włączać i weryfikować twoje nowo wdrożone funkcje.

Teraz twoja odpowiedź: jak chciałbyś pracować w zespole, w którym dyżurowanie jest praktycznie bez zastanowienia, a nasi użytkownicy kochają nas, ponieważ nasze witryny i usługi są stabilne i stabilne?

To zespół, nad którym chcę pracować.

Możesz przestać czytać tutaj, jeśli chcesz.

Pozostawienie wszystkiego za przełącznikiem funkcji wydaje się, że może prowadzić do wszędzie kodu spaghetti. Jeśli używasz IoC i możesz wybierać między vNow / vNext / vPrevious, sprowadza się to do utrzymania konfiguracji. Tak, więcej zgłoszeń, tak więcej klas (componentV1, componentV2, componentV3 itd.), Ale czy rzeczywiście masz bardziej stabilny system? W jaki sposób? vNastępny jest dziwny? Wróć z powrotem do vNow z wieżą kontrolną. Minął tydzień, a vNow ma subtelny błąd? To samo - równie łatwo wróć do vPrevious.

Bez kłopotów, bez zmartwień, bez straconego snu, bez stresu.

To nie jest fajka. Pracowałem tam kiedyś. Chciałbym móc to sprzedać obecnemu zespołowi.


4

Skuteczne środowisko programistyczne o wysokiej prędkości zwykle opiera się na dość ścisłym zautomatyzowanym systemie obejmującym weryfikacje jakości z wykrywaniem i odrzucaniem wadliwych zmian powodujących regresje.

Przełączniki funkcji oferują możliwość zatwierdzania nawet niezakończonych zmian w toku bez odrzucania za spowodowanie regresji w gałęzi integracji. Co stanowi bardzo dobrą zachętę do wprowadzenia funkcji przełącza się bardzo wcześnie w życiu funkcji.

Jedną z wad odstępstwa od prawdziwego CI i przenoszenia rozwoju funkcji w gałęziach funkcji jest brak takiej zachęty. Dodanie przełącznika funkcji później, podczas scalania gałęzi funkcji do gałęzi integracji jest zwykle trudniejsze, jak każda późniejsza integracja.


2

Deweloperzy (i zwykle menedżerowie ds. Rozwoju) zwykle szukają dwóch efektów związanych z frameworkiem: łatwości zarządzania i szybkości wdrażania. Chcesz wysyłać kod szybciej i łatwiej.

Dostarczyć dowody, że to podejście działa; spróbuj zbudować mały POC przy użyciu flag funkcji w porównaniu ze starym sposobem. Studia przypadków mają mniejsze znaczenie dla osób taktycznych (programiści / inżynierowie) niż osób strategicznych (kierownictwo średniego \ projektanta produktu).


0

Uzasadnienie przełączania funkcji nie jest czymś, co decydują deweloperzy. Jest to coś, na czym właściciele produktów powinni się przejmować. Programiści umożliwiają tę zmianę w najbardziej zrównoważony i bezpieczny sposób. Krytykuję to pytanie.


Byłem w organizacjach, w których deweloperzy są właścicielami produktu. Kilka razy widziałem, jak zarządzanie produktem zachowuje się jak właściciel produktu. Byłem w miejscach, gdzie wydaje się, że nikt nic nie posiada. Więc twoje stwierdzenie pasuje mniej więcej do jednej trzeciej mojego doświadczenia. Zachęcanie programistów do pisania rzeczy w sposób, który będzie działał lepiej w produkcji, wydaje mi się ogólnie dobrą rzeczą. Czy możesz zacytować jakieś władze na poparcie swojego poglądu?
pisklęta
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.