Programiści .NET szczególnie poszukiwani

Październikowy raport Dice, amerykańskiego portalu pracy, wskazuje, że liczba ofert pracy dla programistów .NET zwiększyła się w ostatnim czasie o 25%. Jest to dość znaczny wzrost, przewyższający nawet wzrost liczby wszystkich ofert pracy w serwisie.

Jak wynika z badań Dice, zapytania o dotnetowców stały się coraz częstsze. I tak, 27% zapytań do bazy CV serwisu dotyczyło programistów .NET z doświadczeniem od 0-3 lat, 46% z doświadczeniem 4-7 lat, a 21% dla dotnetowców pracujących ponad 8-10 lat.

Według osób przygotowujących raport, sytuacja ta spowodowana jest obawą programistów przed „inwestycją” w technologię, z której potem może być im trudno przejść na inne platformy. Dodatkowym demotywatorem mogą być zarobki. W Stanach Zjednoczonych, programista .NETa zarabia około 83 000 dolarów rocznie (268 000 zł), podczas gdy programista Java otrzyma ponad $91 000 rocznie (294 000 zł). Dice jednak uspokaja, że przy dużym popycie, także zarobki dotnetowców wzrosną.

W Polsce sytuacja wynagrodzeń jest podobna, choć różnica jest mniejsza. Według badań HAYS, firmy doradztwa personalnego, programista Java w województwie mazowieckim zarabia średnio 10 000 zł miesięcznie, a programista .NET – 9000 zł. Jak widać, różnica ta nie jest aż tak znaczna, a w innych województwach jest ona nawet mniejsza.

Wyniki podawane przez Dice odnoszą się do sytuacji na rynku amerykańskim. Jednak także polskie firmy zaczynają już odczuwać braki dotnetowców. Sytuacja ta dotyczy głównie firm outsourcingowych, które bardziej podatne są na zagraniczne trendy rynkowe.

żadnych reklam, sama wiedza.

Zarejestruj się na BEZPŁATNY NEWSLETTER i raz w tygodniu otrzymuj najważniejsze wiadmości
ze świata IT, nowych technologii i kryptowalut.

Bez reklam.

