Młodzieżowa praca - programista

0

Mam następujące pytanie. W tym roku skończyłem 18 lat i mogę zacząć pracować. Moją ambicją jest praca trochę poważniejsza niż rozdawanie ulotek. Dotychczas programowałem przez 2 lata w C++, ale pragnę teraz zacząć uczyć się .NETa. Myślę że do początku wakacji ogarnę tą technologię. Czy mam w ogóle jakieś szanse by zacząć pracować w jakiej firmie. Czy potraktują mnie poważnie?

0

Jeśli pokażesz na rozmowie że coś umiesz to tak.

0

Jak najbardziej. Tylko tego .NET-a musisz sie poduczyc, tak, aby nie bylo wstydu na rozmowie kwalifikacyjnej :) I dobrze by bylo, gdybys zbudowal sobie wczesniej portfolio albo poszedl na jakis staz, aby bylo sie czym pochwalic w CV.

0

A jeśli chodzi o literaturę , to czy ta książka jest odpowiednia do nauki ? : "Język C# 2010 i platforma .NET 4" A.Troelsen

2

Ta.. potem sobie wpiszesz w CV:

  • przeczytałem książkę: "Język C# 2010 i platforma .NET 4" A.Troelsen
0

A znasz jakieś lepsze źródło nauki ?

1

Do nauki najlepsze jest znalezienie sobie problemu programistycznego i rozwiązanie go, można posiłkować się Googlem w celu obczajania dobrodziejstw bibliotek i przykładów jak użyć różnych konstrukcji językowych. Pisz oprogramowanie, którego Ci brakuje. Zawrzyj w nim kombinację funkcji, których nie znalazłeś w dotychczasowych aplikacjach. Napisz sobie jakąś grę, czy tam aplikację dla sąsiadki do zarządzania firmą, drukowania faktur itp. Zaprogramuj cokolwiek co chcesz, do czego masz motywację, a nuż przy okazji powstanie coś użytecznego. Książki mogą być dobre na początek, jak w ogóle nie wiesz co w trawie piszczy... jak się programuje. Ale jak już masz podstawy podstaw, które pozwalają Ci na formułowanie prawidłowych zapytań do Google, to już nie ma sensu się bawić w książki. Chcesz się nauczyć C# znając inny język? Po prostu zacznij pisać w C#. Zmiana języka wśród mainstreamowych to tylko rozeznanie się w jego bibliotece standardowej + nauka składni, jak wygląda sprawa pętli, operatory, instrukcje warunkowe, klasy itp. To wszystko znajdziesz w Internecie.

kolarz3 napisał(a):

Moją ambicją jest praca trochę poważniejsza niż rozdawanie ulotek.

Trochę poważniejsze niż rozdawanie ulotek na początek dobre będzie stanowisko "Młodszego programisty PHP" :D

3
Spine napisał(a):

Zmiana języka wśród mainstreamowych to tylko rozeznanie się w jego bibliotece standardowej + nauka składni

Powtarzasz szkodliwe mity, nawet Carmack poniósł przez to porażkę przy IdTech4:

I had C and Objective-C background, and I sort of "slid into C++" by just looking at the code that the C++ guys were writing. In hindsight, I wish I had budgeted the time to thoroughly research and explore the language before just starting to use it.

You may still be able to tell that the renderer code was largely developed in C, then sort of skinned into C++.

Kod jest po prostu sztuczny, przywodzi na myśl polaków w UK, którzy myślą po polsku i tłumaczą.

IF a colleague were to say to you, “Spouse of me this night today manufactures the unusual meal in a home. You will join?” three things would likely cross your mind:third, that you had been invited to dinner; second, that English was not your col-league’s first language; and first, a good deal of puzzlement.
If you have ever studied a second language yourself and then tried to use it outside the classroom, you know that there are three things you must master: how the language is structured (grammar), how to name things you want to talk about(vocabulary), and the customary and effective ways to say everyday things(usage). Too often only the first two are covered in the classroom, and you find native speakers constantly suppressing their laughter as you try to make yourself understood.
It is much the same with a programming language. You need to understand the core language: is it algorithmic, functional, object-oriented? You need to know the vocabulary: what data structures, operations, and facilities are provided by the standard libraries? And you need to be familiar with the customary and effective ways to structure your code. Books about programming languages often coveronly the first two, or discuss usage only spottily. Maybe that’s because the first two are in some ways easier to write about. Grammar and vocabulary are properties of the language alone, but usage is characteristic of a community that uses it.
[...]
There is another point. Programs, unlike spoken sentences and unlike most books and magazines, are likely to be changed over time. It’s typically not enough to produce code that operates effectively and is readily understood by other persons; one must also organize the code so that it is easy to modify. There may beten ways to write code for some task T. Of those ten ways, seven will be awkward, inefficient, or puzzling. Of the other three, which is most likely to be similar to the code needed for the task T in next year’s software release?

