• 0.00

  • -0.74

Как найти работу? Рассылка резюме.

Приветствую вас, будущие сеньеры!


У каждого наступает момент того, когда нужно начинать искать работу. Здесь я бы хотел рассказать о том, как это делал Я, как я мыслил, с какими трудностями столкнулся и что я делал для того, чтобы преодолеть их.
Эту статью можно использовать как пошаговый справочик, так что приятного чтения и пусть он поможет вам также как помог и мне!
Здесь я не буду говорить о том, как написать резюме. Это отдельная статья и она вовсе не простая, цель у меня другая. Предположим, что резюме у вас уже есть.


Куда отправлять?

А ведь действительно, куда? Нужно же заявить миру о том, что вы готовы работать! В нашем случае, почти все IT-компании имеют свои сайты и на этих сайтах можно найти их почту.
первым делом нужно собрать почты компаний. И их должно быть не 2, не 5 даже не 10, а больше, максимально возможно. (К примеру у меня был список из 131-й почты!).
Есть еще способ, часто на сайтах работы регистрируются компании и их там еще можно найти.
Для тех, кто из Украины, есть сайт для программистов dou ссылка сразу на список компаний. Там можно выбрать свой город и посмотреть. Ресурс вообще очень сильный и всем начинающим я советую его прошерстить!

Сопроводительное письмо

Допустим, вы уже собрали список почт всех IT-компаний, которых смогли. Следующий этап — написать сопроводительное письмо… А что это такое?
Сопроводительное письмо(в моем понимании) — это текст, который прикрепляется в письме вместе с резюме, в котором можно написать цель этого письма, какие-то милости про компанию(например я уверен, что в вашей компании я стану лучше и т.д) и конечно же сказать на какую позицию собиратесь.
Сопроводительное письмо ДОЛЖНО быть на английском языке! Рекрутеры очень любят, когда пишут сопроводительное письмо и написав его, вы будете уже выше тех, кто этого не сделал. Я уверен, что многие этого не пишут. Когда большой конкурс на место, то на первом этапе многое зависит от рекрутера! Пример своего приводить не буду, т.к. хочу еще им пользоваться :)

Рассылка резюме

Теперь уже готово и резюме(конечно же на английском языке) и сопроводительное письмо готово и теперь можно рассылать, но прежде нужно сделать следующее:
  1. С какой почты отправлять? Хорошим тоном будет, если будет почта от гугла(gmail.com) и она будет состоять из шаблона firstName.lastName@gmail.com. Часто бывает, что отсылают со старых почт, которые были зарегистрированы, как brutal.eggs@mail.ru или как-то еще какие-то смешные.
  2. Отправлять каждое письмо отедельно для каждой компании, не делать массовой рассылки! Это видно тем, кто получает и это минус вам!
  3. Отправлять по 5-6 писем каждые 3-4 часа, чтоб не попасть в спам-лист получателей.
  4. ждать ответа:)
Конечно, вы можете подумать, что в компании, которые вы отправляете вы вовсе не нужны, но это ошибочное мнение, потому что:
1. Если в той компании нет джава отдела — ну и ладно. Вам ответы из этой компании тоже не нужны.
2. Если там есть отдал джавы, но нет вакансии — тоже хорошо. Вам ответят, что пока не вакансии, но вас занесут в свою базу и как только появиться — вам напишут.
3. Часто бывает, что позиция джуниора есть, но ее не афишируют, чтоб не было спама от желающих и они ищут своими силами. Вот здесь как раз и смотрят вначале на свою базу данных, в которую вы ДОЛЖНЫ попасть, если хотите быть в числе первых.
4. Как обычно, доля удачи нужна всем!
5. И последний пункт про LinkedIn

Регистрация в LinkedIn


Зарегистрироваться в LinkedIn — это социальная сеть для тех, кто ищет работу и кто ищет работников. В СНГ это соц.сеть для поиска IT специалистов. Это одно из самых любимых мест рекрутеров. Здесь нужно создать свой профиль и максимально заполнить его. Там можно поставить свои навыки, которыми владеешь, чтобы рекрутер мог знать.

djinni.co

djinni.co — портал для тайного поиска программистов. Рекрутеры вначале видят только скилы того, кто ищет работу и только с согласия соискателя могут получить информацию о Вас. очень удобная вещь для тех кто работает и думает поменять. А для нас это еще одно место, где нас могут найти рекрутеры. Так что не брезгуйте этим местом, регистрируйтесь и ждите, авось кто-то напишет)


Итог
Теперь Вы знаете как это можно сделать, время действовать! Хочу пожелать всем удачи в поиске своей первой работы! Стремитесь, ищите и удача возблагодарит вам!

Если вам понравилась статья — ставьте "+" над ней и удачи в поиске работы!

См. также мои другие статьи:
Тестовое задание: «Написать Интерпретатор на язык BrainFuck»
Тестовое задание «Image Comparison»
Java — быстрее, сильнее и выше! Зарплаты украинских программистов.
История успеха спустя 1.5 года от начала обучения
Технические вопросы на собеседовании.
Как найти работу? Рассылка резюме
Профессиональное выгорание. Как устоять?
Английский для IT и для собеседования
Паттерн Command своими словами.
Паттерн Singleton своими словами.
Как создать исполняемый jar в Intellij IDEA / how to create jar in IDEA
Помогите, нужна мотивация!

Подписывайтесь на мой блог Паттерны Проектирования пишите в нем статьи!

Технические вопросы на собеседовании.

Привет всем, Джаварашовцы!

Так уж случилось, что недавно я проходил собеседование и хотел бы рассказать, какие вопросы мне задавали предполагая, что идет позиция Junior++. Т.е. еще не мидл, но уже и не зеленый джун.

Так вот, собеседование проходило по такому плану
  1. JavaCore
  2. ООП
  3. REST
  4. Базы данных.
  5. Инструменты, которыми пользуешься.

JavaCore

  • Вначале меня попросили нарисовать иерархию интерфейсов у Коллекций.(Это было не сложно, там всего их несколько(Collection,List,Set,Queue,Map). )
  • В чем различие ArrayList и LinkedList(это один из замых заезженных вопросов и ответов в инетах просто тьма). Обсудили скорость выполнения запросов в них и какая разница между листами.
  • Вопрос про класс Object. какие у него методы, что они делают.
  • Рефлексия. что делает метод getClass(). Очень интересный вопрос, разберите его. Особенно про то, как получить всё про класс, пусть даже там приватные методы или переменные.
  • Спросили за многопоточность. Слабенько, как я считаю, так рассказать как ты понимаешь что такое многопоточность. Что нужно, чтоб запустить новый поток. Реально, если вы 20+ уровень, то эти вопросы для вас покажутся смешными.
  • Что можешь сказать про Stream. Это имеется в виду не про Java 8. Имеется в виду потоки ввода и вывода. Как базовые интерфейсы, какие они (символьные и байтовые). На понимание, никакой конкретики.
  • Исключения. Здесь опять-таки попросили нарисовать иерархию исключений, какие бывают, какие из них checked, а какие unchecked. Что нужно делать с Runtime исключениями. Назовите самое часто попадающее(NullPointerException)
  • Вопрос с тем, что нужно делать с checked исключениями(пробрасывать дальше или обработать — понятно и то и другое.)

ООП

  • Что такое ООП в двух словах?
  • Какие еще есть парадигмы программирования? В чем их различие от ООП
  • Какие основные принципы ООП?(наследование, полиморфизм и инкапсуляция) Рассказать про каждый из них. Пока всё абстракатно, не привязываясь к какому-то языку.
  • Задача на понимание проектирования систем: есть Лошадь и Птица. Нужно получить Пегаса. принцип «has a» и «is a»

