Ostatnio zostałam zapytana na czym tak naprawdę polega moja praca. Co robię jako programistka? Czym jest to całe programowanie?

Oto moja odpowiedź 🙂

Na czym polega to całe programowanie?

W skrócie powiedziałabym, że na rozwiązywaniu problemów.

I na to rozwiązywanie problemów składa się:

  • analiza problemu
  • pomysł rozwiązania
  • implementacja (kod)

Pomysły na rozwiązania możemy czerpać z:

  • własnej wiedzy, doświadczenia,
  • wiedzy oraz doświadczenia innych członków zespołu,
  • wiedzy publikowanej w sieci, np. w ramach Stack overflow.

Masz problem. Szukasz rozwiązania. Implementujesz je. Testujesz. Jeśli nie działa – poprawiasz. Jeśli działa – bierzesz się za kolejny problem 😛

 

Lubisz zagadki? No to wyobraź sobie całe życie pełne oryginalnych zagadek, wyzwań. Owszem, pewne rozwiązania z czasem przychodzą Ci dużo łatwiej niż wcześniej. Rozwiążesz coś w 5 minut, zamiast dwa dni, które zajęło Ci za pierwszym razem. Nie, to nie rozwiązanie zajęło Ci tyle czasu. To poszukiwanie rozwiązania.

W sumie to różni doświadczonego programistę od początkującego. Czas rozwiązywania problemów oraz jakość tych rozwiązań. Bo nie ma czegoś takiego jak „idealny kod”. Kod może różnić się długością, złożonością, czasem wykonania, czytelnością, itd.

 

Problemy bywają różne. Nie zawsze dotyczą tylko kodu. W sumie świetnie to podsumował Maciej Aniserowicz z DevStyle na poniższym obrazku:

Warto zajrzeć do źródła udostępnionego posta. Niestety ja mogę osadzić w artykule tylko swoje udostępnienie.

 

Programowanie to nie tylko pisanie kodu 🙂 Ale też siłą rzeczy nie da się być programistą bez znajomości co najmniej jednego języka programowania. Tak, przeciętny programista zna ich kilka, a może nawet podstawy kilkunastu (przy czym bardziej polecam skupiać się na specjalizacji niż znajomości wszystkiego).

Samą naukę programowania można przyrównać do nauki języków obcych. Uczysz się pewnych podstaw, pewnych konstrukcji językowych, zasad. Ale to lata doświadczeń sprawiają, że mówisz płynnie, rozumiesz bezproblemowo.

Powiedziałabym, że tak samo jak z nauką języków obcych – najtrudniejszy jest ten pierwszy język programowania. Każdy kolejny łatwiej opanować. Uczysz się różnic, a duża część pozostaje w pewien sposób wspólna (pętle, warunki, itp.).

Programowanie to ciągły rozwój, nauka, poszerzanie wiedzy.

Jak? Wszędzie. W całym Internecie dostępnych jest tyle informacji. Różnej jakości informacji co prawda. Nieraz trzeba się przebić przez kilka rozwiązań, które nie zadziałają w naszym przypadku.

Praca idealna dla osób cechujących się głodem wiedzy i chęcią do ciągłego rozwoju 😉

 

Dzień pracy programisty

Kariera programisty daje dużą elastyczność odnośnie tego jak może wyglądać taki dzień pracy. Nie liczy się o której zaczynasz pracę, o której ją kończysz. Liczą się efekty, wykonane zadania.

Był okres, gdy sama w ciągu dnia miałam albo siłownię, albo zajęcia angielskiego, o studiach dziennych nie wspominając. Dało się tak ułożyć plan dnia, by pogodzić wszystkie te aktywności.

Wiadomo, że siłownie wieczorem są mocno zapełnione. Więc czemu by nie skorzystać, kiedy jest na niej dużo mniej osób – w południe?

Tak samo szkoły językowe często oferują zajęcia w tzw. happy hours. Kursy w takich godzinach są tańsze od tych popołudniowych czy wieczornych. Nie wspominając już o tym, że niektóre firmy dofinansują Ci naukę angielskiego.

Nie mówię, że zawsze i wszędzie da się tak dogadać. Są firmy, dla których liczą się efekty nie siedzenie przy biurku w określonych godzinach. Są firmy, dla których nie ma znaczenia czy siedzisz w ich budynku czy przy swoim biurku w mieszkaniu i pracujesz zdalnie. Są firmy, które nie mają swojej siedziby i praca jest wyłącznie zdalna. Są firmy, które łączą te wszystkie podejścia zależnie od projektu. I są inne firmy 😉

 

Mój przeciętny dzień pracy

Opisuje przeciętny dzień mojej pracy w firmie, w której przepracowałam przeszło 3 lata. Korporacja, kilka tysięcy pracowników.

 

9:00, a czasem i 9:30 – pojawiałam się w pracy

Nie jestem rannym ptaszkiem, więc jeśli nie musiałam – nie pojawiałam się wcześniej. Poza tym taka godzina przyjścia gwarantowała np. mniejszy ruch w metrze czy komunikacji miejskiej 😉 (Warszawa)

