1 / 6
Jan 2018

Niniejszy temat, w nieco innej formie, znajdował się na starym forum, natomiast brakuje go na obecnym. Trzeba przy tym zauważyć, że na starym forum był on dość mało popularny i chyba nie przedstawiał osobistych doświadczeń żadnej osoby, o co zresztą trudno go winić – mało osób wytrzymuje ze SPOJem dłużej niż kilka(naście) pierwszych zadań.

Oczywiście mój osąd jest wysoce nieobiektywny, ale czyj jest obiektywny? Jeżeli ktoś się ze mną nie zgadza – proszę bardzo i czekam na stosowny koreferat. Jestem święcie przekonany, że jego lektura będzie pomocna wszystkim użytkownikom forum, którzy mają w zwyczaju czytać posty :wink:

W ramach wprowadzenia: na SPOJu działam od około 3 lat. Moje zainteresowania zawsze były dalekie od branży IT, a profil biol-chem w liceum i studia inżynierskie z zakresu technologii chemicznej (Wydział Energetyki i Paliw, AGH) zapewne o czymś świadczą. Oczywiście o sobie mógłbym mówić więcej, ale nie o tym ma być ten post – w każdym razie nie jestem typowym nerdem siedzącym w kodzie od rana do nocy nie licząc przerw na gry komputerowe, a moje zainteresowania – powtórzę - były zawsze dalekie od branży IT. Ba! Im więcej mam do czynienia z komputerami tym chętniej ich unikam na rzecz klasycznych i sprawdzonych metod takich jak kartki i długopisy w miejsce pakietów biurowych albo drukowanie i ręczne wypełnianie PITów w miejsce e-Deklaracji. Komputery traktuję jako (przykrą?) konieczność i (niestety?) przyszłość. Według mnie dużo ciekawsze są m. in. mikroskopy, teleskopy i ogólnie nauki ścisłe atechnologiczne, a zwłaszcza biologia i (ewentualnie) chemia. Nie popadam jednak w fanatyzm i nie zamierzam skończyć jako epigon nauki (czy czegokolwiek innego) w wersji sprzed stulecia – jeżeli komputery to przyszłość i konieczność, a obecnie nikt tego nie ukrywa i prawie każdy ma komputer(y) w domu, czemu by się z tymi ustrojstwami nie zapoznać?

Pod koniec pierwszego semestru zajmowałem się problemem Collatza (zagadnienia teoretyczne zawsze były dla mnie ciekawsze niż praktyczne), gdzie szybkie wykonywanie mnożeń i dzieleń jest bardzo cenne. Mając z tym problem stanąłem przed wyborem: albo użyję arkusza kalkulacyjnego, albo napiszę odpowiedni program komputerowy. Intuicja podpowiadała mi, że drugi wybór jest lepszy więc nie mając wielkiej wiedzy na ten temat wyszukałem w sieci informacje o programowaniu w C++. Trafiłem na kurs Mirosława Zelenta na YT8, od którego zacząłem zajmować się programowaniem i ogólnie oswajać z technologią. W jednym odcinku kursu Mirosław Zelent wspomniał o SPOJu… i potem wszystko jakoś samo się potoczyło.

Ponieważ wiele osób ma różne pytania i wątpliwości dotyczące nauki sztuki kodowania i jej znaczenia w życiu, poniżej próbuję na nie odpowiedzieć. Listę pytań utworzyłem na podstawie moich doświadczeń na SPOJu i nie tylko. Moje odpowiedzi są oparte wyłącznie na moich własnych odczuciach i z tego powodu proszę nie traktować ich jako prawd objawionych. Kolejność pytań jest prawie randomowa.

Gdzie, poza światem IT, przydaje się umiejętność programowania?

Wszędzie. Programowanie i związane z tą sztuką umiejętności są bardzo cenne w dowolnej dziedzinie życia i mogą być przydatne w najmniej spodziewanych sytuacjach. Umiejętność programowania przydaje się oczywiście w nauce (Stellarium, PyMOL, GNU Octave, MATLAB, LabVIEW, …), technice i technologii (oprogramowanie typu CAD), zarządzaniu (SAP Business One, ogólnie oprogramowanie ERP tudzież WMS), a nawet w codziennym życiu (pisanie modów, modyfikowanie funkcjonalności gry, szybkie radzenie sobie z zadaniami wymagającymi np. szybkiego klepania tekstu na komputerze, walka z wirusami, …).

Jaki język polecasz na start?

Nie mam zdania w tym temacie. Klasycznym wyborem jest C++, ale jest to język pod bardzo wieloma względami trudny i skomplikowany więc jego wybór może bardzo szybko kogoś zrazić. Mimo to trudno polecić mi cokolwiek innego ze względu na fakt, że materiały dostępne np. na temat Javy albo Pythona są mocno ograniczone.

Jak w kontekście Twoich studiów przydały się SPOJ oraz umiejętność programowania?

Praktycznie wcale. Powiem więcej – umiejętności te stanowiły przeszkodę w uzyskaniu tytułu inżyniera.

Temat jest dość trudny i nie chcę go zbytnio upraszczać. Nie chcę też rozprzestrzeniać jakiejś propagandy. Temat jakości współczesnych studiów był omawiany między innymi przez profesora Bogusława Wolniewicza (np. tu28, ale też tu15 czy tu15) albo profesora Jana Hartmana (chyba na swoim blogu profesor Hartman odwoływał się do wypowiedzi Wolniewicza dostępnej poprzez Głos Racjonalny, a ze względu na duże różnice w poglądach obu ludzi na tematy inne niż edukacja chciałem wstawić tu odpowiedni link, natomiast nie mogę znaleźć tej wypowiedzi Hartmana - ograniczę się do przypomnienia o kultowych baranach). Powiem krótko, że stagnacja i marazm kadry dydaktyczno-naukowej mojego wydziału były zatrważające, a liczba błędów merytorycznych popełnianych na zajęciach wołała o pomstę do nieba. Zapewne łatwo można się domyślić, jak kadra podchodziła do pomysłów typu „zróbmy symulację”, „praca w LaTeX” albo „a może jakiś skrypt, który zrobi to za nas?”. Jeżeli jednak ktoś się nie domyśla, podaję poprawne odpowiedzi: symulacje mieliśmy jedynie na poziomie przepisywania gotowców z Worda do ChemCADa na tylko jednym podrzędnym przedmiocie, LaTeX był zabroniony – głównie Word, ale nie brakowało przedmiotów, gdzie zakazane było używanie komputera do tworzenia np. sprawozdań i wszystko miało być ręcznie, włącznie z wykresami na papierze milimetrowym, zaś zamiast tworzyć skrypt do znalezienia optymalnego rozwiązania wklepywaliśmy losowo liczby do Excela, aż trafiliśmy na coś bliskiego oczekiwanemu optimum (o ile mogliśmy używać Excela na danym przedmiocie). Jeżeli ktoś mi nie wierzy – proszę iść i sprawdzić. Jeżeli ktoś to zrobi - proszę się przygotować na wykłady poświęcone pijaństwu pracowników, pytanie studentów na wykładzie przez prowadzącego o poglądy na temat chorych pomysłów partii rządzącej (pracownik tłumaczy, dlaczego PiS to zło, a potem pyta dziewczyny o ich zdanie na temat aborcji) albo inne ciekawe wydarzenia.

Czy polecam studia na AGH? Nie studiowałem wszystkiego, a jedynie technologię chemiczną na konkretnym wydziale. Dostanie się na mój kierunek wymagało mniej punktów z matury niż dostanie się na kulturoznawstwo (progi punktowe9). O wydziale trudno powiedzieć coś dobrego, o perspektywach zawodowych po studiach tym bardziej, ale czy jest to rzeczywiście dno względem innych kierunków i wydziałów? Szczerze mówiąc wydaje mi się, że przeciwnie – poziom był wysoce powyżej przeciętnej. Jest to jednak jedynie moja opinia i nie potrafię jej udowodnić. Jeżeli to jakiś argument, co nico o wydarzeniach na innych uczelniach wiem od znajomych.

Należy mieć świadomość, że umiejętność tworzenia cudów-niewidów w technologii X niekoniecznie zostanie doceniona w czasie studiów, a nawet studia często będą przeszkodą w nauce technologii X i vice versa. Choć szczerze przyznam, że mi udało się zrealizować wszystkie plany związane ze stypendiami i nie przeszkodziło mi to szczególnie w nauce we własnym zakresie, a także samoedukacja nie pozbawiła mnie „inż.” przed nazwiskiem więc także nie należy przesadzać z tymi zuymi studiami :wink:

Po prostu live is brutal – nie należy oczekiwać, że na wieść o ogarnianiu podłych urządzeń o nazwie komputery pracodawca bądź promotor rzucą się do kolan.

Jak wygląda kwestia zarobków w branży IT?

Z tego co zaobserwowałem, temat zarobków w IT najbardziej elektryzuje ludzi. Skądinąd zauważyłem, że najbardziej elektryzuje ludzi, którzy kompletnie nie nadają się do pracy z komputerem.

Poprzednią odpowiedź potraktuję jako punkt wyjścia. Proszę zapamiętać, że IT to nie jest jakieś Eldorado. Choć często spotykałem się z takim podejściem, wcale nie jest tak, że osoba mogąca wykorzystać zdobycze technologii na własny użytek dostaje piątki na studiach, doktorat ma w garści, a pracodawcy będą się o nią bili. Nie jest też tak, że osoba pisząca w Javie zarabia 10 000 zł miesięcznie na start, a w C++ - 8 000 zł miesięcznie na start i życie jest piękne. Praca w IT to praca jak każda inna. Też trzeba używać wulgaryzmów aby wyrazić swoją opinię na temat projektu/szefostwa/sensowności pewnych rozwiązań, też trzeba coś w pracy robić i też trzeba tej pracy poszukać. Spróbujcie np. znaleźć ofertę jeżeli specjalizujecie się w przestarzałej technologii, albo jesteście specjalistami od COBOLa. Życzę powodzenia. Podobnie w przypadku znawców BASICa, Pascala czy (tym razem nie staroć, ale coś bardzo specyficznego i niszowego) baz danych programowanych w logice. Wcale nie jest tak, że w każdym miejscu na świecie ludzie biją się o wszelkiej maści programistów. Podobnie jest ze wszystkimi innymi osobami pracującymi w mniej lub bardziej czystej branży IT, np. adminami, testerami itd.

