Kim jest Senior?

By 12 February 2020 Motywacja

W listopadzie zostałam seniorem, niem­niej mój awans zaczął się trochę wcześniej. Nie powiem, że odkąd pod­jęłam swo­ją pracę w IT, cho­ci­aż oczy­wiś­cie każde doświad­cze­nie i prob­le­my, które rozwiązy­wałam przy­czyniły się do nau­ki i mojego roz­wo­ju. Powiedzi­ałabym, że świadomie, mój awans zaczął się pół roku przed fak­ty­czną datą, a to wszys­tko dlat­ego, że w ramach ewalu­acji mojej pra­cy, zaczęłam zas­tanaw­iać się czego jeszcze powin­nam się nauczyć/ doświad­czyć by objąć to stanowisko. Poniżej pod­sumowanie tych przemyśleń.

Obec­ny rynek pra­cy zde­cy­dowanie nie ułatwia stworzenia jed­nej, uni­w­er­sal­nej definicji roli i wyma­gań senior soft­ware engi­neera. Nieste­ty duży niedobór pra­cown­ików i wal­ka o ich utrzy­manie, a także ogrom­na ilość firm pod­wykon­aw­czych, które mogą swo­jego klien­ta podliczyć za więcej za senio­ra, powodu­je że oso­by z takim tytułem mogą nie mieć podob­nych kwal­i­fikacji czy doświad­czenia w pra­cy. Z drugiej strony, firmy, uznawane za najlep­sze w naszej branży raczej mają tutaj dość wyśrubowane wyma­gania. My nato­mi­ast wychodz­imy z założe­nia, że senior jako sposób pra­cy, to coś do czego powinien dążyć każdy pro­gramista i dlat­ego w tym wpisie postaram się wytłu­maczyć, czego powinieneś od siebie wyma­gać, i co powin­no odróż­ni­ać Cibie od oso­by na stanowisku soft­ware engi­neer, Wierzę, że dzię­ki temu wpisowi uda Ci się wyz­naczyć cele zawodowe, albo być może dzię­ki niemu będziesz mógł dodać sobie pewnoś­ci siebie w aplikowa­niu o awans.

Umiejętności techniczne

Dobra baza tech­nicz­na Zaczęłabym tutaj od biegłej zna­jo­moś­ci języ­ka pro­gramowa­nia a także doświad­czenia w uży­wa­niu bib­liotek i pop­u­larnych frame­worków z nim związanych. Pisanie czys­tego, przetestowanego i udoku­men­towanego kodu mam nadzieję, ze rozu­mie się samo przez się. Do tego biegłość w uży­wa­niu narzędzi dewelop­er­s­kich. To zde­cy­dowanie takie min­i­mum, które powin­no dać solid­na bazę. Nie chodzi tu zna­jo­mość każdej możli­wej tech­nologii, ale o wiedzę, którą możesz prze­nieść na np. pokrewne tech­nolo­gie czy bib­liote­ki. Zrozu­mie­nie jak rzeczy we frame­workach dzi­ała­ją pod spo­dem powin­no być trans­fer­owalne między nimi, a drob­ne skład­niowe różnice nie powin­ny stanow­ić prob­le­mu. Do tego dochodzą powszech­nie stosowane dobre prak­ty­ki i stan­dardy. Świado­mość, że nie warto wymyślać koła na nowo, ale warto stosować ogól­nie przyjęte zasady, uży­wać ponown­ie kod, dbać o jego standaryza­cję wewnątrz pro­jek­tu i organizacji.

Umiejętność wyszukiwania rozwiązań technicznych 

Do tego umiejęt­noś­ci robi­enia tech­nicznego researchu i kry­ty­cznego spo­jrzenia na dostęp­ne narzędzia / rozwiąza­nia z uwzględ­nie­niem tego jak będzie wyglą­dało ich utrzy­manie i skalowanie( wiado­mo nie da się przewidzieć wszys­tkiego, ale warto wykon­ać takie prog­nozy na pod­staw­ie dostęp­nych infor­ma­cji). Dban­ie o utrzy­manie Kole­j­na rzeczą, która warto uwzględ­nić jest jakość kodu i rozwiązań. Senior powinien więc umieć korzys­tać z metryk i wskaźników i reagować na spad­ki wyda­jnoś­ci, sta­bil­noś­ci czy bez­pieczeńst­wa aplikacji. W przy­pad­ku tych czyn­ników powiedzi­ałabym, że bard­zo istot­na jest umiejęt­ność ich obrony i argu­men­towa­nia dlaczego warto je poprawić. 

Umiejętności miękkie

Kom­pe­tenc­je miękkie w moim przeko­na­niu są w naszej pra­cy kluc­zowe, a to dlat­ego, że rzad­ko kiedy we współczes­nych pro­jek­tach pro­gramista pracu­je samodziel­nie (nawet jako free­lancer musi on kon­tak­tować się z inny­mi ludź­mi, budować zau­fanie i markę). Dlat­ego w moim przeko­na­niu umiejęt­noś­ci komu­nikacji i pra­cy z ludź­mi są kluc­zowe, a ich rozwój może pomóc wyróżnić się i iść do przo­du w karierze. 

Komunikacja 

