Praktyki w Empirice pokazane w radiu i telewizji.

Nasz program praktyk dla studentów wrocławskich uczelni został doceniony przez lokalne media Radio Wrocław i TVP Wrocław.

 

W siedzibie Empirica najpierw gościliśmy ekipę Radia Wrocław. Tematem był program praktyk dla studentów wrocławskich uczelni organizowany przez naszą firmę we współpracy ze stowarzyszeniem IT Corner. Radio przeprowadziło wywiady nie tylko z naszym zarządem, ale także z pracownikami pilotującymi program stażowy jak i z samymi stażystami. A było o czym rozmawiać, gdyż studenci biorący udział w naszym programie praktyk zostają wrzuceni od razu na głęboką wodę. W odróżnieniu od stażu w większości korporacji nie mają do czynienia z błahymi zadaniami wspierającymi pozostałych pracowników, lecz na trzy miesiące stają się częścią prowadzonych w firmie projektów. A projekty dotyczą rozwoju jednego z najbardziej zaawansowanego systemów w branży IT w Polsce jak i jego międzynarodowych wdrożeń. To nie jest praktyka, który polega na parzeniu kawy lub wyciąganiu papieru z zaciętych drukarek. Stawiamy na sprawdzenie umiejętności studentów w zadaniach, z którymi będą się mierzyć w pracy zawodowej i najlepsi z nich mają szansę na dostanie oferty dołączenia do naszego zespołu na stałe.

 

Pozwolimy sobie zacytować część audycji “Aleksandra Sieradzka, studentka politechniki po doświadczeniach z dużymi korporacjami postawiła na staż we wrocławskiej małej firmie IT zrzeszonej w klastrze przedsiębiorstw informatycznych ITCorner. I to był strzał w dziesiątkę.” Nie śmiemy dyskutować z opinią Oli, chociaż nasze zdanie o korporacjach jest w 100% zbieżne.

 

Kilka dni po wizycie Radia Wrocław, odwiedziła nas lokalna stacja telewizyjna TVP Wrocław. Zainteresowanie mediów naszym programem praktyk zaczyna powodować, że zarówno nasi pracownicy jak i studenci odbywający u nas staż, powoli zaczynają się czuć jak celebryci. Na szczęście jeszcze się tak nie zachowują i dalej podchodzą do swoich obowiazków zupełnie poważnie. Telewizja była zainteresowana programem praktyk organizowanym przez naszą firmę wraz ze stwowarzyszeniem IT Corner dla studentów Politechniki Wrocławskiej. Wywiady przeprowowadzone przez ekipę telewizyjną, dotyczyły nie tylko codziennej pracy w naszej firmie, ale także tego czym różni się praca w małej ale prężnej lokanej firmie, od pracy w dużej zagranicznej korporacji. Okazuje się, że nie tylko nasi pracownicy są świadomi przewagi możliwości jakie oferują im lokalne i ambitne startupy, ale całkiem świadomi tego byli także nasi stażyści.
Jesteśmy dumni nie tylko z naszych studentów i wysiłku jaki wkładają w swoje codzienne obowiązki, ale także z tego, że nikt w firmie nie wydawał się obecnością kamer speszony. Praca jak co dzień, business as usual. Młodzież mamy naprawdę imponującą. Szacuneczek!

 

Więcej o wizytach Radia Wrocław i TVP Wrocław w Empirice:

telewizja wrocław staż empirica

telewizja wrocław staż empirica praca programista

Empirica internationally

Empirica as a company specializes in trading software development for capital and cryptocurrency markets. We help hedge funds with our low latency Algo Trading Software and trading algorithms and crypto trading bots developement. We help market makers with Liquidity Engine – market making software, and wealth managers with Robo Advisor, portfolio management software. We also support crypto exchanges in software development of their platforms.

More on algorithmic trading can be found on our English website.

Java 8 – co nowego i co ciekawego?

Autor: Patryk Stopyra, Software Developer, Empirica S.A.

Java Development Kit 8 jest jedną z najważniejszych aktualizacji języka rozwijanego przez Oracle. Niesie ona za sobą przede wszystkim istotne zmiany na poziomie syntaktycznym wprowadzając wyrażenia znacznie upraszczające zapis logiki programu. Jest to ważne zwłaszcza dla deweloperów oprogramowania rozwijających projekty zespołowe. Ze względu na liczbę istotnych zmian – usystematyzujemy je, dzieląc na 4 dziedziny.

java

 

Język

Najbardziej zauważalną dla programisty zmianą w języku Java w wersji 8 są wyrażenia lambda (λ). Są to funkcje anonimowe, swą nazwę czerpiące z rachunku lambda opracowanego przez A. Churcha i S.C. Kleenego w latach 30-tych XX-go wieku w celu reprezentacji i badania algorytmów. Jak w języku Java zrealizowano wyrażenia lambda? Wykorzystano już istniejące struktury semantyczne – odtąd anonimowa implementacja interfejsu posiadającego jedną metodę może być zastąpiona przez wyrażenie lambda – oraz dodano operator ->. Samo wyrażenie ma następującą postać:

(arg1, arg2, …) -> { instr1; instr2; ... }

Wykorzystując więc zestaw przekazywanych argumentów maszyna wirtualna wykonuje blok instrukcji, który w istocie jest ciałem anonimowej metody. Zapis ten można skrócić jeszcze bardziej: jeśli przyjmujemy tylko jeden argument możemy pominąć nawiasy po lewej stronie operatora ->, zaś jeśli program wykonuje tylko jedną instrukcję możemy nie zamieszczać nawiasów po prawej stronie operatora ->. W efekcie dla przykładowego interfejsu:

interface SomeListener {
    void actionPerformed(SomeEvent e);
}

programista może zastąpić zapis jego implementacji:

mysteriousComponent.addSomeListener(new SomeListener {
    @Override
    void actionPerformed(SomeEvent e) {
        System.out.println(“Action occured: “ + e);
    }
});

bardziej zwięzłą i czytelną formą:

mysteriousComponent.addSomeListener(e -> System.out.println(“Action occured: “ + e));

Zastosowane w ten sposób wyrażenie lambda definiuje jedyną metodę interfejsu stając się w istocie anonimową implementacją interfejsu – i to właśnie sposób w jaki programista powinien je postrzegać.

Co więcej, dzięki nowemu słowu kluczowemu default (o którym za chwilę) deweloper może używać wyrażeń lambda nawet dla bardziej złożonych interfejsów.

Naturalnym jest, iż wyrażenia lambda zwracają wartość. I w tym przypadku można zastosować kompaktową notację. Następujący kod:

(x, y) -> {return x + y;}

jest równoważny z:

(x, y) -> x + y

Należy mieć więc na uwadze, że wyrażenie zwraca wartość pojedyńczej instrukcji jaką wywołuje (chyba, że wywołuje metodę o typie void).

Wyrażenia lambda znajdują doskonałe zastosowanie m.in. w operacjach na strumieniach. Te (opisane dalej) również są nowością najświeższej wersji języka

Java, w której trafiły do biblioteki standardowej.

Nowe słowo kluczowe default pozwala zapwnić domyślną implementację metod interfejsów, co ułatwia tworzenie wyrażeń lambda opartych na tychże interfejsach. Metod z domyślną implementacją nie trzeba już nadpisywać. Tworząc więc interfejs którego wszystkie metody są domyśle prócz jednej, zależącej od kontekstu wykorzystania interfejsu, uzyskujemy perfekcyjny fundament pod wyrażenie lambda. W docelowym miejscu wystarczy (w postaci takiego wyrażenia) zapewnić implementację jedynej metody nieposiadającej implementacji domyślnej. Jest to niewątpliwy ruch języka Java w stronę wielokrotnego dziedziczenia.