REST

  • Что такое REST. В википедии об этом говориться очень круто. Реально статьи из википедии для ознакомления хватит
  • HTTP. Здесь тоже общие фразы. Его методы, для чего каждый из них.
  • Коды состояния HTTP. на какие пять частей делиться, расскажите про самые известные (200,204,404,500,501). Зачем они. Спросили еще про 401 и 403. Но я не знал их. Сказали они важные.

Базы данных

Здесь я рассказал, что знаю MySQL. Рассказал про три нормальные формы. Рассказал про Join'ы, какие бывают и нарисовал пересечение областей, в котором используются разные джоины. Рассказал про то, как я понимаю реляционную БД. Не забыл еще о про MongoDB — это NoSQL база данных. Через некоторе время я напишу и про это.

Другие Инструменты
Здесь мы прошлись по моем резюме. У меня было написано, что использую Maven/Gradle для сборки, использую JIRA для тасков, git, Docker, Swagger. Для Continuous Integration — Stash, Bamboo, Puppet. Для тестирования JUnit, Mockito, JMeter.


Я мог что-то забыть, поэтому если интересно — спрашивайте в комментариях постараюсь ответить.

Это была первая часть собеседования. Теперь жду результаты и если да, то будет вторая часть. Напишу о ней как только так сразу.
Всем кому статья понравилась и была полезна — ставьте "+". Пишите в комментариях.

См. также мои другие статьи:
Тестовое задание: «Написать Интерпретатор на язык BrainFuck»
Тестовое задание «Image Comparison»
Java — быстрее, сильнее и выше! Зарплаты украинских программистов.
История успеха спустя 1.5 года от начала обучения
Технические вопросы на собеседовании.
Как найти работу? Рассылка резюме
Профессиональное выгорание. Как устоять?
Английский для IT и для собеседования
Паттерн Command своими словами.
Паттерн Singleton своими словами.
Как создать исполняемый jar в Intellij IDEA / how to create jar in IDEA
Помогите, нужна мотивация!

Подписывайтесь на мой блог Паттерны Проектирования пишите в нем статьи!
  • ,

Лец ми спик фром май харт... Ин инглиш

За месяц до того, как я начал заниматься — я и двух слов связать не мог. Хай, бай, эврибади, йестердей, олл май трабл синг соу фар авэй — это был мой потолок. Не могу сказать, что сейчас я идеально разговариваю, но как минимум на общие темы, а также по теме своей работы, я пообщаться могу. Во всяком случае, пару раз в неделю общаюсь по скайпу с англоязычными собеседниками и меня довольно таки хорошо понимают Ну и самое главное, не путаю времена.

Английский для IT и для собеседования.

Приветсвтую Вас, дамы и господа! =)


Так получилось, что я последнее время готовился к собеседованию и нужно было подготоовиться к английскому.
Тема эта так же важна, как и само программирование, т.к. вся документация на английском, всё самое свежее на английском, самые классные книги на английском.
Да, скажете вы, что есть же переводы книг на русский… Это правда, но и правда то, что большинство переводов никудышние и не передают суть вопроса. А иногда и вовсе вводят в заблуждение.

И так получилось, что отвечая на комментарии в моей блоге об истории успеха, да и в самой статье я рассказывал как это важно и решил, что нужно бы вынести это в отдельный пост.

Реальность такая, что во многих компаниях собеседование проходит в три этапа:

  • Общение с HR. На этом этапе рассказывают про компанию, какие они классные, чем они занимаются и т.д. и попутно смотрят насколько адекватен, собеседник. Если он неадыкват, то дальше никакого общения не будет.
  • Собеседование на английском… Вот здесь как раз будут смотреть, насколько честно вы признались в резюме, какой у вас уровень. И реально, если вы будете молчать и ничего не отвечать, то на этом этапе собеседование для вас закончится… Здесь будет общение не на тему программирования, а так просто в вольной теме или зачастую «Tell me about yourself».
  • Если вы успешно прошли первые два этапа — поздравляю, вы сможете поговорить с техническим специалистом на тему вашей профессиональной граммотности.


Исходя из этого списка, я хочу рассказать о том, как я это делал, какие выводы и примеры.
На своей первое собеседование я шел и про тему английского как-то не подумал… цитата из моей статьи:
Поговорив с HR-ром, ко мне позвали преподавателя по английскому, с которым я «пообщался». К этому моменту я вовсе был не готов и вышло, что я больше слушал, чем говорил. И на тему расскажи о себе, я что-то промямлил, но ничего особенного.
И после этого я вынес важный урок, что к английскому нужно готовиться также чательно, как и к техническим вопросам.
Реально за короткий срок грамматику всю не повторишь и не изучишь, а вот сделать небольшую шпаргалку для себя — это можно. Пусть она будет состоять из простых предложений, пусть она будет не доскональной, но она Будет! и вам будет что сказать.

С такими мыслями я составил свой первый рассказ, который понятно я выучил, может не дословно, но приближенно к тексту:
Hello. my name is roman. I AM studiNG AT SomeUniversity. I have HAD an experiance in android development. Ive been working with freelansers team since January. I have strong communication skills and I am fast learning person.
I have many hobbies, for example i play guitar and love camping.
My grandfather father and I are bee-keepers. Really. I am not afraid when bees are stinging me. I know what need to do if you want to get some honey from bee-hive.
I like sport, thats why i go to the gym EVERY OTHER DAY day. I lIKE this.
Also i do not drink alkohol and smoke the cigarretes.
Небольшой, но уже какой-то. Там где выделено большими буквами — это мне редактировала моя жена, которая читала это. У нее с английским получше, чем у меня.

На другом собеседовании я использовал эту шпаргалку и всё было хорошо, меня слушали и кивали. Но я не подумал о том, что мне же будут еще задавать вопросы и хорошо бы, чтоб я мог на них ответить. На этом я прокололся. Опять начал мямлить и говорить мало и медленно.
Из этого собеседования я вынес, чтонужно было к моему рассказу еще подумать ответы на предполагаемые вопросы...

И вот я плавно подошел к тому, что готовился пару дней назад. За это время я несколько поднатаскался с английским(как я считаю) и получил вот такой шаблончик:
Hello!
My name is Roman. I live in SomeCity. I’m working as Java developer in IT company.
On this job, I’m developing microservices structure. For dependency injection, I’m using Guice(pronounced as juice). It’s lightweight framework from Google. Also, we’re using Jersey. As build tools, we are using Gradle. Gradle it’s the most powerful of all those tools. Because it has life circle as Maven and it has tasks as Ant. And all of this you can combine as you want on Groovy. it’s mean that you do all thing in groovy script. Also, I’m making different tests. I’m using JUnit 4, Mockito and JMeter. For database we use MongoDB where we store metadata for our application.

I love sports, that’s why 3 times per week I go to the gym. Also, I like to play volleyball, badminton and sometimes I can go to play soccer with my old friends, but it doesn’t mean that I’m good in it.
Also, I have many hobbies, for example, I play the guitar. Every summer I go to the forest near Chuguev on the Severskiy Donec beach. It’s place called “Figurovka”. Every night we seat around the bonfire and sing songs while I play the guitar. It’s about the night, as for day we usually play volleyball and badminton.
you know badminton is more difficult than volleyball because while you play volleyball you can rest instead of badminton when you need to move all the time if you want to win. When I speak about badminton I mean professional badminton when you have badminton court and rules.

Next, it is a hobby and a family business. My father and I are beekeepers. We know how to get honey :D.
we have about 40 colonies of bees. It’s normal for us. I love it because working with bees it’s very healthy for the body. They are very smart. of course, we sell honey. Bees produce many commodities. For example honey, beeswax, pollen, propolis and else. Also, we produce Medovucha. It’s lightweight alcohol beverage, which does not contain ethanol.
Also, we provide pollination services.

Здесь я постарался сделать как можно больше, чтоб часть смог вспомнить и рассказать, а часть была бы уже ответами на предполагаемые вопросы. К примеру про пчеловодство я специально выучил все термины на английском, чтоб смог поддержать разговор в случае, если их это заинтересует.

