Poziom abstrakcji w zleceniach

0

Zauważyłem, że jest dużo firm, które wykonują aplikacje internetowe na zlecenie.

Te firmy są po to, żeby umożliwić posiadanie strony przez osobę, która nie umie programować.

Tylko chciałem zadać pytanie "na jakim poziomie abstrakcji" są ustalenia co do aplikacji między klientem a firmą.

Prosty przykład. Klient chce zlecić napisanie aplikacji rozwiązującej równania kwadratowe. Można wymyślić następujące poziomy. Poziom 1 jest to najbardziej abstrakcyjny, gdzie klient nawet nie zna zagadnienia, a ostatni poziom, to jest "kawa na ławę", czyli dokładne przedstawienie algorytmu obliczeń.

Poziom 1:

Program, który oblicza i wyświetla rozwiązanie równania Ax^2 + Bx + C = 0

Poziom 2:

Program, dla którego dane jest równanie kwadratowe, oblicza wyróżnik trójmianu kwadratowego, sprawdza, ile jest rozwiązań i wyświetla oba rozwiązania lub jedno rozwiązanie lub informację, że nie ma rozwiązań.

Poziom 3:

Program ma służyć do obliczania równania kwadratowego postaci Ax^2 + Bx + C = 0.
Użytkownik podaje wartości A, B i C, następnie oblicza się wartość D ze wzoru (B^2)-(4AC).
Jeżeli D < 0 to wyświetl informację, że nie ma rozwiązań
Jeżeli D = 0 to oblicz wartość -B/(2A) i wyświetl ją jako rozwiązanie
Jeżeli D > 0 to oblicz wartość (-B-aqrt(D))/(2
A) i wyświetl ją jako pierwsze rozwiązanie, potem oblicz wartość (-B+aqrt(D))/(2*A) i wyświetl ją jako drugie rozwiązanie

Weźmy przykład: http://pobierzpliki.pl/.
Poziom pierwszy to omówienie, że potrzebuję strony, która umożliwia ominięcie limitów na serwerach Rapidshare, Megaupload itd i o tym, jak strona ma wyglądać i działać jak korzysta z niej klient. A to, co trzeba zrobić, żeby ominąć limit, to firma programistyczna się tym zajmie, bo od tego jest.
Natomiast ostatni poziom, to jest wtedy, kiedy ja doskonale znam sposoby, żeby ominąć ograniczenia tych serwerów, przedstawiam swoją wiedzę firmie programistycznej, a cała ich robota to tylko przeniesienie projektu z papieru do edytora do skryptów.

Inny przykład:
Potrzebuję napisać program, w którym wprowadza się współrzędne gamutu i bieli monitora, a program wyświetli mi obszar kolorów, jakie ten monitor może wyświetlić oraz wyświetli najbardziej zbliżony kolor dla danego widma światła.
Nie ulega wątpliwości fakt, że żeby napisać taki program, trzeba posiadać wiedzę z zakresu teorii koloru, przestrzeni barw, gamutu, mieszania barw światła itd.
Poziom pierwszy to taki, że ja mówię, co program ma robić, a firma programistyczna jest od tego, żeby dowiedzieć się, jak to wszystko się liczy, jakie algorytmy i napisać program.
A ostatni poziom to taki, że to ja poczytam o tym wszystkim, dopiero, jak będę znać algorytmy, które są potrzebne w tym programie, to wtedy zwracam się do firmy programistycznej i podaję dokładnie, jak ma działać program.

Oczywiście, w każdym przykładzie jest wiele pośrednich poziomów.

Pytanie:
Czy firmy programistyczne z reguły chcą rozmawiać z klientem na pierwszym poziomie (klient mówi tylko, co potrzebuje, a resztą zajmuje się firma), czy na ostatnim poziomie (firma wymaga dokładnego opisu działania programu)? Czy jakiś poziom pośredni?

0

Nie wydaje mi się aby jakiekolwiek firmy mogły pozwolić sobie na niedomówienia.
Z tego co zaobserwowałem nawet studenci robią prototypy przed każdym projektem, aby później uniknąć nieporozumień, a za każdą późniejszą zmianę klient musi najzwyczajniej zapłacić.

