Cześć, naprawdę już nie wiem co robię nie tak. Mam prawie 29 lat na karku i od 5 lat interesuje się programowaniem. W branży ściśle jako developer / tester automatyczny siedzę już gdzieś jakieś 3 lata.
Tak od razu zaznaczę z jednej strony jest to wyżalenie się bo powiem że mam już dość. Z drugiej strony szukam pomocy i chciał bym znaleźć rozwiązanie moich problemów. Chciał bym usłyszeć co wy o tym uważacie i co wy byście zrobili w takiej sytuacji.
Boli mnie to, a nawet sprawia mi to wielką przykrość, że podczas projektu zawsze jest wszystko fajnie pięknie wszyscy klepią się po plecach. Gratulują mi mojego podejścia, mówią że projekt wygląda zajefanie itp. Ale po pewnym czasie zawsze słyszę jedno i to samo. „Zdajesz sobie sprawę, że jeszcze dużo Ci brakuje.”, „Nie wiem czy wiesz ale zauważyliśmy iż brakuje Ci podstaw w programowaniu”, „Mamy problem, bo nie do końca wiemy co mamy z tobą zrobić. Z jednej strony fajnie wszystko ogarnąłeś, ale obawiamy się że wyżej nie dasz sobie rady.”, „Nie do końca wiemy czym byś ty chciał się w przyszłości zajmować”,
Raz nawet usłyszałem, że lepiej mieć team średniaków niż team zbudowany z wybitnych jednostek.
Może żeby też mnie zrozumieć to opowiem o swojej karierze, jestem samoukiem nie mam skończonych studiów informatycznych tylko technikum. Muszę się przyznać bez bicia brakuje mi terminologii. Powiem tak, jest tego dużo bo dużo projektów robiłem i niestety każdy prawie w innej dziedzinie.
Obecnie kończę robić projekt ChatBota – A interesuje się ML oraz NLP/NLU
Przeorałem dużo technologii i języków między innymi
C# / Python / Apex / JvaSripct/ AngularJS/ Angular2/ Backboune / Node.JS / Clipper (xHarbour)
Selenium / Ranorex /
Wstęp do mojej przygody z programowaniem
Przygodę z programowaniem zacząłem, podczas pracy w IT jako pierwsza linia wsparcia technicznego. I do ułatwienia sobie pracy zacząłem pisać skrypty w Visual Basicu, które automatyzowały mi pewne procesy. A gdy nie było co robić, wspierałem oddział w pisaniu zapytań do baz DBF w języku clipper, oraz w rozwijaniu ich oprogramowania. (Tak to miało miejsce na kopalniach i dalej tam język clipper jest wykorzystywany w rozszerzeniu xHarbour, ponieważ dużo danych jest tam osadzonych w bazach DBF). Tak naprawdę wszystko zawdzięczam swojemu kierownikowi, który miał ochotę wprowadzić mnie w ten świat i poświęcił mi trochę czasu bym zrozumiał na czym opiera się programowanie.
Następnie w domu, zacząłem sobie pisać boty do gierek przeglądarkowych. Wpierw były to skrypty JavaScript, następnie bardzo zafascynowałem się c# i zacząłem budować własne klikacze. Czy też rozszerzone kalkulatory do analizy rynku i podejmowania decyzji.
Moja pierwsza praca:
Po półtorej roku udało mi się załapać do firmy finansowej jako .NET developer. Firma miała 150 pracowników w tym dział IT tylko 8 osób. Jeżeli chodzi o .NET developera byłem tylko ja ;/
Na początku byłem zatrudniony tylko na zlecenie by ogarnąć błędy w aplikacji po byłym pracowniku który się zwolnił. Na aplikacji siedziało 80 osób. Aplikacja komunikowała się z naszym API gdzie były pobierane dane, następnie one były obrabiane w tej aplikacji i po wybraniu odpowiednich opcji były wysyłane dalej do wtyczki przeglądarkowej. 80 tysiecy linii kodu, 0 dokumentacji, zmienne o nazwie x albo fromInput1 i funkcje po 600 linii kodu nawet.
Błędy wykryłem i naprawiłem po 2 tygodniach. Następnie poproszono mnie o zbudowanie aplikacji klienta to rejestrowania czasu pracy. Do weryfikowania czy użytkownik jest wylogowany itp. W niecały tydzień dostarczyłem taką aplikację.
Następnie zająłem się przepisaniem na WPF(MVVM) wcześniejszej aplikacji z WF i dostarczeniu odpowiedniej dokumentacji technicznej. Zajęło mi to 3 miesiące + testy integracyjne. Wszystkiego uczyłem się na bieżąco.
Gdy to skończyłem, poproszono mnie o zrobienie researchu technologii, i zaproponowania jakiegoś rozwiązania do zautomatyzowania pracy 80 pracowników. Tak żeby aplikacja sama wypełniała formularze na stronach internetowych oraz wysyłała informacje o statusie. Miałem na to 2 tygodnie.
Wybrałem Selenium, z którym miałem trochę wcześniej styczności. Po przedstawieniu mojej propozycji rozwiązania miałem 3 miesiące na zaprojektowanie własnego serwisu, który będzie się wstanie poruszać po stronach, wymyślenie wzoru ‘Patternu’ tak myśmy to nazywali (była to instrukcja dla bota) dzięki której wiedział by jakie czynności ma wykonać na jakiejś stronie. Oraz wymyślenie systemu raportowania, pod koniec wpięcia go jako asystent do wcześniejszej aplikacji a w przyszłości pełnej automatyzacji.
Gdy zaproponowałem rozwiązania i zaprezentowałem demo po miesiącu nie po 3. Kazano mi przystąpić do prac. Po miesiącu czasu gdy powstała wersja ALPHA, działająca sprawnie lecz nie obsługująca wszystkich stron bankowych – na co potrzebowałem więcej czasu. Poprosiłem o podwyżkę z 19 zł na 25 buttto. I od tego czasu, mój piękny świat szlak w tej firmie trafił. Ciągle stawiano mi nierealne wymagania, czepiano się pierdół (Bo wychodziłem 5 razy na papierosa a przysługiwało mi 2 razy) Bo robiłem sobie kawę poza przerwami itp.
Po wprowadzeniu bota już w 100% na produkcje, to po miesiącu działania bota zwolniono 70 osób bo byli nie potrzebni. Ja dostałem wtedy praktykanta do nauki, po miesięcznej nauce praktykanta pojechałem na wczasy i gdy wróciłem dostałem wypowiedzenie 2 tygodniowe. Podziękowano mi za współpracę, pogratulowana mi za mojego bota bo działa idealnie i nie widzą dalszej potrzeby jego rozwijania. A na jego utrzymywanie jestem za drogi. Bo nie są wstanie mi płacić docelowo 30zł brutto.
Druga firma:
Poszedłem do outsourcingowej. Na własną działalność. Dostałem 24 zł brutto. Super ;/
Wpierw wrzucono mnie na okres próbny do teamu Pythonowego, by zobaczyć moje zdolności samo nauki. Miałem 5 dni czasu na zaznajomienie się z jezykiem i przystąpieniem do pracy nad taksami. Przepracowałem w API opartym na Flasku jakieś 2 miesiące. Wszystkie taski jakie robiłem, były bardzo mocno weryfikowane przez doświadczonych developerów i najwyżej poprawiane przez nich lub dokańczane jeżeli wyczerpałem czas przeznaczonego na taska. Na 20 taksów tylko 5 było wypełni zrobionych przeze mnie, i to już pod koniec okresu próbnego.
Dostałem przedłużenie umowy na jeden miesiąc – ale pojawiły się teksty że niezbyt dobrze mi szło, ale mogą mi dać jeszcze jedną szansę.
Wróciłem do teamu docelowego .Net . Jednak nie aplikacje desktopowe tylko Webowe, gdzie dałem ciała bo nigdy frontem się nie bawiłem a tym bardziej chartami i to w angularze ;/
Po miesiącu znowu usłyszałem to samo – że jestem kiepski itp. Bo oni potrzebują expertów a ja nim nie jestem. Ale dają mi jeszcze jedną szanse. Klient by chciał mieć testy automatyczne na UI zrobione w Selenium oraz Ranorexie(Też się tym nie bawiłem ale podobnie działał jak selenium)
Więc zaproponowano mi pracę jako Tester Automatyczny UI. Do tego wrzucono mi obowiązki QA i devOpss ogarnianie TeamCity oraz Jenkinsa. Z czasem zajmowałem się doprecyzowywaniem wymagań klienta na zasadzie „I want be able to use ODDB provaidera to get data”. Co kolwiek by to nie znaczyło miałem zawsze napisać specyfikacje nowych funkcjonalności tak opisanych.
Moja firma -> Klienta oprogramowania -> Klient docelowy. Wiec moim zadaniem była komunikacja z klientem docelowym naszego klienta i zrozumieniu jego potrzeb.
Przesiedziałem tam rok i 4 miesiące. Od 4 miesięcy była przekładana moja podwyżka. Finalnie skończyło się na tym. Że się wkurzyłem, bo przez ostatnie 4 miesiące kładziono mi kłody pod nogi.
Założenie było:
Testy automatyczne były robione tylko dla wypełni przetestowanych featerów i zatwierdzonych. Bardziej pod sprawdzanie regresji niż Bugów, oraz dla chenga requestów.
Oto poszła spina
Był release następnego dnia, i parę osób spierdzieliło. 2 QA miało w dupie testowanie, zrobiło najprostsze przypadki, a resztę od klikało że działa. Bo testowane to było 3 dni temu. A developer implementujący rozszerzenie do obsługi bazy oraklowej nie posłuchał moich zaleceń przez co popsuł funkcjonalność. Błąd wykryty został przez przypadek, przeze mnie na ostatni moment. Bo stwierdziłem że jednak sobie sprawdzę czy to działa dokładnie.
Oczywiście, za to że to nie działało odpowiedzialny byłem ja bo ja miałem tego pilnować i mogłem sprawdzić to wcześniej. A to że to dwóch QA wzięło sprawdzanie tego przede mną bo przychodzili na 7 a ja na 9, nikogo nie interesowało. To że zaznaczyli iż działa i się upierali że gruntownie to przetestowali to też była moja wina że nie potrafię się dogadać z zespołem.
I wybuchła awantura, bo ja powiedziałem że przez lenistwo innych i idiotyzm nie będę przychodził podczas urlopu do pracy. Po drugie nie byłem testerem manualnym tylko automatycznym.
To mi się oberwało, to dla czego te testy nie były zautomatyzowane.
Wreszcie przyszło do rozmowy o podwyżkę i cała ta sytuacja była mi wypomniana jako przykład na moje pytanie czego mi brakuje. Rzuciłem wtedy papierami.
Podczas pracy w tej firmie czułem się fatalnie, można powiedzieć że zmiażdżono mnie tak mocno że uważałem iż jestem do niczego. Wszystko zawsze było moją winą. To że wykrywałem błędy krytyczne, które uniemożliwiały relesa bo nie zabezpieczały systemu . To że znalazłem casa umożliwiającego wejście do systemu jako administrator, zawsze były moją winą dla czego tego nie wykryłem wcześniej. Tylko zgłaszam to po miesiącu i po co to w ogóle zgłaszam.
Trzecia Firma:
Przyjmowałem się jako tester automatyczny UI, wylądowałem jako QA. Dostałem się do zespołu rozbitego na 2 miasta. Jedno miasto zespół doświadczony, drugie miasto gdzie ja byłem zespół nie doświadczony. Przez 3 miesiące pracowaliśmy razem nad jednym projektem i ja jako QA. Po tym czasie stwierdzono że podzielimy się na 2 zespoły jedno miasto i drugie miasto. Nasz 4 osobowy zespół dostał zadanie przerobienie całego frontu pewnego serwisu eCommerce + dodanie parę nowych funkcjonalności. W zespole było 2 developerów których była to pierwsza i (3 miesiące doświadczenia programistycznego), oraz jeden bardziej doświadczony developer Java(Backend) który w poprzedniej pracy do wszystkiego miał napisane instrukcje przez swojego Architekta. Jednak z tą platformą wszyscy mieliśmy pierwszy raz do czynienia.
Jako QA i osoba z największą wiedzą o projekcie i platformą zostałem wytypowany jako osoba zarządzająca tym zespołem. Niestety DL był nieubłagany i musiałem zakrzesać rękawy do frontu i nauczyć się w trybie expressowym CSS, HTML i backbouna oraz JQuery by móc przejąć taski od reszty.
Niestety nie obyło się bez ciężkich pogadanek z zespołem i przełożonymi. Dla czego prace idą tak wolno, że jeżeli ktoś nie nadąża to mam dać słowo to się go wymieni. Albo że mam pamiętać że ja odpowiadam za projekt, i jak coś pójdzie nie tak to ode mnie będą wyciągane konsekwencje. A z strony teamu słyszałem, czego do nich oczekuje przecież oni tego nigdy nie robili. Albo kim ja jestem że będę im mówić jak mają to robić, przecież w froncie mam mniejsze doświadczenie niż oni itp.
Projekt się udał – wyrobiliśmy się na czas a dostarczone rozwiązania o które ja zabiegałem były na odpowiednim poziomie. Wszystko fajnie, oprócz tego że w teamie był już mały kwas – o którym informowałem, ale menagerowie mieli to w dupie. Ciężko było pogodzić pracę QA, developera, Team Lidera i Projekt Ownera. Więc musiałem być wymagający, a jak ktoś robił jeden i ten sam błąd 10 razy to nie trudno było się wkurzyć. Musiałem ich nauczyć, że nie mogą oddawać tasków bez sprawdzenia i zwalać wszystkiego na QA, gdy ewidentnie widać iż podstawowa funkcjonalność nie działa.
Problem był też tego typu moim zdaniem że ja oficjalnie dla teamu byłem tylko osobą kontaktową, a nie oficjalnie byłem Team Liderem. Przez co reszta nie traktowała moich poleceń poważnie, a mi się obrywało za nich dla czego robią to w taki sposób a nie inny. Do tego miałem, też ambitną osobę która też chciała awansować i podkopywała za każdym razem moje podejście. Gdy doszło już do przedłużania omów od nich, ja miałem wystawić im opinie i feedback oraz odbyć rozmowę. Widziałem jak ich to zgięło i automatycznie nasze relacje się pogorszyły. (Ja byłem w firmie niecałe 4 miesięcy a oni już prawie 12)
Po tym projekcie stwierdzono że wypadało by żebym nauczył się programować w Apexie i całym stacku technologicznym który odpowiadał za front na ich platformie.
Przysłano wtedy do nas osobę, która miała być team lidem naszego zespołu przede mną. Nie muszę mówić jak się to skończyło. Oczywiście nauczyłem się tego co miałem, lecz team stwierdził że im by się przydała osoba bardziej doświadczona która by im pomagałą na bieżąca jak mają jakiś problem i najlepiej robiła za nich taski albo podawała rozwiązania na ręce.
Skończył się projekt i były redukcje w zespole -> Oczywiście odpadłem. Po miesiącu tamci też odpadli z zespołu i poszli na inne projekty.
Ja dostałem propozycje przejęcia projektu samodzielnie. Chatbot – AI
Projekt odziedziczyłem po jakimś wcześniejszym teamie który wymiękł i nie potrafili rozwiązać paru kwestii, przez co praca i implementacja była słabo optymalna i nie warta wdrażania.
Projekt był napisany w node.js i AngularJS przy użyciu zewnętrznego serwisu NLP.
Gdy zrobiłem pierwsze optymalizacje, i zaprezentowałem działające demo. Odbyłem rozmowę czy nie chciał bym się kształcić w tym kierunku. Chat Boty -> NLP -> AI. Tak żeby za jakiś czas móc być wstanie przejąć większy projekt i go poprowadzić bez problemu.
Gdy już kolejny raz przeorałem logikę, tak naprawdę napisałem swoją własną do wybierania dialogów na bazie intentów i entity na podstawie contextu rozmowy. Stwierdziłem że chciał bym pójść na kurs ML i Analizy danych a potem na kurs NLP, jednak to były kursy dla średnio zaawansowanych i expertów którzy już wiedzą czym jest ML czy NLP.
Wyśmiano mnie, że nie dam sobie tam rady i powinienem zacząć od podstaw. (Podstawy mnie nie interesują, ponieważ nie mam zamiaru słuchać kolesia co gada czym jest ML i jak go można wykorzystać)
Wtedy też z mojej inicjatywy odbyłem rozmowę z menadżerem na temat przedłużenia mojej umowy, bo wiem że miałem spiny z były zespołem i czy to wpłynie źle na moja karierę. Usłyszałem wtedy że nie maja podstaw by mi jej nie przedłużyć itp.
Zająłem się implementacja dialogów i warunków. W między czasie zapisałem się na naukę Niemieckiego i Włoskiego u nas w firmie. Zaproponowałem że będę odrabiać czas z zajęć przeciwieństwie od osób chodzących tylko na jeden język.
Też wtedy usłyszałem iż co ja sobie wyobrażam, że nie dam rady uczyć się AI, ML i dwóch jeżyków do tego ogarniać projektu.
Po czasie, znowu wrócono do rozmowy na temat jeżyków obcych i moich kursów. Że mam zrezygnować z nich bo nie dam rady.
Ja wtedy kończyłem robić czat bota. To było jakieś 2 tygodnie temu. Pamiętam grymas na twarzy jak pokazałem aplikacje jaką robiłem w domu.
Zrobiłem prosty ML do gierki którą napisałem. Gierka polegała na omijaniu przeszkód poprzez skakanie przez przeszkody lub też przechodzenie pod nimi. Pod gierkę zaimplementowałem ML oparty na wzorcu DFF Deep Feed Forward, nie był idealny ale działał. Po wytłumaczeniu że ML działa na zasadzie tworzenia generacji tak zwanych pokoleń. A szkolenie odbywa się na cyklach gdzie jest puszczane załóż 5000 tysiecy botów jak w moim przypadku. I uczą się na próbie błędów. Oraz wytłumaczeniu iż inputy są to bodźce na które ma bot reagować np. rodzaj przeszkody ogdległość od przeszkody prędkość z jaka się porusza czy wysokość przeszkody. Potem mamy ukryte obliczenia które łączą parę składowych bodźców(Inpotów)i prowadzą do outputa czyli zachowania jakie powinno się wykonać.
Do chat Bota zrobiono mi review codu, przez doświadczonych developerów. Nie dostałem żadnego feedbacku, ponoć było wszystko ok. Wtedy dowiedziałem się, że dzięki mojemu demu sprzedano 2 projekty z chatbotami. Którymi zajmuj się team, po których odziedziczyłem projekt. Żeby było mało zostałem poproszony o wytłumaczenie im moich rozwiązań bo stwierdzili że będą bazować na moim projekcie.
I ostatnio w środę odbyłem znowu rozmowę co zemną dalej zrobić i podczas rozmowy wypomniano mi, iż zrobiłem wcześniej kwas w teamie, fajnie że ich ogarnąłem i wyprowadziłem na odpowiedni tok rozumowania i już nie ma z nimi problemów, ale obawiają się że znowu się to powtórzy. Znowu usłyszałem że mam problemy jako programista, pomijając fakt iż ładnie wziąłem projekt z chatbotem na klatę i wszystko ogarnąłem sam. Ale mają wielki znak zapytania co do mnie i co zrobić zemną dalej.
Dano mi jasno do zrozumienia że umowa wnet mi się kończy i mam poszukać innej pracy wtedy zaciągnę z nich tą ciężką decyzję.
Dalej niepotrzebnie według nich uczę się jeżyków gdy mam się uczyć AI i obawiają się że z tym nie dam sobie rady.
Jak im pokazałem że w domu dodatkowo bawię się z budową własnego serwisu NLP bazującym na pythonie oraz NLTK i TransFlow. Oraz iż posiadam certyfikat I stopnia analizy big daty z firmy CAMO (dzięki poprzedniej firmie) i postanowiłem sobie odświeżyć predykcje czy algebrę liniową z wykorzystaniem pandy w Pythonie.
To usłyszałem, że mam się głęboko zastanowić czym chce się zajmować w przyszłości. Bo w tej firmie nigdy nie zostanę master AI.