Английский для IT
И конечно хочу добавить несколько слов из своего опыта про то, как развивать свой английский в IT.
Это только лично мое мнение и оно никоим образом не претендует быть правдой в последней инстанции, но если кто-то вынесет для себя что-то интересное — я буду только рад.

Есть даже у меня в городе курсы, которые предоставляют английский именно для IT, но мне кажется, что это плохая идея. Английский лучше учить на хороших курсах или на видеоуроках, а вот слова, которые необходимо использовать в профессиональной деятельности — их можно черпать из книг на английском.

Да, именно так, сейчас я читаю книгу «The Linux CommandLine» на английском и завел себе тетрадь, в которую вписываю неизвестные мне слова, которые они используют. И это реально работает, это помогает мне.

Вконце хочу пожелать всем Джаварашевцам удачи в прокачке своих скилов, успешном поиске работы и intermediate английского!

Всем, кому понравилась статья, ставте "+", пишите в комментариях, давайте вести диалог.

См. также мои другие статьи:
Тестовое задание: «Написать Интерпретатор на язык BrainFuck»
Тестовое задание «Image Comparison»
Java — быстрее, сильнее и выше! Зарплаты украинских программистов.
История успеха спустя 1.5 года от начала обучения
Технические вопросы на собеседовании.
Как найти работу? Рассылка резюме
Профессиональное выгорание. Как устоять?
Английский для IT и для собеседования
Паттерн Command своими словами.
Паттерн Singleton своими словами.
Как создать исполняемый jar в Intellij IDEA / how to create jar in IDEA
Помогите, нужна мотивация!

Подписывайтесь на мой блог Паттерны Проектирования пишите в нем статьи!
  • ,

Восемь вещей, которые мне помогли найти работу

Привет, войтишник! Решил поделиться своей историей. Начав обучение в конце 2014 и несколько раз забрасывая все куда подальше, 2 месяца назад я получил работу.

В этой статье я не буду рассказывать о том, как и что я писал в резюме, о чем говорил с HR и как я учил английский (об этом будет отдельный пост). Я не буду углубляться в то что я и где учил. Я просто поделюсь своими наблюдениями и размышлениями, возникавшими у меня по ходу обучения по поводу и без. Я поделюсь тем, что считаю хорошим и плохим в околовойтишной сфере. А так же перечислю 8 вещей, которые помогли мне стать программистом. Поехали!

Паттерн Singleton своими словами.

Привет всем, javaRush!

Расскажу сегодня про паттерн проектирования Singleton(одиночка).

Цель:
Создать класс, у которого будет только ОДИН объект.

Это значит, что сколько бы раз к нему не обращались, возвращаться будет один и тот же объект, который был создан первый раз.

Это удобная вещь и необходимая во многих местах, не зря ее внедряют во фреймворки.

Применение
  • Например необходимо подключить базу данных в проект и класс, который будет отвечать за соединение с ней. Один раз создается соединение и нет нужны создавать его снова и снова
  • Application settings — класс отвечающий за настройки отружения, которые нужны для приложения: хост и порт базы данных и т.д. Они создаются один раз и используются всё время работы приложения.
  • есть еще множество примеров, о которых я не сказал, поэтому пишите в комментариях свои варианты! =)


  • После этого вступления, как я понимаю можно показать уже пример этого класса: (Хотя я уверен, что каждый из нас сможет придумать реализацию этого)
    Вот самый простой пример, когда мы ставим приватным конструктор, т.е. нельзя создавать явно объект. И есть статический метод getInstance(), который предоставляет объект.
    
    public class Singleton {
      private static Singleton instance;
      private Singleton () {}
    
      public static Singleton getInstance() {
        if (instance == null) {
          instance = new Singleton();
        }
        return instance;
      }
    }
    

    Есть проблемы с многопоточностью и тогда можно поставить метод getInstance() маркер synchronized:
    
    public class Singleton {
      private static Singleton instance;
      private Singleton () {}
    
      public static synchronized Singleton getInstance() {
        if (instance == null) {
          instance = new Singleton();
        }
        return instance;
      }
    }
    


    В конце, как обычно, хочу сказать, что если вы думаете иначе или нашли у меня ошибку — пишите в комментариях! Мы все обсудим, с удовольствием :)

    Если Вам понравилась статья, пишите "+" и я буду это знать. Это для меня важно :)


P.S. Добавляю еще реализации:

По мнению Joshua Bloch’а это лучший способ реализации шаблона Enum Singleton

public enum Singleton {
	INSTANCE;
}


Double Checked Locking & volatile

public class Singleton {
        private static volatile Singleton instance;
	
        public static Singleton getInstance() {
		Singleton localInstance = instance;
		if (localInstance == null) {
			synchronized (Singleton.class) {
				localInstance = instance;
				if (localInstance == null) {
					instance = localInstance = new Singleton();
				}
			}
		}
		return localInstance;
	}
}


И еще On Demand Holder idiom:

public class Singleton {
		
	public static class SingletonHolder {
		public static final Singleton HOLDER_INSTANCE = new Singleton();
	}
		
	public static Singleton getInstance() {
		return SingletonHolder.HOLDER_INSTANCE;
	}
}

+ Ленивая инициализация
+ Высокая производительность
— Невозможно использовать для не статических полей класса

Будут вопросы/предложения — пишите в комментарии!


См. также мои другие статьи:
Тестовое задание: «Написать Интерпретатор на язык BrainFuck»
Тестовое задание «Image Comparison»
Java — быстрее, сильнее и выше! Зарплаты украинских программистов.
История успеха спустя 1.5 года от начала обучения
Технические вопросы на собеседовании.
Как найти работу? Рассылка резюме
Профессиональное выгорание. Как устоять?
Английский для IT и для собеседования
Паттерн Command своими словами.
Паттерн Singleton своими словами.
Как создать исполняемый jar в Intellij IDEA / how to create jar in IDEA
Помогите, нужна мотивация!

Подписывайтесь на мой блог Паттерны Проектирования пишите в нем статьи!

Паттерн Command своими словами.

Привет всем, Форумчане!


Разобрался-таки основательно(как мне кажется) с паттером Command и хочу попытаться рассказать о нем «своими словами».
Исходя из википедии, можем узнать, что цель его
Создание структуры, в которой класс-отправитель и класс-получатель не зависят друг от друга напрямую. Организация обратного вызова к классу, который включает в себя класс-отправитель.

В принципи написано чётко и правильно, но это в теории. А как же сделать это?
Вот этим начинаются проблемы, т.к. описание уже не так ясно и очевидно.
Поэтому я как разобрался, решил рассказать вам как я это понял, может кому-то и пригодится:

Исходя из описания цели этого паттерна, буду комбинировать описание сразу с кодом, чтоб было нагляднее, т.к. в той же википедии обобщили для многих языков и поэтому описание отделено от примера.

В этом паттерне есть четыре термина, пока примем их как данность: команды(command), приемник команд(receiver), вызывающий команды(invoker) и клиент(client).

Пример буду брать с той же википедии, он вполне сносный.

Задача
есть класс Light, который умеет две вещи: включить свет и выключить. Он в терминах паттерна будет «приемник команд(receiver)»
/*Receiver class*/

public class Light{
     public Light(){  }
   
     public void turnOn(){
        System.out.println("The light is on");
     }

     public void turnOff(){
        System.out.println("The light is off");
     }
}


Создадим интерфейс с одним методом execute(), который будет выполнять и который называется в терминах паттерна «команда(commadn)»
/*the Command interface*/

public interface Command{
    void execute();
}


Необходимо инкапсулировать выполнение умений класса Light. Для этого мы создадим классы TurnOnLightCommand и TurnOffLightCommand, которые реализуют интерфейс Command и которые будут принимать в конструкторе объект класса Light. И каждый из них будет выполнять только одно действие. Один будет вызывать метод turnOn(), а другой turnOff().
/*the Command for turning on the light*/