Efek­ty­w­na komu­nikowanie to pod­stawa. Mówie­nie o postępie w pra­cy, efek­ty­wne komen­tarze dodawane do review kodu, czy szczerość i poko­ra przy udziela­niu i wysłuchi­wa­nia infor­ma­cji zwrot­nej to prze­cież filary naszej pra­cy. Efek­ty­wne komu­nikowanie się pozwala na jasne przekazy­wanie swoich opinii, czy pre­cyzyjne określe­nie oczeki­wań, a umiejęt­ność uważnego słucha­nia ułatwia mierze­nie włas­nego roz­wo­ju. Dla jas­noś­ci nie chodzi tu o to, że każdy musi być ekstraw­er­tykiem czy mów­cą na kon­fer­enc­jach. Efek­ty­wnie komu­nikować moż­na się za pomocą każdego z naszych narzędzi od kodu, gita przez slack i spotka­nia scrumowe. 

Praca w zespole i współpraca

Pra­cow­ać z inny­mi nie zawsze jest łat­wo. Odmi­enne zda­nia czy sposób pra­cy mogą łat­wo stać się przy­czyną nieporozu­mień. Ale w efek­ty­wnym zes­pole wcale nie chodzi o to by mówił jed­nym głosem ale by potrafił go wypra­cow­ać. I być przy tym po pros­tu człowiekiem, który chce zrozu­mieć drugiego, który umie przyz­nać się do błę­du, ale też docenić swoich współpracowników. 

Dzielenie się wiedza i onboarding

 Nie jest wcale sztu­ka być guru i jed­noosobowym źródłem wiedzy. Nieste­ty takie doświad­c­zone oso­by, które wiedza wiele, ale nie dziela się swo­ją wiedza nadal moż­na spotkać w orga­ni­za­c­jach. Może nawet zdarzyło ci się z kimś takim pra­cow­ać? Doku­men­towanie wiedzy, pomoc kole­gom z zespołu i pro­gramis­tom w orga­ni­za­cji to bard­zo rozwi­ja­jące zaję­cia. Częs­to właśnie w takich momen­tach będziesz doczy­ty­wać, przy­pom­i­nać sobie, myśleć o warunk­ach brze­gowych. A żeby przekazać efek­ty­wnie wiedzę trze­ba ją sobie najpierw samemu dobrze uporząd­kować, co prowadzi do tego, że naprawdę w ten sposób moż­na się uczyć skutecznie.

Doświadczenie

To coś czego przeskoczyć się nie da, bo tylko w prak­tyce moż­na sprawdz­ić swo­ją wiedzę, ale i dos­tosować „ide­alne” podręcznikowe  rozwiązanie, do niei­de­al­nych (ale prawdzi­wych) sytuacji. 

Dlat­ego różnorod­ność pro­jek­tów i zespołów z który­mi się pracu­je,  jest waż­na, bo zmniejsza nam ilość niez­nanych i nowych czyn­ników. Oczy­wiś­cie, rzad­ko jest tak, że rozwiązanie moż­na prze­nieść 1:1 z jed­nego pro­jek­tu do drugiego, niem­niej dzię­ki doświad­cze­niu moż­na łatwiej dokon­ać wyboru, pomiędzy dwoma bib­lioteka­mi lub różny­mi pode­jś­ci­a­mi sug­erowany­mi przez innych..

 

Doświadczenie z więcej niż jednej organizacji

Umówmy się, nie ma firm ide­al­nych. Niem­niej, zazwyczaj w każdej orga­ni­za­cji zna­jdziesz coś wartego naślad­owa­nia i coś, co przeszkadza w pra­cy i roz­wo­ju. Pra­ca w więcej niż jed­nej fir­mie na pewno może pozy­ty­wnie wpłynąć na Twój rozwój, bo możesz doświad­czyć jak moż­na pewne pro­cesy prowadz­ić inaczej. Adap­tac­ja do nowych zasad to też ciekawe doświad­cze­nie roz­wo­jowe, bo pozwala poczuć jak to jest dos­tosowywać się do nowych zasad jed­nocześnie stara­jąc się zaim­ple­men­tować dobre prak­ty­ki, które dzi­ałał­by w poprzed­niej firmie.

 

Doświadczenie z więcej niż jednego projektu/produktu

Mam tu na myśli zarówno pracę w różnych zespołach jak i z różnym kodem. Pra­ca w pro­jek­tem, który jest na pro­dukcji kil­ka lat to zupełnie coś innego niż zaczy­nanie pisa­nia aplikacji na nowo. Oba przyniosą inne, nowe wyzwania.

Każdy zespół jest trochę inny, bo inni ludzie go tworzą. Umiejęt­ność wypra­cow­a­nia zasad, dos­tosowa­nia się do nich, ale też samodziel­nej pra­cy pod­czas współpra­cy z inny­mi ludź­mi to ciekawe doświadczenie.

 

Branie odpowiedzialności

To jest jed­na z tych cech, które powiedzi­ałabym rozróż­ni­a­ją senio­ra od młod­szych stażem pra­cown­ików. Być w stanie pra­cow­ać nad zadaniem od początku do koń­ca, zapro­ponować rozwiązanie, tech­nolo­gie, zaplanować wdroże­nie, odpowied­nie testy i deploy na pro­dukcję i wziąć odpowiedzial­ność za te decyz­je. Dochodzi do tego umiejęt­ność pra­cow­a­nia z osoba­mi w innych rolach (np. Prod­uct Ownerem i UX Designerem, grafikiem, biznes anal­i­tykiem, zespołem FE jeśli jesteś BE itp), tak by na pewno zrozu­mieć potrze­by biz­ne­sowe i prob­le­my użytkowników. 

 

Mam nadzieję, że powyższy spis okaże się przy­dat­ny, a omówie­nie pomoże w zaplanowa­niu Two­jego roz­wo­ju. Zachę­cam też do podzie­le­nia się swo­ją opinią na ten tem­at- jak ty byś zdefin­iowała seniora?