Dogfooding

Wielokrotnie w swoich artykułach zalecałem, aby wszelkiego rodzaju mechanizmy automatyzacji tworzyć według zasady “start small, grow big“. Gdy rozwijamy swoją aplikację albo skrypt, musimy je wciąż testować. Jednym z najlepszych sposobów na takie testowanie jest używanie stworzonego produktu we własnej infrastrukturze. Takie podejście nazywa się dogfooding i choć może się wydawać, że ma sporo wspólnego z pojęciem “testowania na produkcji“, do odnosi się do czegoś nieco innego.

Czym jest dogfooding?

Nazwa dogfooding wywodzi się z określenia “Eating your own dog food” i odnosi się do podejścia do tworzenia produktu w taki sposób, że organizacja, która go tworzy, jest jednocześnie jego użytkownikiem. Alternatywną nazwą takiego podejścia jest self-hosting

Dogfooding sprawdza się bardzo dobrze w procesie tworzenia języków programowania, systemów operacyjnych, aplikacji biurowych, czy środowisk IDE. Termin ten powstał prawdopodobnie w 1988 roku w firmie Microsoft przy pracach nad Microsoft LAN Manager. Tak przynajmniej twierdzi Wikipedia, choć w sieci można znaleźć inne jego źródła. Wiemy natomiast, że podejście takie stosowane było przy tworzeniu systemu operacyjnego Windows NT. W ten sposób powstał także język programowania Swift, rozwijany jest interfejs aplikacji Lyft i wielu innych produktów. Także bardzo lubiany przeze mnie pyCharm i inne środowiska programistyczne typu IDE od JetBrains tworzone są zgodnie z tą ideą. Także na polskim podwórku znajdziemy wiele przykładów. Wystarczy choćby spojrzeć na repozytorium Allegro na GitHub.

Testowanie w automatyzacji

Gdy tworzymy własne narzędzia automatyzacji, niezależnie od tego czy jest do duża aplikacja czy niewielki skrypt, także możemy zastosować dogfooding jako metodę rozwoju narzędzia. Nowe narzędzie jest rozwijane i testowane przez wybrany zespół. Następnie po wdrożeniu go w produkcyjnych systemach udostępniamy je innym jednostkom organizacyjnym firmy, zespołom ,albo jako publiczny darmowy lub komercyjny produkt poza nią. Proces ten może dotyczyć całości stworzonego mechanizmu lub tylko jego wybranej części funkcjonalniej. 

Dogfooding ma kilka zalet:

  • Produkt jest od razu testowany w środowisku produkcyjnym producenta, co pozwala wyłapać błędy i problemy znacznie wcześniej.
  • Pierwszy feedback o tym, które funkcjonalności należy zaimplementować, nie pochodzi od product managerów, lecz od samych użytkowników, którzy znajdują się w naszej organizacji.
  • Lepszy User Experience (UX), gdyż jak powyżej, pierwszy feedback mamy od użytkowników wewnątrz organizacji.
  • Lepszy support – zarówno dla użytkowników wewnętrznych jak i zewnętrznych.
  • W przypadku produktu komercyjnego można się pochwalić jego rzeczywistym zastosowaniem nie czekając na referencje klientów.
Wszystkie powyższe zalety pozwalają na zaoszczędzenie czasu i opóźnienia w projekcie poprzez odpowiednio wczesne wykrycie i usunięcie błędów i niedociągnięć.

Subscribe
Powiadom o
guest

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.

0 komentarzy
Inline Feedbacks
View all comments

ZdradziĆ Ci sekretY udanego projektu automatyzacji?

(link otwiera się w nowym oknie)