public class TurnOnLightCommand implements Command{
   private Light theLight;

   public TurnOnLightCommand(Light light){
        this.theLight=light;
       }

   public void execute(){
      theLight.turnOn();
   }
}

/*the Command for turning off the light*/

public class TurnOffLightCommand implements Command{
   private Light theLight;

   public TurnOffLightCommand(Light light){
        this.theLight=light;
       }

   public void execute(){
      theLight.turnOff();
   }
}


Теперь пришло время создать объект, который бы принимал эти инкапсулированные методы объекта Light. Он в терминах паттерна называется вызывающий команды (invoker). Назовем его Switch и пусть он будет принимать в конструкторе переменные Command, которые будут использоваться в созданных методах flipUp() и flipDown().
/*the Invoker class*/

public class Switch {
    private Command flipUpCommand;
    private Command flipDownCommand;

    public Switch(Command flipUpCommand,Command flipDownCommand){
         this.flipUpCommand=flipUpCommand;
         this.flipDownCommand=flipDownCommand;
    }

    public void flipUp(){
         flipUpCommand.execute();
    }
    
    public void flipDown(){
         flipDownCommand.execute();
    }
}


Ну и конечно создадим класс который будет использовать их, чтобы понять что происходит вообще. Он будет именть метод main, в котором и будет происходить всё действие:
/*The test class*/
public class TestCommand{
   public static void main(String[] args){
       // создаем объект, который будет использоваться
       Light l=new Light();
       // создаем объекты для всех умений объекта Light:
       Command switchUp=new TurnOnLightCommand(l);
       Command switchDown=new TurnOffLightCommand(l);
        
       // Создаемтся invoker, с которым мы будем непосредственно контактировать:
       Switch s=new Switch(switchUp,switchDown);
       
       // вот проверка этого, используем методы:
       s.flipUp();
       s.flipDown();
   }
}

На выводе будет следующее:

"The light is on"
"The light is off"


Где это применяется?
По цели ясно, что и для чего это нужно, а именно: в ситуации, когда нужно отделить конкретное исполнение, это очень удобно. Чтоб использование каких-то функций не зависело от конкретной реализации и ее можно было изменять без ущерба для системы.
как-то так...)
Пишите свои комментарии, давайте обсуждать, может что-то можно сделать проще и рассказать лучше, будем всё править, если необходимо) Чтоб для тех, кто будет читать первый раз, было как можно понятнее.

Ну и кому понравится статья — ставьет "+" на ней :) Для меня это важно)


Со временем хочу написать еще про Builder, Singleton и прочие.


См. также мои другие статьи:
Тестовое задание: «Написать Интерпретатор на язык BrainFuck»
Тестовое задание «Image Comparison»
Java — быстрее, сильнее и выше! Зарплаты украинских программистов.
История успеха спустя 1.5 года от начала обучения
Технические вопросы на собеседовании.
Как найти работу? Рассылка резюме
Профессиональное выгорание. Как устоять?
Английский для IT и для собеседования
Паттерн Command своими словами.
Паттерн Singleton своими словами.
Как создать исполняемый jar в Intellij IDEA / how to create jar in IDEA
Помогите, нужна мотивация!

Подписывайтесь на мой блог Паттерны Проектирования пишите в нем статьи!
  • ,

Долгий путь к программисту (год спустя)

Свою историю успеха я писал работая пятый месяц, сейчас после моего трудоустройства прошел год с небольшим и наверное на самом деле пора подвести небольшие итоги.

Пользуясь случаем хочу поблагодарить Зеппа за то, что всегда отвечает на вопросы по дальнейшему развитию, для меня мнение старших товарищей всегда важно и возможность обратиться с интересующим вопросом — это очень круто. Спасибо!

Основные эмоции и изменения от перехода из сферы не связанной с айти в программисты подробно описаны в первой истории, тут постараюсь сконцентрироваться на том что удалось добиться за год и поделиться своими мыслями по дальнейшему развитию.

Мне повезло попасть на самый старт нового проекта, на третий спринт. Я общался со многими программистами на тему как проходил их первый год и чаще всего это был багфиксинг первые пол года с постепенным внедрением в разработку нового функционала. Я же приступил непосредственно к разработке на третьей неделе после трудоустройства. И с тех пор принимал участие в разработке практически каждого модуля системы, оставшиеся видел на код ревью и фиксил в них баги.

В результате за год я получил опыт разработки системы от начала и до запуска.
Участвовал в планировании, видел какие неверные решения к чему привели и какими силами и ресурсами приходилось потом это исправлять.
Легко не было, javarush дает офигенный толчок, офигенный опыт в практике Java Core и основного стека технологий, чтобы вы не с пустыми руками приходили на собеседование.
Но дальше придется трудиться не меньше. В некоторых компаниях с новичком кучу времени проводит тимлид и буквально сам его учит, у нас было по другому. Я получал очень ценные советы, книги, ответы на вопросы и ревью моего кода, когда просил это, но я прекрасно понимал что у тимлида и без меня забот хватает и всеми силами старался его не беспокоить. Тут мне пригодился навык самостоятельного обучения, полученный на javarush, когда ты сам ищешь, разбираешься, гуглишь, дебажишь, думаешь, снова дебажишь и снова думаешь. В результате моя эффективность как программиста росла очень быстро.
Тут же стоит отметить что я практически каждый день проводил на работе гораздо больше времени, чем от меня требовали. Я был самым слабым по скиллам в команде и чтобы давать хороший результат я работал усерднее и больше. Я намеренно развернул мониторы так, чтобы их видел мой тимлид и у меня не было ни малейшего соблазна «залезть на минутку в вк» или «быстренько проверить почту»(это не было запрещено, тут скорее моральный аспект, чем административный). Я много трудился чтобы получить эту работу и не был намерен всё тупо слить из-за желания «поржать с котиков». Иногда я тайком приходил и работал в выходные))

Важный момент — меня никто к этому не принуждал. Я почти два года занимался программированием в свободное время, а тут я мог заниматься им ВЕСЬ ДЕНЬ! Вот это был кайф. Это не была работа в привычном понимании, как отработка повинности ради получения денежного вознаграждения. Это был чистый кайф от возможности заниматься любимым делом и еще и деньги за это получать. Развиваться как специалист, стараться, видеть результаты своих трудов. Очень круто.

При таком графике было очень важно не потерять равновесие, я уверен что общий успех человека состоит из трех пунктов:
1. Реализация в профессиональном плане, материальный достаток.
2. Физическое развитие и физические навыки, здоровье тела.
3. Социальное развитие, твой круг общения, признание в обществе.

Я параллельно начал работать и над второй составляющей, записался на боевые искусства и заметил интересную вещь. Занятия спортом увеличивали мою эффективность на работе. Я стал еще более дисциплинированным, внимательным, собранным, лучше осваивал новые технологии.

Так прошел год.

Несмотря на то, что у нас в компании собралась отличная команда, из-за некоторых стратегических просчетов руководства объявило, что дела у компании идут не очень. Уволилось несколько ключевых программистов и встал вопрос поиска новой работы. Тут проявилась одна важная особенность — работа в команде. Когда вы работаете не как кучка разрозненных программистов, а именно как команда, единый организм, где каждый помогает друг другу. По факту мне даже не пришлось ходить по собеседованиям. По рекомендации одного из наших старших программеров меня пригласили в другую компанию и так как мой товарищ возглавил одно из направлений я прошел даже без технического собеседования. Компания в которой я сейчас работаю называется Юлмарт (ulmart.ru). Это один из крупнейших интернет магазинов в России. Сначала меня немного смутило то, что это не профильная IT компания. По классификации Зеппа — это компания второго уровня. Но пообщавшись на собеседовании с руководителем департамента я решил попробовать. Уровень технологий и проектов казался интересным и перспективным.

