SDS - szansa dla firm i młodych programistów

31 marca 2022
Jakub Rojek Jakub Rojek
Źródło: SDS (https://put-sds.github.io/)
Kategorie: Współpraca, Dla klientów, Studium przypadku (case study), Nauka

Studia są specyficznym czasem w życiu, który po latach jest różnie wspominany i oceniany. Oczywiście, myślimy tutaj o sferze naukowej, dydaktycznej, a konkretnie tej, która potencjalnie ma przygotować do dalszego życia zawodowego. To nie do końca prawda, że studia (nawet informatyczne) nauczą właściwie robić rzeczy przydatne później w karierze - owszem, mogą w tym pomóc, ale ich główną rolą jest rozszerzenie horyzontów. W każdym razie, studia to też czas pisania pracy dyplomowej, w tym - w przypadku kierunków technicznych - inżynierskiej. Jak sama nazwa mówi, ma ona przygotować do osiągnięcia tytułu inżynieria, który w pewien sposób świadczy o studencie. Jej tworzenie powinno zatem przebiegać w sposób usystematyzowany, faktycznie sprawdzający różne zdolności młodego informatyka. I tutaj na scenę wkracza program szkoleniowy, który działa od wielu lat i świadczy korzyści wielu stronom. Poznajcie bohatera dzisiejszego tekstu - Software Development Studio.

Garść faktów

Software Development Studio (albo właśnie w skrócie SDS) to inicjatywa mająca miejsce na kierunku Informatyka na Wydziale Informatyki i Telekomunikacji Politechniki Poznańskiej (z którym zresztą współpracuje Wilda Software). Zakłada ona połączenie:

  • studentów ostatniego semestru studiów inżynierskich, mających pisać techniczną pracę inżynierską,
  • studentów pierwszego semestru studiów magisterskich na specjalności Software Engineering (Inżynieria Oprogramowania), którzy uczą się zarządzać projektami IT,
  • firm lub instytucji chętnych na stworzenie pewnego rozwiązania IT.

Jest to zatem okazja realizacji pomysłu na system lub aplikację, a przy okazji sprawdzenie się w boju zarówno przyszłych kierowników projektu, jak i programistów. Nad wszystkim czuwają mentorzy programu i przy okazji naukowcy oraz nauczyciele akademiccy - dr hab. inż. Mirosław Ochodek oraz dr inż. Sylwia Kopczyńska.

Wszystko zaczyna się od propozycji projektu zgłoszonej przez firmę (jakąkolwiek - pula nie jest ograniczona do firm IT), instytucję lub np. naukowca potrzebującego pomocy przy swoich badaniach czy sprawach uczelni. Następnie mentorzy SDS wybierają najbardziej obiecujące koncepcje i rozdzielają je pomiędzy zaczynających wówczas swoją przygodę studentów specjalności Software Engineering, którzy mają przyjąć rolę kierownicze. Ci z kolei mogą się spełnić na wielu płaszczyznach - kontakcie z klientem, analizie wymagań, prowadzeniu samego projektu, ale też samej rekrutacji i zarządzania programistami. W tę ostatnią rolę wcielają się bowiem studenci studiów inżynierskich, którzy przy okazji zapewniają sobie temat pracy inżynierskiej.

Można zatem powiedzieć, że jest to sytuacja win-win - wszyscy uczestnicy tego przedsięwzięcia stoją na pozycji wygranych. Prześledźmy jednak dokładniej, jak to wygląda z perspektywy każdej ze stron, zwłaszcza, że mam to szczęście, iż uczestniczyłem w SDS we wszystkich trzech opisywanych rolach.

Źródło: https://www.pexels.com/photo/15120-architecture-blue-building-269077/

Z perspektywy zleceniodawcy

Wyobraźcie sobie, że macie do zrobienia pewien projekt IT. Niekoniecznie krytyczny - zwyczajnie pojawił się pomysł na aplikację, która ułatwiłaby pracę Wam lub Waszej firmie, ale nie posiadacie wystarczających zasobów (czasowych i ludzkich), aby się tym zająć. Możecie snuć także sny o potędze z koncepcją stricte przeznaczoną "dla mas", ale potrzebujecie stworzyć MVP, aby sprawdzić swój pomysł w działaniu. Istnieje też szansa, że macie dużo projektów do zrealizowania, jednak nie wszystkimi (lub nie wszystkimi modułami) jesteście w stanie zająć się samodzielnie i potrzebujecie outsourcingu. Dodatkowo, możecie zidentyfikować takie przedsięwzięcia, których deadline nie jest bardzo ścisły i nie zależy od nich los Waszej firmy.

To są właśnie sytuacje, w których możecie pokusić się o zaproponowanie projektu programowi SDS. Korzyści są oczywiste - przenosicie pracę na inny zespół, w efekcie czego oszczędzacie czas (potrzebujecie go jedynie na wprowadzenie zespołu do swojej koncepcji, spotkania i weryfikację prac). Jednak zalet takiego rozwiązania jest znacznie więcej i nie ze wszystkich możecie zdawać sobie sprawę.

Po pierwsze, w ten sposób możecie poznać swoich przyszłych pracowników lub przynajmniej osoby, z którymi warto wejść w dalszą współpracę. Budowanie takich relacji na przyszłość jest bardzo ważne i cenne dla obu stron. Dla firmy może przełożyć się to na pozytywny odbiór w oczach zarówno braci studenckiej, jak i kadry profesorskiej kierunku czy nawet samej uczelni. A to już może owocować pewnymi możliwościami biznesowymi, które później można rozwijać. Wracając do studentów - SDS to dobra okazja, aby sprawdzić na własnej skórze, jak sobie radzą oraz - jeśli współpraca przebiega wzorowo - zastanowienia się nawet nad ich zatrudnieniem. Oczywiście, to scenariusz idealny, ale możliwość nadal istnieje i nie jest taka odległa od rzeczywistości.

Po drugie, istnieje możliwość zlecenia różnego rodzaju projektów - zarówno tych komercyjnych, jak i open source. Jest to zatem sposobność, aby zrobić coś ponad standardowe portfolio projektów Waszej firmy lub innego rodzaju działalności. Być może szukacie nie tylko podwykonawców, ale też przyszłych partnerów? Możliwości istnieją, trzeba je tylko umieć znaleźć.

Po trzecie, jest to pewna oszczędność. Nie oszukujmy się - studenci (zarówno magistranci, jak i inżynieranci) zyskują też niematerialnie, gdyż jedni mają temat na pracę inżynierską (która jednocześnie jest dokumentacją techniczną projektu), a drudzy - zaliczenie przedmiotu (o tym jeszcze za chwilę). Jakiekolwiek gratyfikacje finansowe są mniejsze niż w przypadku zatrudnienia profesjonalnej firmy IT. Oczywiście, w przypadku jakości trzeba najczęściej pójść na pewne ustępstwa, gdyż nie możemy od studentów (mimo ich wysokiego poziomu) oczekiwać, że dostarczą (nawet z naszymi wskazówkami) oprogramowanie takie jak zespół zajmujący się tym zawodowo. Co prawda, nie jest to wykluczone, ale mało prawdopodobne.

Z perspektywy magistrantów

Jako osoba, która m.in. zarządzała takim projektem SDS (zwykle robi się to w 2 lub 3 osoby) i później pełniła oraz nadal pełni podobną rolę w prawdziwych projektach, mam bardzo ważną odezwę do magistrantów - wykorzystajcie ten czas i dane Wam możliwości. Macie ku temu co najmniej dwa powody.

Pierwszy to fakt, że nawet jeśli nie wiążecie z kierowaniem projektami IT swojej przyszłości, to wraz z nabieranym doświadczeniem będziecie stykali się z pewnymi formami kierowania także na swojej drodze zawodowej. Z czasem wyjdziecie z pozycji juniora i będziecie awansowali, jeśli nawet nie formalnie, to w oczach współpracowników. A to oznacza, że czasem będziecie odpowiedzialni za jakiś projekt (i to nie tylko swój kod), pojawią się sytuacje, że trzeba będzie przedstawić raport szefowi lub klientowi, a także zaplanować dalsze prace. Doświadczenie z kierowania projektem SDS i analiza sytuacji oraz skutków, które podczas tego miały miejsce, na pewno Wam się przyda.

Drugi to środowisko, w którym się znajdujecie - tak naprawdę projekt na uczelni to swoisty inkubator. Większość błędów popełniona tutaj będzie Wam wybaczona lub przynajmniej zrozumiana i możliwa do poprawy. Zleceniodawcy projektów i mentorzy też mają świadomość, że nie jesteście (jeszcze) profesjonalistami i będą zdarzać Wam się wpadki lub po prostu przyjmiecie zły plan na kierowanie zespołem. Korzystajcie z tego, uczcie się na błędach (swoich i współstudentów), obserwujcie, jakie efekty przynoszą Wasze poczynania i czy możecie jakoś pomóc przedsięwzięciu. Czasami najlepszą opcją jest po prostu nie przeszkadzać programistom, a czasem wręcz przeciwnie - wtrącać się oraz jasno mówić, czego się od nich oczekuje i jak mają podejść do swoich zadań.

Trzeci, bonusowy, powód może być przywołany pół żartem, pół serio - i tak nie macie innego wyjścia, żeby zaliczyć przedmiot SDS w ramach studiów ;) Sprawcie przynajmniej, żeby mieć z niego satysfakcję na lata.