Proszę też nie traktować informatyki jako gwarancji zatrudnienia i stabilnej przyszłości – moja ciotka została po informatyce… przedszkolanką :wink:

Faktem jest jednak, że zarobki w IT są nieporównywalnie duże względem ogółu zawodów. Oczywiście w IT możliwie szeroko rozumianym – umiejętność wykorzystania pakietu biurowego to już często gwarancja zatrudnienia i zarobków przekraczających 2 500 zł miesięcznie, a umiejętność wykorzystania zaawansowanego oprogramowania przeznaczonego dla wąskiej grupy specjalistów (np. oprogramowanie typu ChemCAD, Aspen Plus, programy ANSYS) pozwala wybić się na 5 000 zł. Kwoty podaję dla sprawdzonych przeze mnie ofert w Krakowie i pozwolę sobie zauważyć, że nie jest to stricte IT i na ogół nie mówimy o jakimkolwiek programowaniu przekraczającym podstawy podstaw w np. VBA.

Warto dodać, że “wbudowane” w część programów proste wiersze poleceń są bardzo przydatne w pracy, ale to wciąż dalekie od programowania sensu stricto.

W czystym IT (programowanie, adminowanie itp.) zarobki zależą od bardzo wielu rzeczy, ale faktycznie 5 000 zł po dwóch latach często jest pewne, zaś wielu osiąga do 3 razy więcej mając dwa lata stażu. Generalnie to ile ktoś zarabia zależy od aktualnej wartości rynkowej jego pracy, a ta jest zmienna.

W swoim życiu nieszczególnie zajmowałem się technologią, ukończyłem X ze specjalizacją Y. Od pewnego czasu podobają mi się jednak komputery – umiem już używać Worda, a nawet wyświetliłem Hello World! Czy jest dla mnie nadzieja w branży IT? W jaki sposób mam pokierować moje życie, aby pracować na stanowisku Z?

Na pytanie pierwsze odpowiedź jest prawie zawsze twierdząca. Jeżeli ktoś „czuje” komputer to nie będzie miał problemu ze znalezieniem jakiejkolwiek pracy związanej z jego obsługą. Nie ma jednak żadnej konkretnej recepty dla stanowiska Z. Każdy człowiek ma inne doświadczenia, dysponuje różną ilością czasu i w innym tempie przyswaja wiedzę. Porady o tym jak zacząć (albo jak nie zaczynać by się nie sparzyć) są dostępne w sieci i dalej sam coś o ty napiszę, natomiast znalezienie właściwej ścieżki dla siebie jest czymś, co wykracza poza nauki ścisłe – jedni kończą studia, inni technikum, jeszcze inni kursy, dużo osób kształci się samemu, niektórzy mają dobrze postawionych rodziców, …

Czy na stanowisku X przyda się znajomość obsługi komputera na poziomie wyższym niż Y?

Tu znowu bywa różnie i ciężko udzielić odpowiedzi. Spotkałem się z prawnikami i filozofami, którzy dla ogólnej wiedzy używali LaTeX, choć znajomość pakietu biurowego to prawie wszystko, czego potrzebuje wielu prawników i filozofów. Tylko Ty możesz odpowiedzieć na pytanie, czy np. sekretarka skorzysta na umiejętności używania Ubuntu, a nie tylko Windowsa.

Jakie cechy są niezbędne, aby mieć szansę w IT?

Najogólniej rzecz ujmując technologie informacyjne są to technologie związane z przetwarzaniem informacji. Według mnie, aby tworzyć i wykorzystywać już istniejącą technologię związaną z przetwarzaniem informacji należy:

  • wykazywać się wysoką cierpliwością i nie poddawać się nawet po n-tej porażce (na samym SPOJu w jednym zadaniu potrafiłem ich mieć kilkadziesiąt, a to tylko SPOJ)
  • umieć jasno definiować cele (np. precyzyjnie opisywać oczekiwane działanie różnych systemów, programów, …) i drogę, która umożliwi ich osiągnięcie
  • wykazywać się umiejętnością logicznego myślenia. Temat rozwinę, bo tutaj najczęściej jest pies pogrzebany. Problemy konceptualne mogą dotyczyć wyboru optymalnej topologii sieci / drukarki / języka programowania pod względem finansowym i czasowym albo sposobu tworzenia dokumentacji, aby klient skakał z radości na jej widok. Natomiast NIGDY nie mogą dotyczyć logiki. Jeżeli masz problem z analizą warunków logicznych, np. kultowa zagadka Einsteina jest dla Ciebie nie do przejścia albo zaprzeczenie implikacji to dla Ciebie czarna magia – przykro mi, ale nie masz najmniejszych szans w IT. Powtarzając za jednym z prowadzących z czasów studenckich – nie warto uczyć się matematyki, jeżeli nie jest się w stanie zrozumieć jej na poziomie umożliwiającym modelowanie jakiegoś zjawiska. Osoba mająca problem z przetwarzaniem prostych struktur logicznych najzwyczajniej wyłoży się, gdy będzie trzeba zrobić coś, czego nie da się nauczyć na pamięć. Wyłoży się zatem w każdej sytuacji związanej z programowaniem, administrowaniem itd., w większości związanych z zawodowym zastosowaniem pakietu biurowego i ogólnie będzie z nią krucho. Komputery nie są dla wszystkich i nie należy próbować tworzyć cudów, jeżeli ma się problemy już z podstawami. Analogicznie ma się sytuacja z matematyką – jeżeli dodawanie ułamków zwykłych jest dla kogoś czarną magią, niech nie wybija się jako matematyk, księgowy, statystyk itd. Oczywiście tak jak dodawanie ułamków nie jest niezbędne by wybijać się w handlu tak samo alternatywy i koniunkcje nie są niezbędne, by napisać krótki raport. Należy jednak mieć świadomość swoich ograniczeń.

W tym temacie rzucę kultową wypowiedź znanego fizyka, którą przekopiowałem z książki “Feynman radzi. Feynmana wykłady z fizyki”. Jest to część porady, jaką Feynman udziela (naj)słabszym studentom, dla których przerabiany materiał jest wręcz nie do przejścia. Zacytowany fragment odnosi się do tych studentów, którzy pomimo dużych trudności w nauce nie potrafią się pogodzić z posiadaniem pewnych ograniczeń (mimo tego, że być może w innych dziedzinach są fenomenalni, a także mimo faktu, iż fizyka to nie wszystko) i chcą za wszelką cenę być najlepszymi, najwybitniejszymi, najlepiej wykształconymi, najlepiej zarabiającymi, …