Kolejną istotną dla dewelopera zmianą jest możliwość przekazywania referencji do metod. Dotąd w języku Java możliwe było jedynie przekazywanie wartości zmiennych i referencji do nich. Nowością syntaktyczną w JDK 8 jest natomiast operator :: pozwalający na przekazywanie referencji do zaimplementowanych już metod. Na przykład:

Math::max, Math::abs

Ta zmiana jest również de facto konsekwencją wprowadzenia wyrażeń lambda. Czyni ona kod czytelniejszym, gdyż pozwala (zamiast wielokrotnej implementacji identycznych wyrażeń) w jednym miejscu zdefiniować odpowiednią metodę i odwoływać się bezpośrednio do niej z wielu miejsc. Mając klasę, w której zaimplementowaliśmy pewien sposób reakcji na zdarzenia:

class Controller {
    static void reactOnEvent() {
        …
    }
}

Możemy zastąpić kod:

mysteriousComponent.addSomeListener(e -> Controller.reactOnEvent());

przez:

mysteriousComponent.addSomeListener(Controller::reactOnEvent);

Dodatkowo bytecode tak zdefiniowanego listenera różni się od wykorzystującego wyrażenia lambda. Nie zawiera on całej definicji Listenera lecz krótszą bezpośrednią referencję do metody reactOnEvent. Referencje do metod (nawet niestatycznych) programista może przechowywać jako zmienne wykorzystując klasy z biblioteki standardowej java.util.function.

Oprócz nowości syntaktycznych, Java 8 wprowadza również kilka udoskonaleń istniejących już wcześniej mechanizmów. Na pozór niezauważalną dla dewelopera zmianą jest ulepszenie inferencji typów. W obecnej wersji język jest w stanie w niektórych przypadkach typów generycznych sprowadzić automatycznie klasę obiektu do klasy niższej, jeśli tylko nie ma to skutków ubocznych. Przytaczając przykład z dokumentacji Oracle, w metodach przyjmujących listę obiektów typu String nie musimy już stosować konstrukcji:

Collections.<String>emptyList()

w celu pozbycia się niejednoznaczności i zaakceptownaia pustej listy jako adekwatnej dla metody z argumentem listy obiektów typu String. W JDK 8 możemy wywołać:

Collections.emptyList()

zaś sam kompilator, odkrywszy, że nie ma to skutków ubocznych – przystosuje listę do typu wymaganego przez metodę.

Zapewne chcąc sprostać rosnącej popularności weryfikacji formalnej oraz programowania kontraktowego, środowisko odpowiedzialne za rozwój języka Java wzbogaciło go o nowe adnotacje oraz rozszerzyło zakres miejsc w kodzie w których te mogą zostać wykorzystane. To właśnie adnotacje takie jak @NonNull, @Readonly, @Regex, itp. pełnią w języku Java rolę kontraktów. Programista może je teraz stosować w praktycznie dowolnym miejscu:

List<@NonNull MysteriousObject>, matches(@Regex String s)

Statyczne analizatory programu potrafią wykorzystać takie adnotacje jako dyrektywy automatycznej weryfikacji kodu, na ich podstawie badając poprawność założeń programisty. Nowe adnotacje, rozsądnie wykorzystane i połączone z automatyczną ich analizą pozwalają zwiększyć czytelność kodu. Niefortunnie jednak ich nadmiar potrafi sam kod zaciemniać, ułatwiając pracę z nim komputerowi ale utrudniając innym deweloperom zespołu autora. Dlatego warto tę funkcjonalność stosować z umiarem, mając przede wszystkim na uwadze czytelność tworzonego algorytmu.

Jak wspomniano na wstępie dobre opanowanie wyrażeń lambda, referencyjności metod i innych zmian pojawiających się w syntaktyce ósmej wersji języka Java jest podstawą do tworzenia bardziej przejrzystego i funkcjonalnego kodu. Natomiast w pracy zespołowej jest kluczem do szybszego rozumienia algorytmów innych programistów i tworzenia jednoznacznie interpretowalnego kodu.

Biblioteka standardowa

Jak przy każdej aktualizacji wiele ciekawych zmian pojawiło się również w bibliotece standardowej języka Java. Warto się im przyjżeć, ale zostanie to zrobione bardziej pobieżnie gdyż aktualizacje te, choć istotne, nie są aż tak przełomowe jak wyżej opisane unowocześnienia samego języka.

Pierwszym dużym postępem jest wprowadzenie do języka standardowej implementacji strumieni. Te (tylko bez kontroli typów) znane są dobrze programistom Pythona. Z punktu widzenia dewelopera strumień jest bardzo atrakcyjną konstrukcją. Nie magazynuje danych, lecz przepuszcza je kolejno korzystając z kolekcji, tablicy bitów, pliku czy innego źródła. Jest łatwy do implementacji, rozszerzania i dokonywania innych modyfikacji: praca na strumieniu opiera się na konstrukcji nazywanej pipeline, ze względu na swoje podobieństwo do rurociągu. Po pozyskaniu strumienia możemy wykonywać na nim kolejne operacje nieterminalne, wykorzystując schemat budowniczego (możemy stosować filtry, mapowanie elementów, itp.; każda metoda dodająca nieterminalną operację do strumienia zwraca nowy, zmodyfikowany strumień). Na końcu dodajemy operację terminalną, np. forEach():

collectionOfComponents.stream()
    .filter(c -> c instanceof JButton)
    .filter(c -> c.isVisible(true))
    .forEach(c -> c.setActive(false));

W efekcie otrzymujemy pipeline zbudowany z łatwo wymienialnych segmentów. Ponadto natura strumieni jest leniwa, tzn. nie podejmują kolejnego działania bez zakończenia przetwarzania poprzedniego elementu w strumieniu. Dzięki temu w wypadku metod w rodzaju znajdź pierwszy, znajdź jakikolwiek nie musimy przetwarzać wszystkich danych, lecz możemy przerwać gdy ostatni segment z powodzeniem zakończy pracę. Co ciekawe strumienie są szybsze od standardowej iteracji nawet gdy wykonują operacje w których muszą zaaplikować coś do wszystkich elementów kolekcji, co jest kolejnym silnym argumentem przemawiającymza ich stosowaniem. Więcej informacji o strumieniach można znaleźć w dokumentacji java.util.stream.

Najbardziej naturalnym sposobem definiowania segmentów pipeline’u są wyrażenia lambda. Te wykorzystane w konstrukcji strumieni implementują interfejsy funkcji takie jak Consumer<T>, Function<T,R>, etc.. Można je znaleźć w paczce java.util.function. Dzięki wspomnianej wyżej zaawansowanej inferencji typów można je z powodzeniem wykorzystywać bez potrzeby wskazywania zwracanych i przyjmowanych typów explicite.

Java 8 wnosi wiele również w dziedzinie programowania równoległego. Praca ze strumieniami pozwala na natychmiastowe i bezbolesne przejście w tryb współbieżny za pomocą zmiany jednej tylko metody (stream() na parallelStream()). Mechanizm można wykorzystywać również na obiektach, nie będących thread-safe (tak długo jak długo nie próbujemy zmieniać ich zawartości, a jedynie pracować na pobranych wartościach). Oprócz równoległych strumieni czas wykonania naszego równoległego algorytmu może znacznie się zmniejszyć także dzięki wykorzystaniu nowych metod Arrays.parallelSort() (doskonale działającego dla dużych tablic) czy nowym akumulatorom (LongAccumulator, DoubleAccumulator z paczki java.util.atomic), które pozwalają na wykonywanie operacji na zmiennych z wielu równoległych wątków jeszcze wydajniej, niż w przypadku wcześniej wprowadzonych obiektów Atomic. Także ConcurrentHashMap (java.util.concurrent.ConcurrentHashMap) doczekał się optymalizacji wraz ze standardową HashMapą – przechowywanie wartości znajdujących się pod jednym hashem w postaci zbalansowanego drzewa pozwala na zmniejszenie pesymistycznego czasu dostępu do elementu z O(n) do O(log n).

