Jak pracujemy

Po pierwsze

Komunikacja

Spotkania

W zależności od wybranego modelu współpracy organizujemy wraz z klientem cykliczne spotkania, na których zbieramy wymagania i pokazujemy postępy naszej pracy. W metodologii zwinnej są one częstsze i zwykle w ciągu jednego tygodnia wspólnie uczestniczymy w:

5x

Daily

1x

Weekly wraz z demonstracją

1x

Retrospektywa i planowanie

2x

Zbieranie wymagań
Spotkania
Narzędzia pracy grupowej

Nasi klienci otrzymują pełny dostęp do naszego Azure DevOps, gdzie na bieżąco mogą sprawdzać postępy w projekcie. Używamy również Sharepoint wraz z Office Online, a także ownCloud na potrzeby udostępniania dokumentów i współpracy nad nimi.

Narzędzia pracy grupowej
Slack
#slack

Przeważnie używamy Slack-a jako głównej platformy komunikacyjnej. Od codziennych wiadomości, przez rozmowy głosowe po prezentacje. Dobrze uporządkowane kanały pozwalają zespołowi i klientowi skupić się na pracy i zadaniach bez przerywania ich niepotrzebną komunikacją.

Wiadomości
Rozmowy
Prezentacje
Współdzielenie
Następnie

Dokumentacja

Dokumentacja

Zaczynamy od podstawowych wymagań robiąc z nich luźne notatki. Następnie tworzymy projekt wymagań wysokiego i niskiego poziomu używając do tego Wiki wbudowanej w Azure DevOps. Kolejnym krokiem jest odwzorowanie wszystkich procesów biznesowych, algorytmów i przepływów za pomocą narzędzia draw.io. Makiety ramkowe tworzymy z pomocą Axure lub Sketch. Tego drugiego narzędzia używamy również do tworzenia makiet wizualnych w połączeniu z Adobe CC. Na koniec generujemy automatyczną dokumentację kodu na podstawie komentarzy i metadanych używając do tego Sandcastle.

Wymagania
Dokumentacja
Diagramy
Makiety ramkowe
Makiety
Dokumentacja kodu
Teraz

Backlog

Sprinty

Każdy sprint wymaga starannego zaplanowania, włączając w to pojemność zespołu, listę zadań, priorytetów, wartości biznesowych czy terminów doręczenia gotowej funkcjonalności. Tworzymy więc pełny plan pracy dla wszystkich członków zespołu z estymatami każdego z zadań. W ten sposób możemy być spokojni, że wszystko zostanie dostarczone na czas.

Pojemność zespołu
Planowanie
Retrospektywa
Priorytety
Sprinty
Tablice

Używamy tablic SCRUM w Azure DevOps do zarządzania zadaniami i śledzenia ich statusów. Wielopoziomowa hierarchia zadań jest odwzorowana za pomocą różnych tablic. To rozwiązanie ułatwia project managerom i project ownerom zrozumienie całego procesu developmentu i zarządzanie nim. Dzielimy tablice również za pomocą linii horyzontalnych odwzorowując tym samym obszary projektowe.

Tablice
Zawsze aktualne dane
Szczegółowe logi
Czas realizacji zgodny z estymatami
Duża efektywność w stosunku do kosztów
Monitorowanie czasu

Używamy narzędzia od 7pace - TimeTracker. To kompleksowe rozwiązanie do monitorowania czasu i dostarczania szczegółowych raportów. Dzięki temu każdy projekt monitorujemy z wielu perspektyw - możemy nie tylko przeglądać raporty poszczególnych członków zespołu, ale także sprawdzić ile czasu zajęły poszczególne etapy od projektowania po development i testy.

Monitorowanie czasu
Wreszcie

Development

Każdego dnia tworzymy tysiące linii kodu, który jest bezpieczny, efektywny i zoptymalizowany do potrzeb naszych klientów. Rozwijamy przy tym nasze wewnętrzne SDK dzięki któremu coraz więcej funkcjonalności dostarczamy wyciągając je z paczki obniżając tym samym koszty projektów. Zobacz jak dzieje się nasza magia.

Oto jest!

Wdrożenie

Zanim gotowe rozwiązanie trafi na serwery produkcyjne testujemy je w środowisku wewnętrznym. W każdym momencie mamy dostęp do w pełni działającej aplikacji, którą możemy testować i używać do celów demonstracyjnych. Możemy zaimportować do niego prawdziwe dane lub użyć zanonimizowanych danych testowych. Wdrożenie jest procesem w pełni automatycznych dzięki Azure Pipelines i Azure Artifacts, więc koszt każdego kolejnego wydania jest bliski zeru. Dzięki temu podejściu możemy przygotować się również do płynnego wdrożenia z zerową niedostępnością rozwiązania w środowisku produkcyjnym. Od 2019 roku wszystkie nasze rozwiązania wdrażamy z wykorzystaniem kontenerów zgodnych z Docker i Kubernetes.