On the other hand you can make a mistake: some people may drive them selves to a point where they insist they have to become Number One, and in spite of everything they want to go to graduate school and they want to become the best Ph.D. in the best school, even though they’re starting out at the bottom of the class here. Well, they are likely to be disappointed and to make themselves miserable for the rest of their lives being always at the bottom of a very first-rate group, because they picked that group. That’s a problem, and that’s up to you - it depends on your personality. (Remember, I’m talking to the guy who came into my office because he’s in the lowest tenth; I’m not talking to the other fellows who are happy because they happen to be in the upper tenth - that’s a minority anyway!

W czasie kopiowania z pdfa natrafiłem na pewne drobne trudności, ale wypowiedź powinna być zrozumiała. Przy okazji stanowi mały test znajomości inglisza. Nie rozumiesz tekstu? Nie myśl póki co o programowaniu i doucz się języka :wink:

Jak bardzo w pracy programisty przydają się SPOJ i konkretne, klasyczne algorytmy?

Według moich doświadczeń… praktycznie wcale. W XXI wieku większość złożonych i prostych algorytmów została już włożona do całej rzeszy bibliotek. Obecnie rynek pracy stawia na znajomość technologii (jak zrobić X w Y), a nie na znajomość algorytmów typu KMP. Widać to zresztą już na etapie rozmów kwalifikacyjnych – najczęściej zadania algorytmiczne dotyczą czegoś trywialnego – napisz kod, który posortuje coś w optymalnym czasie (na ogół takie sortowanie można zrobić w O(n)), napisz kod, który wypisze potęgi liczby 2 od 1024 do 1 itd. W Motoroli kod miałem zapisywać na kartkach (oraz zostałem zapytany, co to w ogóle jest SPOJ :wink: ).

Pytania teoretyczne również są całkiem proste i nigdy nie polegają na zapisywaniu kolejnych kroków złożonego algorytmu. Raczej coś typu „quicksort vs bąbelki – co jest lepsze i dlaczego oraz jak to plus minus działa”. Za hardcore uznaję zadanie typu „uzasadnić na rysunku, że wyszukiwanie w drzewie może wykonywać się w czasie O(n) oraz podać cechę drzewa, która związana jest ze skróceniem tego czasu do O(logn), a także podać podstawę tego logarytmu i wyjaśnić, dlaczego nie ma jej w zapisie O(logn)”.

Zdarzają się pytania, które luźno powiązane są z algorytmiką, np. jak w C++ zaimplementować stos na mapie, o ile w ogóle jest to możliwe.

Z algorytmiką na ogół związanych jest kilka pytań na rozmowie kwalifikacyjnej, a cała reszta dotyczy technologii – czy ten kod się skompiluje, jak działa funkcjonalność X, czy można coś zapisać lepiej, jakby Pan zrobił Y, … . Błądząc po rynku pracy odniosłem wrażenie, że łatwiej zostać programistą mając nijakie pojęcie o algorytmach i duże doświadczenie w tworzeniu konkretnych projektów niż będąc mistrzem algorytmów wszelakich, ale bez doświadczenia w kodzeniu czegoś większego. Uwaga ta dotyczy nie tylko programowania, ale całej szeroko pojmowanej branży IT – proszę nie spodziewać się pytań o algorytmy pozwalające analizować reaktor przepływowy, ale już pytanie o sposób przeprowadzenia takiej analizy w jakimś programie komputerowym jest wysoce prawdopodobne. Także wyprowadzenie równań Naviera-Stokesa, a następnie dostosowanie ich do analizy ruchu spalin o danych parametrach pozwalających na dokonanie X uproszczeń nie będzie tematem rozmowy kwalifikacyjnej. Natomiast pytanie o sposób wykonania symulacji ruchu spalin w jakimś programie jak najbardziej może się trafić.

Jak bardzo przydatne są konkursy algorytmiczne?

Abstrahując od samorozwojów wszelakich – są brane pod uwagę w czasie rekrutacji i mogą być cennym atutem. Dotyczy to jednak wyłącznie sytuacji, gdy ktoś zajmuje jakieś sensowne miejsca w tych konkursach. Sukces pod tytułem „wystartowałem i nawet zrobiłem jedno z 20 zadań” nie jest czymś, czym powinno się chwalić chcąc na poważnie robić coś w IT.

Nie spotkałem się z jakimkolwiek zainteresowaniem konkursami algorytmicznymi poza środowiskami programistycznymi. Według moich obserwacji konkursy algorytmiczne nie są istotne dla wszelkiej maści hal fabrycznych i laboratoriów, środowisk mgr inż. itd. Natomiast wśród samych programistów zainteresowanie algorytmiką sprowadza się do pisania programów komputerowych realizujących określone funkcjonalności w rozsądnym czasie – żadnej magii, abstrakcji, teorematów, wysublimowanych metod, rachunków lambda etc. Konkurs algorytmiczny musi zatem dotyczyć implementacji algorytmów (i to we współczesnych językach programowania!), a nie np. dowodzenia własności algorytmów w ramach jakiegoś uczelnianego konkursiku.

Nie zalecam przeceniać wartości olimpiad (read it20).

Co bardziej liczy się w IT: teoria czy praktyka?

Praktyka >> teoria.

Jaką wartość w branży IT mają wszelkiej maści certyfikaty i papiery potwierdzające ukończenie kursów / szkoleń / studiów?

Podobną, jak np. w branży biotechnologicznej czy każdej innej :wink: Chyba mogę polecić pewną wypowiedź44, a nawet dwie19.

Czy i dlaczego (nie) polecasz branży IT?

Każda praca ma swoje cechy, które dla jednych są wadami, a dla innych – zaletami. Zaobserwowałem, że w IT pracują ponadprzeciętnie sensowni ludzie – w biol-chemach wszelakich nie spotkałem osób o tak szerokiej wiedzy czy inteligencji pozwalającej trzaskać problemy, które dla wielu ludzi są nie do pomyślenia. W IT zarobki są także znacznie wyższe niż w innych branżach – nawet składanie i sprzedawanie komputerów jest według moich obserwacji bardziej opłacalne niż składanie i sprzedawanie np. zabawek. Czy to się komuś podoba czy nie, programować trzeba coraz więcej rzeczy – nawet samochody i tostery. Jednocześnie kodowane na coraz wyższym poziomie są np. roboty i inne urządzenia, które sprawiają, że np. analiza gazu wymagająca niegdyś wielu ludzi i mnóstwa pieniędzy, jest obecnie przeprowadzana w parę chwil przez jedną osobę, która nawet nie musi mieć wielkiej wiedzy na temat istoty wykonywanego pomiaru. Zakup sprzętu także szybko się zwraca. Zapotrzebowanie na programistów implikuje zapotrzebowanie na pentesterów, osoby biegłe w obsłudze danych programów komputerowych, adminów, sprzętowców etc. W efekcie IT ma przyszłość w przeciwieństwie do wielu innych branż, np. związanych z górnictwem węgla kamiennego i brunatnego.

Osobiście nie polecam jednak IT ze względu na powyższe kwestie, które jednak mogą być dla kogoś istotne. Polecam IT ze względu na fakt, że branża ta daje mnóstwo rozrywek intelektualnych. Tu coś trzeba zaprogramować, tu odkryć, dlaczego coś nie działa, tu siebie bądź kogoś czegoś douczyć, tu komuś coś pokazać, tu wybrać sensowny sprzęt, tu podpiąć jakieś kable, tu pobawić się w hackera, … . W mojej opinii wyłącznie praca w IT daje tak dużo możliwości, a nawet całych gotowych ścieżek rozwoju intelektualnego. Nie spotkałem się z czymś takim nigdzie indziej, np. w inżynierii bardzo często wszystko kończy się na żmudnym żonglowaniu wzorami czy gotowymi algorytmami, np. istnieją konkretne standaryzowane metody poboru i analizy próbek albo konkretne równania empiryczne pozwalające coś tam policzyć. W IT tego nie ma – są jakieś wzorce, ale ich zastosowanie jest twórcze, a nie odtwórcze – za każdym razem trzeba nad tym myśleć, a nie podstawiać inne wartości do wzorów. Także w pracy naukowej wiele zagadnień ostatecznie kończy się na żmudnym siedzeniu w laboratorium i np. jak to było w moim przypadku – wałkowaniu i przesiewaniu próbek gleby. Dość podobnie jest w medycynie czy naukach humanistycznych.

Za wadę IT uważam wybitny nacisk na specjalizacje, o którym wspominał już Allan Bloom w swojej kultowej książce „Umysł zamknięty”. Specjalizacja, o ile ktoś znajdzie pracę w swoim fachu, gwarantuje dochody o jakich niektórzy ludzie mogą tylko pomarzyć. Problem polega na tym, że jest to – co uzasadnia wspomniany profesor, ja ograniczę się do faktografii – iście diabelski pakt, w ramach którego gwarancję wysokich dochodów i zatrudnienia otrzymuje się w zamian za upośledzenie intelektualne i społeczne widoczne w prawie każdym obszarze życia. W świecie IT można też spotkać dość wiele osób przekonanych o swojej wyższości, ale to chyba wszędzie. Poza tym IT sprzyja tak zwanej nerdyzacji, ale jeżeli ktoś umie unikać takich ludzi, będzie fajnie :wink:

W życiu poświęciłem się realizacji pięknych idei i zapomniałem, że trzeba z czegoś żyć. Czy kapitalistyczne świnie typu Microsoft albo jakakolwiek inna forma intelektualnej prostytucji w branży IT mogą być dla mnie jakimś wyjściem?

O ile godzi się to z Twoją wizją świata i spełniasz inne warunki (część z nich przedstawiłem w tym poście), czemu nie?10

Załóżmy, że poświęciłeś się tworzeniu (jedynej prawdziwej i wartej uwagi) książki o matematyce dla dzieci i to właśnie jest Twoja piękna idée fixe. To niewątpliwie cudowne opus vitae tworzyłeś w jakimś edytorze WYSIWYG. Otóż praca w branży IT może Ci pomóc w walce o Twoje ideały! Przykładowo umiejętności, jakie nabędziesz w pracy mogą przyczynić się do poznania przez Ciebie zupełnie nowych technologii, np. nauczysz się pracować z dokumentacją w takim stopniu, że LaTeX będzie dla Ciebie naturalnym wyborem! W efekcie rozwiniesz się intelektualnie, zdobędziesz nowe umiejętności, może nawet zmienisz swoje ideały, a z całą pewnością obniżysz koszty pracy nad książką, czas pracy i poprawisz jej jakość :wink:

Co najbardziej interesuje pracodawców w branży IT?

Truizm: praktyka >> teoria. Poza tym znajomość technologii, chęć nauczenia się nowych rzeczy, chęć rozwoju, odpowiedni poziom intelektualny (np. powinieneś wiedzieć, jaki kąt tworzą wskazówki zegara kwadrans po trzeciej52) itd. Dużo by mówić i myślę, że tak na dobrą sprawę nie ma o czym mówić – wszystko dostatecznie nakreśliłem już w tym poście, albo w łatwo dostępnych miejscach nakreślili to inni.

Jaka jest Twoja obecna sytuacja zawodowa?

Założyłem własną działalność gospodarczą. Mam jednego stałego klienta (ok. 9h dziennie), natomiast w najbliższym czasie będę chciał znaleźć kogoś jeszcze. Zajmuję się głównie tworzeniem dokumentacji do firmowych programów, nadzorowaniem działania tych programów (i siłą rzeczy pilnowaniem ludzi, którzy coś w tych programach chrzanią), a także w mniejszym stopniu tworzeniem procedur i algorytmów, programowaniem w Harbour oraz pracą z bazą danych PostgreSQL.

Ponieważ firma klienta nie jest szczególnie duża, z tych 9h dużo czasu mam tak naprawdę dla siebie. Czas ten inwestuję w naukę języków programowania, baz danych, Vima, a od pewnego czasu także sieci. Oczywiście priorytety w tej nauce mam różne, ale to raczej nieistotne w tym poście.

Dużym plusem działalności jest wyższa świadomość polityczno – księgowa, o ile oczywiście ktoś chce (a ja chcę) to ogarnąć i nie ucieka się do płacenia księgowej / używania programów komputerowych robiących większość roboty za niego. Można się dowiedzieć czym różni się ubezpieczenie społeczne od zdrowotnego, czym różni się VAT-7 od VAT-R, co to OOV, co to pomoc de minimis, czym różni się PIT-36 od PIT-36L, co to PUE, co to system rezerw cząstkowych, … . Plusem są też wyższe zarobki na start niż na ogół w branży IT, choć brak pieniędzy za urlopy (a właściwie brak urlopów) to równoważy. Wady chyba są wszystkim znane i często podawane w mediach więc co ja się będę powtarzał :wink:

Jakie źródła wiedzy o programowaniu i ogólnie IT polecasz, a jakich nie?

Zacznij szukać tu56. Przeszukaj też forum polskiego SPOJa. Źródła anglojęzyczne są zwykle lepsze niż polskojęzyczne. Jeżeli masz problemy z angielskim i nie rozumiesz co czytasz – zacznij od języka, a potem wróć do myślenia o IT. Zawsze staraj się korzystać z dokumentacji, a nie z samouczków (tutoriali). Jeżeli jesteś jeszcze młody i ogarniasz angielski – polecam zacząć od Khan Academy35 (koniecznie wersja english!). Rób projekty. Resztę poznasz w praktyce :slight_smile:

A teraz trzy istotne konkrety, z którymi sam się spotkałem.

Dzieła Grębosza dotyczące C++ polecam osobom takim jak ja, tzn. osobom, które muszą przestawić swoje myślenie na IT. Dla osoby zajmującej się czymś dalekim od IT myślenie o wskaźnikach i rekurencjach może być na początku trudne, a Jerzy Grębosz wprowadza ludzi łagodnie w tego rodzaju pojęcia. Jeżeli ktoś chce spróbować tych książek, niech najpierw zapozna się ze stroną19 autora. Osobom od początku ukierunkowanym na świat programowania albo mającym pojęcie o programowaniu odradzam na rzecz dokumentacji albo bardziej konkretnych pozycji książkowych.

Pasja Informatyki alias Mirosław Zelent to coś, od czego zaczynałem. Dawno temu, gdy istniały tylko pierwsze 3 filmiki o podstawach C++. Na szczęście szybko odkryłem, że autor chyba sam uczy się programowania a potem tworzy tutoriale o tym, czego się nauczył. Dzieła Mirosława Zelenta mogą się opłacić osobom naprawdę zielonym i takim osobom polecam pierwsze odcinki różnych kursów tego autora. Im dalej tym (niestety) gorzej. Więcej info tu. Przy okazji – w końcu chciało mi się znaleźć - pseudonauka czy filozofia Mirosława Zelenta61.

No i na koniec SPOJ. Osobiście traktuję SPOJa tak, jak niektórzy ludzie traktują krzyżówki, sudoku albo szachy - super rozrywka intelektualna :wink: Według mnie warto, ale jeżeli ktoś myśli o IT na poważnie - proszę pamiętać, że SPOJ przydaje się tylko w niektórych zawodach, a do tego w małym stopniu - trzeba robić coś poza nim!

  • created

    Jan '18
  • last reply

    Dec '20
  • 5

    replies

  • 3.4k

    views

  • 3

    users

  • 15

    likes

  • 25

    links

Współczuję studiów. Na typowo informatycznych jest nieco lepiej, ale wciąż ilość przedmiotów, na których przydaje się “czysty spoj” jest niewielka.

Warto jeszcze dodać, że czasem można się spotkać z automatycznymi sprawdzarkami podczas procesu rekrutacji (co niestety nie musi być spójne z umiejętnościami potrzebnymi na dane stanowisko). Jeśli zależy nam na tej ofercie, wtedy doświadczenie ze spoja przydaje się bardzo.

Java pod względem trudności jest zbliżona do C++. Python jest teoretycznie nieco łatwiejszy. Algorymy - Ilustrowany przewodnik15 posiada przykłady w Pythonie. Polecam jako pozycję na start jeśli lubisz uczyć się z książek.

Zgoda, ale dlatego, że wszyscy tak mówią spróbuj też znaleźć programistę COBOLa jako pracodawca jeżeli jesteś zmuszony ją wspierać. Ofert jest bardzo mało, ale jak już się trafi, bo poprzedni programista zmarł śmiercią naturalną to potrafią zapłacić ogromne pieniądze komuś kto będzie potrafił po nim ciągnąć projekt.

Przyznaję się, byłem autorem, tego mało popularnego wątku ;-). Napisałem go w odpowiedzi na tego typu pytania, zadawane mi także prywatnie. W zasadzie mógłbym podpisać się obiema rękami pod twoim postem @tarpauwatratar. Dodatkowo chciałbym zwrócić uwagę na znajomości języka angielskiego. W dzisiejszych czasach to konieczność. Nawet jeżeli szukasz pracy w polskiej firmie IT, pracodawca może zawsze wymagać i sprawdzić twoją znajomość języka. Oczywiście wymagany poziom będzie inny gdy będziesz szukał pracy np w Googlach a zupełnie inny w polskiej firmie.