Z punktu widzenia programisty pracującego nad aplikacjami biznesowymi atrakcyjną zmianą będzie nowe API daty i czasu. Wykorzystanie go wiąże się niestety z koniecznością licznych zmian w miejscach w których używano dotychczasowych klas Date oraz Time. Niesie ono jednak za sobą wymierne korzyści oraz przewagę nad dotychczasowym, nieintuicyjnym zarządzaniem czasem. Podstawowe założenia nowego api to niemutowalność obiektów reprezentujących datę/czas (co znacząco wpływa na bezpieczeństwo kodu), wprowadzenie klasy kompozytowej łączącej funkcjonalność czasu i daty, czytelność metod, łatwość obsługi stref czasowych, konwersji oraz operacji pozyskania nowych obiektów przez przekształcenie istniejących. Przy czym implementacja ostatniego założenia nasunie wielu deweloperom na myśl dobrze sprawdzający się mechanizm mutacji obiektów klasy Calendar. Nowe klasy: LocalTime, LocalDate, LocalDateTime znajdują się w paczce java.time i warte są uwagi – ich wdrożenie niewątpliwie zwiększa niezawodność i łatwość utrzymania aplikacji biznesowych, zwłaszcza tych o potencjale globalnym.

Nowa Java to standardowo poprawa bezpieczeństwa. Tym razem ulepszono standardowe algorytmy zabezpieczeń opartych na haśle, generatory pseudolosowe o zwiększonej entropii, wsparcie dla bardziej zaawansowanego dostępu do zasobów http z wykorzystaniem security manager’a, ustawienie protokołu TLS 1.2 jako domyślnego po stronie klienta, zwiększono wsparcie dla systemowych schematów kryptograficznych na różnych systemach operacyjnych, dodano również klasę reprezentującą kod Base64 oraz jego dekodery w bibliotece standardowej (java.util.Base64) ułatwiającą pracę z tym popularnym kodowaniem. Są to jednak zmiany i ułatwienia o bardzo specyficznych zastosowaniach.

Ciekawą, choć dla wielu programistów niezauważalną zmianą pozostanie możliwość interpretacji obiektów reprezentujących liczby całkowite jako liczb typu unsigned. Uczyniono to przez rozszerzenie klas Integer i Long o nowe metody porównań i działań. Ulepszenie to nie wpływa na standardową interpretację tych obiektów, pozwala jednak wykonywać na nich nowe operacje. Jest to ukłon w stronę deweloperów kompaktowych zastosowań języka Java, np. w urządzeniach pomiarowych czy transmiterach oraz tych, którzy korzystają z bibliotek i protokołów utworzonych w oparciu o język C. Niewątpliwie w wielu miejscach ulepszenie to ułatwia nterpretację, jednak należy podchodzić do niego z pewną dozą ostrożności – do zastosowań krytycznych wciąż brakuje w języku Java w tej kwestii sposobów na wymuszenie jednoznacznej interpretacji obiektu Integer jako unsigned, co potencjalnie mogłoby doprowadzić do trudnych do zdiagnozowania błędów w systemie.

W najnowszej wersji języka Java nie mogło zabraknąć ulepszeń bardzo silnie rozwijanej technologii interfejsu użytkownika: JavaFX.

Modena-Windows-v1

Modena theme look & feel (fxexperience.com)

Oracle promuje przede wszystkim nowy motyw Modena, możliwość zakorzenienia komponentów Swing w aplikacji JavaFX dzięki klasie SwingNode, rozwinięty sposób zarządznia wyświetlanym tekstem, rozszerzenie opcji manipulowania grafiką trójwymiarową oraz rosnące wsparcie dla HTML5 i CSS.

Maszyna Wirtualna

Każda aktualizacja pakietu Java Development Kit niesie za sobą szereg mniejszych zmian i poprawek maszyny wirtualnej dostarczanej przez Oracle. Nowa wersja języka to okazja do większych poprawek. W najświeższej wersji maszyny wirtualnej dostarczonej wraz z 8. edycją języka pojawiły się dwa znaczące ulepszenia.

Jednym z nich są kompaktowe profile – pozwalające tworzyć mniejsze dystrybucje programów, korzystające tylko z selektywnie dobranych podzbiorów funkcjonalności maszyny wirtualnej. Takie odchudzone dystrybucje można później deployować na małych urządzeniach w których pamięć jest najbardziej krytycznym zasobem.

Drugie udoskonalenie to nowy interpreter JavaScript o nazwie Nashorn. Można wywołać go bezpośrednio z kodu programu korzystając z klasy ScriptEngine lub ewaluować za jego pomocą kod korzystając z takich narzędzi jak jjs czy jrunscript.

Narzędzia

Omawiając nowości w języku Java 8 grzechem byłoby nie wspomnieć o zmianach w narzędziach dostarczanych programiście. I jest ich kilka. Pojawiło się, wspomniane już powyżej, narzędzie jjs wywołujące interpreter Nashorn. Nowy jest także jdeps przygotowany z myślą o analizie plików class. Za pomocą polecenia java możemy teraz uruchamiać aplikacje pisane w technologii JavaFX. Z kolei narzędzie jarsigner zyskało nową opcję zarządania znakowania czasowego pliku (trusted timestamping) wykonywanego przez wskazane Time Stamping Authority. Ulepszenia doczekało się dobrze znane narzędzie javadoc służące generowaniu dokumentacji źródeł, dodano m.in. zdolność tworzenia abstrakcyjnych drzew syntaktycznych na podstawie utworzonego w programie kodu.

Również najbardziej istotne dla dewelopera narzędzie javac, zyskało swoje udoskonalenia. Może być teraz wywołane z dyrektywą -parameters wykorzystywaną do przechowywania formalnych nazw parametrów, potrafi również weryfikować zawartość javadoc’ów oraz generować pliki nagłówkowe, w której to funkcjonalności zastępuje javah.

***

Już pobieżne spojerznie na powyższe zmiany doskonale ilustruje szeroką płaszczyznę optymalizacji i ulepszania biblioteki standardowej języka Java. Świadczy to niewąpliwie o żywotności i rozwoju tego języka. Przed deweloperami wyraźnie zarysowują się główne nurty wspomnianego rozwoju – wyrażenia lambda, zwiększanie czytelności kodu poprzez podwyższanie poziomu abstrakcji i zmniejszanie jego objętości, wydajne zrównoleglanie programów, jeszcze ciaśniejsze wiązanie się języka Java z zastosowaniami wysokiego ryzyka (w tym biznesowymi). Cieszy zwłaszcza ostatnia dziedzina rozwoju – Java została przecież stworzona do zastosowań biznesowych, a rosnący poziom bezpieczeństwa języka jest jednym z gwarantów niezawodności tworzonych w nim aplikacji.

Bibliografia

D.Harel., Y.Feldman, Rzecz o istocie informatyki, Wydawnictwo Naukowo-Techniczne, Warszawa 2008

http://fxexperience.com/2013/03/modena-theme-update/

http://www.javacodegeeks.com/2013/04/arrays-sort-versus-arrays-parallelsort.html

http://www.journaldev.com/2800/java-8-date-time-api-example-tutorial-localdate-instant-localdatetime-parse-and-format

http://www.mimuw.edu.pl/~urzy/Lambda/erlambda.pdf

http://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html

https://docs.oracle.com/javase/tutorial/java/generics/genTypeInference.html

https://docs.oracle.com/javase/8/docs/api/java/util/stream/package-summary.html

https://docs.oracle.com/javase/8/docs/api/java/util/function/package-summary.html http://docs.oracle.com/javase/8/docs/technotes/guides/scripting/nashorn/intro.html

https://blogs.oracle.com/java-platform-group/entry/java_8_s_new_type