Joshua Bloch, Effective Java.

Wzorce i zasady wypracowane przez społeczności dwóch pokrewnych języków bywają ze sobą sprzeczne, rozwiązania Ruby-way są nieakceptowalne w Pythonie, nie inaczej w przypadku C++ i C#. "Rozeznanie się w jego bibliotece standardowej + nauka składni" prowadzi do tworzenia kiepskiego i nieidiomatycznego kodu, który przysporzy pracy współpracownikom. Trafne wykorzystanie języka to zdecydowanie najtrudniejszy i najbardziej czasochłonny etap nauki, jedyny, którego nie zastąpi dobre IDE lub zatrudnienie skończonej liczby studentów. Liczność języków wynika z różnych celów i filozofii, nie bibliotek i składni.

Niektórzy zaczną doceniać idiomatyczność dopiero wtedy, kiedy do zespołu dołączy nowy, mający swoje "sprawdzone wzorce z języka .+". Programowanie to praca zespołowa, nawet wtedy, gdy udostępniamy własny projekt na zasadach open source... Posługuj się językiem w naturalny dla niego sposób, nie utrudniaj życia innym. Jedną z najbardziej lekceważonych cech (dobrej) literatury jest prezentowanie rozwiązań właściwych dla danej technologii. Skutecznym sposobem nauki jest też praca z profesjonalnie napisanym kodem, znalezienie dobrego projektu open source (opierając się na opinii społeczności) i zagłębienie się w nim, zaś późniejszy aktywny udział będzie niezłym atutem w CV i źródłem rzeczywistego doświadczenia.

2

@kahil ale C i C++ to są dwa dość odmienne języki. Przesiadka pomiędzy C++, Javą i C# mogłaby być znacznie łagodniejsza z dokładnością do kontrukcji językowych których dany język nie ma (wskaźniki, delegaty etc). Wiadomo że to nie będą idealne kody, ale faktem jest że w bardzo szybkim czasie ktoś mógłby pisać kod.

2

Podobieństwa pomiędzy C++ i Javą lub C# kończą się na etapie bardziej rozbudowanego hello worlda, to całkowicie różne języki o zupełnie innym modelu wykonywania, innej filozofii i idiomach. Języki zarządzane to zupełnie inna kategoria problemów, "dobre praktyki z C++" mogą co najwyżej zaszkodzić, mimo podobieństw składni przeskok jest porównywalny do przejścia na np. Pythona. Języki natywne kładą nacisk na przetwarzanie programu podczas kompilacji (od makr po template metaprogramming i constexpr), zarządzane zaś w runtime (refleksja, dynamiczne loadery i generatory). Dziesiątki pozornie znajomych elementów zachowują się inaczej, podobieństwa składni wprowadzają w błąd.

1

Rozwiązania poczynione przez programistę mającego doświadczenie w danym języku rzeczywiście mogą być mniej wydajne, czy mniej zgodne zasadami użycia innego języka. Ale przynajmniej coś powstanie. Programista będzie wiedział jak coś zaimplementować. To się liczy. W miarę jak będzie używał danego języka będzie widział jak inni piszą kod (w różnych tutorialach, lub w pracy). Nawyki wyniesione z innych języków da się zwalczyć ;) Ty piszesz tak jakbyś nie wierzył, że programista może znać kilka języków. Ja miałem na myśli tylko to, że uczenie się z książki jest bez sensu i wiedząc co w trawie piszczy można się spokojnie nauczyć nowego języka na własną rękę, korzystając z zasobów dostępnych w Internecie.

2

Przesadzasz i to bardzo. Z punktu widzenia programisty to jest właściwie bez znaczenia czy np. generics są realizowane w taki czy inny sposób i czy są tworzone w runtime czy w czasie kompilacji.
Podstawowe elementy OOP czyli tworzenie klas i polimorfizm są realizowane bardzo podobnie więc ktoś kto umiał OOP w Javie szybko się odnajdzie np. w C#