Несмотря на всего лишь год опыта моя зарплата выросла настолько, что еще год назад я бы о ней даже и не подумал. Точнее думал и даже планировал, но это был план максимум и я на самом деле не верил что получится его осуществить.
Тут сыграли свою роль и моя настойчивость и усидчивость в развитии и отличные рекомендации от моего коллеги.
Объективно я понимаю что эта заплата мне «велика», но как писал Зепп в одной из статей «лучше получить место и через год до него дорасти, чем дорасти и год ждать повышения».
Так что будем оправдывать ожидания)

Тут стоит отметить насколько важно в начале работы попасть в хорошую команду к хорошему тимлиду. Ты сразу сходу учишься писать правильный, расширяемый и удобный в поддержке код. Получается это конечно не сразу, но ты по крайней мере пытаешься это делать, видишь код коллег, получаешь замечания на ревью от коллег. Твой уровень при таком подходе быстро растет.

Мысли на перспективу.

Сейчас я сильно подналег на английский язык, так как дальнейший рост без него уже просто невозможен (я сейчас хорошо читаю и пишу, но вряд ли смогу хорошо пройти устное собеседование).
Зепп тоже выделил английский язык в качестве одного из основных пунктов развития, когда я задавал ему такой вопрос.

Моя основная ветка развития из описанных Зеппом «Посмотреть весь мир, кроме Парижа и не умирать», а именно удаленная работа со свободным перемещением по миру.
Я обсудил это с моим текущим руководителем и как результат сейчас начал активно штудировать курсы по computer science на Coursera. Базы данных, алгоритмы, паттерны.
Имеет значение не большое количество сертификатов — это как раз по мнению руководителя скорее минус для соискателя если он хвастается сколько у него «корочек», а имеют значения получаемые знания. То насколько ты хорошо разбираешься в тех вещах с которыми ты сталкиваешься и с которыми тебе еще только предстоит столкнуться.

Спасибо javarush, как я уже писал, этот курс помог мне пройти самый сложный период становления меня как программиста и оглядываясь назад вряд ли я бы прошел этот путь читая книжки и занимаясь по более академическим курсам. Именно такая подача информации и огромное количество задач позволило мне набрать достаточный разгон, чтобы «расправить крылья». Дальше я могу уже лететь самостоятельно. Большое Вам спасибо!

Пожелание начинающим ученикам.

Ну и конечно успехов всем тем кто еще только начинает. Могу дать один как мне кажется важный совет — постарайтесь научиться получать удовольствие от процесса. Если вы изо дня в день будете заставлять себя заниматься на javarush, насиловать себя, принуждать, то скорее всего скоро бросите занятия. Во всем важен баланс. Становление программиста это не спринт, а марафон. Спокойно делайте задания, общайтесь, спрашивайте, вас будут бесить некоторые задания — это нормально, некоторые вы не будете понимать как делать — тоже нормально. Вы каждый день будете сталкиваться с этим на работе. Зато по окончанию у вас будет такой багаж практики что вы сможете легко влиться в работу, хорошо зарекомендовать себя на проекте и быстро вырасти как специалист. Помните — удовольствие от процесса. Лучшими программистами становятся те, кто умеют получать кайф от того что они делают, он процесса сотворения нового, создания. Успешного Вам пути!

p.s. Если будут вопросы — пишите, всегда рад пообщаться с учениками javarush)

Три полезных таблицы по вводу-выводу в Java

Друзья, всем привет.
Проходя восемнадцатый уровень, мне потребовалась систематизация входных и выходных потоков и декораторов к ним. К счастью, такая систематизация есть у Б.Эккеля в его философии, однако пользоваться ей не совсем удобно — помимо того, что она раскидана по разным страницам, так ещё нужно постоянно держать под рукой книгу открытую в нужном месте, или открытую интернет-версию книги, в которой кстати, в одной из таблиц не хватает строки, да и классы с фильтрами разбросаны не «эргономично».
В общем решил я для удобства всё это дело скомпоновать аккурат в три таблицы: ввод, вывод и таблица сравнения классов разных версий Java. Всё это дело я распечатал, и как ни странно, пользовался я этими таблицами достаточно часто. Очень хорошо помогает освежать в памяти классы ввода-вывода, и оперативно понимать о чём идёт речь в том или ином примере в литературе, благо эти три листочка всегда под рукой. С ней ты уже более осознанно подходишь к выбору классов. Рекомендую.

Таблица классов и декораторв к ним для ввода данных.
Справа — классы, слева — декораторы к ним.
Таблица классов и декораторв к ним для ввода данных.
Таблица классов и декораторв к ним для вывода данных.
Справа — классы, слева — декораторы к ним.
Таблица классов и декораторв к ним для вывода данных.
Таблица соответствий между классами и декораторами версий Java 1.0 и Java 1.1
Справа — классы, слева — декораторы к ним.
Таблица соответствий между классами и декораторами версий Java 1.0 и Java 1.1
Если кого не устраивает расположение, можете сами перекомпоновать как вам удобно. Эти таблицы в формате doc, odt, jpeg и tif лежат по этой ссылке.
Распечатывайте и держите под рукой. Всем успехов в освоении Java.

История успеха спустя 1.5 года от начала обучения.

Осторожно! Много Букв!



Для начала расскажу немного о себе.
Мне 25 лет. До того, как начать изучать Java учился на математическом факультете, на прикладной математике. Казалось бы, с программированием у меня должно быть если не отлично, то по крайней мере хорошо. Но это был не мой случай, т.к. все предметы, где мелькало программирование — я саботировал и сдавал как-то на удаче, сам ничего не писал. Так вот и получилось, что я от программирования был далек. Ясное дело, что с образованием математика в нашей стране много не заработаешь кроме как программистом. Поэтому и выбор пал именно на это. И так совпало, что решил учить Java. Это не было связано с каким-то анализом рынка или поиском по количеству рабочих мест, востребованности на рынке труда. Просто так совпало. И когда решил узнать как это делать — то наткнулся на JavaRush. Как-то не хотелось учиться только по книгам, но и на очные курсы я смотрел нехотя, т.к. денег стоят они много, а реально профита мало. Поэтому JavaRush для меня был лучшим решением. Пройдя первые 3 уровня, я понял что курс мне нравится и что можно покупать подписку. Тем более, что я попал на акцию и приобрел за пол цены. Было это в конце августа / начале сентября 2015 года.

План обучения.
Прочитав что нужно делать, я решил составить план того, как я должен учиться, чтоб добиться цели и закончить курсы, потому как времени на медленное изучение у меня уже не было. Задача стояла получить быстро знания, причем так чтоб не отвадить желание и чтоб мозгам было время отдохнуть. Потому что такая нагрузка, которую я хотел могла помешать мне.
Для этого решил:
  • Что нужно учиться пять дней в неделю(пн-пт).
  • В выходные дни я буду заниматься чем угодно, только не этим.
  • Каждое занятие будет идти в общей сложности 4 часа, причем между каждым часом будет перерыв в 15 минут, для того чтоб пройтись, отдохнуть и сделать чай.
Итого 20 часов в неделю. Неплохо, да? К тому же иногда приходилось заходить в университет, т.к. я еще учился в магистратуре.
К декабре я уже был на 20 уровне и думал, что знаю очень и очень многою Но были у меня и кризисы, когда ничего не получалось и казалось, что дальше не смогу (см. моя статья помогите, нужна мотивация).