Materiałów jest aż nadto, a ciągle pojawiają się nowe, więc ktoś zainteresowany danym językiem nie powinien mieć problemu. Mam na myśli przede wszystkim źródła angielskojęzyczne [i książki i internet], ale polskich też jest chyba wystarczająco dużo do rozpoczęcia “zabawy”?

SPOJ nie jest panaceum, czy cudownym środkiem, na którego dźwięk otworzą się bramy do królestwa. Liczy się praktyka i umiejętności, a dopiero na drugim [trzecim, po języku] wiedza teoretyczna. Jeżeli nie potrafisz swojej wiedzy teoretycznej przetwożyć na umiejętności praktyczne, chociażby odpowiadając na pytania rekrutanta, to ani wszelkie kursy wideo, przeczytane strony znalezione [przypadkowo] w internecie, czy przeczytane książki a nawet wszelka aktywnośc na SPOJ’u [rozwiązywanie zadań, pomoc na forum itd] nic nie pomogą. Ale “działając” na SPOJ’u aktywnie możesz zdobywać i wiedzę teoretyczną i praktyczną jeżeli robisz to całkowicie samodzielnie, wykorzystując i “studjując” dobre źródła wiedzy. To samo dotyczy samodzielnego “studiowania” książek. Nie wystarczy “suche” czytanie lecz trzeba aktywnie wykorzystywać treści “dobrej” książki.

A tutaj kłania się aktywność i odpowiednia dieta-odżywianie. Bo w przeciwnym wypadku często może to być bardziej śmierć na skutek choroby cywilizacyjnej [zawodowej] wynikającej z za małej aktywności fizycznej [mało ruchu], złego odżywiania, spania itd. :wink: i taka śmierć już może nie jest taka zupełnie naturalna, bo można było jej unuknąć?
Jak POzostać [jak najdłużej] prawdziwym [żywym] programistą --> Jak [po]zostać PRAWDZIWYM PROGRAMISTĄ? ;-) :wink:

Co mnie nie zabije to mnie wzmocni :wink:

Mea culpa. Zapomniałem o tym wspomnieć. Faktycznie istnieje taka praktyka. Jest chyba dość rzadka (czytaj: nigdy nie widziałem w praktyce) i dotyczy raczej lukratywnych posad. Znam jednak z różnych osobowych źródeł opowieści o dzikich zadaniach w Excelu do zrobienia na czas, z czego ok. połowa punktów jest z VBA. Dotyczyło to jednak nie byle jakiej pracy w bankach. Pewnie szczegóły da się łatwo znaleźć w sieci w ramach “VBA Excel testy”.

Skoro da się arkusz kalkulacyjny to zapewne da się i języki programowania.

Ja do pracy przy Excelu miałem robiony… test na inteligencję, rozumowanie numeryczne (dzikie wykresy i tabelki, na podstawie których trzeba było szybko policzyć np. łączne wydatki na coś tam itd.) i czytanie ze zrozumieniem :wink: Test był tak wyśrubowany czasowo i tak złożony, żeby nie dało się spokojnie przeczytać i przeanalizować nawet prostego problemu. Zgaduję, że w ten sposób dodatkowo sprawdzano, jak kto radzi sobie ze stresem i presją czasu. Poza tym test był wykonywany zdalnie po krótkiej rozmowie telefonicznej z rekruterem.

Myślę, że SPOJ, Fraktal, Algoliga itd. mogą być pomocne dla osób celujących w takie stanowiska, ale gdybym sam w nie celował, wybrałbym jednak inne metody samotresury :wink:

Również mój błąd, że nie zwróciłem na to uwagi. Oczywiście jest to prawda.

Me too :wink:

Rzeczywiście, mogłem za słabo zaakcentować to w moim poście. Faktycznie inglisz is nesesery. Praktycznie wszędzie. Zgadzam się z Twoimi uwagami co do poziomu języka - wszystko zależy od stanowiska, zawodu, firmy itd. Jednak podstawy są co najmniej wskazane.

Co do reszty Twojego postu, oczywiście wszystko jest prawdą.

2 years later

Obiecałem sobie, że gdy dojdę do “szczytu” w “czystym” programowaniu, uzupełnię ten wątek. Jednocześnie będzie to mój ostatni wpis w tym temacie – dalej już zajść nie zdołam ze względu na skończoność czasu, jakim dysponuję i jaki wchodzi w skład jednej doby. Mogę zatrudnić ludzi, ale wtedy wypadałoby się wypowiedzieć na forum dla osób związanych z zarządzaniem, a nie na SPOJu.

Niestety, zaszła pewna komplikacja: od dłuższego czasu życie nie daje mi czasu na SPOJa. Z tego powodu pytania, na które tu odpowiem, nie będą pochodziły z forum, ale z mojego życia zawodowego oraz prywatnego – od rozmów przy piwie po popularne anegdoty w sieci. Poza tym chętnie uzupełnię / poprawię dotychczasowe odpowiedzi bazując na moim o kilka lat większym doświadczeniu.

Może najpierw napiszę, co się zmieniło przez ostatnie lata. W skrócie: zawiesiłem działalność na ok rok, który wykorzystałem m. in. na dokończenie podręcznika chemii ogólnej, nad którym pracowałem. Obecna, finalna wersja ma ok. 760 stron. Wydawnictwo znalazłem bez większych trudności, ale nie spieszno mi wydać 35k za 1000 egzemplarzy (niemniej dzięki za pomoc @redysz – wiedza o rynku wydawniczym pomogła mi ocenić wartość rynkową książki o – nolens volens – dość niszowej tematyce). Po odwieszeniu działalności skupiłem się na szeroko rozumianych usługach informatycznych (aczkolwiek w ponad 99% przypadków chodzi po prostu o skodowanie czegoś). W tym zakresie mam na chwilę obecną dwóch klientów i jak już napisałem, to szczyt – więcej klientów mieć nie mogę gdyż robię raczej “grube” rzeczy i nie mam czasu na nikogo więcej. Dorywczo, w wolnym czasie, zajmuje się pisaniem prac naukowych (badania, lic, inż, mgr, dr, …). Nie będę siał propagandy o tysiącach sfałszowanych publikacji naukowych w międzynarodowych “żurnalach” – wszyscy wiemy, kto najczęściej korzysta z takich usług i jakie prace tworzę :slight_smile: Poza tym jakieś tam miniprojekciki na githubie (dla was nieprzydatne ze względu na użytą technologię), ale głównie w okresie zawieszenia działalności bo teraz nawet nie mam na to czasu. I chyba tyle istotnych faktów w tym temacie.