Jest to dla Was niesamowita szansa na zdobycie nie tylko wiedzy i doświadczenia, ale też nabranie pokory i to - co najważniejsze - praktycznie zerowym kosztem. Oczywiście, projekty są jak najbardziej prawdziwe, ale zleceniodawcy i mentorzy zdają sobie sprawę, że jest to swego rodzaju poligon doświadczalny. Dużo lepiej jest przeżyć wszystkie porażki nowicjusza w takich warunkach niż w prawdziwym przedsięwzięciu, w którym wzięliście na siebie rolę eksperta i podpisaliście kontrakt na wiele tysięcy złotych z karami umownymi zapisanymi w zobowiązaniu. Oczywiście, to nie oznacza, że będzie tak źle - przez te wszystkie lata widziałem też osoby, które naturalnie potrafiły stać się liderami i dobrze radziły sobie z prowadzeniem projektu. Najważniejsze to pracować, a także być szczerym wobec innych uczestników - opieka nad powierzonym Wam zadaniem jest kluczem i na pewno postawi Was w dobrym świetle przed zleceniodawcą i mentorami.

Źródło: https://www.pexels.com/photo/group-of-people-watching-on-laptop-1595385/

Z perspektywy inżynierantów

"Zysk" dla inżynierantów (którzy przyjmują tutaj rolę programistów, zazwyczaj w formie 4-osobowego zespołu) leży między innymi w tym, że gwarantują sobie temat pracy inżynierskiej i to dość wcześnie. Wbrew pozorom, proces wybierania tematów jest dosyć nerwowy, gdyż cały rocznik stara się połączyć w grupy i zakręcić wokół określonych promotorów. A tutaj mają okazję nie tylko mieć wsparcie większej grupy ludzi i nauczyć się pracować przy prawdziwym projekcie, ale jeszcze za jego pomogą zdobyć tytuł.