http://www.oracle.com/technetwork/articles/java/jf14-date-time-2125367.html

http://www.oracle.com/technetwork/java/javase/8-whats-new-2157071.html

 

Empirica internationally

Empirica as a company specializes in trading software development for capital and cryptocurrency markets. We help hedge funds with our low latency Algorithmic Trading Platform and trading algorithms and crypto trading bots developement. We help market makers with Liquidity Engine – market making software, and wealth managers with Robo Advisor, wealth management software. We also support crypto exchanges in software development of their platforms.

Empirica zakłada stowarzyszenie ITCorner

Empirica wraz z kilkunastoma firmami z branży wysokich technologii zlokalizowanymi we Wrocławiu, założyła stowarzyszenie IT Corner.

Celem stowarzyszenia IT Corner jest wsparcie rozwoju lokalnych przedsięwzięć IT, zacieśnianie współpracy pomiędzy małymi i średnimi firmami sektora nowoczesnych technologii i rozwijanie synergii projektowej i produktowej członków organizacji.

IT Corner będzie dążyć do realizacji swoich celów poprzez:

  • organizowanie konferencji i innych eventów IT otwartych dla szerszej publiczności
  • regularne spotkania technologiczne pracowników firm zrzeszonych w IT Corner
  • współpraca firm stowarzyszonych przy większych projektach IT
  • dzielenie się doświadczeniami, know-how i sprawdzonymi praktykami przez zarządy i kadrę firm stowarzyszonych
  • wspólna obecność na targach pracy oraz eventach IT w Polsce i zagranicą

Pierwsze wspólne przedsięwzięcia na ten rok zostały już zaplanowane i zostaną wkrótce oficjalnie ogłoszone.

it_corner_100x100-01

Lista członków założycieli zawiera kilkanaście firm IT zatrudniających razem ponad 200 osób. Do końca roku IT Corner zamierza podwoić liczbę członków i największym oraz najaktywniejszym stowarzyszeniem firm IT we Wrocławiu.

Więcej na : Strona IT Corner

 

Empirica internationally

Empirica as a company specializes in trading software development for capital and cryptocurrency markets. We help hedge funds with our low latency Algorithmic Trading Platform and trading algorithms and crypto trading bots developement. We help market makers with Liquidity Engine – market making software, and wealth managers with Robo Advisor, wealth management software. We also support crypto exchanges in software development of their platforms.

Praca w korporacji czy w startupie?

Oto 8 powodów, aby wybrać pracę w małej firmie, zamiast w dużej korporacji

 

Tak jest, na pierwszy rzut oka wydaje się, że korporacja może na starcie zaoferować całkiem niezłe warunki. I finansowe i socjalne i dorzucą jeszcze kilka modnych benefitów typu karta multisport. Ale istnieją powody, dla których wybór pracy w małej firmie lub startupie może całkowicie odmienić przebieg Twojej kariery i to w jakim miejscu znajdziesz się za 5 lub 10 lat.

 

Praca Wrocław

 

Masz ukończone studia, dyplom w ręku i kilka ofert pracy na stole. Inaczej niż pokolenie wcześniej, które padło ofiarą trochę gorszej koniunktury rynkowej – masz wybór. I musisz jakiegoś dokonać. Z jednej strony jest to oferta na niższe stanowisko w renomowanej korporacji, z marką znaną na całym świecie. Z drugiej strony jest to praca w małej firmie, która dopiero zamierza podbić świat. Widziałeś ich produkt, wierzysz w ich misję, ich podejście do pracy i życia, ale nie jesteś pewien, czy chcesz podjąć ryzyko pracy w startupie. Powoli skłaniasz się więc ku pracy w korporacji – marka, dobra płaca, benefity. Mądry wybór.

 

Na pewno?

 

Oto kilka powodów, dla których warto skorzystać z często niepowtarzalnej szansy i przyjąć ofertę pracy w start-upie.

 

  1. Będziesz mieć więcej odpowiedzialności.

Praca w małej firmie, najprawdopodobniej oznacza, że jesteś częścią … małego zespołu. W małym zespole, nikt inny w firmie nie będzie dysponował identycznym zestawem umiejętności i doświadczeń jak ty. Nikt też najprawdopodobniej nie podchodzi do rozwiązywania problemów w ten sam sposób.

Od pierwszego dnia też dostaniesz więcej odpowiedzialności. A to wymusi na Tobie bycie bardziej uniwersalnym, bardziej niezawodnym i bardziej wydajnym niż w jakimkolwiek innym projekcie dotychczas. W większej firmie, nie prędko dana ci będzie sposobność by na efektach Twojej pracy opierała się ważna część firmy. To nadaje prawdziwe znaczenie byciu integralną częścią zespołu. Dosyć ciekawe i motywujące wyzwanie zaraz po studiach, nieprawda?

 

  1. Będziesz mieć więcej możliwości.

 

Statystycznie korporacje oferują początkowo wyższy poziom zarobków niż mniejsze firmy. Ale startupy oferują inny rodzaj wynagrodzenia, którego nie masz szansy nawet posmakować w korporacjach. System motywacyjny oparty nie na pieniądzach, ale na możliwościach zdobyciu nowych umiejętności i wykorzystaniu niesamowitych możliwości rozwoju. Zdobyte doświadczenie daleko przeważa trochę niższą początkowo pensję i jest mocną podstawą do uzyskania dużo wyższych zarobków w przyszłości. Ludzie, którzy dobrze wykorzystają kilka lat w startupie, są daleko lepiej przygotowani do pełnienia ról kierowniczych i wymagających, brania odpowiedzialności za siebie, zespół czy produkt niż ich rówieśnicy, którzy od razu po studiach poszli do korporacji. Te doświadczenia dużo lepiej rokują na ciekawą i dynamiczną karierę w przyszłości, niż wąska specjalizacja w jaką wpada większość pracowników korporacji, z której w kolejnych latach bardzo ciężko im się uwolnić.

 

  1. Będziesz w stanie spróbować wielu różnych rzeczy.

 

Jednym z najpoważniejszych zarzutów jaki słyszę od kolegów, którzy po latach pracy w korporacjach dochrapali się lepszych stanowisk, jest to, że utknęli nad jednym rodzajem zadania i nie mają okazji do wypróbowania się w innych obszarach. Czy to programowanie określonej części systemu czy wypełnianie arkuszy kalkulacyjnych, w korporacji zwykle króluje podejście jeden do jednego: jednen task – jedna osoba.

Praca w startupie natomiast, będzie wręcz wymagała od ciebie przymierzania wielu różnych czapeczek, nawet takich, których nigdy byś sam się nie zdecydował przymierzyć. A konsekwencją tego jest to, że po paru latach okazuje się, że czujesz się dobry w realizacji zadań z wielu różnych dziedzin. A to poszerzy zarówno Twoje horyzonty, jak i możliwości.

 

  1. Będziesz uczyć się od prawdziwych innowatorów.

 

Ludzie, którzy rozpoczynają własną działalność gospodarczą mają inny profil zarówno psychologiczny jak i zawodowy, od tych, którzy nigdy nie próbowali zrobić czegoś całkowicie na swoim. Przedsiębiorcy są definiowani przez nieustanne patrzenie na problemy po to, by szukać dla nich innowacyjnego i oryginalnego rozwiązana. I właśnie ze względu na ich innowacyjną naturę, przedsiębiorcy są jednymi z najlepszych ludzi, od których można się uczyć. Podchodzą do problemów inaczej, stale poszukują rozwiązań i są nastawieni na to, by wydobyć jak najwięcej pozytywnych i wartościowych rzeczy z inwestycji jakimi są dla nich ich czas oraz ich praca.

