Miałem luksus projektowania kilku baz danych o średniej złożoności, wszystkich używanych w firmach, z różnymi interfejsami, w tym stronami internetowymi, dostępem i C #.
Zwykle usiadłem i wcześniej opracowałem schemat bazy danych. To zawsze miało dla mnie jak najbardziej sens. Jednak nie było ani jednego przypadku, w którym nie skończyłem na wprowadzaniu zmian, dodawaniu nowych tabel lub utrzymywaniu aspektów, które mnie niepokoiły i były zasadniczo zbyt późno, aby je naprawić.
Nie sądzę, że lekarstwem jest najpierw napisanie kodu. I nie sądzę, że problemem są „niewystarczające wymagania biznesowe”, a przynajmniej nie takie, które można by w pełni rozwiązać. Użytkownicy nie wiedzą, czego potrzebują, a ja nie mam mocy, aby zmusić ich do myślenia, bycia mądrzejszym, bardziej świadomym lub lepiej odpowiadającym na moje pytania. Albo kłócą się, a ja każe mi zrobić coś w określony sposób.
Systemy, które buduję, zwykle znajdują się w nowych obszarach, w które nikt wcześniej nie wchodził. Nie mam wkładu ze strony organizacji, zasobów ani narzędzi do wykonania tego rodzaju pracy, którą mógłby opracować zespół programistów najlepszych projektantów, którzy otrzymywaliby wynagrodzenie jako zespół dziesięć razy więcej niż robię, aby budować różne rzeczy dwa razy więcej.
Jestem dobry w tym co robię. Ale jest tylko jedna osoba, która robi to w środowisku, które „nie rozwija”.
To powiedziawszy, coraz lepiej odkrywam reguły biznesowe. I widzę coś w rodzaju trzeciej opcji:
Przed zaprojektowaniem bazy danych i przed napisaniem dowolnego kodu narysuj przybliżone ekrany pokazujące działanie aplikacji. Muszą być narysowane ręcznie, aby nikt nie komentował czcionki, rozmiaru lub wymiarów - chcesz tylko funkcję.
Dzięki foliom i kawałkom papieru możesz wymieniać i wkładać, jedna osoba będzie komputerem, dwie będą użytkownikami nietechnicznymi, ekspertami w tej dziedzinie (dwie będą mówić na głos), a jedna osoba będzie facylitatorem, który robi notatki i rysuje informować użytkowników o ich procesach myślowych i nieporozumieniach. Użytkownicy „klikają” i przeciągają i piszą w polach, „komputer” aktualizuje ekran i każdy może zapoznać się z projektem. Dowiesz się rzeczy, których inaczej nie nauczyłbyś się, dopóki nie zajmiesz się procesem rozwoju.
Być może sam sobie zaprzeczam - może to odkrycie lepszych wymagań. Ale chodzi o to, aby najpierw zaprojektować aplikację, bez pisania kodu. Zacząłem robić to na małą skalę i działa! Pomimo problemów w moim środowisku, pomaga mi lepiej zaprojektować bazę danych od samego początku. Dowiaduję się, że kolumna musi przejść do nowej tabeli nadrzędnej, ponieważ istnieje wiele typów. Dowiaduję się, że lista robocza musi mieć stałe zlecenia, które nie pochodzą ze zintegrowanego systemu zamówień. Uczę się różnych rzeczy!
Moim zdaniem jest to ogromna wygrana.