0
Spine napisał(a)

Ty piszesz tak jakbyś nie wierzył, że programista może znać kilka języków.

Może znać kilka języków, to kwestia poświęconego czasu, opanowanie języka w stopniu pozwalającym na pisanie naprawdę naturalnego i idiomatycznego kodu zajmuje wiele miesięcy. Do "byle działało" wystarczy manual, specyfikacja i ogólne umiejętności programistyczne.

Spine napisał(a)

Ja miałem na myśli tylko to, że uczenie się z książki jest bez sensu i wiedząc co w trawie piszczy można się spokojnie nauczyć nowego języka na własną rękę, korzystając z zasobów dostępnych w Internecie.

Należy rozgraniczyć książki dla początkujących, które uczą podstaw programowania i języka jednocześnie oraz takie, które są przeznaczone dla zaawansowanych programistów. Do drugiej kategorii zalicza się np. cytowane Effective Java, kładące nacisk na wzorce i idiomy, na właściwe właściwe wykorzystanie cech języka, tego typu literatura przyspiesza migrację. Odrębną kwestią jest literatura dotycząca kluczowych bibliotek i frameworków, dla Javy będzie to np. Spring, którego składowe są oparte w dużej mierze o rozwiązania i abstrakcje nieistniejące w C++, także tutaj dobra książka może przynieść korzyści. Goły język jest niemal bezużyteczny, okres nauki kluczowych technologii należy maksymalnie skrócić.

@Shalom, przesadzam? Autor wątku przechodzi z C++ na C#, to ogromna różnica w porównaniu z przejściem z Javy na C#. Nawet sam model obiektu ma sporo różnic. Podstawy OOP to najmniejszy problem, mówimy o pracy z realnymi systemami złożonymi z setek-tysięcy klas, gdzie native vs managed naprawdę robi ogromną różnicę.

Z punktu widzenia programisty to jest właściwie bez znaczenia czy np. generics [...] są tworzone w runtime czy w czasie kompilacji. Podstawowe elementy OOP czyli tworzenie klas i polimorfizm są realizowane bardzo podobnie [..]

Akurat z punktu widzenia programisty różnice polimorfizmu w runtime dla klas szablonowych i generycznych nie są bez znaczenia.

1

@kahil przespałeś cały ten temat, prawda? Przecież tu jest mowa o ogranianiu podstaw przez początkującego a nie o pracy archiktekta Javowego na stanowisku architekta C++ ;)

0

Praca jako programista w wieku 18 lat ? To chyba klepanie stronek w PHPie... albo jesteś jakimś mistrzem i znasz już dobrze JEE/Springa czy tam .NETa w co wątpie.

0

Ja mam taką technikę najpierw książka dla ogólnego zorientowania się w temacie/składni, a później jakiś program niezbyt duży, ale funkcjonalny bo dopiero przy pisaniu prawdziwego progamu wychodzi wiele problemów, których rozwiązanie szuka się w google.Trzeba zdawać sobie też sprawę, że dzisiaj programista często musi równolegle korzystać w wielo technlologii. Obecnie główne moje środowisko to ASP.NET, ale to oznacza (kolejność wg ważności) C#, bazy danych (SQL), javascript, html, xml , css.

0
cw napisał(a):

Ja mam taką technikę najpierw książka dla ogólnego zorientowania się w temacie/składni, a później jakiś program niezbyt duży, ale funkcjonalny bo dopiero przy pisaniu prawdziwego progamu wychodzi wiele problemów, których rozwiązanie szuka się w google.Trzeba zdawać sobie też sprawę, że dzisiaj programista często musi równolegle korzystać w wielo technlologii. Obecnie główne moje środowisko to ASP.NET, ale to oznacza (kolejność wg ważności) C#, bazy danych (SQL), javascript, html, xml , css.

Na twoim miejscu zamienił bym XML z HTMLem i JavaScriptem oraz przed XMLa wstawił JSONa. Chodzi o to, że jeśli idziesz głównie w backend (a tak wynika z twojego posta), to znajomość HTMLa będzie mało istotna, najważniejsza będzie umiejętność konstruowania porządnego API dla frontendu. Teraz coraz więcej stron pisze się jako one-page app używając Backbone.js czy Angular.js, tak więc serwer jedyne co oferuje to zgrabne API a całym renderingiem i prezentacją zajmuje się już przeglądarka.

1 użytkowników online, w tym zalogowanych: 0, gości: 1