Pragnę (ponownie) zaznaczyć, że wszystkie odpowiedzi mają charakter zupełnie subiektywny i proszę nie traktować ich jako jakiejś wskazówki od guru.

Jaki język polecasz na start?

Na chwilę obecną dokumentację, tutoriale i wszystkie inne materiały związane z językiem Python biją rekordy więc zacząłbym od tego języka. Oczywiście zalecam od razu korzystać ze źródeł w języku an(g)ielskim. Odradzam C++ z bardzo wielu powodów, o których jednak nie ma sensu pisać próbując odpowiedzieć na takie pytanie osobie początkującej.

Jeżeli kogoś interesuje nie tyle umiejętność programowania co przyszłość w branży IT, mogę polecić jeszcze: JavaScript, C#, po tym wszystkim Java. To na start aż nadto i wg mnie takie technologie najlepiej oddają obecną oraz przyszłą sytuację na rynku (stąd: Python, raczej C# niż Java), a także sposób uczenia się przez przeciętnego człowieka (stąd na start lepiej Python i JS niż C# i Java).

Jestem przekonany, że w miarę pracy z wymienionymi każdy pozna ich wady i zalety, a także różne powiązane technologie i problemy więc taka krótka odpowiedź jest wbrew pozorom wystarczająca. Mówiąc o powiązanych technologiach mam na myśli zwłaszcza JS, o którego wadach dużo by pisać, a prawie zawsze spotyka się go przy okazji takich magicznych słów jak HTML, CSS itd.

Jak wygląda kwestia zarobków w branży IT?

Rozszerzę ten temat o obserwacje, jakie poczyniłem rozmawiając z różnymi ludźmi (w tym klientami i konkurencją).

Jedna z pierwszych osób, z którymi miałem szczęście współpracować, stwierdziła, że “źródełko wysycha”. Rzeczywiście – wymagania, jakie stawiano na początku kariery temu już prawie emerytowanemu programiście mają się nijak do tych, które stawia się mojej skromnej osobie. Znam wiele osób, które mają już >40 lat a na rozmowie kwalifikacyjnej pytano je o różnice między stałą a zmienną albo jakieś inne banały. Śmiem twierdzić, że wydrukowany kod (dla ciekawskich: QT5), który otrzymałem i miałem opisać “co to robi” linia po linii to trochę wyższy level rozmowy rekrutacyjnej. Zmienia się też sytuacja jeśli chodzi o możliwość wyciągania mitycznych 15k.

O ile 30 lat temu prawie każda firma w Polsce zaczynała od samodzielnego tworzenia oprogramowania w technologiach tak potężnych i znanych (dzisiaj to sarkazm, kiedyś truizm) jak Clipper czy Pascal, obecnie większość oprogramowania kupuje się, a przeciętny student zorientowany na znalezienie pracy poza Biedronką potrafi opisać czym różni się SAP od Optimy. Efekt jest oczywisty: współcześnie raczej ciężko zrobić karierę od zera do miliardera próbując napisać w domu kolejny program do księgowości, podczas gdy kiedyś wielu koderów zaczynało właśnie od tego.

Powyższy opis należy zmodyfikować adekwatnie do konkretnej części tak zwanej branży IT, ale ogólna zależność pozostaje stała. ERPy, WMSy, systemy FK i inne takie kupujemy a nie tworzymy i są sprawdzone firmy, które je dostarczają. Cytowany już znajomy miał wieeele lat temu klienta, który założył firmę i chciał zaoszczędzić na… systemach operacyjnych. Z tego powodu zażądał, by w firmie wszystko działało na Linuxach. Dzisiaj brzmi to absurdalnie i takie eksperymenty, które pozwalały zdobyć doświadczenie, są zwyczajnie nieakceptowalne. Skoro o systemach mowa: czy wyobrażacie sobie, że kiedyś mogła istnieć komercyjna alternatywa dla dzieł Microsoftu, np. OS/2? Skądinąd wiele z tych dziś już zapomnianych rozwiązanych jest z rozrzewnieniem wspominanych przez starszych przedsiębiorców. Dzisiaj nie ma też wielkiego problemu ze wskazaniem tego “jedynego prawdziwego” pakietu biurowego. Współcześnie trudno wzbudzić czyjeś zainteresowanie robiąc grę komputerową w SDL, choć kiedyś “byle” Allegro było potężną technologią. Znowu – mówią wam coś takie wyrażenia jak CRYENGINE albo Unity? No właśnie. I chyba każdy wie co się liczy na rynku. Dość podobnie wygląda sytuacja ze stronami internetowymi, gdzie czasy Pajączka albo ludzi robiących wszystko samemu bez frameworków przeszły do historii. Jak nie wierzycie to poszukajcie pracy dla developera, który zna tylko HTML i może kiedyś zrobił jakieś gwiazdki za kursorem. Skądinąd – słyszeliście może słowo WordPress?

Podsumowując: branża IT stopniowo normuje się na rynku. Coraz częściej wysokie zarobki są związane z projektami zagranicznymi. Nie ma w tym nic niezwykłego – wystarczy zerknąć na kurs euro by zrozumieć, że magazynier na zachodzie musi zarabiać więcej niż magazynier w Polsce. Różnica między magazynierem a programistą polega na tym, że ten drugi nie musi wyjeżdżać z kraju. I tyle. Choć może nie bo np. australijska emerytura + pensja po przeliczeniu na PLN + inne takie za robienie czegoś z Polski to chyba coś więcej niż “i tyle”? Powyższe kwestie wiążą się również z monopolami – trudno by Microsoft nie miał z czego zapłacić swoim pracownikom, ale Janusz i Grażyna sp. c. tworzący oprogramowanie dla zakładów fryzjerskich mogą mieć problemy z płynnością finansową, a 8k może zarabiają wspólnicy – na pewno nie programiści. Wreszcie wielkie zarobki związane z IT to jak najbardziej zarobki jakiegoś szefa firmy informatycznej, ale zostawiam waszej ocenie ile taki szef programuje a ile (i za ile) programują ludzie, których zatrudnia. Powiem więcej: jeżeli szef koduje to zwykle mamy do czynienia z dość małą, kameralną firemką i zarobki szefa wynikają w dużo większym stopniu z ponoszenia ryzyka (np. wybierania intratnych projektów, optymalizacji podatkowej, ścigania wierzycieli) niż rzeczywiście kodowania w tych projektach. Wyzwaniem jest znaleźć dobrą ofertę, a jej realizację da się powierzyć stażystom w myśl twierdzenia: “każdego programistę można zastąpić skończoną liczbą stażystów. Zazwyczaj jednym”.

Ponownie powołam się na cytowanego kolegę, który zatrudnia kilku ludzi pracujących w C# + administratorów baz danych. Jak zauważa, dobry programista C# powinien zarabiać… 5 000 PLN na rękę. Dlaczego? Bo wyrabiacz kodu to rodzaj sekretarki piszącej bardziej formalne teksty. Osoby, które mają zarabiać, to osoby, które myślą nad tym co piszą a nie zapisują to co im powie osoba ponosząca ryzyko gospodarcze (np. szef firmy, główny prawnik czy księgowy).

Powyższe piszę ze względu na panującą ostatnio modę na przekwalifikowywanie się. Powiem tak: mam brata w policji. Wymagali średniego + matura, zdania testów psychologicznych (pytania i odp są w necie; od chyba kilkunastu lat nic się nie zmieniło a z pytań na inteligencję proszę się nie śmiać bo one i tak są zbyt ambitne jak na obowiązki policjanta), zdania testu sprawności fizycznej (wbrew pozorom nic bardzo trudnego, zobaczcie sami + pamiętajcie, że na siłowniach są nawet kursy specjalnie pod kątem policji) i przejścia rozmowy z psychologiem (w zasadzie formalność). Do tego jakieś bzdety typu wizyta dzielnicowego, który sprawdzał, czy ktoś w rodzinie nie diluje :wink: Mój brat, w przeciwieństwie do mnie, doczeka się emerytury (wszak budżetówka i do tego służba). W dodatku otrzyma prawo do emerytury jakieś 10 lat wcześniej niż ja. Jego studia są dosłownie opłacane przez Państwo – moje były tylko w przenośni bo przecież państwo za żarcie na studiach nie płaci. Mu płaciło. Ba! W szkole policyjnej miał stołówkę i był normalnie skoszarowany. Sama szkoła trwała rok, a studia informatyczne to – do wyboru – 3 + 2 albo 3,5 + 1,5. Pomijam doktorat. Nie słyszałem o studencie informatyki, któremu szkoła płaci co miesiąc 2k. O policjancie też nie – płacenie 2k na rękę co miesiąc w szkole policyjnej byłoby co najmniej wykroczeniem gdyż prawidłowa stawka dla słuchacza szkoły policyjnej wynosi jak pamiętam około 2 800. Po informatyce nie trzeba mieć pracy z automatu (patrz: moja ciocia opisana powyżej), a po szkole policyjnej – zapraszamy. Po informatyce, od siedzenia przy kompie, łatwiej o zawał niż w wyniku chodzenia po ulicy. Serio – w IT często brakuje ruchu. Fakt, policjant ma “nienormatywny czas pracy”, ale z wieloma benefitami (w tym: urlopy czy dodatki motywacyjne) i wynagrodzeniem za każdą nadgodzinę istotnie bardziej klarownym niż w crunchujących firmach z IT. Po dwóch latach brat zarabia ok 4.5k, a jak przepadnie mu zwolnienie z podatków (bo ma mniej niż 26 lat) to i tak kolejne awanse sprawią, że nie straci. Poza tym brat ma w zasadzie nieograniczoną zdolność kredytową – w bankach wiedzą, że strażak czy policjant mają z czego oddać i nie stracą pracy gdy przyjdzie kryzys.

Sorry, ale scenariusz policyjny brzmi wg mnie dużo lepiej niż scenariusz niesamowitej kariery niegdysiejszej sekretarki w branży IT. Ściślej: on jest po prostu realny. Jeśli ktoś chce się przekwalifikować to – nie zniechęcając – radzę zastanowić się czy warto.

