Wróć do bloga

Cykl tworzenia oprogramowania, czyli co warto wiedzieć, rekrutując w IT?

Testowanie, produkcja, utrzymanie, architektura - te słowa na pewno brzmią dość znajomo dla rekruterów specjalizujących się w IT. No właśnie, „dość” znajomo. Czy to jednak wystarczy, żeby być dobrym w swoim fachu? Zdecydowanie nie! Najlepsi rekruterzy na rynku IT, z którymi miałam możliwość pracować, zawsze mieli jedną wspólną cechę - świetnie znali i rozumieli aspekty techniczne. Dlatego dzisiaj przybliżę wam część fachowej terminologii i przydatne wskazówki dla rekruterów IT.

Cykl życia oprogramowania - co to?

Cykl życia oprogramowania to tak naprawdę cały proces, przez który przechodzi software -zarówno na etapie jego powstawania jak i użytkowania. Określa ogólne kroki, które są podejmowane w celu tworzenia oprogramowania przez zespoły programistów. Wskazuje etapy od momentu kształtowania się ogólnego pomysłu na software/aplikację, aż do momentu, w którym znajduje się w użyciu. Na podstawie tego modelu można bardzo łatwo zrozumieć różne role w świecie IT, zaczynając od product managerów przez software inżynierów aż po testerów.

Często w czasie testów software jest ulepszany i cały proces przechodzi od nowa przez te same etapy. Oczywiście możemy spotkać się z różnymi modelami o zbliżonych, lub kompletnie nieznanych nam nazwach. Wszystko to zależne jest od specyfiki produktu, jak i działalności firmy tworzącej dane oprogramowanie. Dlatego też inaczej działają zespoły, korzystające z metodologii Waterfall, a inaczej w przypadku modeli iteracyjnych czy EVO. Najważniejsza jest po prostu logika, którą trzeba podążać, żeby zrozumieć co tak naprawdę „stoi” za kodem. Od czego zaczynamy?

Requirement analysis (określenie wymagań)

Jak tworzy się oprogramowanie? Pierwszym etapem jest określenie wymagań. Definiowane jest przez doświadczonych specjalistów, którzy wspierają się badaniami rynku i analizą konkurencji. Informacje zebrane w czasie analiz są wykorzystywane do planowania całego projektu, przeprowadzenia studium wykonalności czy analiza ryzyka. Do tego etapu w dużej mierze zaangażowani są Business Analysts czy Product Owners. Po zaplanowaniu projektu ruszamy do zdefiniowania wartości naszego produktu, również przez określenie jego grupy docelowej. Posiadając te informacje, architekci oprogramowania mogą „przenieść” je do wirtualnego świata, projektując funkcjonalności naszej aplikacji.

Przykładowe role: Project Manager, Product Manager, Business Analyst

Design (projekt)

Faza design przenosi nas do części związanej z tworzeniem naszego produktu. To tutaj zapadają decyzje związane z interfejsem użytkownika. To, jakie kolory wykorzystamy, jak zaprojektujemy wygląd aplikacji. Gdzie będzie wyświetlał się nagłówek i czy urozmaicimy go animacją? Jakie ruchy wykona użytkownik, kiedy uruchomi aplikację po raz pierwszy i w którym miejscu będzie szukał danej funkcji? Jak będzie wyglądał przycisk logowania i w którym miejscu się znajdzie? Na tym etapie wybrany zostanie również język programowania, który najlepiej będzie pasować do aplikacji. Omówimy też inne aspekty techniczne - takie jak bazy danych i serwery. Wszystkie te elementy muszą być ustalone odpowiednio wcześniej między innymi ze względu na wielkość aplikacji. Portal, który działa na ogromną skalę i odwiedza go dziennie ponad miliard użytkowników, zaprojektowany jest inaczej od aplikacji mobilnej spełniającej pojedyńczą funkcję. Przykładowo Facebook jest bardzo potężną aplikacją o setkach funkcjonalności - dlatego wiele technicznych aspektów różni go od np. strony internetowej dla małej agencji SEO, której główne funkcjonalności opierają się na kalkulatorze cen dla klientów i formularzu kontaktowym.

Przykładowe role: Architekt Aplikacji, UX, UI designer

Implementation (implementacja)

