Färdkarta för en Java-utvecklare
En vän till mig undrade varför utvecklare alltid är så glada. Svaret hon kom med var enkelt och överraskande: de gör vad de vill och tjänar stora pengar. Välkommen till en värld av mjukvaruutvecklare.![Gammal nivå 06 - 1](https://cdn.codegym.cc/images/article/19d25706-3262-447b-8e1b-d8f628e6d1b3/800.jpeg)
Lön för mjukvaruutvecklare
Jag skulle vilja berätta om utvecklarnas löner. Hur landet ligger med löner, vart ska man gå och jobba och vart man inte ska. Om du inte är en utvecklare och försöker pussla ut det på egen hand, kan du få en ganska kontroversiell data. Huvudpoängen är att den viktigaste faktorn som påverkar en utvecklares lön inte är kvalifikationen, utan anställningsplatsen. Ibland, givet samma kvalifikationsnivå, kan skillnaden mellan bra och dålig anställning vara 2 till 10 gånger(!) Varje given tidpunkt är din kvalifikation konstant. Du kan inte bli dubbelt så kvalificerad på en månad och få dubbelt så mycket betalt. Men du kan byta arbetsplats på en månad och få dubbelt så hög lön. En gång i flödet på två månader multipliceras min lön med tre (!) – oförglömlig upplevelse. Så låt oss ta reda på vilken plats som är bäst.- Oavsett om företagets huvudsakliga verksamhet är mjukvaruutveckling
- Oavsett om företaget är inriktat på global eller lokal marknad
- Var ligger huvudkontoret: i-land eller u-land
Specifika nummer
Eftersom lönerna är olika i olika delar av världen, föreslår jag att ta utgångspunkt i lönen för Senior Java-utvecklare med 5 års erfarenhet och kalla det "max fem år". Alla siffror nedan kommer att anges i procent av detta belopp. Här är några exempel på "5 års maximala" löner i olika städer i världen:![Gammal nivå 06 - 2](https://cdn.codegym.cc/images/article/1afaa877-5c1d-4093-91f9-af2b596fc1f1/800.jpeg)
![Gamla nivå 06 - 3](https://cdn.codegym.cc/images/article/417f0805-fde8-4d4d-a3e9-f6d0ea805e7c/800.jpeg)
![Gammal nivå 06 - 4](https://cdn.codegym.cc/images/article/89ad7cb7-db6d-4f32-ad72-4be161d604f8/800.jpeg)
Vad du kan uppnå om du inte gör dumma saker
Om du börjar arbeta med din egen utbildning i programmering just nu kan din lön se ut så här:![Gammal nivå 06 - 5](https://cdn.codegym.cc/images/article/06c56ee7-2f9d-4e5e-aae4-e702673789de/800.jpeg)
Planen
0-3 månader (student)
Du kan väldigt lite om programmering. Du kanske har studerat det i skolan eller på en högskola på grundnivå. Vad du behöver göra är att lära dig hur du programmerar och lär dig Java. Ditt mål är att få ett jobb som Java Junior Developer i ett företag på nivå 3 eller högre. Under de första tre månaderna av planen får du ingenting, eftersom du bara lär dig hur du programmerar. Men ju tidigare du börjar desto bättre. Den bästa tiden är NU. I framtiden, när du har en familj och massor av lån, kommer det att bli mycket svårare att återkvalificera dig. För att rätta till ditt misstag måste du lägga undan pengar för att betala för åtminstone ett år av normalt liv. Gör inga dumma misstag.3-15 månader (Java Junior Developer)
Du arbetar redan som mjukvaruutvecklare och din erfarenhet växer dagligen. Slappna inte av. Du har mycket att göra innan du vilar på åror. Vad du behöver göra är – studera teknik du behöver som mellanutvecklare. Vad är dessa? Världen förändras ständigt. Jag kommer att ladda dig med råd och livet kommer att förändra allt. Hitta några lediga jobb på webben och se vad du behöver för att söka. Se till att läsa en bok av Bruce Eckel "Thinking in Java". Ditt mål under det första året av att arbeta som Java Junior Developer är att nå nivån Java Middle Developer. Ingen säger att det skulle vara lätt, men det är möjligt för en målinriktad person. Det kommer att öka din lön på ett ögonblick upp till 40 % av "maximalt 5 år" ($50K för SF och London, $6K för Bangalore).2-årig programmering (Java Middle Developer, nivå 1)
Du har gjort ett bra jobb förra året och nu är du Java Middle Developer. Du kan leva ganska bra med att tjäna 50% av Senior Java Developers lön. Du får seriösa uppgifter på jobbet och din erfarenhet växer avsevärt. Du når nivån Java Senior Developer om två eller tre år. Ingen brådska. Du kommer inte få några stora överdelar i lön i alla fall. Vad du behöver göra är att lära dig designmönster, läs – McConnell's Code Complete. Perfekta kvaliteten på din kod och teamfärdigheter. Skapa en regel om att läsa en bok om datorprogrammering varje månad. Om fyra år kommer du att vara 50 böcker smartare än alla andra. Skjut inte upp det: du kommer inte att få någon större mängd fritid, dessutom kommer du troligen att bilda familj, eller om du har en så kommer den att bli större. Ditt målär att välja några tekniker att specialisera sig på som Senior Java-utvecklare. Du kan inte lära dig alla, du vet. Och det är alltid ett bra beslut att bli guru inom en enda specialisering.![Gammal nivå 06 - 6](https://cdn.codegym.cc/images/article/07ba983e-9cf5-4f2d-8b63-90df726b6aa5/800.jpeg)
3-årig programmering (Java Middle Developer, nivå 2)
Du är nu en erfaren mellanutvecklare och du funderar på att bli seniorutvecklare. Det är trevligt och prestigefyllt. Din lön överstiger 60 % av "maximalt 5 år" (10 000 USD i Bangalore, 25 000 USD i Kiev, 40 000 USD i Berlin, 80 000 USD i New York). Från och med detta ögonblick ökar efterfrågan på proffs som du erbjudandet. Du kommer alltid att kunna hitta ett jobb inom ett par dagar och du kommer nästan aldrig att tjäna mindre än du gör nu. Det förstås om man inte gör något dumt. Det du behöver göra ärfortsätt studera den teknik du valt. Jobba bättre. Inte för din arbetsgivares skull, för din egen. Ansök om att delta i projekt som involverar lovande teknologier (som BigData, just nu den här artikeln skrivs). Du kommer att tillbringa 8 timmar om dagen på kontoret ändå, så varför inte få lite mer pengar för det, och vad som är mycket viktigare, den mest värdefulla erfarenheten du kommer att behöva i framtiden. Ditt mål är att hitta ett nytt jobb. Ett bra team finns alltid att hitta. Du kommer att möta nya projekt och tekniker. Du behöver inte rota till din stol. Om du fortfarande arbetar i ett företag på tredje nivå, tänk på att anställa till ett företag på fjärde nivån.5:e året programmering (Java Senior Developer, nivå 1
Du är nu seniorutvecklare. Du kanske inte förtjänade det, och du känner det. Ändå, mina gratulationer. Det spelar ingen roll om du är värdig din position nu, allt det spelar roll att du blir värdig det i framtiden. Jag tror att du håller med om att det är bättre att få ett bra jobb och sedan växa till den nivå som krävs då vice versa. Jag hoppas att du inte har glömt mitt råd att läsa en bok i månaden? Alla elever kommer att avundas dina kunskaper och färdigheter nu. För att vara mer specifik, han kommer att be för dem. Tänk bara på det: du har seriösa inkomster, nära 90 % av "max fem års" lön. Du är förmodligen fortfarande ung. Världen ligger för dina fötter. Det du behöver göra ärför att omvärdera tekniker du har valt. Kanske måste du byta inriktning. Världen har förändrats, teknologin förändrats och du har fått en hel del kunskap under de senaste två åren. Det du väljer nu kommer att bli rubriken under några kommande år för dig. Det är dags att välja din favoritteknik. Ditt mål är att välja din tillväxtriktning. De är många, ingen kan namnge dem alla, men ditt val måste göras just nu. Om du gör en liten förändring idag, kommer du att få en stor i framtiden.6:e året programmering (Java Senior Developer, level2)
Du har bestämt dig för din framtid och du arbetar på att din dröm ska gå i uppfyllelse. En rätt vald riktning tillsammans med viljan att gå framåt – och resultatet kommer inte att dröja länge. Grattis. Jag är glad att se att det finns ytterligare en person som landat sin dröm. Det finns en djup sanning. Människor överskattar ofta vad de kan uppnå på ett år och underskattar vad de kan göra på fem. Se fem år tillbaka. Det är så. Det du behöver göra är att undvika okloka beslut och inte vara lat. Ditt mål är att välja riktning och gå framåt. Eller trodde du att det slutade här? Kom ihåg din examen. Det är inte slutet, det är bara början.Din framtida specialisering
![Gamla nivå 06 - 7](https://cdn.codegym.cc/images/article/896e521a-6e71-467f-9066-8538285f1f7d/1080.jpeg)
Java-utvecklarens karriär
Utvecklarens karriär skiljer sig från alla andra. Du behöver inte bli chef för att tjäna bra pengar. Det händer ofta att en seniorutvecklare tjänar mer än sin chefschef. Ju mer erfarenhet du får desto starkare blir dina arbetsrelationer med din chef från "chef-underordnad" till "stjärna och chef".![Gammal nivå 06 - 8](https://cdn.codegym.cc/images/article/974ae291-df1d-4ce3-aaf5-29cad8d43679/800.jpeg)
Tvåhundraårig utvecklare
Om du gillar programmering mest av allt, så är det här ditt sätt: Senior utvecklare, sedan Tech Lead Developer och en arkitekt. På så sätt kan du arbeta som utvecklare i 50 år och mer. I de flesta fall överstiger lönerna för seniora utvecklare och tekniskt ledande utvecklare deras chefers. Så få pengarna värda.Chef. Du har tur att du inte är som de andra
Du gick över till fienden. Skojar bara. Om du upptäcker stor organisationsförmåga, är dina sätt: Teamledare och sedan projektledare. Det ger dig en chans att bli avdelningschef och starta ett eget företag. Det är vad du vill, eller hur?Hemma är där hjärtat finns
![Gammal nivå 06 - 9](https://cdn.codegym.cc/images/article/63d085b9-b1d0-45b3-9f1e-0a4ec1883e75/800.jpeg)
Se Neapel och inte dö.
Du har ingen familj än och du älskar att resa . oDesk är ditt allt. Hitta en kund, gå med på ett pris på $20-$50 per timme, ta med dig en bärbar dator och gå! Din lön kommer att räcka för att bo var som helst i världen. Varför inte börja förverkliga dina drömmar direkt?Jag vill inte programmera, jag är en tjej..
Om du är tjej kan du behöva ta mammaledighet . Det låter som ett sexistiskt skämt, vilket det är. Ändå finns det mycket sunt förnuft i det. Troligtvis kommer du att ta en mammaledighet att kunna få mycket mammaledighetspengar (i länder med högt socialt skydd). Det finns företag som inte betalar något, och det finns de som betalar bra. En av mina elever fick en tredjedel av årslönen på mammaledighet. Och detta hände våren 2009, under uppsägningar. Och om ett och ett halvt år kan du komma tillbaka, som åtminstone mellanutvecklare.Lebvel 6
![Gammal nivå 06 - 10](https://cdn.codegym.cc/images/article/c26ec3c8-8a08-4404-b92b-21557796c6e7/800.jpeg)
1 Elly. Objekts synlighet. null
- Hej, Amigo! - Hej, Elly! Kan du berätta något intressant för mig idag? - Idag ska jag berätta om ett föremåls livstid . Efter att ett objekt har skapats existerar (lever) det tills minst en variabel lagrar dess adress (det finns minst en objektreferens). Om det inte finns några referenser längre, dör objektet. Exempel:![Old Level 06 - 11](https://cdn.codegym.cc/images/article/70ecf870-832e-438a-94c0-433ae6dab2ee/512.jpeg)
2 Professor, Sophämtning
![Old Level 06 - 12](https://cdn.codegym.cc/images/article/a4a7bf6c-5233-4d13-a720-ca630b7fa73e/1080.jpeg)
3 Elly, avsluta
- Hej igen! Nu ska jag ge dig en kort introduktion till metoden finalize() . Denna metod anropas av Java virtuell maskin på objektet innan objektet förstörs. Faktum är att denna metod är motsatsen till konstruktören. I den här metoden är det möjligt att frigöra resurserna som används av ett objekt. - Klassen Object har denna metod, därför har varje klass den ( alla klasser i Java anses vara ärvda från klassen Object och innehåller en kopia av dess metoder) . Om du skriver i din klass kommer finalize()-metoden att anropas innan objekt i denna klass förstörs. Exempel:![Old Level 06 - 13](https://cdn.codegym.cc/images/article/a8882f08-1770-499b-8541-8962af6914c1/512.jpeg)
4 Elly, Objekts livstid
– Jag vill också berätta ett par intressanta saker om objektets livslängd. I Java är det mycket svårt att förlora föremålet av misstag; om du har en objektreferens betyder det att objektet säkert lever. - Inuti en objektreferens lagras ett nummer – adress för detta objekt i minnet. Du kan inte ändra det antalet, öka eller minska det. Du kan inte skapa en referens när du bara har adress i minnet. Du kan bara skapa ett nytt objekt och tilldela dess referens till en variabel. Detta är det enda sättet att få en ny referens. - Jag förstår. Det vill säga, om jag ställer in på null (radera) alla objektreferenser, kommer jag aldrig att få objektreferensen och komma åt den? - Japp. Men ofta är det tvärtom – det finns för många levande föremål som inte används.De flesta program skapar dussintals objekt och lagrar dem i olika listor under körning, men rensar aldrig dessa listor. - Oftast märker programmerare oönskade objekt som "raderade", det är allt. Ingen bryr sig om att de tas bort från listorna. Så stora Java-program tenderar att svälla upp – fler och fler oanvända objekt finns kvar i minnet. - Det är allt. I framtiden kommer jag alltid att uppmärksamma er på oanvända föremål och deras korrekta kassering. - Okej, tack. Du har klargjort ett par saker om referenserna.5 Diego, Objekt livstidsuppgifter
- Hej, Amigo! Här är ett par uppgifter för dig:Uppgifter | |
---|---|
1 | 1. finalize()-metod för Cat-klassen Skriv en metod skyddad void finalize() kastar Kastbar i klassen Cat |
3 | 2. Klasser Cat and Dog och finalize()-metoden för varje klass Skriv en finalize()- metod i varje Cat and Dog-klass, som visar ett meddelande på skärmen att objektet är förstört. |
3 | 3. 50 000 objekt av Cat-klassen och 50 000 föremål av Dog-klassen Skapa i en slinga 50 000 objekt av Cat-klassen och 50 000 objekt av Dog-klassen. (Virtuell Java-maskin kommer att förstöra oanvända objekt, så metoden finalize() kommer att anropas minst en gång). |
4 | 4. Cat-räknare I Cat-klasskonstruktorn [public Cat()], öka katträknaren (statisk variabel catCount av samma klass) med 1. I metoden finalize() minskas med 1. |
6 Elly, Statiska klasser och metoder
– Här är ett nytt intressant ämne. Jag vill berätta om de statiska variablerna och metoderna. – Åh, jag har redan hört talas om statiska variabler. Om statiska metoder också, antar jag. Men jag skulle vilja ha mer detaljer. - När vi deklarerar variabler i en klass anger vi om dessa variabler skapas i en enda delad instans, eller om det är nödvändigt att skapa deras kopior för varje objekt. Som standard skapas en ny kopia av klassvariabeln för varje objekt i denna klass. Så här ser det ut:![Old Level 06 - 14](https://cdn.codegym.cc/images/article/7a75f73b-2ff1-4f6b-befd-9750d4b9e36a/512.jpeg)
![Old Level 06 - 15](https://cdn.codegym.cc/images/article/ad249170-a3ef-4165-9f34-eda62b8583cb/512.jpeg)
![Old Level 06 - 16](https://cdn.codegym.cc/images/article/8ec6718d-391a-4430-8f64-93a26514b88b/512.jpeg)
![Old Level 06 - 17](https://cdn.codegym.cc/images/article/474f4874-a110-4dbd-aa9a-ef7a43b2cd5e/512.jpeg)
7 Risha, Statiska klasser och metoder
- Förutom statiska metoder finns det även statiska klasser . Vi kommer att överväga det här fallet senare, jag ska bara visa dig ett exempel på det: -![Old Level 06 - 18](https://cdn.codegym.cc/images/article/276e92dc-a35e-4148-9640-dec042a08a19/512.jpeg)
8 Diego, Uppgifter om statisk metod
- Hej, Amigo! Här är några intressanta uppgifter om statiska metoder:Uppgifter | |
1 | 1. Klass Cat och statisk variabel catCount Skriv en statisk variabel int catCount i klassen Cat. Skapa en konstruktor [ public Cat() ], där den givna variabeln ska ökas med 1. |
2 | 2. Statiska metoder: int getCatCount() och setCatCount(int) Lägg till två statiska metoder till klassen Cat: int getCatCount( ) och setCatCount(int) med hjälp av vilka du kan få/ändra antalet katter (variabeln catCount) |
3 | 3. Class Util Implementera en statisk metod double getDistance(x1, y1, x2, y2) . Den ska beräkna avståndet mellan punkter. Använd metoden double Math.sqrt(double a) för att beräkna kvadratroten av parametern som skickas |
4 | 4. Class ConsoleReader Skriv en klass ConsoleReader, som kommer att ha 4 statiska metoder: - String readString() för att läsa strängar från tangentbordet - int readInt() för att läsa siffror från tangentbordet - double readDouble() för att läsa bråktal från tangentbordet - void readLn () för att vänta på att du trycker på enter [använd readString()] |
5 | 5. Klass StringHelper Skriv en klass StringHelper, som kommer att ha 2 statiska metoder: - String multiplicera (String s, int count) ska returnera strängens upprepade räkningstider. - Strängmultiply(String s) bör returnera strängen s upprepade 5 gånger. Exempel: Amigo → AmigoAmigoAmigoAmigoAmigo |
9 Professor, objekt statisk omfattning och livslängd
![Old Level 06 - 19](https://cdn.codegym.cc/images/article/77240abd-fb6c-4f52-a2b3-9cb326912345/1080.jpeg)
10 Julio
- Hej, Amigo! Du gjorde ett bra jobb idag. Det är därför jag bara inte kan ge dig mer. Kom igen, sätt dig ner, showen börjar:11 kapten ekorrar
- Hej, soldat! - God morgon herrn! - Jag har fantastiska nyheter till dig. Här är en snabb kontroll för att stärka dina färdigheter. Gör det varje dag, och du kommer att förbättra dina färdigheter snabbt. Uppgifter är speciellt utformade för att göra i Intellij IDEA.Ytterligare uppgifter att göra i Intellij Idea | |
---|---|
1 | Klass Cat och statisk variabel catCount Skriv en statisk variabel public int catCount i klassen Cat. Skapa en konstruktor [public Cat()]. Låt den statiska variabeln catCount öka med 1 varje gång du skapar en katt (ett nytt objekt Cat). Skapa 10 objekt Cat och visa värdet för variabeln catCount . |
2 | 2. Statiska katter
För att skapa cats- variabler använd kodraden: public static ArrayList<Cat> cats = new ArrayList<Cat>(); |
3 | 3. Flytta en statisk modifierare Flytta en statisk modifierare så att koden kompileras. |
4 | 4. Minsta antal statiska nyckelord Lägg till det minsta antalet statiska nyckelord för att koden ska kompileras och programmet slutföras. |
5 | 5. Några nya idéer? Låt oss tänka efter...
|
6 | 6. KissMyShinyMetalAss Skriv en klass som heter KissMyShinyMetalAss. Skapa ett objekt av den här klassen och visa det sedan på skärmen. |
7 | 7. Namn på tre statiska variabler Skriv tre offentliga statiska variabler: String Solution.name , String Cat.name , String Dog.name |