Mam znajomą, która ma już z 5 certyfikatów potwierdzających jej umiejętności programistyczne w PHP i dalej zapieprza w marketingu w jakiejś korpo. Od pewnego czasu nie za marne grosze (5k netto), ale wcześniej robiła za 2500 na rękę po 8,5h dziennie (0,5h przerwy przysługującej pracownikowi szef nie uznawał za czas pracy i stąd pracowali 4h + przerwa + 4h). Skądinąd jej czas pracy też się wydłużył bo “bir frajdej” jest obowiązkowy a zarazem wymaga odpracowania. Do tego różne inne “iventy” i wychodzi jak nic 9-10h / dzień. Co jej dały próby przekwalifikowania się poza – według jej słów – wstawaniem o 5 rano żeby mieć 1h na kursy? Wg mnie nic poza uszczupleniem kwoty zgromadzonej na koncie oszczędnościowym.

Serio, nie traktujcie branży IT tak jak starsi ludzie traktują medycynę i prawo bo w żadnej z wymienionych dziedzin nie jest dowolnie kolorowo a sam znam osobę po prawie, która pracuje w sklepie w dziale RTV. I nie – nie zajmuje się tam prawem :slight_smile: Nie traktujcie też tej policji jako jakiegoś super scenariusza na życie – to tylko dowód na istnienie jakichś alternatyw niż bieda albo bycie programistą.

W takim razie gdzie w IT są teraz pieniądze nie licząc prezesów, akcjonariuszy i ich rodzin? Gdzie zarobię programując?

Wg moich obserwacji z branży IT wyłaniają się trzy intratne, przyszłościowe obszary, a to co zostaje to właśnie jakieś stawianie sklepów internetowych, instalowanie Windowsów i inne takie mechaniczne, półautomatyczne zagadnienia cechujące się raczej malejącymi zarobkami i perspektywami. Te obszary to:

  • Prace archeologiczne. Zarobki programistów języków Harbour, Pascal, B, Clipper, dBASE, Cobol, Ada itp. są epickie z tego powodu, że firmy posiadające oprogramowanie stworzone w tych językach upadną próbując je przepisać. Wynika to z faktu, że przepisanie oprogramowania wymusi wstrzymanie wdrażania nowych funkcjonalności, a w dodatku zajmie wiele lat i będzie kosztowało tak dużo, że na wolnym rynku taka decyzja jest beznadziejnie głupia. To z kolei daje okazję do negocjacji stawki – odróżniasz DBFNTX od DBFCDX? Wiesz czemu przed USE warto zrobić SELECT 0? Umiesz uruchomić na Win10 16-bitowy program beż żadnych DOSBoxów mając jego kod i wiedząc, że to Cl*pper 5.x? Witamy na pokładzie. I żeby nie było, że zmyślam – raz w życiu miałem okazję negocjować stawkę 15k netto na B2B. Było to w firmie, która pracowała w Harbour 3.x + Mediator 5.x + MySQL i rozwijała pochodzące z poprzedniego wieku oprogramowanie finansowo-księgowe (FK), do zarządzania magazynem (WMS) i ogólnie do zarządzania firmą m. in. przy użyciu już wymienionych (ERP)

  • Nowoczesne algorytmy i technologie. Tu nie ma co mówić bo to dość oczywisty temat – konwolucja w sieciach neuronowych to dla Ciebie pikuś? Umiesz stworzyć model matematyczny i wykorzystać go np. do optymalizacji jakiegoś problemu logistycznego? Witamy na pokładzie. Skądinąd dla drugiego klienta robię systemy odpowiedzialne za przetwarzanie i rozumienie ludzkiej mowy – z całym zespołem uczestniczymy w sporym, międzynarodowym projekcie, o który mniejsza bo to nieistotne dla tematu. Biorąc pod uwagę przez ilu pośredników to przechodzi, strumień gotówki jest spory :wink:

  • Cybersek. Cały – od osób potrafiących odpowiedzieć na zarzut “RODO nie pozwala wam żądać mojego NIPu do faktury” przez osoby mające wiedzę o testach penetracyjnych po ludzi potrafiących zrobić analizę powłamaniową. Dlaczego ta działka rozwinęła się tak bardzo, że nazwisko pewnego Pana jest konieczne (pzdr dla kumatych) by mieć o czym gadać z kolegami po fachu, a nazwisko jego konkurenta jest na tyle trudne, że raczej stosuje się dwie literki i cyfrę? Z dość podobnych względów jak w przypadku renowacji zabytków: swojego czasu firmy klepały i klepały kod byle by działało a mało kto był zainteresowany wykorzystywaniem luk w oprogramowaniu. Obecnie mamy całe rzesze specjalistów z zakresu włamów i wycieków danych więc ktoś musi istniejące i tworzone na nowo oprogramowanie analizować pod kątem potencjalnych problemów. Od tak abstrakcyjnych ataków jak wydrukowanie czyichś linii papilarnych w celu obejścia skanera po tak banalne kwestie jak ostrzykiwanie SQL.

Jeśli chodzi o całą resztę to wg mnie sytuacja wygląda jak w odpowiedzi na poprzednie pytanie. Jeżeli wystawiacie fakturę na 4 000 PLN + VAT firmie Januszex SA to albo czas zmienić branżę albo czas pomyśleć o w/w wymienionych (wg mnie) przyszłościowych zagadnieniach albo czas zastąpić literki PLN literkami USD a wyrażenie Januszex SA jakąś zagraniczną firmą. Oczywiście mówię o osobach z jakimkolwiek doświadczeniem a nie ludziach wchodzących w branżę bo wtedy sytuacja wygląda inaczej.

Pamiętajcie: w zawodowym programowaniu chodzi o to, aby z tego jakoś wyżyć. I tylko o to.

Jakie pytania spotkałeś na rozmowach kwalifikacyjnych?

Wiele zależało od firmy. Co do zasady unikam tych klientów, którzy rozważając współpracę dają mi do rozwiązania jakieś dzikie problemy próbne, za które nieraz należałoby zabrać na oko nie mniej jak trzy tysiące albo zadają wyłącznie pytania techniczne gdyż to sugeruje, że usługa programistyczna sprowadzi się do wyrabiania kodu i taka praca nie będzie zbyt dochodowa z przyczyn już opisanych. Nie lubię też firm w ogóle nie zadających sensownych pytań. Przykłady na każdą z sytuacji:

  • Dzikie problemy próbne – pewna firma chciała najpierw dostać gotowy program rozwiązujący realny problem logistyczny wymagający zagłębienia się w problematykę teorii grafów i geometrii obliczeniowej a potem łaskawie chciała zerknąć na moją skromną osobę. Oczywiście program miał być za free, a prawidłowe rozwiązanie problemu nie gwarantowało żadnego dochodu. Inna, już polska firma zajmująca się oprogramowaniem do zarządzania firmą transportową chciała rozwiązania dużo prostszego problemu związanego ze specyficznym tworzeniem pewnego stringa w n krokach, ale mimo to również odmówiłem – dobre rozwiązanie z omówieniem to 1-2h a wciąż nie ma z tego ani zysku ani gwarancji na przyszłość. W szczególności firma może zaoferować tylko etat, a mnie umowa o pracę w ogóle nie interesuje.

  • Tylko pytania techniczne – pewna firma rozmowę zaczęła od różnicy między konstruktorem a destruktorem w C++ (serio. Ale powiedzieli, że ostatnio mieli kilku programistów po AGH, którzy nie podołali) a skończyła na polimorfizmie. Fajnie, spoko, ale nie dla mnie – wolę siedzieć z kartką i ołówkiem/długopisem a kodować w ostateczności. Nie chcę siedzieć i klepać kod na godziny.

  • Pytania bez sensu – w pewnej krakowskiej firmie kazano mi opowiedzieć o sobie zaczynając od liceum. Nie padło żadne pytanie związane z programowaniem czy algorytmiką. Serio – takie firmy też istnieją.

Żeby nie było – to ja. Wiem, że są osoby, które z kolei szlag jasny trafia gdy widzą rekurencję i czują się świetnie właśnie w firmach o charakterze czysto technicznym. Rozumiem, nie mam nic przeciwko. Tylko w takiej sytuacji trudno o ciekawe pytania bo rozmowy czysto techniczne najczęściej albo opierają się na konkretnym fragmencie kodu (a tego tu przecież nie wkleję bo go nie mam) albo właśnie na liście kilkudziesięciu pytań od “różnica między konstruktorem a destruktorem” przez “jak przekazać tablicę do funkcji” po “mając katalog a w nim różne pliki i katalogi jak wyszukasz te utworzone wczoraj i z rozszerzeniem .txt a następnie zmienisz uprawnienia dostępu do tych plików w taki czy inny sposób wpisując w terminalu dowolny ciąg znaków, nie tworząc plików pomocniczych i mogąc nacisnąć ENTER tylko raz”. Mój obecny klient zastanawiał się czy chemik (patrz: moje wykształcenie, ale książka pozwoliła mi przekuć brak studiów informatycznych w atut więc rozmawialiśmy dalej ^^ ) może programować więc zapytał mnie po co są indeksy w bazach danych i jak zrobić wirtualny konstruktor w C++ (tak, to miało być podchwytliwe).

Ciekawe pytania z rozmów:

  • Jaki kąt tworzą wskazówki (minutowa i godzinowa) zegara kwadrans po trzeciej?
  • Sinusoidalne szyfratory [SMWP_114] (tu opisane wraz z kontekstem)
  • Jak najszybciej wyszukałbym medianę mając tablicę liczb naturalnych (int)?
  • Zaimplementuj najprościej jak umiesz program obliczający n-tą liczbę Fibonacciego. Podaj klasę złożoności obliczeniowej algorytmu i jak można zoptymalizować czasowo program (bez implementacji; ogólna idea).