Kiedy musiałam? Kiedy łączyłam studia dzienne z pracą na pełen etat. Jeśli miałam wyjść z pracy o 13:00, żeby jechać na zajęcia na Uczelnię (ok. 45 min w jedną stronę) – musiałam przyjść nawet o 6:00/7:00 rano do pracy. Nie opłacało mi się wracać z powrotem, więc im więcej godzin byłam w pracy z rana, tym mniej miałam do nadrobienia w następnych dniach.

Pierwsze kroki kierowałam do kuchni w celu zrobienia napoju Bogów – bez którego nie wyobrażam sobie poranka, czyli kawy <3 Siadałam z nią przy biurku i po przejrzeniu skrzynki mailowej brałam się za pierwsze zadanie.

Poza tym, że zadania miałam zdefiniowane w Jirze (o której kiedyś napiszę, w skrócie: świetny system zarządzania projektami i zadaniami) prowadziłam taką swoją małą listę zadań, na której odnotowywałam czym zajmę się rano.

 

Co wyznaczało standardowo najpóźniejszą godzinę przyjścia do pracy? ->

10:00 Daily Scrum Meeting

Czyli codzienne, poranne spotkanie, w którym grupa osób pracujących nad wspólnym projektem spowiada się z trzech rzeczy:

  • co zrobiłaś/zrobiłeś wczoraj?
  • co zrobisz dzisiaj?
  • czy masz jakiś problem? 😀 (oczywiście w zadaniach, które realizujesz 😉 )

W problemach nie chodzi tyle o to, by się poużalać jakie to programowanie jest złe. Ale o to, by uzyskać suport. Może ktoś zetknął się z takim problemem? A może ktoś podsunie rozwiązanie albo przynajmniej odeśle do osoby, która może pomóc?

Spotkanie jest codziennie o tej samej porze, najczęściej stojące. Często tak naprawdę obok biurek. Trwa ok. 10-15 minut. Prowadzone jest przez Scrum Master’a, który dba o jego przebieg. Może w nim uczestniczyć Product Owner.

Spotkanie to dotyczy zespołów, które pracują zgodnie z metodyką Scrum (o której może kiedyś napiszę więcej).

Przydawały się tutaj notatki, jakie prowadziłam. Minutę przed spotkaniem mogłam sobie odświeżyć wiedzę: co robiłam, robię, czy mam jakiś problem do zgłoszenia.

Takie spotkania są fajną formą dodatkowej motywacji. No bo przecież wczoraj powiedziałam, że zrobię X to nie spędzę teraz całego dnia na Y – bo fajniejsze/przyjemniejsze/itp. I nie – jako Y nie mam na myśli przeglądania zabawnych kotów w Internecie 😉

10:30 Śniadanie

Na które chodziliśmy większą ekipą. Do kuchni.

11:00 Powrót do biurka

I chyba najbardziej intensywny okres pracy. Aż do obiadu.

14:00 Obiad

Wspólne wyjście albo zamówiany na wynos. Różnie.

> 17:00 – wyjście z pracy

Zależnie od godziny, o której przyszłam, czy wychodziłam w trakcie dnia pracy, czy miałam jakieś godziny do odpracowania? Często od poniedziałku do czwartku przesiadywałam w pracy dłużej, by w piątek wyjść wcześniej 😉

Ogólnie też zazwyczaj nie było tak, że punkt 8 godzin wychodzę z pracy. Czasem trafisz na problem, który chcesz po prostu rozwiązać przed wyjściem. Programowanie wciąga.

Przed wyjściem przeglądałam swoje listy zadań. Aktualizowałam status w Jirze (jeśli coś zakończyłam). Chociaż zazwyczaj większość takich rzeczy robi się na bieżąco. Skończone zadanie? Aktualizujesz status, wysyłasz na code review lub do testów. Wszystko zależy od projektu, ustaleń danego zespołu.

 

Niektórzy zarzucają, że praca programistów jest nudna, że jak można tak dzień w dzień robić to samo. Ale to nieprawda! Problemy przed jakimi stajesz różnią się. Każdy dzień jest wyzwaniem. Każdego dnia dowiadujesz się, uczysz czegoś nowego.

Programuje już od przeszło 10 lat. Nadal mnie to nie nudzi 😉 Co prawda zmieniałam w trakcie obszary, którymi się zajmuje – taka możliwość to też duży plus tej pracy. I tak tworzyłam już aplikacje mobilne (natywne w C++, webowe), aplikacje na zegarki (smartwatch’e), aplikacje hybrydowe (piszesz raz – działają na wielu platformach). Teraz zajmuję się większymi aplikacjami webowymi. To inne zestawy umiejętności. A kiedy mi się znudzi…. Nie, Web zbyt szybko się zmienia, by nie zaspokoił tego mojego pędu do nowości 😉

Jeśli interesuje Cię jak wyglądała moja programistyczna ścieżka i historia zapraszam do artykułu na ten temat.

 

A czym dla Ciebie jest programowanie? (wbrew pozorom nie jest to łatwe pytanie, co nie?)

Jak wygląda przeciętny dzień Twojej programistycznej pracy?