Trochę tła - jesteśmy małym zespołem (z 5) programistów RAD odpowiedzialnych za wewnętrzne tworzenie oprogramowania w dużej firmie niezwiązanej z oprogramowaniem. „Oprogramowanie wewnętrzne” różni się od aplikacji komputerowej .NET używającej serwera MSSQL jako zaplecza skryptów Python działających w tle do dokumentów i szablonów MS Word - zoo technologii.
Cały zespół składa się z wszechstronnych osób, które są w stanie uzyskać wymagania od użytkowników, kodować je, testować i wdrażać w środowisku produkcyjnym. Gdy oprogramowanie jest w produkcji, opiekuje się nim inny zespół, ale zazwyczaj łatwo jest nam interweniować, jeśli coś pójdzie nie tak.
Jak dotąd wszystko brzmi dobrze, ale jest problem - będąc zespołem RAD musimy często wydawać i nie ma dnia bez wydania nowych wersji jednej lub dwóch aplikacji (lub może to być skrypt, zaktualizowany dokument tekstowy , Aplikacja konsolowa C ++ itp.) Do produkcji. Przeprowadzamy testy programistyczne, a także angażujemy użytkowników końcowych, pozwalając im uruchamiać oprogramowanie w środowisku UAT ...
... ale błędy i tak wkradają się do produkcji. Użytkownicy rozumieją, że te błędy i okazjonalna niestabilność to cena, którą płacą za szybkie uzyskanie tego, czego chcą, ale jednocześnie skłoniło nas to do myślenia - być może moglibyśmy ulepszyć nasz rozwój lub praktyki wydawnicze w celu poprawy stabilności oprogramowanie i zmniejsz liczbę błędów, które wprowadzamy, dodając nową funkcjonalność.
Dobrze, że tak naprawdę nie mamy zbyt wiele procesów, więc powinno być łatwo zacząć się poprawiać, co złe - będąc małym zespołem RAD, tak naprawdę nie mamy zbyt wiele czasu i zasobów do wdrożenia coś dużego, ale zastanawialiśmy się nad następującymi inicjatywami i chętnie przyjmiemy wszelkie opinie, porady, wskazówki i sugestie.
Obecnie niektóre aplikacje są wypuszczane na produkcję bezpośrednio po testach programistycznych, omijając testy akceptacyjne użytkowników. Praktykę tę należy przerwać, a nawet niewielka zmiana musi zostać przetestowana przez użytkownika końcowego. Każda aplikacja będzie miała dedykowany beta-tester wybrany spośród użytkowników końcowych. Dopiero po przetestowaniu wersji beta nowa wersja jest promowana ze środowiska testowego do produkcyjnego.
Nie przeprowadzamy recenzji kodu - ale zaczniemy robić recenzje kodu, zanim jedno z nas sprawdzi zestaw zmian. Myślałem również o „recenzji wdrożenia” - w zasadzie jeden z programistów musi usiąść obok drugiego, obserwując, jak wykonuje / wdraża oprogramowanie (kopiowanie plików binarnych, aktualizowanie konfiguracji, dodawanie nowej tabeli do bazy danych itp.) - zwykle tylko zajmuje 5–10 minut, więc nie zajmie dużo czasu „przeglądu wdrożenia”.
Jak zminimalizować czas wycofywania, gdy udowodniono, że nowe wydanie jest na tyle błędne, że można je wycofać z produkcji i zastąpić dobrą poprzednią wersją. Przechowujemy historię wszystkich wydań (jako pliki binarne), aby ułatwić powrót o jedną wersję wstecz - i chociaż jest to szybkie „nadpisywanie nowo wydanych plików binarnych poprzednimi wersjami”, nadal jest to proces ręczny, który jest podatny na błędy i czasami wymaga „co, jeśli wycofanie zakończy się niepowodzeniem i sprawi, że system nie będzie nadawał się do użytku zamiast buggy”.
Właśnie w tym momencie skończyły się nasze pomysły i chcielibyśmy poznać Twoją opinię na ich temat. Jeśli podzielisz się kilkoma prostymi poradami dotyczącymi ulepszenia wersji / procesu tworzenia - to byłoby niesamowite.