Wspomnę tu jeszcze nie tyle o pytaniu co o zadaniu weryfikującym zespół do pewnego projektu. Na wejściu dostajemy paski podobne do tych wychodzących z niszczarki do papieru. Jedyna różnica to pewność, że z tych pasków da się ułożyć sensowny tekst i że kartka została wrzucona do niszczarki w taki sposób, że na szerokości paska może pojawić się od zera (coś jak n spacji) do n znaków. Dostaliśmy słownik i tak wymieszane paski z zadaniem odtworzenia pierwotnego tekstu. Oczywiście klient chciał zobaczyć program realizujący to zadanie na podstawie dostarczonego słownika. A co wychodziło z odpowiedniej permutacji pasków z danymi przykładowymi? Jak się okazało – zalecenie by zapoznać się z pojęciem entropii z pracy naukowej opublikowanej przez Shannona w którymś tam roku bo będzie nam to potrzebne w przyszłości.

Pewien mój znajomy, obecnie pracownik Google’a, opowiadał mi o swoich pytaniach na rozmowie. Przedstawię tutaj wszystkie, które pamiętam, jako ciekawostkę. Uwzględnię też te mniej programistyczne:

  • Dany jest ciąg prostopadłościanów o bokach a, b, c będących małymi liczbami naturalnymi. Znajdź najdłuższy niekoniecznie spójny podciąg tego ciągu, w którym każda kolejna bryła może zmieścić się w poprzedniej. Rekruter zezwolił na uproszczenie problemu poprzez pominięcie możliwości obracania figur (zakładamy, że boki prostopadłościanów są równoległe do płaszczyzn utworzonych przez osie OxOz, OxOy, OyOz). Kolega dopiero po zakończeniu rozmowy dostrzegł optymalne rozwiązanie, ale z racji że zaklepał bruta dano mu drugą szansę:

  • Dana jest tablica typu double zawierająca różne liczby rzeczywiste. Oblicz średnią tych liczb (temu zadaniu podołał zwracając uwagę na pewne aspekty arytmetyki liczb zmiennoprzecinkowych i rachunek infinitezymalnych, które były tu kluczowe. Zaproponował jak zminimalizować błąd bez zbędnego myślenia a także podał z nazwy algorytm pozwalający rozwiązać ten problem tak dokładnie jak to możliwe. I tak, to zadanie dotyczyło algorytmów numerycznych)

  • Pracujesz od roku w Google. Właśnie udało się wam coś-tam osiągnąć w projekcie. Opowiedz w jaki sposób przygotowałbyś imprezę firmową dla kolegów i koleżanek z Twojego zespołu.

  • Firma Google powierzyła Ci obsługę klienta, który powiedział, że chce mieć stronę internetową służącą do przechowywania zdjęć. W rolę klienta wciela się rekruter, a rekrutowany - w pracownika Google’a. Zadanie polegało na wyciągnięciu od rekrutera co to “strona do przechowywania zdjęć” a na końcu na przedstawieniu konkretnych technologii pozwalających zrealizować to zadanie w rozsądnym czasie wraz z uzasadnieniem wyboru (np. rekruter zapytał co to jest to całe TLS i po co im to).

Zwracam uwagę, że Google popiera moje podejście do rynku IT :slight_smile: Nie pytamy o język tylko dajemy konkretne problemy typu SPOJ do rozwiązania. W zamian oferujemy “pinionszki” na trochę wyższym poziomie niż 5k. Zwracam też uwagę, że wbrew stereotypom programiści pracujący / realizujący projekty jako podwykonawcy dla DOBRYCH firm nie siedzą tak wiele przy kodzie (do prostopadłościanów wolałbym dostać najpierw kartkę i długopis a dopiero potem może być jakiś kompilator), nawet jeśli są odludkami to nie są antyspołecznymi nerdami (muszą umieć zrobić fajną imprę i odpowiedzieć sensownie na uwagę rekrutera, że piwo generalnie jest dobrym pomysłem, ale w zespole jest Ahmed stroniący od EtOH), a także są zorientowani biznesowo (rozumieją klienta oczekującego jakiejś usługi). Powiem więcej: jeśli w jakiejś firmie rozmawialiśmy o kwestiach technicznych to dużo częściej chodziło o dopasowanie do konkretnego projektu niż o kwestię współpracy, która była przyklepana problemami algorytmicznymi. Również w Google, po rekrutacji, wzmiankowany kolega rozmawiał z różnymi zespołami i szukał czegoś dla siebie. Tam już pytano o dziedziczenia wielobazowe, ale by ocenić co mógłby robić w konkretnym projekcie i co może się mu najbardziej podobać a nie w ramach rekrutacji.

Jak Twoja odpowiedź na pytanie “Jak bardzo w pracy programisty przydają się SPOJ i konkretne, klasyczne algorytmy” ma się do powyższego?

Doskonale. Programista nie musi znać matematyki. Ta przydaje się dopiero dobrym programistom :slight_smile: Ale żeby nie skłamać: też nie wszystkim i wielu zaszło daleko przy użyciu swojej sporej wiedzy technicznej a nie ze względu na talent do pakowania prostopadłościanów przy określonym kącie wskazówek zegara. Wreszcie klasyczne i konkretne algorytmy to np. Dijkstra i nigdy nie słyszałem pytań z nim związanych. Z kolei równania rekurencyjne to bardzo mało konkretna (czyli ogólna) klasa problemów matematycznych.

Przedstawiłem już przykładowy “jakościowy” podział branży IT na tę związaną z zabytkami, algorytmami i bezpieczeństwem. Ja z tych rzeczy w różnym zakresie zajmuję się pierwszymi dwoma dziedzinami. W ostatniej oczywiście wciąż są algorytmy, ale raczej na zasadzie “jak działa SSH” niż “zaimplementuj RSA”. Pytania są tam zatem zupełnie inne niż wymienione powyżej, nieraz mocno techniczne i nie ma w tym niczego złego.

Skądinąd ciekawostka z mojego życia. Ze względu na skrzywienie algorytmiczne wyniesione ze SPOJa przy rekrutacji do projektu związanego ze wspomnianymi już językami naturalnymi i ich przetwarzaniem zostałem zapytany o znaczenie programowania dynamicznego w rozwiązywaniu problemów pojawiających się w rzeczywistych projektach informatycznych. Warto dodać, że rekrutował mnie człowiek po wiadomej tarnowskiej szkole, z dr z zakresu bioinformatyki i sukcesami w Potyczkach Algorytmicznych (o OI nic nie wiem). Poza tym pytanie nawiązywało do mojego osiągnięcia u drugiego klienta gdzie wymyśliłem pewne równania i sprowadziłem dość złożony problem dotyczący wydawania towaru do sieci przepływowej rozwiązującej problem kojarzenia małżeństw i (właśnie) jakiejś wariacji wydawania reszty przy użyciu minimalnej liczby monet. Moja odpowiedź, iż programowanie dynamiczne jest w zasadzie bezużyteczne w problemach biznesowych i ogólnie stosowanie matematyki jest ryzykowne a poza tym zazwyczaj nieopłacalne spowodowała kilka sekund niezręcznej ciszy i odpowiedź drugiej strony o tym co robili dla jakiegoś urzędu i jak bardzo przydają się programiści którzy wiedzą coś o algorytmach. Potem się wybroniłem, ale mniejsza ^^

Zapytacie więc ponownie dlaczego człowiek zarabiający na matematyce w programowaniu nie ma zbyt dobrego zdania o matematyce w programowaniu? Bo Google jest jeden, a w większości projektów ambitnych algorytmów nie ma. Są natomiast różne ODBC i inne takie. Z kolei wspomniana rozmowa dotyczyła nietypowego projektu w firmie na terenie akademickiego technoparku więc też nie nazwę swojego klienta typową firmą informatyczną.

Podsumowując, dalej uważam, że konkretne i nazwane algorytmy w IT nie są szczególnie potrzebne. Pierwsze co trzeba umieć to programować – matematyka jest na drugim a może i trzecim miejscu (a na drugim IDE, git, …). Jak już ktoś ma jakiekolwiek doświadczenie to wtedy faktycznie znajomość teorii grafów może mu bardzo pomóc. Ale zrobienie tego odwrotnie, tzn. najpierw matematyka i praca programisty połączona z nauką programowania od podstaw to raczej kiepski schemat – inteligentne systemy wymagają sporo rozwiązań czysto technicznych i dużej wiedzy programistycznej. BTW – znam doktora, który skończył w równaniach różniczkowych bo nie chciało mu się kodować a na studiach prowadzący skupili się na teorii.

Pomijam już, że algorytmy (w tym na SPOJu) to w zasadzie trening klepania z pamięci / kopiowania z sieci / ponownego wynajdywania koła (skreśl niewłaściwe w Twoim przypadku) a potem, mając przygotowane funkcje, trzeba wrócić do maina i dopisać wczytywanie danych, zrobić wywołanie solve(a, &b, *c) w pętli i zwrócić wynik. W rzeczywistości algorytmy są najczęściej zamknięte w gotowych bibliotekach i problem polega raczej na dojrzeniu zależności matematycznych w nieoczywistej i złożonej technicznie (a bywa, że i np. prawnie) sytuacji. Przykładowo, mając ustawę o VAT trzeba najpierw wymyślić ideę przestępstwa karuzelowego. Czy koś z was po przeczytaniu tej ustawy i ewentualnie innych aktów prawnych widzi że klient (np. urząd skarbowy) pyta czy wyszukamy mu cykle w grafie? Podobnie, wiele złożonych i ciekawych problemów dot. wzbogacania drzew rozwiązuje za nas RDBMS. I znowu: sztuką nie jest rozwiązywanie tych problemów przy użyciu słów typu SELECT albo JOIN. Sztuką jest ułożenie tych słów tak, aby przygotować najbardziej adekwatny raport dla zarządu.

Czy to prawda, że IP BOX jest ulgą dla programistów? Warto się o to starać? Masz interpretację?

No tak, kultowe ostatnio pytanie o de facto zwolnienie programistów z podatku dochodowego w Polsce. Pewien Pan zaangażowany w politykę tak chętnie opowiada o uldze dla programistów, o błędzie w przepisach, o wielkich zyskach (oszczędnościach?), o tym że fiskus tego nie zweryfikuje bo i jak Pani Krysia sprawdzi czy Pan Programista dobrze napisał klasę.

Niniejsza odpowiedź niech będzie ogólną krytyką pewnej propagandy w rodzaju “jestem wielki bo mam działalność”. Piszę to jako przedsiębiorca, którego łeb boli gdy widzi filmy takie jak Układ zamknięty i to nieustanne narzekanie na wysokie podatki, urzędy i inne takie.