Dyskusje ze współzałożycielami odnośnie rozwoju produktu czy wprowadzaniu go na rynek, obejmują w startupach często cały zespół i pozwalają spojrzeć na swoją pracę z zupełnie innej perspektywy. Innowacyjność to coś więcej niż kreatywność. To cykl akcji i reakcji, rozwiązywania problemów w nowy, pouczający sposób, sprawdzenie czy on działa, i ewentualnie rozpoczęcie cyklu od nowa. Startup różni się od korporacji tym, że przedsiębiorcy nie boją się pozwolić ludziom spróbować nowych rzeczy oraz tym, że pracują z nimi, a nie ponad nimi. Każdy startup, który odnosi sukces, ma wśród założycieli prawdziwych innowatorów, i jeśli znajdziesz właściwy startup, nauczysz się w nim bardzo dużo.

 

  1. Twoja praca zostanie zauważona (Twoje porażki też).

 

Pracując w ciężko w dużej firmie, często się zdarzy, że efekty twojej ciężkiej pracy pozostaną niezauważone przez Twojego szefa lub wręcz ignorowane. Co niestety równie prawdopodobne, ktoś inny, lepszy w niuansach korporacyjnej polityki, może sprawić, że zasługi przypisane zostaną jemu.

W startupie jest praktycznie niemożliwe, aby nie zauważyć, dobrze wykonanej pracy, albo przypisać sobie nieprawowite zasługi. Jeśli Ci się uda, mały zespół szybko to rozpozna i doceni, a cześć i chwała należeć będzie do Ciebie.

Z drugiej strony również bardzo łatwo jest zauważyć, kiedy coś zostanie schrzanione. Ale to ma także dobre strony. Pierwsza jest taka, że jest prawie niemożliwe, aby się niezauważalnie obijać. W ciągu kilku dni, twoje uniki zostaną zauważone i reszta zespołu będzie się zastanawiać, dlaczego pracuje ciężej niż musi. Świadomość tego pozwala pozostać skoncentrowanym. Drugim powodem jest to, że ze względu na to, że porażkę łatwiej jest zauważyć, masz większą motywację do tego, by nie popełniać tych samych błędów drugi raz.

Pozostań skoncentrowany, a twoje sukcesy będą dostrzeżone, a niepowodzenia zminimalizowane. A kiedy reszta zespołu mówi “Nie zrobilibyśmy tego bez ciebie”, możesz mieć pewność, że mówią poważnie.

 

  1. Będziesz pracować w niesamowitej atmosferze.

 

Wyliczmy:

– każdy dzień jest inny

– w porządku jest posiadanie własnych nawet najbardziej niepoprawnych opinii i przekonań

– zupełnie luźny dress code

– jeśli ktoś nie rzuci przynajmniej jednego dobrego żartu na godzinę, to znaczy, że jest to kiepski dzień

– każdy, kto pracuje w startupie, ma taką ogromną motywację do tworzenia nowych rzeczy

– społeczność startupowa, jest wielką i zgraną grupą. To kupa ludzi, którzy ciągle wymyślają nowe rozwiązania do starych problemów, czy też tworzą narzędzia które upraszczają w jakiś sposób innym życie. Duch przedsiębiorczości jest pozytywnie zaraźliwy.

– Można pić piwo w pracy. Ale tylko przy specjalnych okazjach 🙂

 

  1. Nauczysz się być oszczędny.

 

Praca w startupie, o ile nie macie inwestora, który zasypuje was deszczem pieniędzy, najprawdopodobniej oznacza, że nie ma miejsca na rozrzutność. Mała firma będzie szukała każdego możliwego sposobu by osiągnąć więcej robiąc i wydając mniej. Nie ma miejsca na ekstrawagancje, nie ma miejsca na fanaberie. Zamiast tego, stażysta od rozwoju biznesu będzie musiał nauczyć się jak zaprojektować i zakodować firmy blog, programista będzie czasem adminem a czasem testerem, a już na początku będzie trzeba znaleźć sposób, aby zmieścić dziewięć osób przy ośmioosobowym stole (wskazówka: wystarczy dostawić krzesło).

Ta oszczędność i odpowiedzialność za wydatki, niewątpliwie wpłynie na Twoje własne życie, i po pewnym czasie będziesz zaskoczony ile znalazłeś sposobów na spełnienie w życiu, innych niż wydawanie zarobionych pieniędzy. Zamiast tego, prawdopodobnie odkryjesz radość w tworzeniu i robieniu, niż konsumpcji. Znajdziesz radość z bycia częścią zespołu, który stara się uczynić życie innych ludzi łatwiejszym czy też bardziej zabawnym. To daje niezłego kopa aby znaleźć nowe hobby i rozpocząć kilka własnych, prywatnych projektów. W świecie startupowym wszystko się kręci wokół tego, by więcej tworzyć a konsumować mniej (może poza pizzą).

 

  1. Przekonasz się o wartości ciężkiej pracy, odpowiedzialności i poczucia wpływu.

 

Być może ważniejsze niż jakakolwiek inna rzecz przy pracy w startupie jest uświadomienie sobie, że ciężka praca, myślenie twórcze i wytrwałość są warte bardzo dużo. Po stworzeniu czegoś własnego, czegoś namacalnego i niezależnego, czegoś co można dotknąć, poczuć, lub używać, naprawdę zaczniesz doceniać sens poczucia odpowiedzialności i autorstwa.

Tym, których praca nie polega na tworzeniu, lub polega na tworzeniu na polecenie innych, trudno jest zrozumieć jak wielkie znaczenie ma poczucie wpływu i wolności w tworzeniu czegokolwiek. Praca w startupie i szerzenie wieści o produkcie swojego zespołu, produkcie, który pomogło się powołać do życia, daje ogromne poczucie dumy ze swojej pracy.

Praca w startupie oznacza również, że tylko Ty i Twój mały zespół jesteście jedynymi ludźmi odpowiedzialnymi za swój sukces. U niektórych, ta świadomość może wywołać reakcję, aby wczołgać się w kąt i siedzieć tam mając nadzieję, że ktoś przyjdzie i poda im na talerzu ich wypłaty. Dla innych jest to największa motywacja jaka może być.

Bez względu na to, w jakim miejscu znajdziesz się po pracy w startupie, zwłaszcza jeśli przyjdzie Ci do głowy pomysł stworzenia własnej firmy, która naturalnie też będzie musiała być samowystarczalna, umiejętności, które nabyłeś pracując w startupie będą wspierać cię we wszystkim co robisz.

Osobiście, mając doświadczenia po obu stronach barykady (sześć lat w korpo, w tym na kierowniczych stanowiskach i dobrych kilka w dwóch startapach) nigdy nie dałbym się namówić na powrót do pracy w korporacji – zwłaszcza teraz, po skosztowaniu wolności i możliwości jakie daje praca w mniejszych firmach. Praca w startupie bardziej niż pracę przypomina wzięcie udziału w ciekawym, pełnym intelektualnych wyzwań projekcie razem z grupą świetnych ludzi, którzy po czasie zostaną Twoimi przyjaciółmi.

I właśnie dlatego korporacje muszą Cię obsypać błyskotkami w postaci różnych benefitów, byś nie myślał i nie tęsknił za prawdziwymi wyzwaniami i własnym wszechstronnym rozwojem, bo tego po prostu nie są w stanie Ci dać.

Wrocław, miejsce idealne łączące świat technologii i biznesu

 

