Пътна карта на Java разработчик
Един мой приятел се чудеше защо разработчиците винаги са толкова щастливи. Отговорът, с който дойде, беше прост и изненадващ: те правят това, което им харесва и печелят големи пари. Добре дошли в света на разработчиците на софтуер.
Заплата на софтуерен разработчик
Бих искал да ви разкажа за заплатите на разработчиците. Как стои земята със заплатите, къде трябва да се работи и къде не трябва. Ако не сте разработчик и се опитате да го разгадаете сами, може да получите доста противоречиви данни. Основното е, че основният фактор, който влияе върху заплатата на разработчика, не е квалификацията, а мястото на работа. Понякога, при еднакво ниво на квалификация, разликата между добро и лошо място на работа може да бъде 2 до 10 пъти (!) Всеки даден момент от време вашата квалификация е постоянна. Не можете да станете два пъти по-квалифицирани за един месец и да ви плащат два пъти повече. Но можете да промените мястото на работа за един месец и да получите двойно по-голяма заплата. Веднъж в течение на два месеца заплатата ми умножена по три (!) – Незабравимо преживяване. И така, нека разберем кое място е най-добро.- Дали основният бизнес на една компания е разработка на софтуер
- Независимо дали компанията е ориентирана към глобален or локален пазар
- Къде се намира главният офис: развита страна or развиваща се страна
Конкретни числа
Тъй като заплатите са различни в различните части на света, предлагам да вземем заплатата на Senior Java Developer с 5 години опит като отправна точка и да я наречем „5 години максимум“. Всички цифри по-долу ще бъдат дадени като процент от тази сума. Ето някои примери за „максимални 5 години“ заплати в различни градове по света:


Какво можете да постигнете, освен ако не правите глупави неща
Ако започнете да работите върху самообучението си по програмиране точно сега, вашата заплата може да изглежда така:
Планирайте
0-3 месеца (ученик)
Знаете много малко за програмирането. Може да сте го изучавали в учorще or в колеж на основно ниво. Това, което трябва да направите, е да научите How да програмирате и да научите Java. Вашата цел е да получите работа като Java Junior Developer в компания от ниво 3 or нагоре. За първите три месеца от плана няма да получите нищо, защото просто се учите How да програмирате. Но колкото по-рано започнете, толкова по-добре. Най-доброто време е СЕГА. В бъдеще, когато имате семейство и купища заеми, ще бъде много по-трудно да се преквалифицирате. За да поправите грешката си, ще трябва да отделите пари, за да платите поне една година нормален живот. Не правете глупави грешки.3-15 месеца (Java Junior Developer)
Вие вече работите като софтуерен разработчик и опитът ви нараства ежедневно. Не се отпускайте. Имате много работа, преди да почивате на гребла. Това, което трябва да направите е – да изучавате технологии, от които ще се нуждаете като среден разработчик. Какви са тези? Светът непрекъснато се променя. Ще те заредя със съвети и животът ще промени всичко. Намерете няколко свободни позиции в мрежата и вижте Howво трябва да кандидатствате. Не забравяйте да прочетете книгата на Брус Екел „Мислене в Java“. Вашата цел през първата година на работа като Java Junior Developer е да достигнете ниво Java Middle Developer. Никой не казва, че това би било лесно, но това е възможно за целеустремен човек. Това ще увеличи заплатата ви за миг до 40% от „5-годишния максимум“ ($50K за SF и Лондон, $6K за Бангалор).2-годишно програмиране (Java Middle Developer, ниво 1)
Свършихте добра работа миналата година и сега сте Java Middle Developer. Можете да живеете доста добре, като печелите 50% от заплатата на Senior Java Developer. Възлагат ви се сериозни задачи в работата и опитът ви нараства значително. Ще достигнете нивото на Java Senior Developer след две or три години. Няма защо да бързаме. Така or иначе няма да получите големи горнища на заплатата. Това, което трябва да направите, е да научите шаблони за проектиране, прочетете – Пълният code на McConnell. Усъвършенствайте качеството на вашия code и екипни умения. Създайте правило за четене на 1 книга за компютърно програмиране всеки месец. Тогава след 4 години ще бъдете с 50 книги по-умни от всички останали. Не го отлагайте: няма да имате повече свободно време, освен това най-вероятно ще създадете семейство or ако имате, то ще стане по-голямо. Твоята целе да изберете няколко технологии, в които да се специализирате като старши Java разработчик. Не можете да ги научите всички, нали знаете. И винаги е добро решение да станете гуру в една специализация.
3-годишно програмиране (Java Middle Developer, ниво 2)
Вече сте опитен среден разработчик и обмисляте да станете старши разработчик. Приятно е, Howто и престижно. Вашата заплата надвишава 60% от „5-годишния максимум“ ($10K в Бангалор, $25K в Киев, $40K в Берлин, $80K в Ню Йорк). От този момент търсенето на професионалисти като вас нараства и предлагането. Винаги ще можете да си намерите работа за няколко дни и едва ли някога ще печелите по-малко от сега. Това, разбира се, ако не направиш нищо глупаво. Това, което трябва да направите епродължавайте да изучавате технологиите, които сте избрали. Работете по-добре. Не заради вашия работодател, а заради себе си. Кандидатствайте за участие в проекти, включващи обещаващи технологии (като BigData, в момента се пише тази статия). Така or иначе ще прекарвате по 8 часа на ден в офиса, така че защо не получите малко повече пари за това и, което е много по-важно, най-ценното преживяване, което ще ви е необходимо в бъдеще. Вашата цел е да си намерите нова работа. Добър екип винаги се намира. Ще се сблъскате с нови проекти и технологии. Не е нужно да се придържате към стола си. Ако все още работите в компания от трето ниво, помислете за работа в такава от четвърто ниво.5-та година програмиране (Java Senior Developer, ниво 1
Вече сте старши разработчик. Може би не сте го заслужor и го чувствате. Все пак моите поздравления. Няма meaning дали си достоен за позицията си сега, важното е да станеш достоен за нея в бъдеще. Мисля, че ще се съгласите, че е по-добре да си намерите добра работа и след като израснете до необходимото ниво, тогава обратното. Надявам се, че не сте забравor съвета ми да четете по една книга на месец? Всеки студент ще завиди на вашите знания и умения сега. За да бъдем по-конкретни, той ще се моли на тях. Само си помислете: имате сериозни доходи, близо до 90% от „5-годишната максимална“ заплата. Сигурно си още млад. Светът е в краката ти. Това, което трябва да направите еза преоценка на технологиите, които сте избрали. Може би трябва да промените специализацията. Светът се промени, технологиите се промениха и вие придобихте доста знания през последните две години. Това, което изберете сега, ще се превърне в заглавие през следващите няколко години за вас. Време е да изберете любимите си технологии. Вашата цел е да изберете посоката на растеж. Те са многобройни, никой не може да ги назове всички, но вашият избор трябва да бъде напequals точно сега. Ако направите малка промяна днес, ще получите голяма в бъдеще.6-та година програмиране (Java Senior Developer, level2)
Решихте бъдещето си и работите върху сбъдването на мечтата си. Правилно избрана посока, заедно с желание за напредък – и резултатът няма да закъснее. Честито. Щастлив съм да видя, че има още един човек, сбъднал мечтата си. Има една дълбока истина. Хората често надценяват това, което могат да постигнат за една година и подценяват това, което могат да направят за пет. Погледнете пет години назад. Така е. Това, което трябва да направите, е да избягвате неразумни решения и да не бъдете мързеливи. Вашата цел е да изберете посока и да продължите напред. Или си мислеше, че свършва тук? Спомнете си дипломирането. Това не е краят, а само началото.Вашата бъдеща специализация

Кариерата на Java Developer
Кариерата на програмиста е различна от всяка друга. Не е нужно да ставате мениджър, за да печелите добри пари. Често се случва Senior Developer да печели повече от неговия мениджър-шеф. Колкото повече опит придобивате, толкова по-силни са работните ви взаимоотношения с вашия шеф, които се променят от „шеф-подчинен“ на „звезда и мениджър“.
Двеста годишен разработчик
Ако най-много се наслаждавате на програмирането, тогава това е вашият начин: старши разработчик, след това технически водещ разработчик и архитект. По този начин можете да работите като разработчик 50 и повече години. В повечето случаи заплатите на Senior Developers и Tech Lead Developers надвишават тези на техните мениджъри. Така че вземете парите си.Управител. Късметлия си, че не си като другите
Отидохте при врага. Майтапя се. Ако откриете страхотни организационни умения, тогава вашите пътища са: Ръководител на екип и след това Ръководител на проекти. Това ще ви даде шанс да станете ръководител на отдел и да отворите собствен бизнес. Това е, което искате, нали?Домът е там, където е сърцето

Вижте Неапол и не умрете.
Все още нямате семейство и обичате да пътувате . oDesk е всичко за вас. Намерете клиент, съгласете се на цена от $20-$50 на час, вземете лаптоп със себе си и тръгвайте! Вашата заплата ще е достатъчна, за да живеете навсякъде по света. Защо не започнете да сбъдвате мечтите си веднага?Не искам да програмирам, аз съм момиче..
Ако сте момиче , може да се наложи да вземете отпуск по майчинство . Звучи като сексистка шега, което е. Все пак има много здрав разум в това. Най-вероятно, като вземете отпуск по майчинство, ще можете да получите много пари за отпуск по майчинство (в страни с висока социална защита). Има компании, които не плащат нищо, а има и такива, които плащат добре. Една от моите студентки получи една трета от годишната си заплата в отпуск по майчинство. И това се случи през пролетта на 2009 г., по време на съкращения. И след година и половина може да се върнете, като сте поне среден разработчик.Ниво 6

1 Ели. Видимост на обекта. нула
- Хей, Амиго! - Здравей, Ели! Ще ми кажеш ли нещо интересно днес? - Днес ще ви разкажа за живота на един обект . След като обектът е създаден, той съществува (живее), докато поне една променлива не съхрани address си (има поне една препратка към обект). Ако вече няма препратки, тогава обектът умира. Примери:
2 Професор, Събиране на отпадъци

3 Ели, финализирай
- Здравей отново! Сега ще ви дам кратко въведение в метода finalize() . Този метод се извиква от виртуалната машина на Java на обекта, преди обектът да бъде унищожен. Всъщност този метод е противоположен на конструктора. При този метод е възможно да се освободят ресурсите, използвани от даден обект. - Класът Object има този метод, следователно всеки клас го има ( всички класове в Java се считат за наследени от класа Object и съдържат копие на неговите методи ). Ако напишете във вашия клас метода finalize() и той ще бъде извикан преди обектите от този клас да бъдат унищожени. Пример:
4 Ели, Живот на обекта
- Искам също да ви кажа няколко интересни неща за живота на обекта. В Java е много трудно да загубите обекта случайно; ако имате препратка към обект, това означава, че обектът със сигурност е жив. - Вътре в препратката към обект се съхранява номер – address на този обект в паметта. Не можете да промените това число, да го увеличите or намалите. Не можете да създадете препратка, когато просто имате address в паметта. Можете само да създадете нов обект и да присвоите неговата препратка към променлива. Това е единственият начин да получите нова справка. - Виждам. Тоест, ако задам null (изтриване) на всички препратки към обекти, никога няма да получа препратката към обекта и няма да получа достъп до нея? - да Но често е точно обратното – има твърде много живи обекти, които не се използват.Повечето програми създават десетки обекти и ги съхраняват в различни списъци по време на изпълнение, но никога не почистват тези списъци. - Най-често програмистите етикетират нежеланите обекти като „изтрити“, това е всичко. На никой не му пука за премахването им от списъците. Така че големите Java програми са склонни да се раздуват - все повече и повече неизползвани обекти остават живи в паметта. - Това е всичко. В бъдеще винаги ще обръщам внимание на неизползваните предмети и тяхното правилно изхвърляне. - ОК, благодаря. Изяснихте няколко неща относно референциите.5 Диего, Задачи за целия живот на обекта
- Хей, Амиго! Ето няколко задачи за вас:Задачи | |
---|---|
1 | 1. finalize() метод на клас Cat Напишете метод protected void finalize() throws Throwable в класа Cat |
3 | 2. Класове Cat и Dog и метод finalize() за всеки клас Във всеки клас Cat and Dog напишете метод finalize() , който извежда на екрана съобщение, че обектът е унищожен. |
3 | 3. 50 000 обекта от клас Cat и 50 000 обекта от клас Dog Създайте в цикъл 50 000 обекта от клас Cat и 50 000 обекта от клас Dog. (Виртуалната машина на Java ще унищожи неизползваните обекти, така че методът finalize() ще бъде извикан поне веднъж). |
4 | 4. Брояч Cat В конструктора на клас Cat [public Cat()], увеличете брояча cat (статична променлива catCount от същия клас) с 1. В метода finalize() намалете с 1. |
6 Ели, Статични класове и методи
- Ето нова интересна тема. Искам да ви разкажа за статичните променливи и методи. - О, вече чух за статичните променливи. За статичните методи също, предполагам. Но бих искал да имам повече подробности. - Когато декларираме променливи в клас, ние указваме дали тези променливи се създават в единичен споделен екземпляр or е необходимо да се създават техни копия за всеки обект. По подразбиране се създава ново копие на променливата на класа за всеки обект от този клас. Ето How изглежда:



7 Риша, Статични класове и методи
- В допълнение към статичните методи има и статични класове . Ще разгледаме този случай по-късно, просто ще ви покажа пример за него:
8 Диего, Задачи по статичен метод
- Хей, Амиго! Ето някои интересни задачи за статични методи:Задачи | |
1 | 1. Клас Cat и статична променлива catCount Напишете статична променлива int catCount в класа Cat. Създайте конструктор [ public Cat() ], в който дадената променлива да се увеличи с 1. |
2 | 2. Статични методи: int getCatCount() и setCatCount(int) Добавете два статични метода към класа Cat: int getCatCount( ) и setCatCount(int) , използвайки които можете да получите / промените броя на котките (променливата catCount) |
3 | 3. Клас Util Внедрете статичен метод double getDistance(x1, y1, x2, y2) . Трябва да изчисли разстоянието между точките. Използвайте метода double Math.sqrt(double a), за да изчислите квадратния корен на предадения параметър |
4 | 4. Клас ConsoleReader Напишете клас ConsoleReader, който ще има 4 статични метода: - String readString() за четене на низове от клавиатурата - int readInt() за четене на числа от клавиатурата - double readDouble() за четене на дробни числа от клавиатурата - void readLn () , за да изчакате натискането на enter [използвайте readString()] |
5 | 5. Клас StringHelper Напишете клас StringHelper, който ще има 2 статични метода: - String multiply(String s, int count) трябва да върне низа s повторен брой пъти. - String multiply(String s) трябва да върне низа s, повторен 5 пъти. Пример: Амиго → АмигоАмигоАмигоАмигоАмиго |
9 Професор, статичен обхват и живот на обекта

10 юли
- Хей, Амиго! Свърши страхотна работа днес. Ето защо просто не мога да ви дам повече. Хайде, седнете, шоуто започва:11 Капитан Катерици
- Здравей, войнико! - Добро утро, сър! - Имам страхотни новини за вас. Ето една бърза проверка, за да затвърдите уменията си. Правете го всеки ден и бързо ще подобрите уменията си. Задачите са специално проектирани за изпълнение в Intellij IDEA.Допълнителни задачи за изпълнение в Intellij Idea | |
---|---|
1 | Клас Cat и статична променлива catCount Напишете статична променлива public int catCount в класа Cat. Създайте конструктор [public Cat()]. Нека статичната променлива catCount се увеличава с 1 всеки път, когато създавате котка (нов обект Cat). Създайте 10 обекта Cat и покажете стойността на променливата catCount . |
2 | 2. Статични котки
За да създадете променлива cats , използвайте codeов ред: public static ArrayList<Cat> cats = new ArrayList<Cat>(); |
3 | 3. Преместете един статичен модификатор Преместете един статичен модификатор, така че codeът да се компorра. |
4 | 4. Минимален брой статични ключови думи Добавете минималния брой статични ключови думи, за да накарате codeа да се компorра и програмата да завърши успешно. |
5 | 5. НяHowви нови идеи? Нека да помислим...
|
6 | 6. KissMyShinyMetalAss Напишете клас с име KissMyShinyMetalAss. Създайте обект от този клас, след което го покажете на екрана. |
7 | 7. Име на три статични променливи Напишете 3 публични статични променливи: String Solution.name , String Cat.name , String Dog.name |
GO TO FULL VERSION