Wdrożenie
Gdy kurz opadnie

Wsparcie

Utrzymanie gotowego rozwiązania w nienagannym stanie jest równie istotne, co sam proces jego projektowania. Testujemy nasze rozwiązania na wiele sposobów używając przy tym wielopoziomowych scenariuszy. Począwszy od testów jednostkowych kodu, przez testy automatyczne i manualne, integracyjne czy penetracyjne. Jednak nawet najlepiej przetestowane rozwiązanie wymaga wsparcia i utrzymania w środowisku produkcyjnym. Nie dlatego, że ma wady - dlatego, że Świat idzie do przodu, a środowisko ciągle się zmienia. Wypadki mają z kolei to do siebie, że zdarzają się w najmniej oczekiwanych momentach. Nie możemy ich zapobiec, ale możemy się na nie przygotować i w krytycznym momencie szybko rozwiązać problem.

Wsparcie
Monitorowanie

Monitorujemy w czasie rzeczywistym serwery, infrastrukturę, dostępność, opóźnienie, użytkowników. Tworzymy heat-mapy i raporty błędów. Wszystkie te dane mogą pomóc usprawnić nie tylko rozwiązanie, ale cały biznes i przede wszystkim - rozwiązać potencjalne problemy nawet przed ich wystąpieniem.

Dostępność
Wydajność
Błędy
Użytkownicy
Kopia zapasowa i przywracanie

Zaawansowane plany kopii zapasowej to absolutnie niezbędna rzecz w każdym projekcie. Od backupów baz danych, przez krytyczne dane użytkowników, aplikację, środowisko i ustawienia. Należy jednak pamiętać, że dobra kopia zapasowa to również szybkie przywracanie w razie awarii.

Dane
Rozwiązanie
Konfiguracja
Środowisko
Kopia zapasowa i przywracanie
Aktualizacje
Aktualizacje

Zawsze aktualne środowisko to bardzo ważna sprawa. Poprawki bezpieczeństwa mogą utrzymać nas z dala od problemów.