Wrocław jest czwartym co do wielkości miastem w Polsce, zamieszkałym przez 650 tys. osób. To co pozytywnie wyróżnia Wrocław, na tle innych miast jest wysoki odsetek młodych mieszkańców stolicy Dolnego Śląska – studentów i absolwentów 24 uczelni wyższych, co wpływa nie tylko na rozwój miasta, ale także jego akademicką atmosferę. Coraz lepsze wykształcenie i znajomość języków obcych, ze szczególnym naciskiem na angielski (deklarowana znajmość 95% uczniów i studentów) i niemiecki (60% uczniów i studentów), powoduje, że Wrocław jest idealnym miejscem dla inwestorów zagranicznych i krajowych. Atutem jest także lokalizacja – bliska odległość granicy z Niemcami i Czechami, dobra infrastruktura oraz możliwości transportu – od samochodowego, kolejowego na lotniczym kończąc – lotnisko im. Mikołaja Kopernika we Wrocławiu obsługuje loty do pond 30 europejskich miast, od przyszłego roku także do Azji (Tokio). Port Lotniczy Wrocław zlokalizowany jest w zachodniej części miasta, w odległości ok. 10 km od centrum. Lotnisko jest połączone z Autostradową Obwodnicą Wrocławia (A8).

Wrocław loty

Mapa regularnych połączeń lotniczych z Wrocławia (źródło: www.airport.wroclaw.pl)
Liczby mówią same za siebie – 122 tys. studentów, ponad 32 tys. absolwentów (2014 r.), ponad 420 tys. osób w wieku produkcyjnym – Wrocław dysponuje bogatym i konkurencyjnym wobec innych miast, kapitałem ludzkim. Wrocław jest jednocześnie trzecim największym ośrodkiem akademickim w Polsce. Ale to czego nie mają inne ośrodki akademickie to specjalizacja. Wrocław specjalizuje się w kształceniu studentów kierunków technicznych, zwłaszcza informatyki. W 2014 roku na samej Politechnice Wrocławskiej informatykę i kierunki pokrewne studiowało blisko 11 000 osób, co stanowiło 1/3 wszystkich studentów tej uczelni.

 

Wrocław studenci
Tabela. Studenci IT i kierunków pokrewnych na wrocławskich uczelniach publicznych (stan na 30.11.2014)

 

 

Miasto, władze

 

Wrocław wraz z pobliskimi gminami tworzy Aglomerację Wrocławską, zamieszkałą w sumie przez ponad milion mieszkańców, co stanowi jedną trzecią całego województwa dolnośląskiego (2 914 362 osób).
Polityka władz regionu, która postawiła sobie za cel przyciągnięcie inwestorów zagranicznych i krajowych, utworzyła specjalnie powołany do celów promocji podmiot, jakim jest działająca do dziś Agencja Rozwoju Aglomeracji Wrocławskiej. Pokazanie Wrocławia takim jaki jest – z całym kapitałem, jako miejsce przyjazne dla biznesu, z piękną architekturą, łączącą w sobie historyczne piękno wrocławskiego rynku z nowoczesnością wielu centrów handlowych i biurowców, zielenią w licznych parkach miejskich i przy rzece Odrze, tworzy niepowtarzalny klimat i zachęca do mieszkania i inwestowania.

 

Dowodem na potwierdzenie atrakcyjności Wrocławia jest pierwsze miejsce w badaniu Antal International „Aktywność specjalistów i menedżerów na rynku pracy”, w którym sprawdzono atrakcyjność relokacyjną polskich miast.
 Wrocław relokacja IT
Źródło: Antal International, „Aktywność specjalistów i menedżerów na rynku pracy” 26.09.2012

 

Innowacyjność – najwięksi w Polsce

 

Wrocław stał się największym ośrodkiem badań i rozwoju w Polsce, czego dowodem jest stale rosnąca liczba dedykowanych centrów B&R (ponad 18 centrów firmowych), obecność 5 niezależnych centrów badawczych na czele z EIT+, ogromny potencjał badawczy Politechniki Wrocławskiej (instytucja zgłaszająca największą liczbę wniosków patentowych), której pracownicy zasilają wiele międzynarodowych zespołów badawczych oraz ścisła współpraca z ośrodkami badawczymi na całym świecie, co tworzy bazę do zaawansowanych badań i rozwoju innowacji (w szczególności z dziedziny informatyki, medycyny, biotechnologii i nanotechnologii).

 

We Wrocławiu prężnie działa i rozwija się środowisko tzw. przemysłu kreatywnego, które zajmuje się grafiką, animacjami komputerowymi, systemami informatycznymi, czy aplikacjami mobilnymi. Firmy zrzeszone w klastrze Creativro należą do czołowych polskich producentów gier komputerowych.

 

Nowoczesność z dbałością o tradycje

 

Wrocław to także ponad tysiącletnia historia, zabytki architektury położone nad Odrą i jej kanałami (skąd określenie: polska Wenecja), liczne imprezy kulturalne, sportowe, artystyczne. Dodatkowym atutem jest rozbudowana sieć komunikacji miejskiej, infrastruktura transportowa oraz łatwy dostęp do edukacji, urzędów i instytucji. Wszystko to powoduje, że Wrocław od pierwszego wejrzenia wydaje się (i takim jest) miastem o niezwykle przyjaznej atmosferze i otwartym dla wszystkich, co także czują osoby będące tu po raz pierwszy – każdy chce tu wrócić.

 

Inwestycje zagraniczne we Wrocławiu

 

Budowany przez ostatnią dekadę klimat inwestycyjny sprawił, że wiele firm działających dzisiaj na terenie aglomeracji wrocławskiej to globalne firmy z kapitałem zagranicznym. Zostało to zauważone przez media – 130 miast z całego świata, a w czołówce najlepszych miejsc do inwestowania – Wrocław. Tak wygląda najnowszy międzynarodowy ranking Global Cities of Future 2014/2015 przygotowany przez fDi Intelligence z grupy Financial Times. O wynikach rankingu napisała „Rzeczpospolita”.

 

Wrocław zajął wysokie szóste miejsce w globalnym zestawieniu miast rynków wschodzących i dziewiąte w klasyfikacji wszystkich miast z najlepszymi strategiami przyciągania inwestycji. Stolica Dolnego Śląska otrzymała także trzecią lokatę wśród dużych miast pod względem przyjazności dla prowadzenia biznesu. W tej ostatniej kategorii, ale w globalnym zestawieniu miast wschodzących, jest nawet liderem, ponadto sklasyfikowano ją na miejscu piątym pod względem kapitału ludzkiego i jakości życia i na miejscu dziesiątym w zestawieniu dostępności.
Rafał Dutkiewicz, prezydent Wrocławia: – Pozycja Wrocławia w rankingu jest efektem wielu lat pracy dużego zespołu ludzi, który na moje polecenie stara się, by obsługa inwestorów w naszym mieście była na jak najwyższym poziomie. To, że z roku na rok jesteśmy wyżej w zestawieniu pokazuje, że starania te dają dobre wyniki. Z przyjemnością powiem też, że obecna pozycja odzwierciedla nasze europejskie aspiracje.

 

Wrocław w światowych rankingach

 

Już sam fakt, że autorzy rankingu uznali, iż warto wziąć Wrocław pod uwagę, jest istotnym wyróżnieniem – zaznacza prof. Andrzej Drabiński, prorektor ds. rozwoju i informatyzacji Uniwersytetu Przyrodniczego. – Tym bardziej, że w globalnym rankingu znalazły się tylko dwa miasta z Polski.
Najwyższy poziom innowacyjności, zrównoważony rozwój oraz wysoka jakość życia – to jedne z najważniejszych elementów rankingu Cities In Motion Index, przygotowane przez hiszpańską IESE Business School.
Opracowaną po raz pierwszy klasyfikację, określa się jako “najmądrzejsze” miasta świata. Jej autorami są pracownicy jednej z najbardziej znanych szkół biznesowych na świecie, działającej przy Uniwersytecie Nawarry.
W rankingu znalazło się 135 miast z 55 krajów. Tu znajdziesz ranking.
Ten ranking pokazuje, że nie ma jednej recepty na dobrze funkcjonujące miasto – mówi Adam Grehl, wiceprezydent Wrocławia. – Ważna jest zabytkowa zabudowa, ale i nowa architektura, liczy się rozwój gospodarczy i ekonomiczny, ale i rekreacja.
Zmienia się charakter miast, które przeżywają renesans. Ich mieszkańcy wychodzą z mieszkań, by wspólnie spędzać czas w najróżniejszych formach. Doskonale widzimy to we Wrocławiu, kiedy obserwujemy tłumy na pergoli, w Rynku, albo na trasach rowerowych.

 