0

Zasadniczo jest tak że klient ma być specjalistą w swojej dziedzinie, a my mamy być specjalistami w naszej.
Czyli: klient podaje wszystkie informacje dziedzinowe (wymagania funkcjonane) oraz szczegóły typu preferowany wygląd aplikacji (wymagania niefunkcjonalne), a firma informatyczna zajmuje się przerobieniem tego na program.

0

Shalom i to jest właśnie podstawowy błąd. Ja nie mam doświadczenia i dużo biadolić nie będę, ale polecam ten film:

Najlepiej jest wtedy kiedy oba światy (programiści vs klient) zdobywają wiedzę o dziedzinach, którymi się zajmują. Czyli klient o programowaniu tak, aby zrozumieć co ten programista mówi i co chce zrobić, natomiast programista musi zrozumieć dziedzinę klienta, aby wiedział czego on wymaga i żeby widział jak ten projekt ma wyglądać oczami klienta.

0
Carlos Spicy-Weener napisał(a)

Nie wydaje mi się aby jakiekolwiek firmy mogły pozwolić sobie na niedomówienia.

Carlos Spicy-Weener napisał(a)


cóż za Uniwersalny skecz:) Ciekawe czy znajdzie się chociaż jedna osoba na forum, która nie miała takiego klienta:)

Zapomniałeś już, że sam to wklejałeś na forum? :)

0

user stories

0

@polaczek17: to że programista musi ogarnąć dziedzinę problemu jest raczej dość oczywiste, bo inaczej nie ma szans zeby coś napisał i zrobił do tego sensowne testy. Ale to żeby klient miał douczać się informatyki to już lekka przesada. Raz, bo nie będzie mu się chciało. Dwa, bo kto lubi rozmawiać z klientem któremu się wydaje że jest znawcą tematu a tak na prawdę nie jest? ;)

0

Nie do końca chodzi o douczanie z dziedziny informatyki osoby, która tym się nie zajmuje, lecz o to by ta osoba zrozumiała co do niej programista mówi :)
Z cała pewnością mamy znajomych z innych dziedzin. No przynajmniej ja mam, ludzie KOMPLETNIE nie znających się na informatyce. Załóżmy, że taka osoba przychodzi i prosi o jakiś program. Wtedy może być taka sytuacja jak
kiedyś nawet ktoś tu pisał o przypadku, że dostał PW od osoby że ma zrobić:
"Proszę o zrobienie programu, który ma sprawdzać dokumentacje, parsować maile, parsować wydatki, sortować listę według ustalonego schematu, pokazać wszystkich pracowników i robić rozliczenia" itd po czym na końcu dodał "to wszystko powinno być w jednym przycisku więc nie zajmie Ci to wiele czasu" :)
Rozumiesz, chodzi o to by klient chociaż rozumiał podstawy. Że ilość kodu nie zależy od wielkości interfejsu, że to będzie z tym się łączyło itd. Nie chodzi o to by klient wiedział co to klasa, interfejs, dziedziczenie, ale o to by wiedział, że to będzie działać wtedy i tylko wtedy gdy...[i tu ciąg dalszy].

Takie myślenie faktycznie ułatwia sprawę. CO WIĘCEJ tak naprawdę jest to z korzyścią dla klienta bo tak jak pisał Carlos , jeśli my zrobimy coś źle to:

  • albo klient zleci dodanie funkcjonalności za co dodatkowo musi płacić
  • albo po pół roku nagle okaże się, że program źle działa i jest kicha.
  • albo trzeba budować wszystko od podstaw, co jest najgorsze dla wszystkich.
0
polaczek17 napisał(a)

(...)jeśli my zrobimy coś źle to (...)

Takie myślenie w końcu Cię zgubi, my zawsze robimy wszystko dobrze :) - jeżeli klientowi wydaje się, że coś źle działa to albo albo mu się wydaje, albo sam Coś popsuł ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1