Переход на новый уровень.
Через три месяца после начала обучения, я побеседовал со знакомым на тему того, что я еще должен знать, чтоб устроиться на работу…
И тут понеслось: какие-то не знакомые слова, базы данных (о ужас!) и многое другое дали мне понять, что нужно ускоряться и делать еще больше. Ясно, что с грамматикой джавы мне не получить работу, я начал ускоряться в разных направления:
  • Купил себе книгу Head First «Изучаем Java». Ее рекомендуют на 4-м уровне в курсе. Но я как-то не внимательно читал и пропустил этот факт. Там рассказываются теже вещи, но под другим углом, что помогает понять их лучше и основательне. Советую.
  • Начал искать все тематические тусовки в своем городе и ходить на них, пусть даже я многого не понимал, зато со вмеренем понял, что это было не зря и они мне очень помогли. например так
  • Есть еще один ресурс, который нужно прошерстить от начала и до конца — это dou — сайт для программистов. Там можно посмотреть какие бывают ивенты, какие нынче зп в украиском ИТ, можно прочитать много очень полезных статей, особенно рекомендую Материалы по теме «Пособие для будущего Java разработчика» и Java Enterprise: что и как учить. Эти статьи будут помошником для вас и не будут давать расслабляться.
  • Нашел короткие и информативные видеоуроки на youtube по MySQL, советую.
  • Видеоуроки Головача тоже не остались без внимания. Их много, много воды, но разъясняет многие вещи достаточно хорошо.
  • Так же нужно понимать что такое HTML и CSS. Без этого никак, тут мне помогла в этом HtmlAcademy. Там можно проходить задания бесплатно.
  • Зарегистрировался в соц.сети linkedIn, где начал выставлять свои навыки и что я ищу работу(а вдруг повезет и меня найдут). Добавлял всех подряд в друзья расширяя круг своих друзей. Чтоб вы понимали насколько, то сейчас у меня больше 10 000 друзей в линкедине. Для начала это нужно. И это помогло, команда андроид фрилансеров искала новичка себе и мне написали. Я понимаю, что случай из ряда вон выходящий, но это случилось.

Первые неудачи
Конечно параллельно учебе, я начал искать интернатуру в компаниях так, чтоб со временем можно было работать. Меня пригласили на собеседование в интернатуру. Поговорив с HR-ром, ко мне позвали преподавателя по английскому, с которым я «пообщался». К этому моменту я вовсе был не готов и вышло, что я больше слушал, чем говорил. И на тему расскажи о себе, я что-то промямлил, но ничего особенного. А вот при общении с техлидом я отвечал на некоторые вопросы, на многие ответа не знал и на ответ, что обучаюсь в JavaRush, он сказал что передо мной был еще один студент оттуда. Я был на 27 уровне, а он уже на 34. Поговорив он сказал, что мне перешлют тестовое задание, по которому решат годен ли я. Я его как-то сделал, причем не весь функционал. Через некоторое время мне написали, что я им не подхожу… Обидно, но я решил извлечь опыт из этого и пошел дальше.

Первая работа.
Как я уже говорил, составив страницу в linkedin'е через 1.5-2 месяца мне написал некий андроид разработчик с предложением работать с ними. Ясное дело, что речь шла об минимальной зп. Мы пообщались при встрече и мне предложили работу. Понятно, что она была слабо оплачиваемая, но другого у меня не было и я радовался тому, что было. Начиная с конца января я начал работать на квартире одного из них на анроиде. Всё было новое, все другое. Но кое как и как-то я работал, что-то делал. Было страшно и всё не понятно, это были не задачки в JavaRush. Всё нужно было делать, читать, узнавать что и как. У меня был тестовый проект, который я делал и который мог стать чем-то большим со временем. И так прошло до мая. Потом как-то начал разваливаться наш коллектив, все это поняли и начали искать работу.

Поиск новой работы.
Не зная как это делать, я решил что буду рассылать всем компаниям, которые есть в моем городе. А как узнать какие есть компании? В этом мне помогл тот факт, что я прошерстил dou вдоль и поперек. Там есть раздел компании и можно выбрать город, которому идет поиск. В описании есть почта (почти всегда есть), на которую можно писать. Чтоб всё выглядело хорошо, я написал свое резюме на английском языке, только так и надо. Конечно было много воды, воды, воды, т.к. писать особо нечего было, писал всё подряд. Также к каждому письму писал сопроводительное письмо(рекрутеры любят это), где я указал кем именно я хочу быть, а то часто выходит, что присылают резюме и не ясно на какую позицию претендуют. Сопроводительное письмо было также на английском. Совсем забыл, английский нужен ОЧЕНЬ сильно. Реально, если ты не можешь прочитать ответ на стековерфлоу, то ты не жилец и делать тебе в программировании нечего. Составил себе на речь на собеседование английского на тему: Tell me about yourself. Очень полезная вещь, я вам скажу.

Спустя некотое время я получил 4 приглашения на собеседование. Практика рассылки всем компаниям была оправдана, причем тем, у кого не было таких позиций — они обычно не отвечали вовсе. На собеседованиях было сложно, было стыдно, было не уютно, но я прошел их, в некоторых просто говорили, в других нужно было сделать пару заданий, например нужно было написать интерпритатор на джаве на язык BrainFuck. Задача оказалась интересной и я рад, что ее выполнил, хоть меня в ту компанию и не взяли. Искал я работу либо на Java либо на Android. Хотя хотелось больше на джаву, мобильная разработка мне не особо интересна. Зарплатные ожидания были минимальны, нужно было найти работу, всё остальное было уже не важно. Спрашивали меня на понимание Баз данных, о там как создать таблицы в для определенных ситуаций. Это всё касается SQL баз данных, про NoSQL никто не спрашвивал.

Первый оффер.
В одном месте мне написали и отказали, в другом тоже. Остались две компании, в одной на позицию андоид разработчика, в другой — на джава. Позвонили с компании по поводу андроид и сказали, что я им подхожу и мне делают оффер. Это была победа. Я был очень рад. Но мне так жне позвонили в компании за джава позицию и я метался и не знал что делать, поэтому попросил подождать день с моим ответом, чтоб я смог позвонить узнать за позицию джава разработчика. Позвонив в компанию за джава позицию, я сказал, что мне сделали предложение, но я хочу узнать от вас еще результат. Меня пригласили в офис к ним поговорить и сказали, что результат разговора мне понравится. И они оказались правы, переговорив с ними, мне сделали оффер во второй компании, собственно которую я и выбрал.

Это моя первая работа в компании, в другой статье я напишу что было дальше, но пока что скажу, что дальше было только веселее. По сей день я работаю в этой компании, доволен всем и уходить не собираюсь.

P.S. нужно стремиться, стремиться, стремиться и никогда не сдаваться!

P.S.S я весь курс не прошел до конца, остановился на 30-м уровне. А когда получил работу, то был на 27. И реально скажу, что начиная с 20-го уровня нужно искать работу и разиваться помимо Java. Освоить хотя бы издалека фреймворк для автоматизации проектов (Ant, Maven, Gradle). Вещь не сложная и очень нужная.

Всем, кому понравилась статья — ставьте "+", чтоб я знал :) Для меня это важно :)


См. также мои другие статьи:
Тестовое задание: «Написать Интерпретатор на язык BrainFuck»
Тестовое задание «Image Comparison»
Java — быстрее, сильнее и выше! Зарплаты украинских программистов.
История успеха спустя 1.5 года от начала обучения
Технические вопросы на собеседовании.
Как найти работу? Рассылка резюме
Профессиональное выгорание. Как устоять?
Английский для IT и для собеседования
Паттерн Command своими словами.
Паттерн Singleton своими словами.
Как создать исполняемый jar в Intellij IDEA / how to create jar in IDEA
Помогите, нужна мотивация!

Подписывайтесь на мой блог Паттерны Проектирования пишите в нем статьи!

Два года спустя... (продолжение "истории успеха")

