Obecnie głównym wyzwaniem dla programistów jest bycie na bieżąco ze zmianami na rynku technologii, który jest bardzo dynamiczny. Nowości, które początkowo wydają się jedynie ciekawostkami, często stają się poważnymi konkurentami wobec sprawdzonych i znanych produktów. Okazuje się, że nowe rozwiązania mogą być lepsze i znacznie tańsze. Dzięki dobrej znajomości rynku zespoły projektowe wraz z programistami mogą zaprojektować i stworzyć systemy najlepiej dopasowane do potrzeb biznesu, ale też najbardziej korzystne finansowo.
Nowinki technologiczne wiążą się z koniecznością stałego dokształcania i podnoszenia kwalifikacji, zdobywania nowych umiejętności i certyfikatów. Praca programisty wymaga znajomości gotowych produktów, takich jak serwery baz danych, serwery aplikacyjne, portale, silniki procesów, system obiegu dokumentów. W tym obszarze programiści certyfikują się w zakresie produktów oferowanych przez największych na świecie dostawców technologii (np. Microsoft, Oracle, IBM czy JBoss).
Rozwój technologiczny bezpośrednio dotyczy takich czynników jak bezpieczeństwo informacji, ergonomia systemów czy ich skalowalność. W tym kontekście każda implementacja nowych rozwiązań zwiększa ryzyko wystąpienia problemów. Stąd wiele firm i dostawców decyduje się na technologie, które gwarantują jak największe bezpieczeństwo danych. Nie zmienia to jednak faktu, że dostawca powinien pomóc dokonać wyboru prezentując także korzyści w obszarach ergonomii, wydajności i skalowalności przy użyciu najnowszych rozwiązań.
Klienci chcą mieć pewność, że otrzymają od dostawcy stabilne rozwiązanie, stworzone w technologii, która nie zostanie wycofana czy wyparta z rynku w ciągu najbliższych kilku lat. W wielu przypadkach w ten aspekt bezpieczeństwa wpisuje się możliwość rozwoju systemu, dostępność nowych wersji, otwartość czy łatwość dokonania migracji. Jeżeli programiści nie są na bieżąco z najnowszymi technologiami, to po pierwsze ich klienci będą potencjalnie tracić korzyści wynikającej z wdrażania tańszych i lepszych rozwiązań, po drugie zaś, w dłuższej perspektywie dla programistów może to oznaczać utratę klientów i zleceń.
Języki programowania
Jednym z zagadnień, które muszą śledzić programiści, są języki programowania. Języki podstawowe wykorzystywane w tworzeniu rozwiązań stale się rozwijają. Opanowanie ich wszystkich jest praktycznie niemożliwe, dlatego programiści specjalizują się w jednym bądź kilku językach. Stąd w przypadku tworzenia produktu lepiej bazować na jednym języku.
Dla klientów ważne są możliwości, jakie dają nowe technologie. Z punktu widzenia zespołu projektowego przed przystąpieniem do pracy najważniejszy będzie wybór odpowiedniej technologii. Twórcy rozwiązania muszą mieć stuprocentową pewność, że wybrany język, technologia czy platforma, pozwolą stworzyć i wdrożyć wymagane przez klienta funkcjonalności. Jednocześnie wybór ten należy wpisać w trendy rozwoju rynku i branży, w jakiej działa klient. W praktyce producenci wykorzystują nowe – i tym samym nie dość dobrze sprawdzone – języki i platformy tylko w prototypach i małych rozwiązaniach.
Zmiany technologiczne
Dla programistów bardzo istotne są zmiany związane z wzorcami architektonicznymi i projektowymi, co może rzucać nowe światło na sposoby tworzenia oprogramowania. Tego rodzaju zmiany pozwalają lub wręcz zmuszają do przemodelowania myślenia o tym, w jaki sposób można spełnić oczekiwania klienta. Do takich zmian technologicznych należały m.in. MOM (Message-oriented middleware), SOA (Service-oriented architecture), rozwój narzędzi workflow/BPM, dBPM (dynamic BPM), REST (Representational state transfer), a w ostatnim czasie rozwój modelu chmury (Cloud computing) wraz z coraz powszechniejszym udostępnianiem w sieci usług w modelu SaaS (a także IaaS i PaaS). Warto zwrócić uwagę, że tego rodzaju zmiany są trudne do przyjęcia, ponieważ wymagają znacznego zaangażowania po stronie klienta i jego współpracy z dostawcą oprogramowania.
Chmura
Jednym z największych obecnie wyzwań jest cloud computing. To typowa innowacja, która zmienia dotychczasową filozofię dostarczania oprogramowania klientom. Jej konsekwencją jest przekierowanie na inne tory myślenia o rozwiązaniach IT zarówno po stronie dostawców, jaki i użytkowników.
Wsparcie społeczności
W przypadku wielu wdrożeń i projektów tworzenia rozwiązań dedykowanych ważnym czynnikiem sukcesu jest możliwość współpracy twórców oprogramowania z jego użytkownikami. Rola klienta nie powinna sprowadzać się wyłącznie do złożenia zamówienia. Ważne jest środowisko tworzenia i budowania aplikacji, dobre IDE, wsparcie do debugowania, wsparcie do wykonywania testów jednostkowych, narzędzia SCM (Software configuration management). Ważna jest też społeczność – otoczenie – zgromadzona wokół danej technologii. Na nie składają się firmy i ludzie, którzy dostarczają bibliotek, dzielą się doświadczeniami, a nawet aplikacjami wykorzystującymi technologię. Umiejętność korzystania z tego rodzaju społeczności ułatwia tworzenie nowych rozwiązań.
Nieświadomi sobie szkodzą
Postęp technologii jest wyzwaniem także dla samych firm. Nieświadomość postępu doprowadza czasem do sytuacji, w których organizacja zostaje ze starą technologią, co w konsekwencji powoduje problemy przy dalszym rozwoju systemu czy aktualizacji. (np. poprzez uniemożliwienie migracji do nowej wersji systemu operacyjnego). Tacy „maruderzy technologiczni” narażają się na duże trudności w funkcjonowaniu przedsiębiorstwa, co niemal zawsze skutkuje wysokimi i nieprzewidzianymi kosztami.
Autor tekstu jest głównym specjalistą IT w Pentacomp Systemy Informatyczne SA.