Hiszpanie brali pod uwagą ponad 50 różnych wskaźników, m.in. zarządzanie, urbanistykę, spójność społeczną, technologie, transport czy umiejętności przyciągania największych talentów.
Najwyższe oceny ekspertów zebrało Tokio, za nim jest Londyn i Nowy Jork. W zestawieniu znalazły się tylko dwie polskie metropolie – na 76. miejscu była Warszawa, a na 82. Wrocław (za nami była m.in. Moskwa). Stolica Dolnego Śląska najlepsze oceny zyskała za urbanistykę, zarządzanie miastem oraz w kryterium kapitału ludzkiego (pod tym względem wyprzedza Warszawę). Najsłabiej Wrocław wypadł w kategorii ekonomia.
Adam Grehl: – Oczywiście, w dyskusjach zawsze będziemy aspirowali do najlepszych i najbogatszych, ale komentując nasze miejsce w rankingu, trzeba brać pod uwagę, ile musieliśmy zrobić we Wrocławiu by osiągnąć dzisiejszą pozycję oraz ile jeszcze jest do zrobienia.
Wrocław oczami innych, czyli co można jeszcze znaleźć w prasie zagranicznej i raportach

 

Raport PwC z 29.09.2015 r.

 

Wrocław to najszybciej rozwijająca się metropolia w ciągu minionych 10 lat – mówią eksperci PwC Polska Sp. z o.o., autorzy najnowszego „Raportu o polskich metropoliach 2015”.
Zbadanych zostało 12 miast: Wrocław, Warszawa, Trójmiasto, Szczecin, Rzeszów, Poznań, Łódź, Lublin, Kraków, Katowice, Bydgoszcz i Białystok, w których łącznie żyje 7,5 mln osób, co stanowi 19% całej ludności kraju, gdzie wytwarzane jest 34% całkowitego PKB. Raport ma na celu przedstawienie oceny szans i wyzwań rozwojowych stojących przed polskimi metropoliami.
Raport nie jest rankingiem, my patrzymy na rozwój metropolii i mówimy, jak można kształtować strategię miasta, zaznaczając najważniejsze atuty i słabości. To informacje dla włodarzy Wrocławia o tym, jakie są najważniejsze wyzwania dla miasta i jakie atuty wykorzystać w celu przyspieszenia jego rozwoju – mówi prof. Witold Orłowski, główny doradca ekonomiczny PwC.
Wyniki raportu traktujemy jako wyzwanie, poszczególne wskaźniki będziemy analizować i wyciągać wnioski – komentuje wyniki „Raportu o polskich metropoliach” Maciej Bluj, wiceprezydent Wrocławia.
Według autorów raportu, Wrocław może się poszczycić dobrym wizerunkiem miasta, wysoką atrakcyjnością inwestycyjną, coraz lepszym stanem infrastruktury, poprawiającym się kapitałem ludzkim, wysoką jakością edukacji i wartościowym rynkiem pracy.
Wizerunek miasta buduje atrakcyjność inwestycyjną. Rozpoznawalność miasta przyciąga nie tylko turystów i mieszkańców, ale coraz większą liczbę przedsiębiorców, co wzbogaca miasto i buduje jego pozycję – uważa Mariusz Dziurdzia, partner PwC.
Popracować należy nad bezpieczeństwem publicznym, transportem i zwiększeniem aktywności społecznej mieszkańców.
Znamy te problemy i podejmujemy działania, by je rozwiązać. Zależy nam na aktywizacji mieszkańców. Przykładem są m.in. konsultacje społeczne czy budżet obywatelski, który rozwijamy – mówi Maciej Bluj.

 

Financial Times – „Poland draws big banks for nearsourcing”, 22.01.2015

 

Z kolei na początku roku brytyjski dziennik „Financial Times” w artykule „Poland draws big banks for nearsourcing” przedstawił analizę rynku usług biznesowych w sektorze bankowym, w którym Wrocław zaliczył do czołówki europejskich centrów outsourcingowych, a Polskę określił jako rywala Chin i Indii w tej dziedzinie.
Podkreślono, że we Wrocławiu swoje centra mają już największe instytucje branży finansowej – Credit Suisse i BNY Mellon, które planują w ciągu 1,5 roku zwiększyć zatrudnienie o ok. 3 tysiące pracowników.

 

Wrocław in Financial Times

 

To co przyciąga zagranicznych inwestorów do tworzenia centrów we Wrocławiu, to zdaniem „FT” mniejsze koszty przy jednocześnie równie wysokiej jakości usług, lokalizacja (blisko do firmowych central) oraz coraz większa oferta powierzchni biurowych (przykład: Hewlett-Packard Global Business Center, który wynajął ponad 16 tys. mkw. w nowo powstającym biurowcu na pl. Dominikańskim).

 

W kolejnym rankingu, przygotowanym przez powiązaną ze słynnym domem aukcyjnym Sotheby’s, firma Poland Sotheby’s International Realty, przyznała Wrocławiowi 3 miejsce w wytypowanych przez siebie 10 najbardziej atrakcyjnych do zamieszkania polskich miast:

 

1. Kraków
2. Trójmiasto
3. Wrocław
4. Warszawa
5. Bydgoszcz
6. Łódź
7. Toruń
8. Lublin
9. Kazimierz Dolny
10. Zakopane.

 

Natomiast, w rankingu “Quality of Living”, opublikowanym przez firmę doradczą Mercer, pośród 230 miast z całego świata, z Polski wytypowano dwa: Wrocław, który zajął 100 miejsce i Warszawę na 79 pozycji. Mercer docenił Wrocław także w klasyfikacji miast, które aspirują do miana centrów biznesowych. Pod tym względem atutami stolicy Dolnego Śląska są m.in.: wykształcenie pracowników i infrastruktura. W rankingu najlepszych miejsc do życia od 6 lat wygrywa Wiedeń, a w pierwszej trójce znalazły się także Zurych i Auckland z Nowej Zelandii.

 

12 cech, które dobry programista posiadać powinien

Programowanie to rzemiosło czy powołanie? Co to znaczy być dobrym programistą? Na co zwrócić uwagę przy rozwijaniu własnego warsztatu? Jakie cechy pomogą programiście przy pracy w projektach?
Oto 12 umiejętności i cech, które naszym zdaniem są kluczowe, by być dobrym programistą.

Umiejętności IT

1. Podstawowe umiejętności informatyczne. istnieje zestaw umiejętności, które każdy powinien posiadać. Po pierwsze, programista musi mieć umiejętności badawczo-analityczne, umiejętność czytania ze zrozumieniem, w tym po angielsku, praktyczną wiedzę z zakresu znajomości wzorców projektowych, bibliotek i frameworków, a także umiejętność zrozumienia problemów informatycznych. Teoretycznie kluczowe mogły by być dobrze prowadzone zajęcia na uczelni, które pomagały studentom rozwijać umiejętności logicznego myślenia, twórczego rozwiązywania problemów i komunikacji. Zajęcia, oparte na pracy zespołowej, wymagałyby skutecznej komunikacji między członkami zespołu, który ma za zadanie wspólnie rozwiązać problem i wyjaśnić proponowane rozwiązanie innym słuchaczom. Niestety nasze uczelnie ciągle większy nacisk kładą na opanowanie wiedzy teoretycznej a nie na wykształcenie u młodych ludzi podstaw rozwijających u nich radzenie sobie w sytuacjach projektowych, umożliwiając przeniesienie wyuczonej wiedzy uczelnianej na grunt zawodowy.