Всем привет!)
По просьбе администрации сайта пишу краткое продолжение к моей «истории успеха» опубликованной уже почти два года назад «Как я стал программистом, или «Через тернии к звёздам» =)».
Основных причин на то две:
  • Я по прежнему считаю что именно этот ресурс сыграл ключевую роль в моём «войти в айти» )
  • Я по прежнему считаю что мотивация — это так же один из ключевых факторов в этом деле, а один из лучших мотиваторов — это такие вот истории успеха реальных людей, которые были в такой же точно ситуации как и ты, джаварашевец. Ибо по себе помню и знаю, что временами просто руки опускаются… и у многих уже больше не поднимаются, это действительно непростой путь, но оно того стоит)

Итак, вопрос — ответ:
Как вообще изменилась Ваша жизнь после того, как Вы устроились на новую работу и что Вы чувствовали в тот момент?
Нуу, изменилась конечно)… В первую очередь конечно поменялся извечный баланс время — деньги)
денег стало ощутимо больше, времени, как следствие, ощутимо меньше)… На «хлеб насущный» вообщем могу сказать что наконец — то таки стало хватать, но что то откладывать всё равно чего — то не получается) Хотя уверен, что если чуть чуть постараться, то получится и откладывать 200 — 500$ в мес (это при том что я один работаю в семье из 4 человек, жена имеет возможность спокойно заниматься детьми). Стабильность, уверенность в завтрашнем дне, или, по крайней мере хоть какая — то их иллюзия появилась)…
Каких высот в карьере Вы уже сумели достичь и какие еще горы планируете свернуть?
В настоящее время работаю уже во — второй компании, «Electric Cloud» называется, пять дней в неделю, 18 рабочих дней в году отпуск(плюс все гос. праздники естественно) График вообщем — то свободный, хочешь из дому работай, но я предпочитаю офис, там обстановка более рабочая… Чаще всего получается приблизительно с 12 до 19 — 20 работать. Компания американская, продуктовая, продукт непростой, огромная DevOps тулза для Continious Integration / Continious Delivery, что то типа дженкинса, только гораздо больше, и чисто коммерческий продукт. К тому же уже достаточно древний, легаси кода полно, и нужно его поддерживать, фиксить баги, иногда писать новые фичи, по этому зоопарк технологий такой, что мама не горюй, и со всем в большей или меньшей степени приходится иметь дело, Java8, GWT, JS, PHP, Perl, HTML, CSS, Spring, Hibernate, JUnit, Mockito, Maven, Perforce и это только основные… Первые несколько месяцев прозревал просто, потом уже как — то пообвыкся =)
Ежедневно скрам апдейты (методология разработки такая типа), разок — другой в неделю митинги по вечерам с нашим американским тимлидом (он индус =))
Время от времени посматриваю на хорошие вакансии, в интересующих меня конторах. Очень редко, но всё же бывает, хожу на собеседования. Главное что я понял, что найти место с хорошей зарплатой пожалуй даже проще чем место с хорошим проектом. А что бы и то и то было, так это уже ппц как постараться нужно, а хочу что бы моё следующее место было именно таким) А ещё я всё больше становлюсь уверен, что попал в эту профессию не по случайному стечению обстоятельств, а заслужил это своим трудом и настойчивостью, хотя некоторая степень удачливости, особенно поначалу, наверняка должна иметь место, и ещё я уже очень наврядли стану менять её…
Общего опыта «коммерческой разработки» в феврале будет два года, если оценивать мой уровень как это общепринято, то я бы наверное оценил его как Strong Junior — Regular Middle, но такая оценка тоже очень субъективна, но по крайней мере Senior я себя точно пока ещё не считаю))
Возможно Вы уже переехал в Калифорнию и работаете Facebook, Apple или Google? =)
Нет, не переехал)) Да и релокация меня никогда не интересовала, будь то Харьков или Львов, или Польша или Америка) Я Одессу люблю, и переезжать отсюда никуда не собираюсь, и считаю что и здесь можно неплохо зарабатывать разработчиком…

Вообщем ещё раз спасибо Джаварашу, и всем кто верит в свои силы от души желаю достичь своей цели и надеюсь что мой пример этому поспособствует. Да, повторюсь, это на самом деле не простой путь, что бы вам кто ни говорил, и достигают своей цели наверняка очень немногие, из тех кто встал на него, НО, способны это сделать гораздо более многие, просто большинству чего — то в середине пути не хватает… мотивации, желания, настойчивости, веры в себя и в свои силы, многие придумывают сами для себя какие — то более или менее правдоподобные оправдания и цели уже не достигают…
Так что верьте в себя, не сдавайтесь на пол пути (небольшие передышки конечно не в счёт =)) и всё у вас получится!
Как говорили древние греки «Горшки тоже не боги обжигают» =) программистами не рождаются =)
И на последок дам пожалуй ещё один совет, для тех кто действительно хочет трудоустроится самая прямая дорога — это СОБЕСЕДОВАНИЯ, как сказал однажды кто — то на одной из IT эвентов на котором я оказался «я ни разу не встречал человека, который сходил на 20 собеседований и его никуда не взяли») а ТЫ на сколько собеседований уже сходил, А?) Я знаю что ты можешь ответить мне:
  1. Я ещё не готов, нужно ещё подучиться(...
  2. Та меня что то никто не зовёт(...
но это всё тоже гнилые отмазки! И я на это отвечу
  1. Я устроился на свою первую работу (на з/п 1100$) после 21 уровня! Правда у меня на тот момент уже был небольшой опыт по GWT, Hibernate и Spring, из «реального проекта» на Джавараш, сейчас это называется вроде как «Стажировка». Но об этом на собес почти не спрашивали… почти все вопросы, насколько я помню были по Java core и ещё немного SQL
  2. Плохо стараетесь) А так же зарегестрируйся на Линкедине, на Работа.юа, на Джине, та везде где только можно, отслеживай свежие вакансии, откликайся на них! «Стучитесь и вам откроют», завали все IT конторы в своём городе письмами со своим резюме, и долго ждать приглашения на собеседование не придётся. Вообщем тут тоже вариантов масса)
Так что кратчайший план действий такой:
  • закончил 20 — 30 левелов на джавараше, плюс подучил ещё хоть немного SQL, JDBC, если ещё и основы Спринга и Хибера есть, то ты вообще в шоколаде)
  • быстренько накатал себе резюме по примерам, зарегался на профильных сайтах, выложил его там, затем засыпал все IT конторы спамом со своим резюме, поверь, без обратной связи ты не останешься, многие просто отпишутся что будут иметь тебя ввиду, а некоторые обязательно пригласят на собеседование
  • руки в ноги, и бегом на трясущихся коленках по собеседованиям
  • и помни, что каждое собеседование, пусть даже и провалившееся значительно приближает тебя к цели! Ибо на каждом следующем ты уже будешь чувствовать себя гораздо спокойней, уверенней и подготовленней чем на предыдущем. А вопросов процентов 80% почти везде задают одни и те же)
Всё, всем пока, спасибо за внимание и удачи!)
  • ,

Как я нашел работу, благодаря JavaRush!