Faza implementacji to czas kiedy pełną parą zaczynamy pisanie programu! Czasami będzie to projekt wykonywany zupełnie od zera z całkiem nowym kodem (wtedy mówimy o tzw. green field development), czasami można wykorzystać elementy z innych, istniejących aplikacji (wtedy mamy do czynienia z tzw. legacy code). Programiści specjalizują się w różnych językach programowania, dlatego możemy ich podzielić na tych front-endowych (JavaScrpit, HTML, CSS, React.js, Angular etc.) czy back-endowych (Java, Scala, C, C++, C#.net etc.). Czasem poszukiwani są także Full Stack Developerzy - czyli tacy, którzy potrafią kodować zarówno po stronie klienta, jak i administrować serwerem czy bazą danych. Każda aplikacja ma zdefiniowany stack technologiczny, który powinien być dopasowany do głównych założeń oprogramowania.

Przykładowe role: Software Engineer, Programista, Java Developer, Frontend Developer, C++ Developer itp.

Testing (testowanie)

Następnym krokiem jest faza testowania. To świetny moment do tego, żeby upewnić się, że system działa właściwie. Aplikacja musi zostać sprawdzona pod wieloma kątami - funkcjonalności, optymalizacji czy wydajności. Jest to szczególnie istotne, jeśli produkt ma działać na większą skalę. Musimy się również upewnić, że oprogramowanie spełnia wymogi bezpieczeństwa. Testerzy sprawdzą, czy funkcjonalności i interfejsy działają prawidłowo. Mogą korzystać do tego z testów manualnych (użytkownik testujący „klikając” w aplikacji) lub automatycznych (tester tworzy kod testujący aplikację).

Testowanie odbywa się również przez użytkowników, w czasie korzystania z oprogramowania. Dzięki informacjom zwrotnym produkt zawsze może być poprawiony i lepiej dopasowany do potrzeb. Często po wykryciu „buga” wracamy znów do poprzedniego kroku, i kod jest poprawiany.

Przykładowe role: QA Specialist, tester oprogramowania, tester manualny, tester automatyzujący

Deployment (wdrożenie)

Deployment to faza, w której software jest gotowy do działania. Po dokładnym zaplanowaniu tego, jak będzie działać aplikacja, kodowaniu i upewnieniu się, że software pracuje jak należy, oprogramowanie „idzie na produkcję”. Co to w praktyce znaczy? Mówiąc najprościej - użytkownicy mogą już korzystać z aplikacji. Na początku tego etapu użytkownicy mogą wyłapywać jeszcze drobne błędy, które na bieżąco mogą być zgłoszone i korygowane.

Aplikacje, czy np. strony internetowe też się zmieniają i zostają ulepszane. Widać to na przykładzie znanego wszystkim Facebooka, który dziś wygląda inaczej niż 5 lat temu. Jest to naturalne, ponieważ technologia się rozwija, pojawiają nowe funkcjonalności, zmienia się wizerunek firm czy trendy w designie. Dzięki innowacjom rozwijają się też wszystkie inne produkty i usługi.

Maintenance (utrzymanie)

Ostatnią fazą jest faza utrzymania, czyli etap, kiedy aplikacja już działa. Korzystają z niej użytkownicy, widzimy, że spełnia swoje funkcje i jesteśmy zadowoleni z całego produktu. Nie możemy jednak stracić czujności - aplikacja wciąż może się zepsuć. W przypadku aplikacji webowych coś może funkcjonować źle na konkretnych przeglądarkach, software może też paść ofiarą złośliwego oprogramowania lub ataku hackera. Z czasem, kiedy z aplikacji będzie korzystać zbyt wielu użytkowników może pojawić się na przykład problem z obciążeniem serwerów. Wtedy trzeba to naprawić, wracając do działań podejmowanych na odpowiednim etapie cyklu rozwoju oprogramowania (w zależności od błędu/problemu). Często aplikacje nie będą wymagały dużych ingerencji ze strony programistów, ponieważ błędy będą dość proste w naprawie. Czasem wystarczy nawet wyjaśnić użytkownikowi w prosty sposób, jak sam może poradzić sobie z problemem. Wtedy wystarczy skorzystać z pomocy zespołów wspierających (supportowych).

Przykładowe role: Support Engineer, I linia wsparcia, II linia wsparcia, IT Support.

Podsumowanie

Cykl życia oprogramowania jest świetnym punktem wyjściowym dla rekruterów IT, którzy chcą dobrze rozumieć specyfikę pracy programisty. W bardzo klarowny sposób pokazuje jakie kroki są realizowane od momentu planowania aplikacji w teorii do momentu kiedy aplikacja jest w pełni „dojrzała”. Przy przygotowaniu się do rozmów z Hiring Managerami dobrze jest zastanowić się, w której części „łańcuszka” znajduje się rola, na którą prowadzimy rekrutację. Ta wiedza daje nam znaczącą przewagę. Dzięki niej mimo różnego nazewnictwa, czy nieco innych zakresów zadań będziemy w stanie szybciej i łatwiej zrozumieć, o jakim profilu kandydatów poszukujemy. Mamy nadzieję, że powyższe informacje dla rekruterów IT okażą się pomocne.

Polecamy sprawdzić też masz wpis o tym, jak określać priorytety w pracy zdalnej.



Autor: Paulina Rogala