Poprawki bezpieczeństwa
Polityka haseł
Zabezpieczenie przed DDoS
Aktualizacje środowiska
Jesteś gotowy, żeby porozmawiać o swoim projekcie?
  • Czy znając wyłącznie potrzebę lub problem do zaadresowania przez oprogramowanie, jesteście w stanie pomóc?

    Naszym nadrzędnym celem jest nie tyle dostarczanie oprogramowania, co realne adresowanie potrzeb i rozwiązywanie problemów naszych klientów. Zanim zaczniemy wspólnie tworzyć wizję funkcjonalności oprogramowania przeprowadzimy głęboką analizę, którą ujawnimy potrzeby. Następnie ułożymy je według priorytetów na podstawie wartości biznesowych. Będziemy również szukali ścieżek do optymalizacji działania Twoich procesów biznesowych, nie tylko z perspektywy samego oprogramowania.

  • Obawiam się problemów przy tworzeniu oprogramowania wynikających z mojego braku merytorycznej wiedzy o tym procesie. Czy słusznie?

    Kluczową wartością we współpracy z klientami nieposiadającymi wiedzy technologicznej jest dla nas przybliżenie ich do technologii tak bardzo, jak to tylko możliwe. Dlatego poświęcamy dużo czasu i uwagi starannemu tłumaczeniu każdego etapu procesu powstawania oprogramowania. Służymy również doradztwem tak, aby podejmowane decyzje projektowe były w pełni świadome i podejmowane na podstawie zrozumiałych wartości.

  • Nie wiem jak zarządzać budżetem na stworzenie oprogramowania. Co robić?

    Wielu klientów boi się ujawnienia budżetu na wczesnej fazie projektu sądząc, że wpłynie to negatywnie na wycenę projektu. To najczęstszy błąd i przyczyna frustracji w procesie tworzenia oprogramowania. Realne zdefiniowanie budżetu pozwala spojrzeć na potrzeby funkcjonalne z wielu perspektyw. Posiadając świadomość ograniczonego budżetu możemy szukać rozwiązań bardziej ekonomicznych, które być może nie będą w pełni satysfakcjonujące, ale na tym etapie zaadresują potrzeby i będą wystarczające. Wraz ze wzrostem wartości biznesowej całego przedsięwzięcia obszary te mogą zostać rozwinięte, jednak nie musi się to wydarzyć od razu. Istnieje kilka sprawdzonych rozwiązań pozwalających na kontrolowany sposób zarządzania budżetem - przedstawimy je i pomożemy w tym zadaniu jak tylko się poznamy.

  • Czy rozwój oprogramowania w metodologii zwinnej nie spowoduje opóźnień, rozmycia się celów i zwiększenia kosztów?

    To jedna z najczęstszych obaw, jaka pojawia się na wczesnym etapie rozmów o realizacji nowego projektu. W skrócie: nie. Zwinne podejście do projektu nie wyklucza postawienia sobie jasnych celów i punktów na osi czasu, które mają zostać osiągnięte. Natomiast częste i małe iteracje projektowe pozwalają szybciej otrzymać pożądane funkcjonalności przy zmniejszonym budżecie. Połączenie lean developmentu z ciągłą walidacją wymagań i założeń idealnie weryfikuje wcześniejszą analizę potrzeb. De facto analiza postępuje wraz z rozwojem projektu i w sposób naturalny optymalizuje jego zakres ograniczając zbędne kroki.

  • Skąd mam wiedzieć, czy podołacie technologicznie pracując nad moim projektem?

    Jeżeli nasze portfolio nie jest wystarczającym argumentem chętnie przeprowadzimy prezentację możliwości technologicznych i porozmawiamy o wyzwaniach, które napotkaliśmy przez lata pracy nad innymi projektami i sposobu, w jaki znaleźliśmy rozwiązania problemów, które pozornie były nierozwiązywalne.

  • Jak powinna wyglądać nasza komunikacja w trakcie trwania projektu?

    W komunikacji z klientami stawiamy przede wszystkim na szczerość, otwartość i transparentność. Pozwala to uniknąć niedopowiedzeń przy jednoczesnym budowaniu trwałego, obustronnego zaufania.

  • W jaki sposób możemy zarządzać harmonogramem projektu, aby nie rozciągał się w czasie?

    Na każdy projekt patrzymy w dwóch skalach - mikro i makro. W skali makro określamy kamienie milowe dotyczące modułów i obszarów funkcjonalnych, które chcemy osiągnąć w konkretnej kolejności i punktach na osi czasu projektu. W skali mikro zarządzamy zadaniami w iteracjach nie dłuższych niż 2 tygodnie, przez co w pełni panujemy nad etapem realizacji i możemy dynamicznie reagować, na pojawiające się zagrożenia przez np. zwiększenie wewnętrznego zasobu.

  • Co, jeżeli moi użytkownicy nie będą chcieli korzystać ze stworzonego wspólnie oprogramowania, lub będą robili to niezgodnie z założeniami?

    Wdrożenie nie jest ostatnim etapem cyklu rozwoju oprogramowania w aveneo. Pomagamy w szkoleniach i treningach użytkowników. Jesteśmy do tego najlepszym partnerem, ponieważ znamy wszystkie założenia projektowe i pełną mechanikę dostarczonego rozwiązania. Da to gwarancję satysfakcji i zrozumienia rozwiązania, a przy okazji pozwoli zebrać wnioski od użytkowników dotyczące potencjalnych optymalizacji i nowych funkcjonalności.

  • W jaki sposób pogodzić wiele różnych ról użytkowników oprogramowania, aby nie powstawały wewnętrzne sprzeczności?

    W przypadku dużych projektów trudno jest zebrać wszystkich interesariuszy na każdym spotkaniu. Pojawiające się oczekiwania różnych działów, które wzajemnie się wykluczają, są rzeczą zupełnie naturalną. Naszą rolą jest zebrać wszystkie potrzeby i zaprojektować takie rozwiązanie, które uwzględni wszystkie procesy biznesowe, a te stojące w wzajemnej opozycji pogodzi w spójną i logiczną całość.

  • Mam poważne obawy, czy projekt ostatecznie się powiedzie. Jak sobie z tym radzić?

    To zupełnie normalne! Każda inwestycja niesie pewne ryzyko. W zależności od źródła obaw należy wdrożyć dodatkowy poziom zabezpieczeń. Z naszej strony postaramy się znaleźć takie narzędzia, które pozwolą pozbyć się stresu i zagwarantują sukces projektu. Przykładowo jeżeli obawy dotyczą zakresu funkcjonalnego sugerujemy wskazanie najbardziej wartościowych funkcjonalności i zbudowanie małego wycinka oprogramowania, a następnie walidację założeń i sprawdzenie w realnym środowisku, czy rozwiązanie jest satysfakcjonujące.