Хэй!
Хочу начать не с познавательной, а скорее, с мотивирующей записи. Самое основное о том, как я пришел к тому, что сейчас у меня есть. Под этим я подразумеваю уровень развития, как программиста. Он не высок, могло быть и лучше, это так, но за последние пол года произошло довольно много различных событий. Еще пол года назад я многократно перечитывал статью о способах сортировки массива и думал: «Как же это чертовски непонятно и сложно!». Сейчас это воспоминание вызывает улыбку и я надеюсь, что еще через пол года я буду так же улыбаться, вспоминая себя нынешнего.
Итак, мой путь программиста начался на javarush.ru
Конечно у него есть некоторые косяки, которые порой жутко бесят. Думаю, вы тоже сдавали задачу не с первого раза, а с 15го, только потому, что не написали какую-то мелочь, которую так хотел компилятор?) Но это мелочи, по сравнению с отличной структуризацией данных, которую дает курс.
Придя туда, я знал только про существование массивов и переменных. Не более. Можно сказать был абсолютным нулем. Та атмосфера, которую получилось сделать у создателей этого ресурса, просто фантастическая! По началу именно она помогала мне не бросить начатое дело. У меня действительно складывалось впечатление, что я делаю что-то по-настоящему серьезное, а не просто вывожу строку в консоль. Я стал тратить всё свободное от пар в вузе время на чтение лекций и решение задач. Тогдашнему упорству и усидчивости сейчас я могу только позавидовать. Если не получалось решить задачу, зарывался в теорию на несколько часов, перечитывая одни и те же строки снова и снова, пока не приходило озарение. Именно так это и бывает. Как барьер между вашим мозгом и нужной информацией. Вы повторяете ее раз за разом, до тех пор, пока барьер не рухнет и осознание прочитанного не прольется, как луч света. По крайней мере я ощущаю что-то подобное.
Помимо лекций и задач, я много времени смотрел ролики на ютубе, серьезно, мне они очень помогали на первых парах. Особенно выделю два канала, они просто шикарные: www.youtube.com/channel/UCuIctN7x71qam9K_ZxS1W2A
и www.youtube.com/user/devcolibri Я вам безмерно благодарен за ваши труды.
Ближе к 10му уровню я начал пробовать помогать другим JavaRash'овцам на форуме. Это зачастую скучно и сложновато, но неимоверно полезно. А еще очень приятно, когда ваш ответ помогает другому, а вам капает рейтинг. Но самое главное вы читаете чужой код. Повторяю банальное наставление, но оно очень важное: читайте чужой, и самое главное, хороший код. Новички этим пренебрегают, желая писать самим, что понятно, это всегда приятнее, но на работе, 90% времени тратится на прочтение чужих рукописей. И чем лучше вы будете это делать, тем легче вам будет в дальнейшем.
Часто возникают вопросы по поводу чтения книг. Я читал философию Java, Брюса Эккеля, и знаете, на первых парах это давалось тяжело. Книга бесспорно хорошая, но много ли толку, когда вы вталкиваете в себя страничку за страничкой? Я думаю нет. Пока у вас не выстроиться общая картина того, как устроен язык, не стремитесь зарываться в книги, в которых описываются детали и тонкости. Это будет только отталкивать вас от программирования и пугать. Например, мне за полгода так и не понадобились побитовые операции, хотя я несколько раз перечитывал главу о них, в надежде разобраться что к чему.
Следующие три месяца пролетели в чтении различных лекций, постов на форумах, просмотре видеокурсов, решении задач. Очень насыщенное и продуктивное время. Практически каждый день что-то новенькое! Но в целом я еще не мог абсолютно ничего. Это первое и самое жестокое разочарование в программировании. Вы приходите с большими надеждами, что позанимаетесь как следует пару месяцев и начнете делать крутые игры и сайты, но хорошенько обламываетесь. Спустя какое-то время появляется мысль: «Так, чувак, ты занимаешься уже n-месяцев, может быть ты сможешь сделать что-нибудь годное?» И оказывается, что нет. Появляется осознание, что в читал про эту штуку, делал вон ту штуку, знаешь об этой штуке тоже, но а толку то?
В этот переломный момент нужно побороть свое разочарование, сжать кулаки и просто продолжить заниматься, как раньше. Именно в подобных ситуациях, очень много людей опускают руки, и очень зря. В масштабах программирования, вы прошли лишь пару шагов, но зато каких!
За эти три месяца я подобрался к 20му уровню и начал подумывать о том, что всё-таки я уже на что-то способен, к тому же приближалось лето и в голове возникла бешеная идея: «найти стажировку». А вдруг? Я просто зашел на хэдхантер или ему подобный сайт, создал объявление, мол смотрите, я очень классный джава-стажер, и стал дальше спокойно, как обычно, ходить на пары залипать в задачки на джавараше. За все время пару раз написали с вопросами оценить себя, и могу посоветовать даже не отвечать на такие сообщения. Это все шлак. Что значит оценить себя? Напишу, что выше высокого, суперский java-lead, звали в гугл, не пошел, что с того? Такие вопросы просто бред и нормальные работодатели не занимаются подобной фигней, аля, писать в личку на авито или том же хэдхантере. Но к моему огромному удивлению, через какое-то время мне позвонили, спросили на каком языке я занимаюсь и просто позвали пройти тестирование в конкретный срок. Я опешил, но конечно же согласился. Это было правда неожиданно, и хоть никто бы меня там палкой не избивал, но я чувствовал сильное волнение, как перед важнейшим экзаменом. А по сути, это он и был.
У меня было два дня и я стал кропотливо перечитывать лекции, серьезно, вот прям с 3-5 и до той, на которой находился в тот момент. Время пролетело крайне быстро и пришел день Хэ. Я приехал в офис, меня он поразил. Светлый, яркий, вокруг только молодые и веселые люди. Ни одного старика. «Вот оно, IT! Как же круто» — думал я в тот момент. Меня встретили, отвели в переговорку. Там уже сидели какие-то ребята, внешне — просоленные кодеры. С усиками, хвостами, прям типичные программисты. Они болтали между собой о том, какие они крутые, а я молчал, потому что и сказать было нечего. Не скажу же я, что вчера перешел на 19й уровень, правда?
В итоге, всем раздали задания, по 5 задач и как же я был рад, когда, ожидая чего-то неизвестного и жуткого, я увидел вполне человеческие, клёвые задачки. Вроде, одна на рекурсию, две на итерации цикла, еще одна на поиск ошибки в небольшом, простом куске кода и еще какая-то… забыл. Тут натаскивание джавараша сыграло колосальную роль. Он просто с лихвой окупил потраченные на подписку деньги. Я сдал задачи и пошел домой, успокаивая себя мыслями, что получил полезный опыт и кругом одни плюсы, но в глубине души понимал, что я чертовски хочу пройти дальше. И через неделю мне перезвонили! Сообщили что я решил 4 задачи из 5 и позвали на стажировку. Счастью в тот момент не было предела. Перспектива того, что летом я буду два месяца находиться среди профессионалов, перенимать у них опыт и делать что-то реально крутое, просто сводила меня с ума. И по факту, все благодаря джаварашу и тем усилиям, которые были потрачены никак не зря.
В итоге, все оказалось немного не так, как я ожидал в своих розовых мечтах, но опыт я получил колоссальный. Объем информации, ее сложность и уровень возросли там на порядок. Мысли постоянно были разные: от «как же я теперь крут, я узнал, как использовать ajax!», до «твою мать, что это за неведомая сложная х***а?!» Но главное продолжать изучать это, не бросать, даже если вы абсолютно ничего не понимаете. Помните про барьер? Рушьте его всеми силами! На стажировке я почти перестал смотреть ролики на ютубе, они перестали быть информативными. Стал больше читать хабр и даже понимать, о чем там пишут! Вот так.
С java я пересел на C#. Не хочу их сравнивать, скажу только, что перейти было крайне легко, они очень похожи. А в конце мне предложили работу! Я был на седьмом небе и не мог поверить, что это действительно происходит. То есть я вот пару месяцев назад еле научился создавать методы и использовать их, понял, чем класс отличается от его объекта, а сейчас могу работать? Честно, я до сих пор твердо уверен, что мне жутко повезло, но это заставляет меня еще сильнее работать над собой, чтобы доказать, что выбрали меня, а не кого-то еще, не просто так. Сейчас я так и остался на 25 уровне курса, но очень надеюсь, что когда-нибудь закончу его.
Вкратце, написал всё, что хотел. Спасибо, что прочитали мой поток сознания. Огромное спасибо сообществу JavaRash и его создателям, вы действительно сделали крутейший проект! А если есть какие-то вопросы, пишите в личку вк, ссылка есть в профиле. Всем приятного и продуктивного обучения!
©Mispon