Nowe technologie kontra komercyjna rzeczywistość
Na początku nie będziesz pracował z nowymi technologiami. To prawie pewne. Zwłaszcza jeśli zaczniesz karierę w dużej firmie. Dlaczego właściwie tak jest? I czy to źle?
Komercyjne IT nie goni za nowościami
W IT, tak samo jak w każdym innym biznesie, chodzi przede wszystkim o dostarczanie produktów, które będą na siebie zarabiać. A czy projekt zarabia na siebie od razu po wydaniu? Może w 1% przypadków. Najczęściej wymaga to dłuższej obecności na rynku. Przez to bardziej opłaca się utrzymywać działający i zarabiający na siebie produkt zamiast zabierać się za stworzenie kolejnego od podstaw.
Jak w takim razie odbija się to na wykorzystywanych technologiach? Ano tak, że projekty, które już działają na produkcji są w tyle za nowościami, o których się słucha na konferencjach. Powstawały w czasach kiedy danej nowinki nie było, a próba przepisania całości teraz byłaby czasochłonna i kosztowna.
Nikogo w korporacjach nie dziwi, że jakiś framework używany w aplikacji ma 5 lub więcej lat. Tak naprawdę 5-letni framework jest raczej w miarę świeży, tak samo jak 5-letni projekt. Z resztą nie tylko korporacje mają projekty, których wiek przekroczył wartość jednocyfrową. Również małe firmy powoli wchodzą w ten stan. W końcu coś co powstało na początku działalności i się przyjęło działa i jest utrzymywane nadal.
Korzystanie ze starszych wersji bibliotek czy języków ma jedną niepodważalną zaletę – korzysta się wtedy z technologii, która jest dobrze przetestowana i udokumentowana. Korporacyjna aplikacja, np. w banku, wymaga ciągłego działania bez niepotrzebnych przerw. Użycie czegoś co jest dobrze znane i w czym zostały znalezione i opisane albo naprawione najczęstsze problemy pojawiające się po dłuższym czasie jest dużym ułatwieniem i zapobiega walce z dziwnymi błędami, o których nikt nic nie wie. Powoduje to, że pracownicy nie walczą z technologią w częściach systemu, których nie rozbudowują.
Ale ja chcę nowe!
Dla osób dopiero wchodzących w świat programowania taki stan rzeczy może wydawać się nie do pojęcia. To niby branża taka nowoczesna, dynamiczna, co chwilę powstają nowe, jeszcze wygodniejsze technologie, a ktoś używa frameworka sprzed 10 lat i mówi, że tak jest lepiej?! Jeśli ktoś się przebranżawia i wcześniej pracował np. z maszynami przemysłowymi to zrozumie takie myślenie, a przynajmniej szybko zaakceptuje bo tam działa to tak samo. Jednak chociażby studenci informatyki wchodzący na rynek pracy mają na początku duży problem ze zrozumieniem jak działa ten świat. Każdy z nich w pierwszej pracy chce dostać do ręki nowy projekt ze świeżym stackiem technologicznym.
Nowe technologie wydają się czymś oczywistym. Każdy chce pracować w nowym projekcie, z wykorzystaniem bibliotek, które wczoraj wyszły z wersji beta. Dopiero życie i pierwsze etaty weryfikują to myślenie. Rynek aplikacji komputerowych tak naprawdę nie różni się tak bardzo od innych rynków. Im wcześniej się to zrozumie tym mniejsza będzie frustracja z tym związana.
Chęć używana tego co nowe jest u nas naturalna. Dlatego uczymy się nowych technologii i zaczynamy nowe projekty. I nie namawiam do zaprzestania tego. Ale to wszystko…
…będzie przydatne w przyszłości
Wystarczy podejść do tego w inny sposób. Jeśli teraz zaczynasz się uczyć najnowszej wersji Angulara to znaczy, że nie jest to technologia, w której się sprawnie poruszasz. Dlaczego więc uważasz, że chcesz w niej pracować już teraz? Potraktuj to jako inwestycję. Technologie używane w dorosłych projektach też kiedyś były nowinkami. Tak samo będzie z tym najnowszym Angularem. Jednak jeśli zaczniesz się go uczyć teraz to za kilka lat jest szansa, że staniesz się w nim ekspertem i będziesz znał większość typowych błędów. I będziesz mógł to wykorzystać zatrudniając się jako ekspert.
Jak najbardziej trzeba ciągle uczyć się nowości. Po pierwsze zwykle są to rzeczy lepiej zaprojektowane i przyjemniejsze w użyciu, a więc też nie powodujące poczucia zniechęcenia i dające kopa do dalszej nauki. Z drugiej strony nowe technologie będą w końcu używane komercyjnie, a wtedy warto być tym, który je już zna, a nie dopiero zaczyna się ich uczyć.
Dodatkowo ucząc się nowości ale pracując ze starszymi technologiami możesz wprowadzić pewien powiew świeżości. Być może te 5 czy 10 lat temu trochę inaczej się podchodziło do pewnych spraw i teraz, patrząc na rozwiązania w nowych produktach i chłonąc wiedzę z aktualnych źródeł, będzie można coś zrobić lepiej, wygodniej? Do tego nie trzeba przepisywać projektu, wystarczy przenieść pewną wiedzę i założenia. Po pewnym czasie zobaczysz, że tak naprawdę stare i nowe aż tak bardzo się nie różni i najczęściej wszystko rozbija się o przyjęte konwencje czy wykorzystanie konkretnych wzorców.
Podsumowując
Warto, a nawet trzeba zaakceptować, że to co już działa, korzysta z tego co nowinką było wiele lat temu. I ma to swoje uzasadnienie. Projekty nie żyją tydzień. Jeśli mają na siebie zarabiać to będą żyły latami, a ich aktualizowanie do nowszych technologii nie będzie takie proste, a wręcz często niemożliwe albo bardzo nieopłacalne. Jednak mimo wszystko warto się uczyć nowości, żeby w razie potrzeby skorzystać z wiedzy na odpowiednim poziomie abstrakcji i przenieść nowoczesne konwencje do starego projektu.
Nie ma się też co przejmować, że ucząc się nowego frameworka nie będziemy umieli pracować w jego starszej wersji, albo w podobnej technologii. Prawda jest taka, że spora część wiedzy jest uniwersalna i niezależna od konkretnego rozwiązania. Np. wzorzec MVC 10 lat temu i obecnie to ta sama konstrukcja, co najwyżej zmieniły się szczegóły implementacyjne i ktoś użył nowszego standardu języka.
Technologie wprowadzane dzisiaj na rynek konsumencki i biznesowy jeszcze nie tak dawno kojarzone były raczej z literaturą science fiction.