46 odpowiedzi na „Programiści .NET szczególnie poszukiwani”
  1. Awatar o_O
    o_O

    … żywi lub martwi.

  2. Awatar troll
    troll

    .NET 1.0 wydano w 2002 roku… Ci programiści z 10-letnim doświadczeniem muszą być naprawdę w cenie – programowali w .necie zanim powstał.

    A na pracuj.pl: ".net" jest w 451 ofertach, "java" w 1050. Hmm… kto tu jest szczególnie poszukiwany?

    1. Awatar troll
      troll

      I tak na marginesie: w serwisie dice.com wyniki wyszukiwania pokazują podobne proporcje: 17172 dla "java" i 9974 dla ".net".

      1. Awatar Zawisza
        Zawisza

        Nie ma co się dziwić. Do napisania jednej linijki w .NET wystarczy jeden dotnetowiec. Do napisania tej samej linijki w JAVIE potrzebnych jest już pięciu javowców.

        1. Awatar o_O
          o_O

          0/10

          W takim razie do napisania linijki w C++ potrzeba ćwierć programisty…

          1. Awatar konski_pytong
            konski_pytong

            a do napisania komentarza jw, jeden Troll

          2. Awatar wladca_kodu
            wladca_kodu

            Każdego programistę C++ można zastąpić skończoną liczbą studentów, więc to nie ma znaczenia.

          3. Awatar lukasz
            lukasz

            Ja bym to zamienił na 'każdego programistę javy/c#'. Te technologie są tak proste, że podobnie jak teraz wszyscy "webdewelperzy" i "phpowcy" konkurują z bardziej ogarniętymi gimnazjalistami, tak powyższa sytuacja może dotknąć javowców i dotnetowców.

  3. Awatar Kamo
    Kamo

    Ale co w tym .necie takiego ciekawego, bo jakoś fenomenu tego języka zrozumieć nie mogę. Nie jest lekkie i super przenośnie jak C, ani tak użytkowe jak Java.

    1. Awatar cpp
      cpp

      > lekkie i super przenośnie jak C

      C przenośne? Napisałeś coś kiedyś w C? Coś więcej niż "hello world"? Przeniosłeś na inną platformę?

      1. Awatar ajnsztajn
        ajnsztajn

        Napisałem. Przeniosłem. Działało ;).

        1. Awatar cpp
          cpp

          Setki ifdefów i makr, pilnowanie rozmiarów typów, kolejności bajtów… No rzeczywiście, C jest "super przenośne", zwłaszcza w porównaniu z Javą.

          1. Awatar o_O
            o_O

            Ale po co chcesz używać rozmiarów typów albo kolejności bajtów?
            Do niczego nie jest to potrzebne, jeśli ograniczyłbyś się do możliwości jakie daje Java.

            Ale przynajmniej *możesz* tego użyć, jak potrzebujesz. I wtedy nie robisz ifdefów, tylko deklarujesz jedną klasę zajmującą się wewnętrznie obróbką kolejności bajtów czy rozmiarami typów, i dalej używasz tego przeźroczyście.

            No ale jak ty "setki ifdefów" nazywasz programowaniem obiektowym, to o czym ty chcesz dyskutować…

            Wychodzi na jedno: jak ktoś nie umie programować, to lepsza jest Java/.net.

          2. Awatar Robal
            Robal

            eh.. w C nie mamy OOP, po przyswojeniu tego faktu radze przeczytać raz jeszcze swój komentarz. C++ to nie C.

          3. Awatar o_O
            o_O

            W drugiej części pisałem o C++, co chyba jest oczywiste…

            Java też jest obiektowa (choć mocno okrojona w porównaniu do C++, np. brak dziedziczenia wielobazowego, i inne).
            Więc porównujmy podobne języki.
            Kamo źle zaczął tę dyskusję ograniczając ją tylko do C zamiast napisać C/C++.

          4. Awatar Kamo
            Kamo

            Ehh przepraszam. Pisałem na szybko, nie wiedząc, że przerodzi się to w tak zaciętą dyskusję. Co do tematu: każdy język jest fajny i ma swoje plusy. Niech każdy piszę w takim, jaki mu się podoba.

          5. Awatar wladca_kodu
            wladca_kodu

            choć mocno okrojona w porównaniu do C++, np. brak dziedziczenia wielobazowego, i inne

            Lista udogodnień, których nie ma w C++ a są w Javie jest zbliżonej długości, więc byłbym ostrożny ze stwierdzeniami, co jest bardziej okrojone.
            Poza tym nieprawdę piszesz, że Java nie ma dziedziczenia wielobazowego, bo ma – wielodziedziczenie interfejsów. Jak komuś nie starcza, to Scala ma pełne wielodziedziczenie implementacji, pozbawione jednak wypaczeń z C++. Natomiast braku GC, refleksji, introspekcji czy porządnej kontroli dostępu w C++ niczym nie zastąpisz.

      2. Awatar zra
        zra

        Tutaj jestem zmuszony bronić C. W dawnych czasach, kiedy różne maszyny miały np. różny rozmiar słów, w C przenoszenie było katorgą, szczególnie, jeżeli niedoświadczony programista rządził się w pamięci. Ale dzisiaj C jest bardziej przenośne niż .net.
        Ponadto w wielu przypadkach można zmusić C do pracy w RT. C++ również. .net – nie spotkałem się. Nie programowałem w tym za dużo, ale miałem problemy związane z wolniejszym działaniem, co w aplikacjach użytkowych nie było widoczne, ale jak np. sterowało się urządzeniem, któremu wysyłało się dane w jego własnym formacie przez port szeregowy, to już była rzeźnia z timingami.

        1. Awatar Budyń
          Budyń

          @zra
          Poza tą różnicą, że C# i C++ mają zbiór wspólnych zastosowań niemal pusty, a podobieństwo między nimi sprowadza się do przewijania się pojęcia obiektowości i średnika na końcach instrukcji…

          W klasycznym C#/.NET nie napiszesz hard RT, w C++ ciężko będzie napisać procedurę składowaną CLR dla SQL Servera….

          A przenośność to bajka o żelaznym wilku – albo się coś tworzy na zdefiniowaną z góry platformę (obojętnie jaką), albo projekt jest zwalony na starcie. Mało kto się bawi w migracje SQL-Server <-> Oracle z założeniem, że wymienia RDBMSa i nie rusza reszty.

          1. Awatar o_O
            o_O

            W porządku, więc dlaczego w .netcie powstają aplikacje desktopowe? To nie jest jego nisza, tu zdecydowanie lepiej wypada C++. Badziewni programiści?

          2. Awatar anty
            anty

            Kolejna wypowiedź bez znajomości tematu. W .NET to powstają aplikacje nie tylko desktopowe. Cały mBank to jeden wielki .NET.
            Wiesz ile banków na tym jedzie ?. W Polsce dwa największe.

          3. Awatar o_O
            o_O

            Kolejne pisanie bez zrozumienia.
            Gdzie napisałem, że TYLKO aplikacje desktopowe?
            Pytam, dlaczego W OGÓLE powstają na tym aplikacje desktopowe.

          4. Awatar stefan
            stefan

            "Pytam, dlaczego W OGÓLE powstają na tym aplikacje desktopowe. "
            Bo można? Bo jest zapotrzebowanie? Bo komuś się nudziło (pisał dla siebie)?. Ja nie wiem co Cię boli. Złe programy same upadają (np: z braku użytkowników, zainteresowania, funduszy), tak samo złe monopole itp…

          5. Awatar generator_hejtów
            generator_hejtów

            boli go to że jest frajerem bo programiści C# zrobią taką samą aplikację dla końcowego usera nie siedząc przy tym 2 lata tylko pół roku 😉 a frajerek tylko traci czas

          6. Awatar lukasz
            lukasz

            Pisanie w C# jest prostrze i o wiele wiele szybsze.

    2. Awatar sprae
      sprae

      Jest dużo mniej upierdliwe niż C++

      1. Awatar o_O
        o_O

        Co jest upierdliwego w C++? Konkrety.

        Po drugie:
        Do C++ masz biblioteki, np. Qt i inne, które świetnie je uzupełniają.
        .net/c# to zresztą nic innego jak lekko zmodyfikowane C++ z dodatkiem "ustandaryzowanych" (przez microsoft) bibliotek.

        Po trzecie:
        Wolna (od braku szybkości) maszyna wirtualna dot-netu nie jest upierdliwa? Oficjalne wsparcie tylko dla windows nie jest upierdliwe? Zagrożone patentami Mono nie jest upierdliwe?

        1. Awatar sprae
          sprae

          Ale do czego chcesz mnie przekonać? Że C++ jest najlepsze do wszystkiego?
          Wiesz chociaż kiedy stosujemy wirtualny destruktor w c++?
          Jak musiałeś szukać w Google to dziękuję za dyskusję.

          1. Awatar o_O
            o_O

            Owszem wiem. I?

            Za to w .necie nie masz nawet realnych destruktorów, na których możesz polegać.
            A to bardzo wygodne rozwiązanie w C++, gdy możesz stworzyć obiekt, a na końcu operacji na nim, w momencie wyjścia z funkcji czy bloku w którym go utworzyłeś, wykona się kod jego destruktora.
            I wiesz, że wykona się właśnie wtedy, a nie w osobnym wątku asynchronicznie.
            Destruktory w C++ to jeden z kluczowych aspektów hermetyzacji, z którego w .necie/javie niestety zrezygnowano.

            Pomijam już narzut wydajnościowy GC przy używaniu destruktorów, który musi je kolejkować i sprawdzać, a i tak są one mało wartościowe dla programisty.

            I nie, C++ nie jest lepsze do wszystkiego. Ale do zdecydowanej większości, a szczególnie tam, gdzie potrzebna jest wysoka wydajność i niska zasobożerność, czyli np. aplikacje desktopowe, bo tu końcowy użytkownik płaci za sprzęt, nie jak w serwerowni.

            I skończmy z mitami, że w javie/.necie pisze się szybciej albo taniej. Jak się ma badziewnego projektanta i zespół, to może faktycznie trudniej pisać w C++. Ale trzeba się zastanowić, czy tacy ludzie w ogóle powinni coś pisać.

          2. Awatar Emil
            Emil

            "A to bardzo wygodne rozwiązanie w C++, gdy możesz stworzyć obiekt, a na końcu operacji na nim, w momencie wyjścia z funkcji czy bloku w którym go utworzyłeś, wykona się kod jego destruktora. "
            Poruszyłeś dość ciekawą kwestię. Ja też zawsze myślałem, że destruktor ZAWSZE jest wykonywany NA KOŃCU BLOKU/FUNKCJI, ale niestety tak nie jest. Z tego co zaobserwowałem gcc wywołuje destruktor tuż po ostatnim użyciu zmiennej, nie czeka z wywołaniem destruktora do końca bloku/funkcji.
            "Destruktory w C++ to jeden z kluczowych aspektów hermetyzacji"
            Nie wiem o czym piszesz. Rozwiń myśl, bo po mojemu destruktor nie ma nic wspólnego z hermetyzacją i nie rozumiem, w czym GC psuje hermetyzacje.

          3. Awatar o_O
            o_O

            Coś kręcisz z tym wywoływaniem destruktora:

            #include <stdio.h>

            class Klasa
            {
            public:
            Klasa() {};
            ~Klasa() { printf("Klasa::~Klasa();
            "); }
            int cosTam( int x ) { a = x; return a; };
            private:
            int a;
            };

            int main()
            {
            printf( "1
            " );
            {
            printf( "2
            " );
            Klasa klasa;
            printf( "3
            " );
            klasa.cosTam( 100 );
            printf( "4
            " );
            // tutaj niszczenie
            }
            printf( "5
            " );
            return 0;
            }

            // SPODZIEWANY WYNIK: 1 2 3 4 ~Klasa() 5

            Wynik:

            $ g++ dest.cpp -o dest
            $ ./dest
            1
            2
            3
            4
            Klasa::~Klasa();
            5

          4. Awatar wladca_kodu
            wladca_kodu

            Gdyby jeszcze C++ miało jakąkolwiek hermetyzację…. 😀

          5. Awatar wladca_kodu
            wladca_kodu

            Czyli jednak potwierdzasz, że programiści Javy i .NET zjedli Ci obiad. 😀

            W Cpp nie ma szans pisać szybciej softu choćby ze względu na jeden immanentny problem w konstrukcji tego języka, powodujący koszmarnie powolny czas kompilacji. System, który buduje się w Javie 5 minut (~ 100 MB źródeł), w Cpp buduje się całą noc. Zmiana, która w Javie wymaga przekompilowania jednego pliku, w Cpp często pociąga za sobą rekompilację pół projektu. Technicznie nie masz szans uzyskać porównywalnej produktywności, nawet abstrahując od faktu, że ten sam kod w Javie lub C# (a co dopiero w Scali czy F#) jest zwykle kilkakrotnie krótszy niż w Cpp .

            I nie, C nie jest lepsze do wszystkiego. Ale do zdecydowanej większości, a szczególnie tam, gdzie potrzebna jest wysoka wydajność i niska zasobożerność, czyli np. aplikacje desktopowe, bo tu końcowy użytkownik płaci za sprzęt, nie jak w serwerowni.

            Czyli w praktyce tylko do gier AAA. Bo nawet Indie robią już w Javie / .NET / Flashu / JS.
            Idąc dalej Twoim tokiem rozumowania, Notatnik Windows powinien być napisany w czystym assemblerze, bo napisanie go w C i MFC spowodowało, że potrzebuje 10x, a może nawet 100x więcej RAMu i startuje się 5x wolniej (0.05 sekundy zamiast 0.01). Przy obecnych możliwościach sprzętu i tanim RAMie narzut Javy i .NET jest praktycznie niezauważalny.

        2. Awatar wladca_kodu
          wladca_kodu

          Co jest upierdliwego w C ? Konkrety.

          Tu masz do poczytania na cały wieczór: http://yosefk.com/c++fqa/
          Upierdliwe to dobre określenie. Niby każdy problem ma jakieś rozwiązanie i daje się w tym pisać, ale jest no… właśnie upierdliwe. Jakby Ci się jednak nie chciało czytać, to tu masz krótką listę upierdliwości:

          1. konieczność robienia plików nagłówkowych
          2. brak możliwości szybkiego odszukania definicji funkcji / zmiennych w dużym projekcie
          3. metody prywatne są częścią intefejsu publicznego klasy
          4. nieczytelne komunikaty kompilatora przy użyciu szablonów
          5. brak dobrego IDE, które nie gubi się w szablonach
          6. brak dobrego debuggera, który nie gubi się w szablonach
          7. awaria jednej funkcji wywala cały proces
          8. awaria jednej funkcji wywala cały proces dopiero następnego dnia z nic nie znaczącym komunikatem Segmentation fault
          9. brak enkapsulacji i jakiejkolwiek ochrony w runtime
          10. brak mechanizmów refleksji, stąd nie da się napisać sensownego ORMa czy kontenera IoC
          11. brak automatycznego zarządzania pamięcią (nawet opcjonalnego)
          12. słaby system typów udający silny system typów
          13. zawikłana składnia – chyba jedyny język, który nie daje się opisać bezkontekstową gramatyką
          14. diamond inheritance problem
          15. biblioteka standardowa to śmiech
          16. notoryczne problemy z kompatybilnością bibliotek z różnych źródeł

    3. Awatar mikolajs
      mikolajs

      Jak ktoś zamierza pisać tylko dla Windows to C# jest znacznie lepszym rozwiązaniem niż Java. A szybkość pisania jest o wiele wyższa niż dla C czy C++. Niestety jest to jednak uzależnianie się od jednej platformy.

      1. Awatar o_O
        o_O

        Niż dla *czystego* C czy C++? Tak.
        C++ z bibliotekami, np. Qt? Zdecydowanie nie.

        A uzależnienie od platformy, zasobożerność i powolność skreśla .neta całkowicie.

        1. Awatar nick znik
          nick znik

          "A uzależnienie od platformy, "
          W .net jest to co prawda w pewnym stopniu uzależnienie od platformy, ale za to jest to platforma zintegrowana, w której jest (prawie) wszystko co potrzeba. Oczywiście trzeba zapłacić. Biznes.
          W javie też jest uzależnienie od platformy, w niewielkim stopniu od systemu operacyjnego, w dużo większym od jvm czy serwera aplikacyjnego lub bibliotek.
          W c++ też jest uzależnienie, co by nie mówić, tak od sprzętu, jak bibliotek czy w pewnym stopniu systemu operacyjnego. Poza tym często niekompatybilności jakie niosą ze sobą nowe wersje bibliotek (np. glibc, boosty itd) powodują ugrzęźnięcie w miejscu. Dotyczy to też javy.
          Niestety biznes nie lubi czegoś takiego. Można mieć inne zdanie gdy koduje się do domu czy na zaliczenie.

          "zasobożerność i powolność skreśla .neta całkowicie. "
          Rozumiem, że miało być "javy" nie ".neta". Prawda dla zwolenników opensource, javy, c++ itd. jest niestety okrutna, a powyższe zdanie nijak się ma do rzeczywistości, przynajmniej jeśli chodzi o konfrontację z javą, która to bije rekordy jeśli chodzi o zasobożerność czy powolność. Jeśli chodzi o c++, .net mu nie ustępuje szybkością jak i zasobożernością, natomiast przewyższa m.in. wydajnością wytwarzania.

          1. Awatar mikolajs
            mikolajs

            >" przynajmniej jeśli chodzi o konfrontację z javą, która to bije rekordy jeśli chodzi o zasobożerność czy powolność. Jeśli chodzi o c++, .net mu nie ustępuje szybkością jak i zasobożernością, natomiast przewyższa m.in. wydajnością wytwarzania."
            Chyba nie wiesz o czym piszesz. Java faktycznie na Windows jest wolniejsza i bardziej zasobożerna niż C#, jednak na innych systemach w porównaniu do MONO jest demonem szybkości. C++ na Windows faktycznie nie jest zbyt wydajne, przynajmniej po kompilacji w VS. Gdzieś widziałem benchmarki porównujące C++, C#, Java na Windows do C++, MONO, Java na Linuksie (na tej samej maszynie) i wynikało z nich, że C++ na Windows jest tragicznie wolny w porównaniu do Linuksa i stąd pewnie wrażenie o szybkości .NET

          2. Awatar wladca_kodu
            wladca_kodu

            Java na Windows jest trochę w tyle dlatego, że nadal jeszcze domyślnie zawiera tylko Hotspot C1. Hotspot C2 (serwerowy) jest 2-3x szybszy – można go ściągnąć w pełnym JDK. W ostatnich JDK jest też tryb TieredCompilation używający obu, co daje szybki start i wysoką wydajność później, tylko trzeba to włączyć (nowe jest, to nie włączają domyślnie dla stabilności).

        2. Awatar mikolajs
          mikolajs

          @o_O
          Musiałbyś popisać trochę w Java czy C# to mógłbyś się przekonać, że faktycznie szybkość pisania jest większa (jeszcze lepiej jak używasz Scali). Głównie dzięki GC, braku plików nagłówkowych i dostępności bibliotek w standardzie.
          W moim przypadku uzależnienie od platformy przy pisaniu dla .NET całkowicie go skreśla. Jednak jeśli ktoś się upiera pisać tylko dla Windows to C++ na tym systemie nie wygląda wcale tak różowo. Choć już aplikacja napisana w C++ i wspomnianym QT4 jest bardziej multiplatformowa 😉

  4. Awatar Marcin
    Marcin

    netto czy brutto?

      1. Awatar Budyń
        Budyń

        Przy czym to zapewne "brutto" kontraktowe, tj. na samozatrudnie i fakturę VAT – wtedy z 10000, bez odliczeń, po opłaceniu VAT, dochodowego i ZUSu to dobrze, jak 6000 k zostanie. 1000 trzeba odliczyć na odkladanie na emeryturke, czyli zostaje 5.

        1. Awatar sdf
          sdf

          czyli jak zwykle – podawanie zarobków brutto, to jak podawanie długości pen*sa z kręgosłupem

          1. Awatar edzio
            edzio

            10k dla przeciętnego klepacza kodu aplikacji biznesowych w java/C# to muszę powiedzieć nie mało. Ale to pewnie tylko Wawa. W sumie człowiek z głową na karku w takie korporacyjne kodowanie może się wkręcić w pół roku startując od zera.

  5. Awatar pclam
    pclam

    Można się zżymać na MS ze względów ideologicznych, ale żyć z czegoś trzeba, a jak widać programista .net to nie taka zła fucha.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *