sobota, 15 marca 2014

In-house made software vs. External vendor software


Miałam przyjemność pracować w wewnętrznym dziale IT, który dostarczał aplikacje wspierające działalność biznesową firmy (która nic z IT wspólnego nie miała). Obecnie mam przyjemność pracować w firmie, która jest dostawcą rozwiązań IT - więc końcowy klient aplikacji jest "na zewnątrz". Tak się zastanawiałam - czy są znaczące różnice w produkcji aplikacji w przypadku tych dwóch modeli?

Komunikacja
Po pierwsze, jeśli jesteś dostawcą - nie masz bezpośredniego kontaktu z klientem. Czasami IT nie ma kontaktu z klientem wcale (cała komunikacja jest kierowana przez określone proxy). Jeśli pracujesz jako wewnętrzny dostawca, to zawsze możesz złapać swój "biznes" na korytarzu, w kuchni tudzież w innym miejscu - i zadać pytania ;) To sprawia, że praca jest znacznie prostsza!

Elastyczność
Oczywiście elastyczność jest mocno związania z komunikacją. Filozofia agile pozwala na łatwe i szybkie dostosowanie planów do szybko zmieniającej się rzeczywistości. Czyli jeśli IT ma dobre stosunki z biznesem, to wszystko pięknie funkcjonuje. A co gdy komunikacja nie zachodzi wcale? (To pytanie pozostawiam jako retoryczne ;))
Agile nie jest lekarstwem na wszystkie bolączki. Jeśli klient zmienia zdanie ciągle, przykładowo: podczas pierwszej iteracji chciał czołg, podczas drugiej helikopter aż finalnie w trzeciej okazało się że chce łódź podwodną, wtedy produkt finalny będzie wyglądać jak mały (albo ogromny) potworek. Elastyczność jest ważna, ale powinna mieć swoje granice!

Odpowiedzialność
Jeśli pracuje się dla wewnętrznego klienta, to chce się mu umożliwić "zarabianie", bo przecież dzięki temu jest wstanie zapłacić za wykonaną pracę. Proste, nieprawdaż? Doprowadzenie własnego pracodawcy do bankructwa jest podcinaniem gałęzi na której się siedzi, więc nikt o zdrowych zmysłach tego nie chce. Jeśli jest się zewnętrznym dostawcą, to presja jest nawet większa - "firma-matka" zarabia na dostarczaniu aplikacji, więc jak jakość aplikacji jest niska, to nikt jej nie kupi. Jeśli natomiast wdrożenie aplikacji "zbije" firmę klienta, to nikt inny na rynku nie pokusi się o kupienie*.

*wyjątek stanowi SAP, który "zabił" jednego ze swoich klientów (FoxMeyer), a mimo to ma się świetnie. Więcej o FoxMeyer można poczytać >>tu<<

Cel
Wracając do pierwotnie zadanego pytania - oczywiście różnice istnieją, ale w obu przypadkach cel jest jeden. Stworzyć super oprogramowanie :) Programiści to pasjonaci, który lubią pisać porządny kod (tak, są geekami i zwykle są z tego dumni :)).


Źródło: http://geek-and-poke.com/geekandpoke/2014/3/4/hr-is-key