Krawcy, wirtuozi i kramarze

Jednocześnie nastąpiło nowe zjawisko: polaryzacja i specjalizacja świata inżynierii oprogramowania. Wraz z pojawieniem się technologii komponentów nastąpił podział na dwie wyraźne grupy, a rozwój Internetu doda do nich trzecią. Spróbujmy je nazwać i scharakteryzować.

Krawiec kraje

"Tak krawiec kraje, jak mu materii staje" - mówi znane przysłowie. Pierwsza, najliczniejsza grupa informatyków przypomina właśnie krawców. Nie wytwarzają oni materiału, igieł, nici ani guzików, ale potrafią dobrze skroić i uszyć garnitur dla klienta. Znaczna większość współczesnych informatyków zajmuje się taką samą działalnością jak krawcy - z gotowych elementów tworzą rozwiązania skrojone dla konkretnego klienta.

Schemat postępowania takiego informatycznego "krawca" jest następujący: najpierw dokładnie rozpoznaje potrzeby danego klienta, projektuje rozwiązanie podzielone na elementarne podsystemy czy wręcz czynności, potem z biblioteki zawierającej wiele tysięcy komponentów dobiera elementy rozwiązujące mały, dobrze zdefiniowany problem. Z takich elementów "szyje" aplikację na miarę, a następnie poddaje ją gruntownemu testowaniu.

Takiemu specjaliście - pracującemu na co dzień z klientem - przyda się przede wszystkim doświadczenie i eklektyczna wiedza biznesowo-informatyczna, która pozwoli mu zrozumieć funkcjonowanie organizacji i dobrać do niej właściwe środki informatyczne. "Krawcowi" potrzebne będą zdolności interpersonalne, dociekliwość i wytrwałość w uruchamianiu aplikacji. Wyposażenie informatyczne jego warsztatu pracy to bogata biblioteka komponentów oraz plany testów i narzędzia automatyzujące takie testy. Do analizy i projektowania zapewne zechce użyć narzędzi CASE, a szczególną uwagę poświęci prawidłowemu i kompletnemu udokumentowaniu przyjętego rozwiązania. Do programowania użyje zapewne języków skryptowych, pozwalających łączyć gotowe elementy, a także narzędzi do tworzenia internetowych i intranetowych interfejsów aplikacji. Raczej nie będzie mu potrzebna dogłębna znajomość niskopoziomowych języków programowania, technologii baz danych i innych, "twardych" obszarów w informatyce.

Wszystko to jednak bardzo przyda się drugiemu przedstawicielowi naszego spolaryzowanego świata inżynierii oprogramowania - wirtuozowi.

Skrzypce wirtuoza

Aby zrozumieć rolę wirtuoza, najlepiej cofnąć się o kilka lat. Głównym zmartwieniem osób promujących wówczas dobre praktyki w inżynierii oprogramowania było wdrożenie ponownego użycia (re-use). W myśl obowiązujących wówczas standardów nowa wersja produktu była pisana praktycznie od nowa, z niewielkim tylko udziałem kodu napisanego wcześniej. Nie dość, że prowadziło to do bezsensownego powielania wysiłku, to jeszcze nie pozwalało kontrolować jakości produktu softwareŐowego (błędy wykryte w poprzedniej wersji mogły być ponownie wprowadzone w nowej).

Szerokie wykorzystanie technologii obiektowej i spopularyzowanie komponentów przyczyniły się do zmiany tego podejścia. Dziś komponent to "czarna skrzynka", dostarczająca jednej, prostej, dobrze zdefiniowanej usługi. Za niewielką cenę - a najczęściej w cenie pakietu narzędziowego - programista z gatunku "krawiec" uzyskuje setki takich prostych komponentów, które wprawdzie odpowiadają za proste zadania, ale wykonują to szybko i bezawaryjnie.

"Wirtuozi" to właśnie twórcy takich komponentów. Pozornie tylko mają prostsze zadanie niż "krawcy", bo wydaje się, że łatwiej stworzyć fragment kodu o dobrze określonej odpowiedzialności niż pracowicie analizować wymagania klienta i dopasowywać aplikację do jego potrzeb. W praktyce wcale nie musi tak być. Komponent, nawet najprostszy, musi przede wszystkim zapewnić wydajne i bezawaryjne działanie w każdych warunkach. Produkcję takiego miniprogramu można porównać do produkcji śrubek. Taka sama śrubka może mocować tablicę ogłoszeniową przy mało uczęszczanej drodze (gdzie jej ewentualne wypadnięcie nie będzie miało większego znaczenia), jak też mocować silnik samolotu do skrzydła (gdzie nie ma miejsca na awarie).


TOP 200