Oczywiście, sama możliwość uczestnictwa w takim projekcie też jest dużą zaletą przystąpienia do SDS - rzadko zdarza się, aby móc sprawdzić się (pamiętajmy, że są to zwykle osoby bez dużego doświadczenia) w środowisku, które z jednej strony jest całkiem bliskie profesjonalnego, a z drugiej - wybacza dużo błędów. Także analogicznie do sekcji opisującej korzyści dla zleceniodawców - jeśli projekt jest prowadzony pod egidą jakiejś firmy, programiści mają okazję zapoznać się z prawdziwym światkiem biznesowym i być może - podobnie zresztą jak magistranci - nabyć kontakty przydatne w późniejszej ścieżce kariery. Dodatkowo, z uwagi na harmonogram działań w projekcie SDS (o czym pod koniec tekstu), jeśli dodatkowo klientem jest firma IT, istnieje możliwość załapania się na praktyki, które i tak są obowiązkowe dla studentów po trzecim roku.

W trakcie studiów realizowanych jest wiele mniejszych lub większych projektów, indywidualnie lub w grupach. Praca inżynierska oparta o SDS to wyższy poziom, w którym grupa nie jest krótkoterminowa (np. tworzona na miesiąc), ale jest to faktyczny zespół, który musi umieć ze sobą współpracować, wspólnie rozwiązywać problemy i mierzyć się z trudnościami, które - ponownie - i tak kiedyś wystąpią już w biznesowym środowisku. To rozbudowany eksperyment pozwalający zobaczyć, jak to jest i zobaczyć konsekwencje różnych decyzji bez doświadczania (przynajmniej z pełną mocą) realnego stresu wynikającego np. z niewypełnienia warunków umowy.

SDS to też okazja do rozszerzenia swojego stosu technologicznego - wielokrotnie widzieliśmy (czasami z boku, a czasem będąc w pełni zaangażowani), że programiści zapoznawali się z narzędziami, z którymi wcześniej nie mieli do czynienia, mogli podpatrzeć, w jaki sposób skonstruowany jest kod, a także przedyskutować z klientem swoje poczynania w celu wysłuchania cennych uwag. Dodatkowo, jest to też okazja do pracy w scrumie lub innej metodyce zwinnej i poznania związanych z nim procesów w praktyce.