2. Programowanie trzeba lubić. Programowanie nie jest dla osób, które naprawdę się tym nie interesują. Tylko programista, który naprawdę lubi to co robi będzie w stanie ciągle rozwijać swoją wiedzę i umiejętności. A biorąc pod uwagę tempo ciągłych zmian w obszarze języków programowania i narzędzi, ciągłe rozwijanie swojego warsztatu jest nieodłączną częścią zawodu programisty.

3. Poprawa jakości. całkiem jeszcze niedawno często dało się słyszeć wśród programistów opinię, iż testowanie nie jest zajęciem przewidzianym dla nich. Od czasu popularyzacji TDD – Test Driven Development, takie opinie to rzadkość, świadcząca raczej o małym doświadczeniu. Obecnie, programiści znają i rozumieją wartość testów, gdyż to właśnie ich nadrzędnym celem jest stworzenie poprawnie działającego systemu. Poprzez identyfikacje, wykrycie i eliminacje błędów, dążą oni do stworzenia niezawodnego kodu. Co więcej, dobry programista wie, że szkoda jest czasu na pisanie banalnych lub zbędnych testów. Zamiast tego, koncentruje się na badaniu i sprawdzaniu kluczowych elementów kodu już w trakcie ich tworzenia.
Dla doświadczonego programisty ważnym elementem poprawy jakości tworzonego kodu jest jego refaktoryzacja. Rozumie się to jako poprawianie kodu bez wprowadzania zmian w sposobie jego działania. A wysokie pokrycie unit testami jest czymś, co proces refaktoryzacji czyni niemal bezbolesnym.

4. Reusabliity. Po co wymyślać koło, skoro już jedno jest i działa? Życie jest zbyt krótkie, aby ciągle opracowywać kod, który rozwiązuje te same problemy. Dobry programista, w trakcie tworzenia oprogramowania analizuje, które jego części będą mogłby być wykorzystane w innych miejscach systemu lub w kolejnych projektach i tak je opakuje by proces ponownego użycia maksymalnie ułatwić nie tylko sobie, ale także swoim kolegom.
Dobry programista wkłada wiele wysiłku, aby ostatecznie stworzyć prosty i funkcjonalny system. Zdyscyplinowany inżynier myśli zarówno o procesie utrzymania, jak i ewolucji każdej linii kodu.
Natomiast dzięki projektom open source, programista nie jest zdany na siebie w trakcie procesu tworzenia oprogramowania. Wręcz przeciwnie – może budować z opracwanych przez innych klocków. A jeśli okażą się one niewystarczające, to nic nie stoi na przeszkodzie by pracować wirtualnie wraz z innymi programistami z całego świata, aby zrobić wspólnie coś jeszcze lepszego.

5. Programowanie z użyciem wielu języków. Chodzi nie tylko o to, że jeśli programista zna wiele języków programowania, jego szanse na znalezienie ciekawej pracy są większe. Chodzi przede wszystkim o to, że różne języki nadają się do rozwiązywania różnych problemów. Często jest tak, że wiążą się także z innym sposobem myślenia, który niesamowicie poszerza horyzonty.

Cechy charakteru

6. Dbałość o szczegóły. Kod bez komentarza i dokumentacji, niskie pokrycie testami jednostkowymi, hardcodowanie parametrów, nieznajomość wzorców projektowych…Tto wszysto są rzeczy, które czasem przemkną się niezauważenie w jednym czy drugim projekcie. Niemniej jednak, ostatecznie zagrażają całej karierze programisty. W dobrych zespołach, takie zachowania nie będą tolerowane, bo uderzają w jakość tworzonego produktu. Tym samym obniżają wartość pracy całego zespołu programistycznego.
Zawsze dbaj o szczegóły! Stąd już prosta droga, aby stać się naprawdę dobrym programistą.

7. Zrozumienie istoty biznesu klienta. nie rozumiesz, dlaczego rozwój i opracowanie coraz lepszego oprogramowania jest tak ważny w procesie utrzymania klientów? Koniecznie musisz rozważyć historię związaną z NASA. “To oprogramowane nigdy się nie psuje ani nigdy nie wymaga ponownego uruchomienia. Ono jest wolne od błędów. To oprogramowanie jest doskonałe – opracowane w sposób najlepszy z możliwych. Proszę wziąć pod uwagę te statystyki: trzy ostatnie wersje programu, o długości 420.000 linii kodu, zawierały tylko jeden błąd. Ostatnie jednaście wersji tego systemu zawierały łącznie 17 błędów. Komercyjne systemy o równoważnej złożoności zawierałyby ok. 5000 błędów.” Zdolność zrozumienia, dlaczego proces kodowania odbywa się właśnie w ten sposób jest kluczowy. Pozwala stworzyć produkt dla Klienta, który doceni jego wartość i funkcjonalność.

8. Ciekawość. Dla programisty stan ciekawości i zastanawiania się, dlaczego dana rzecz jest zrobiona w taki a, nie w inny sposób, jest stanem naturalnym. Wielu programistów ma podobne wspomnienia. Będąc dziećmi, często wpadali w niezłe tarapaty, rozkładając zabawki lub mniejsze czy większe urządzenia domowe. W ten sposób dowiadywali się jak coś działa.
Tworzenie oprogramowania jest procesem twórczym. Warto również podkreślić, iż wielu programistów znanych jest za swoich artystycznych zainteresowań. To właśnie wspomniana ciekawość pozwala myśleć w sposób kreatywny, niestereotypowy, w trakcie projektowaniu programów. I oczywiście zostaje jeszcze ten dreszczyk emocji: kiedy okazuje się, iż coś co zaprojektowałeś, działa! I kolejny, gdy widzisz, że używają tego ludzie.

9. Doświadczenie. Oprócz praktycznego doświadczenia, pożądaną cechą przyszłego programisty jest również wiedza z zakresu matematyki i innych nauk ścisłych. Co więcej, umiejętność dobrej organizacji pracy jest również dużym atutem. Jednocześnie, należy podkreślić, że nawet wielcy programiści są świadomi, że nie zgłębili wszystkich tajników programistycznej wiedzy i wiele jeszcze przed nimi. Dlatego umiejętność i chęć dalszego kształcenia jest niezbędna w dziedzinie, w której zmiana jest nieunikniona.

10. Dyscyplina. Nawet jeżeli programista bardzo lubi swoją pracę, nie oznacza to, że kolejny projekt może wykonać niedbale. Dbanie o szczegóły jest bardzo ważne, tak samo jak i umiejętności organizacji pracy. Duża ilość błędnego kodu zazwyczaj jest napisana przez programistów, którzy nie do końca wiedzieli o co chodzi i co mają wykonać w zleconym projekcie.

11. Cierpliwość: Błędy w kodzie są naturalne. Pomyłki w trakcie projektowania są również czymś normalnym. Niedbałe kodowanie wykonywane przez innych programistów jest częstym zjawiskiem. Stąd prosty wniosek: każdy programista zdaje sobie sprawę, iż to właśnie cierpliwość jest kluczem do osiągnięcia wymaganej jakości.

12. Praca zespołowa: Nieliczne projekty są na tyle małe i wymagają ograniczonej liczby umiejętności, aby mogły być wdrażane tylko przez jedną osobę. Nauka pracy zespołowej jest jednym ze sposobów, który może pomóc przebić się ponad stereotypowy sposób postrzegania programisty-samotnika. To właśnie praca zespołowa – czy wirtualna (ta wbrew pozorom jest trudniejsza), czy w biurze, jest podstawą sukcesu dobrego programisty. Co więcej, dobrzy programiści posiadają dobre umiejętności komunikacyjne, które są kluczowe nie tylko w rozmowach projektowych z innymi programistami. Przydaje się to także przy komunikacji z klientami, podczas opracowywania dla nich funkcjonalnych rozwiązań.