środa, 30 listopada 2011

Software requirements

Jakoś tak mam że jak ktoś mi napisze wymagania nowej funkcjonalności to staram się przy okazji zaimplementować wszystkie dodatkowe bajery które mogłyby być potrzebne/mogłbyby być ułatwieniem. Stawiam się w pozycji użytkownika. Czasem zmieniam inne rzeczy które razem z tą nową stały się niewygodne w użyciu/nielogiczne.

Do tego staram się dołączyć obsługę błędów tak, żeby w razie czego użytkownik zobaczył taki komunikat, że po pierwsze będzie wiedział co się dzieje, po drugie będzie miał co skopiować i ewentualnie wysłać.

Jeszcze, zwykle staram się przy implentowaniu nowej rzeczy przemyśleć architekturę całego programu, czy ma ona nadal sens w obliczu tych wymagań, i ewentualnie przebudować część.. jeśli trzeba to nawet wszystko przebudować. Zwykle na tym etapie się gubię i przez kilka dni kompletnie nie wiem już co gdzie jest, i mam ochotę po prostu zrobić "revert". Ale potem przychodzi poprawa i jak już skończę przebudowywać to często sobie zdaję sprawę że "można było prościej" i w parę godzin, z łatwością już, robię kolejną przebudowę, i jestem z siebie bardzo dumna..

..w wyniku tego implementowanie rzeczy którą możnaby zrobić na odwal w 5 minut zajmuje mi tydzień.

I tak tylko się zastanawiam, czy to jest dobre podejście czy nie. Wiem, że widziałam projekty które były robione z odwrotnym podejściem. I one były porażką.

Jeszcze taka myśl ostatnio, był kiedyś taki obrazek "jak opisał wymagania klient", "jak zrozumiał je analityk", "jak zaprogramował programista" i "czego naprawdę klient potrzebował". Otóż mimo że śmieszny jest ten rysunek to nie jest do końca trafny. Bo często to czego klient potrzebuje jest nierealne. Nielogiczne. Niemożliwe do spełnienia, przynajmniej w sposób w jaki on sobie to wyobraża. Sam nie widzi że jego wymagania są sprzeczne, bo sam do końca nie przemyślał czego chce, czego potrzebuje. Dlatego często jest ten problem ze zmienianiem wymagań. Fakt jest taki, że samo sprecyzowanie czego się chce, nawet niekoniecznie werbalizowanie tego, ale samo uświadomienie sobie tego, wymaga pracy. Czasu. Wysiłku. Ze strony klienta. A przecież to nie on ma pracować, on ma tylko płacić.

Fajnie by było pracować właśnie na tym froncie, między jednymi a drugimi. Nie wiem jak się tylko nazywa taka pozycja, może konsultant :) może analityk... W ogóle świetne jest dla mnie obserwowanie tych starć, między osobami co mniej wiedzą a więcej sobie wyobrażają, a tymi co więcej wiedzą ale są w stanie sobie mniej wyobrazić. Zabawne. Jak jedni nie rozumieją drugich, z jednej strony się denerwują, z drugiej zdają sobie sprawę że nie mają wyjścia i jakoś muszą się dogadać. User-centered design mi się przypomina. W każdym razie czasem jest naprawdę wesoło.

Brak komentarzy:

Prześlij komentarz