Źródło: https://www.pexels.com/photo/photo-of-planner-and-writing-materials-760710/

Gdzie się można zgłaszać i jaki jest harmonogram?

Cykl SDS zaczyna się najczęściej w lutym, kiedy otwarte jest okienko na zgłaszanie propozycji projektów - warto obserwować profil Laboratorium Inżynierii Oprogramowania PP, aby nie przegapić tego momentu. Następnie, na początku marca rozpoczyna się semestr i jeśli projekt został zaakceptowany, to jest przydzielany jednej z grup magistrantów.

Wówczas rozpoczyna się też rekrutacja programistów wśród studentów trzeciego roku informatyki - tak naprawdę w marcu (ew. kwietniu) już wszystkie grupy są skompletowane i powoli nawiązują kontakt ze zleceniodawcami projektów. Tutaj magistranci mogą zobaczyć, jak wyglądają wszystkie początkowe etapy - wysłuchanie potrzeb klienta, stopniowa analiza przedsięwzięcia, zaproponowanie rozwiązań i przygotowanie dokumentacji projektowej. Ten proces trwa do okresu wakacyjnego (zwykle do września), po którym następuje faza planowania pierwszego sprintu. I zaczyna się właściwe programowanie.

Projekt tworzony jest w scrumie, co oznacza podzielenie go na sprinty i dostarczanie klientowi funkcji w wyznaczonych odstępach czasu. Jest to zatem czas nie tylko wytężonej pracy programistycznej, ale także spotkań, konfrontacji realizacji z oczekiwaniami klienta i nakierowywania projektu na dalsze szerokie wody. W tym czasie Politechnika Poznańska zapewnia wszystkie zasoby w postaci serwera, repozytorium, dostępów, a w przeszłości także np. pokojów. Dodatkowo, z racji obecności uczelnianego środowiska, zespół ma dostęp do ekspertów i możliwości konsultacji z bardziej doświadczonymi osobami.

Wykonawcza część projektu zazwyczaj kończy się w grudniu, ew. w styczniu kolejnego roku. Następują wówczas dwie rzeczy:

  • pisanie pracy inżynierskiej przez inżynierantów i późniejsza obrona,
  • jeśli to projekt komercyjny, to decyzja zleceniodawcy dotycząca ew. odkupienia praw i kontynuowania projektu.

W przypadku chęci dalszej współpracy, strony ustalają potrzebne szczegóły i dalsze kroki. W innym przypadku programiści nadal uzyskują tytuł inżyniera, magistranci zaliczenie przedmiotu oraz doświadczenie, a zleceniodawca wiedzę o tym, jak następnym razem podejść do projektu.

Podsumowanie

Software Development Studio to nie tylko program umożliwiający tworzenie całkiem realnego projektu w kontrolowanych warunkach. To również edukacyjna przygoda, która pozwala sprawdzić się wszystkim stronom, nabrać doświadczenia, umiejętności i zbliżyć do siebie pozornie odległe środowiska akademickie oraz biznesowe. W swojej karierze pamiętam projekty, które zarówno skończyły się pozytywnie, jak i negatywnie, ale każdy z nich przyniósł jakąś wiedzę i przemyślenia.

Wielkie kudosy dla zespołu inżynierii oprogramowania na Politechnice Poznańskiej za wprowadzenie takiej inicjatywy i utrzymywanie jej przez wiele lat, a przede wszystkim za ciągłe dostosowywanie i udoskonalanie całego procesu, aby wszyscy mogli kończyć swój udział w SDS będąc usatysfakcjonowanym.

Pozdrawiam i dziękuję - Jakub Rojek.

Lubimy pisać, nawet bardzo, ale na co dzień tworzymy aplikacje webowe i mobilne. Sprawdź niektóre z wykonanych przez programów.

O autorze

Jakub Rojek

Główny programista i współwłaściciel Wilda Software, z wieloletnim doświadczeniem w tworzeniu i rozwoju oprogramowania, ale także w pisaniu tekstów na różnorakich blogach. Zaprawiony w boju analityk i architekt systemów IT. Jednocześnie absolwent Politechniki Poznańskiej i okazjonalny prowadzący zajęcia na tej uczelni. W wolnych chwilach oddaje się graniu w gry wideo (głównie w karcianki), czytaniu książek, oglądaniu futbolu amerykańskiego i e-sportu, odkrywaniu cięższej muzyki oraz wytykaniu innym błędów językowych.

Jakub Rojek