Każdy twórca oprogramowania staje od czasu do czasu przed dylematem jaką technologię wybrać do tworzenia nowego projektu informatycznego. Decyzja taka powinna być szczególnie przemyślana przy dużych projektach, gdyż może mieć ona bardzo duży wpływ na powodzenie realizacji projektu, a pośrednio również na nasze zadowolenie z pracy. Nawet przy mniejszych projektach istotne jest, aby brać pod uwagę możliwość rozwoju programu do stopnia o jakim na etapie planowania nawet nie myśleliśmy.
Może się zdarzyć, że po “puszczeniu” do użytkowników pierwszej wersji programu, okaże się, że będzie na niego duży popyt oraz zarysują się perspektywy jego dalszego intensywnego rozwoju. W takim właśnie przypadku w razie chybionego wyboru technologii, programista lub zespół programistów będzie sobie rwał włosy z głowy, bo okaże się, że wybrana technologia, która miała pozwolić na błyskawiczne stworzenie pierwszej wersji oprogramowania, stawia duże ograniczenia przy dalszym jego rozwoju.
Na podstawie mojego krótkiego doświadczenia jako osoby zajmującej się rozwojem oprogramowania dla firm, przychodzi mi do głowy kilka czynników, nad którymi należy się zastanowić przy planowaniu nowego projektu informatycznego:
Jakim budżetem dysponujemy?
Czy program jest naszym pomysłem i naszą inwestycją, czy np jest pisany na zlecenie i ma sponsora. Od tego zależy to na co możemy sobie pozwolić. Czy musimy się skupić na szybkim ukończeniu produktu, czy też możemy sobie pozwolić na nieco innowacyjności, zakup bibliotek, narzędzi itp.
Jakie narzędzia już posiadamy?
Wiadomo, że posiadając oprogramowanie, zakupione za ciężkie pieniądze należało by je wykorzystać, o ile oczywiście spełnia ono wymagania stawiane przez projekt. Nieco inaczej jest gdy projekt powstaje na zlecenie. Wówczas należało by wziąć pod uwagę ewentualny zakup narzędzi programistycznych, bibliotek itp. Zakup taki oczywiście musi mieć swoje uzasadnienie ekonomiczne ( płaci za nie zleceniodawca ), i nie powinna być to jedynie chęć poznania np nowego języka programowania czy nowej bazy danych. Powinien on skutkować skróceniem prac programistycznych, lepszą jakością końcowego produktu oraz przede wszystkim jasnymi perspektywami dalszego rozwoju programu.
Jaką wiedzą dysponujemy?
Samobójstwem byłoby rozpoczynanie dużego projektu z wykorzystaniem technologii, o której nie mamy pojęcia. Wybieramy albo sprawdzone rozwiązania, albo przed wyborem robimy dogłębne rozeznanie mające na celu określenie możliwości i zagrożeń danej technologii. Istotne jest aby nie wybierać żadnych “modnych nowości”, choć często jest taka pokusa. Mają one to do siebie, że równie szybko umierają jak się rodzą, co może mieć dla nas katastrofalne skutki.
Dlaczego popełniłem ten wpis? Ano dlatego, że od paru lat rozwijam pewnien program w technologii X, i gdy zaistnieje potrzeba dodania do niego jakiejś funckjonalności, pojawia się myśl, jak proste by to było gdyby program był napisany w technologii Y. Przepisanie programu niestety jest nierealne - za duża “kobyła”.
Życzę więc dobrych wyborów kolegom po fachu!