Prowadzenie działalności gospodarczej – w tym w Polsce – nie stanowi niczego szczególnego. ZUS / urzędy skarbowe nie kradną tylko realizują narzucone im ustawowe obowiązki. Przedsiębiorca nie jest świętą krową. Dotyczy to także programistów. Ja prowadzę działalność bo chcę mieć więcej niż jednego klienta (lubię dywersyfikować źródła dochodów) i móc pracować w dowolnych godzinach. Tymczasem od dłuższego czasu spotykam się z mentalnością, w ramach której wszyscy mają kłaniać się przedsiębiorcom a zrobienie kontroli i sprawdzenie czy ci np. prawidłowo prowadzą rachunkowość to jakaś represja polityczna i zbrodnia przeciw ich wolności osobistej oraz gospodarczej połączona z zarzynaniem dobrze prosperującego polskiego biznesu. Nie zaprzeczam nadużyciom, ale gdzie Rzym, gdzie Krym? Bo o ile mi wiadomo spece od biznesów też nie są czyści, co zresztą często wychodzi w czasie kontroli.

Tak, mam IP BOX (programowanie) i B+R (prace naukowe). Interpretację mam tylko do IP BOX. Nie robił mi jej żaden rzekomy spec od podatków – tak jak całą swoją księgowość, takie rzeczy ogarniam samodzielnie i nie jest to niesamowicie trudne przy góra 5 FV miesięcznie. Dotyczy to szczególnie wzmiankowanego ważnego członka pewnej partii, który za swoje usługi bierze niemało, opinie w sieci ma różne, ale jednego jest pewien: Państwo okrada nas wszystkich.

Zwracam uwagę na jego koncepcję marketingową: “Nie będziemy Ci wmawiać, że liczymy podatki lepiej niż zwykłe biura rachunkowe. 2 + 2 to zawsze 4, niezależnie od tego, komu zlecisz liczenie. To co nas wyróżnia, to ogromna wiedza na temat tego, jak te podatki obniżyć. Kiedy zwykłe biuro rachunkowe mówi Ci, ile musisz oddać do Urzędu Skarbowego… My sugerujemy, ile możesz zyskać składając odpowiedni wniosek o Interpretację Indywidualną.”. Wczytując się w konkretną ofertę, a nie reklamę, każdy z was zauważy, że usługi księgowe to jedno, a doradztwo podatkowe to coś innego i trzeba za to zapłacić oddzielnie. Koszty reprezentacji sądowej to już w ogóle inna sprawa. Oznacza to w zasadzie brak jakiejkolwiek gwarancji, co zresztą jest zgodne z zasadami etyki doradcy podatkowego, który nie może niczego zagwarantować (bo nie jest nawet urzędnikiem a co dopiero sądem, do którego fiskus pójdziecie wykłócać się o wasze IP BOXy) – może tylko doradzać.

Przepisy są w tej materii bardzo proste, a objaśnienia MF klarowne. Wnioski o interpretację mają sens tylko z przyczyn i w sytuacjach podanych przez MF w objaśnieniach, np. ja tworzę oprogramowanie (i wiem, że wtedy mam IP BOX) ale też rozwijam cudze (i tu miałem wątpliwości).

Co do zasady sprawa jest prosta: programujecie? Programowanie polega na tworzeniu przez was nowych kodów i algorytmów w językach programowania? Posiadacie autorskie prawa do programu tzn. możecie jasno powiedzieć czego jesteście autorami (nie musicie wszystkiego pamiętać, ale fajnie byłoby byście potrafili podać choć jedną linię kodu, którą zaklepaliście / usunęliście / edytowaliście)? Czerpiecie zyski z licencji lub sprzedaży waszego (tzn. macie prawa autorskie + jesteście choć współwłaścicielami) programu? Programujecie coś ambitniejszego niż nowa formatka? Macie IP BOXa.

Zwracam uwagę, że jeśli program nie jest wasz (np. nie moglibyście mi udzielić na niego licencji) to za to nie ma IP BOXa. Tu nie ma żadnej luki w przepisach – to tylko marketing różnych pseudoradców prawnych i quasidoradców podatkowych, który ostatecznie padnie w sądach, a pierwsze wyroki już są i jeśli chodzi o kwestie merytoryczne to zawsze wyroki są na niekorzyść podatników np. nie ma mowy żeby przyjąć, że gdy nexus = 0 / 0 to znaczy, że nexus = 1. Słowem: IP BOX to nie jest ulga dla programistów a dla ludzi, którzy tworzą innowacje.

Oczywiście, gdy wasza interpretacja zostanie zmieniona po jakimś czasie to nie możecie niczego reklamować u prawnika, który wam ją – powiedzmy wprost – wyłudził od urzędu. Gdy urząd w postępowaniu dowodowym pokaże, że nie macie praw własności do oprogramowania i nie sprzedajecie IP tylko efekty prac B+R – powodzenia. I nie, biuro rachunkowe na pewno was ostrzegło i zaznaczyło w umowie, że to jest wasz problem a ewentualna usługa polegająca na reprezentacji sądowej kosztuje X i nie musi zakończyć się wygraniem sprawy.

Więc radzę się zastanowić. Jedyne koszty, o których można zawsze powiedzieć, że ponosicie je bezpośrednio na działalność B+R to ub. Społeczne + FP. Wynika to z faktu, że ubezpieczenia te są obowiązkowe i nie możecie bez nich w ogóle mieć działalności gospodarczej (w tym: badawczo-rozwojowej). Oczywiście fajnie byłoby obliczyć je proporcjonalnie do udziału IP BOX w dochodach. Wątpię, czy w każdym przypadku sąd zgodzi się, że samochód to niezbędne narzędzie do tworzenia oprogramowania.

Co zaś tyczy się samych prac programistycznych, macie podręcznik Frascati? To czytamy.

Tworzycie nowe systemy operacyjne lub języki programowania? Tworzycie nowe lub bardziej wydajne algorytmy? Tworzycie nowe lub oryginalne techniki szyfrowania? Rozwiązujecie konflikty na poziomie hardware / software? Tworzycie wyszukiwarki oparte na oryginalnych technologiach? Jeśli tak to macie IP BOX.

Tworzycie ERPy na podstawie znanych metod (tak, zmienienie 17% w dochodowym na zasadach ogólnych z double na long double to nie jest działalność B+R)? Dodajecie użytkownikom bajery typu ładne formatki? Stawiacie blogi, vlogi i sklepy z dopalaczami? Sorry – nie macie IP BOX.

Co zrobić gdy wasza sytuacja nie mieści się w wyżej opisanych? Zastanowić się, którym jest bliższa. Jeśli optymalizujecie zapytania bazodanowe albo robicie jakąś nietypową, dziką rzecz na stronie internetowej typu WolframAlpha to macie IP BOXa. Jeśli zaś tworzycie wyszukiwarkę opartą na oryginalnej technologii jaką jest Google to niestety – nie macie szans na IP BOXa.

Co się stanie gdy naciągniecie przepisy? Np. nie macie umowy z klientem a ustawa o prawie autorskim i prawach pokrewnych nakazuje wam pisemnie przekazać prawa majątkowe? Albo rozwijacie cudze oprogramowanie ale bronicie się, że w zasadzie rozwinięty .exe to nowy .exe? Cóż – zależy, ile zarabiacie. Jak raczej mało to Państwo ma was gdzieś. Jak dużo to przygotujcie zawczasu dobre wyjaśnienie dla sądu dlaczego waszym zdaniem modyfikując kod klienta stajecie się właścicielami programu i klient nie byłby zdziwiony gdybyście udzielili licencji na ten program jego konkurencji. To się przyda :slight_smile:

Z prawa można korzystać, ale nie naciągać je. Jeżeli rozwijacie cudzy program ale tak się składa że wasze rozwinięcie to np. cała klasa to jak najbardziej jest to biblioteka która jest dostosowana do konkretnych rozwiązań, ale jednak jest to wasza oryginalna, innowacyjna (bo klient takiej chyba nie miał, nie?) biblioteka i dostarczacie ją klientowi. To, że klient nie chce libki tylko kod – jego sprawa. IP BOX za libkę a poza tym 5 dych za skopiowanie kodu i wklejenie gdzieś-tam. Samej libki fiskus nawet nie będzie chciał oglądać. Ale jeżeli rozwijacie oprogramowanie na zasadzie dziesięć osób majstruje w dziesięciu plikach to nie róbcie sobie tej krzywdy. Serio. Na bibliotekę możecie dać mi licencję albo w ogóle dać mi źródła – np. gdy klient wam nie zapłaci to kto wam broni sprzedać kod klasy mojej skromnej osobie? Ale już jak dziesięć osób grzebało w pliku i ewentualne nowe funkcje to jakieś def print_pretty(x) to nie róbcie sobie problemów bo odsetki od niezapłaconego podatku was zjedzą.

Słowem: nie, IP BOX to nie jest ulga dla programistów. Programiści w Polsce nie są zwolnieni z podatku dochodowego. Programiści, tak jak wszyscy inni twórcy zajmujący się tworzeniem innowacji w skali mikro i makro, mogą skorzystać z preferencji podatkowych na ściśle określonych zasadach. Jak słusznie zauważa MF prawie nigdy nie będzie tak, że ktoś będzie w całości opodatkowany preferencyjnie. Np 80% waszej pracy może okazać się działalnością pasującą pod IP BOX. Ale cała? Np. rozmowy z klientami, podróże służbowe, omawianie postępów prac? Bo tego pewnie nie robicie gratis a śmiem twierdzić że podróż autem nie powoduje, że kod sam się pisze.

Tyle z mojej strony. Ku przestrodze. I przeciw propagandzie.

Dlaczego nie poświęcasz całego czasu na branżę IT tylko piszesz jakieś bzdury z chemii?

Z potrzeby serca i ponieważ nie zaliczam się do osób, które widzą niesamowitą przyszłość w IT :slight_smile: Serio – w przyszłości chętnie ograniczę kodowanie na rzecz np. korepetycji.

Suggested Topics

Want to read more? Browse other topics in Tutoriale, poradniki or view latest topics.