Профессия программист java. Отборные вакансии для Java программистов. Важные личные качества

Зарплата : от 2 000 до 4 000 USD до вычета НДФЛ

Город : Самара

Опыт : 3–6 лет

Занятость

Made Simple Ventures ищет Java программиста в команду по разработке платформы смс-маркетинга. Платформа коммерчески успешна и активно развивается, и что замечательно – это наш собственный продукт: все решения принимаются оперативно внутри компании.

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

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

Требования:

  • Высшее техническое образование и опыт коммерческой разработки на Java от трех лет;
  • Уверенное владение Java SE, знание Spring Framework;
  • Коммерческий опыт работы с noSQL, предпочтительно MongoDB;
  • Умение работать с Git, Maven, Unix консолью;
  • Плюсом будет опыт с NodeJS, Meteor и front-end разработки;
  • Английский требуется на уровне чтения технической документации, предпочтительно свободное владение.

Условия:

  • Удаленная работа на полный рабочий день;
  • График работы оговаривается индивидуально. Часть команды работает в часовом поясе Нью Йорка (-5 EST), поэтому необходима доступность в вечерние часы по московскому времени;
  • Размер оплаты по результатам собеседования.

Senior Java разработчик

Зарплата

Город : Москва

Опыт : более 6 лет

Занятость : Полная занятость, удаленная работа

Обязанности:

  • Разработка приложения, участие во всём цикле разработки. Приложение имеет доступ к клиентским сервисам, базам данных (JDBC);
  • Основной пул задач на Java;
  • Оптимизация и масштабирование архитектуры по RPS. Бывают задачи на сложную логику;
  • Могут быть отдельные задачи на Node.js и других, используемых в проекте, языках.

Требования:

  • Опыт разработки на java от 5 лет;
  • Отличные базовые знания в области Computer Science (алгоритмы, структуры данных, протоколы, модель OSI и вот это вот все);
  • Опыт разработки высоконагруженных веб-приложений (1k+ rps), умение работать с многопоточностью;
  • Отличное знание Java /JEE, фреймворков, библиотек, протоколов, веб-сокетов;
  • Здорово, если вы разбираетесь в таких вещах как: Class loading, Memory Management, Transaction management, Java Concurrent;
  • Понимание принципов протоколов для передачи сообщений между компонентами системы (AMQP, JMS, etc);
  • Опыт работы с асинхронными фреймворками;
  • Опыт работы с базами (100-200Gb+), понимание механизмов репликации, блокировок, сложных запросов, SQL и ORM (JPA2, Hibernate), JDBC;
  • Уверенный рабочий уровень английского языка (устного и письменного);
  • Опыт удалённой работы, организации своего рабочего времени;
  • Открытость и интерес к новым технологиям (в проекте может быть возможность решить задачи с помощью Scala, Closure, etc..);

Условия:

  • Удалённая fulltime работа, московский тайминг — коммуникация голосом около 19, несколько раз в неделю;
  • Командировки в США (Купертино), примерно на 2 недели каждые 3 месяца — важно наличие визы или отсутствие препятствий для оформления;
  • Уровень дохода 220-300 тыс.руб. (готовы обсуждать выше);
  • Оформление — через ИП (налоги оплачиваются самостоятельно), оплата отпуска — 20 рабочих дней;
  • Компенсация за покупку рабочего компьютера;
  • При желании возможна релокация в Сингапур (компания берёт на себя все организационные вопросы).

Ведущий Java-разработчик

Зарплата : от 250 000 до 350 000 руб. до вычета НДФЛ

Город : Москва

Опыт : 1–3 года

Занятость

Обязанности:

  • Разработка и сопровождение высоконагруженных web и интеграционных решений;
  • Анализ кода и оптимизация алгоритмов;
  • Участие во внедрении современных технологий и методов ведения разработки;
  • Постановка задач разработчикам и проведение code-review.

Требования:

  • Практический опыт разработки серверной логики на Java от 3 лет;
  • Знание Spring;
  • Знание JPA (Hibernate);
  • Опыт работы с любой системой контроля версий;
  • Протоколы и форматы: HTTP/HTTPS, JSON, XML;
  • Понимание принципов работы реляционных баз данных, знание SQL;
  • Опыт разработки многопоточных приложений;
  • Навыки отладки и профилирования кода;
  • Английский: чтение технической литературы;
  • Ответственность, дисциплинированность, умение согласованно работать в команде;
  • Желателен опыт применения или готовность к освоению: Технологий ESB, принципов разработки высоконагруженных отказоустойчивых систем, паттернов разработки ПО.

Условия:

  • Полностью официальные выплаты (зарплата + бонусы);
  • Дополнительное вознаграждение за результат (KPI);
  • ДМС (после испытательного срока);
  • Обучение, повышение квалификации, сертификация;
  • Команда единомышленников, увлеченных своим делом;
  • Уютный, эргономичный и креативный офис;
  • Корпоративная спортивная лига, поддерживающая здоровый образ жизни.

Senior Java —разработчик

Зарплата : от 200 000 до 300 000 руб. на руки

Город : Санкт-Петербург

Опыт : более 6 лет

Занятость : Полная занятость, полный день

Обязанности:

  • Участие в развитии архитектуры проекта;
  • Разработка модулей системы на языке Java;
  • Разработка unit- и интеграционных тестов;
  • Написание и поддержка в актуальном состоянии документации на разработанные модули;
  • Участие в оценке и распределении задач в команде;
  • Участие в выборе технических решений;
  • Участие в Code review.

Требования :

  • Минимум 5 лет опыта работы с Java -технологиями;
  • Java core;
  • Cassandra, elasticsearch /lucene, postgresql, любой распределенный cache;
  • Spring framework;
  • JSon, REST;
  • Владение на профессиональном уровне любыми другими языками будет плюсом;
  • Знание основных сетевых технологий и стандартов;
  • Знание паттернов разработки;
  • Знание какого-либо SQL сервера;

Условия:

  • З/п от 200 до 300 000 руб. по результатам собеседования
  • Оформление по ТК РФ
  • Офис на ПС, ул. Чапаева (ст.м. «Горьковская»)

Java разработчик на аналитическую платформу

Зарплата : от 220 000 до 250 000 руб. на руки

Город : Москва

Опыт : 3–6 лет

Занятость : Полная занятость, полный день

Требования:

  • высшее образование;
  • опыт работы от 3-х лет;
  • знание Java core и представление, о чем 17-ая глава JLS;
  • знакомство с классическими алгоритмами и структурами данных;
  • осознавание, что только он ответственен за поставленную задачу и готов её сопровождать от требований заказчика до рабочего прототипа;
  • понимание того, как оптимизировать SQL запросы.

О проекте:

  • аналитическая платформа помогает собрать и поддерживать эталонную клиентскую базу для маркетинга, продаж, аналитики и отчетности.

Задачи платформы:

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

Как работает компания:

  • работает по git-flow, через pull-requests на Bitbucket;
  • каждый pull-request проходит код-ревью и сборку c тестирование на TeamCity;
  • доступ к production отсутствует, что накладывает на нас обязанность максимально специфицировать новый код тестами;
  • по результатам итерации проводятся ретроспективы, выявляющие узкие места.

Условия:

  • место работы: г. Москва, комфортный офис в районе метро Кутузовская и МЦК;
  • график работы: пятидневка;
  • работа в команде 10 человек – аналитиков, разработчиков , внедренцев;
  • заработная плата с пересмотром раз в год;
  • любые курсы и конференции по специальности;
  • оплата труда: 220-250,0 тыс.руб.

Senior Java Developer (DataGrip)

Зарплата : от 200 000 руб. до вычета НДФЛ

Город : Санкт-Петербург

Опыт : 3–6 лет

Занятость : Полная занятость, полный день

DataGrip - среда разработки для SQL и баз данных.

Требования:

  • Знание продуктов JetBrains и желание их улучшить;
  • Опыт более 3 лет программирования на Java
  • Любовь к программированию;
  • Умение аргументированно отстаивать свою позицию;
  • Написание понятного код и его поддержка;
  • Опыт работы с базами данных и языками запросов;
  • Опыт участия в проектах с открытым исходным кодом;
  • Знание парадигм программирования.

Чем работа в DataGrip отличается от работы над другими IDE в JetBrains:

  • У DataGrip более пятидесяти конкурентов: все они либо слишком узкоспециальные, либо умеют только базовые вещи, либо стоят очень дорого. SQL существует уже много лет, а среды разработки высшего класса для баз данных так и не создано: в мире на такой инструмент существует сильный запрос. Делать DataGrip - это предлагать SQL-разработчикам совершенно новый опыт написания запросов и работы с данными;
  • В DataGrip нет задачи поддерживать ежегодно выпускаемые фреймворки, и мы добавляем в IDE, в основном, архитектурные новшества. Например, нужно поддержать NoSQL базы данных, расширить возможности диаграмм, сделать дебаггер хранимых процедур, генератор данных или то, до чего мы сами ещё не додумались;
  • Грамматика SQL сложнее, чем у других языков, которые поддерживают DataGrip. Работа с парсером для SQL ставит перед разработчиком необычные задачи;
  • DataGrip - одна из самых маленьких команд в JetBrains и сохраняем бодрый дух стартапа. Много общения, мало формальностей. Частые поездки на конференции, поэтому каждый разработчик , если ему это интересно, может два-три раза в год ездить в США и Европу и рассказывать о DataGrip коллегам;
  • То, что делает DataGrip, попадает почти во все другие IDE в JetBrains: IntelliJ IDEA, PhpStorm, PyCharm, GoLand, RubyMine и Rider.

Как устроено внутри:

  • Исходный код - на Java , Groovy и Kotlin;
  • Для организации командной работы используются: Upsource для ревью кода, TeamCity для автоматического запуска тестов и сборки продуктов, YouTrack для учёта багов и фич;
  • С пользователями общение напрямую.

Что ещё:

  • Страховка для вас, жены/мужа и детей;
  • Свежие и полезные завтраки и обеды в офисе;
  • Уютный и демократичный офис в самом центре;
  • Бесплатные уроки английского и немецкого.

Java Developer

Зарплата : до 180 000 руб. на руки

Город : Москва

Опыт : 3–6 лет

Занятость : Полная занятость, полный день

Обязанности:

  • Анализ требований, предложение способов реализации;
  • Проработка архитектуры решения и исследование узких мест в текущей реализации;
  • Разработка нового функционала;
  • Поддержка существующего функционала;
  • Анализ и исправление ошибок;
  • Написание юнит, интеграционных тестов.

Требования:

  • Опыт работы c Java не менее 3 лет;
  • Высшее техническое образование;
  • Уверенное знание Java (предпочтительно Java 8) — Core/IO/Collections/Concurrency/JMM/GC;
  • Отличные знания: Spring/Spring Boot, Hibernate;
  • Опыт работы с Camel, Hazelcast, Guava, PostgreSQL;
  • Желательно представление о Ansible, Jenkins, Gradle.

Условия:

  • Работа в активно развивающейся международной компании, в коллективе молодых, целеустремленных и талантливых людей;
  • Знание современных трендов в проектировании архитектуры высоконагруженных распределенных сервисов;
  • Постоянное обучение;
  • Стабильная высокая заработная плата;
  • Комфортабельный и уютный офис на метро Павелецкая;
  • Оформление трудовых отношений в соответствии с ТК РФ;
  • ДМС и фитнес.

Java Developer (Junior/Middlle)

Зарплата : от 60 000 до 150 000 руб. до вычета НДФЛ

Город : Москва

Опыт : 1–3 года

Занятость : Полная занятость, полный день

В шведскую ИТ — компанию, создающей решения для крупных финансовых структур, требуется «Java Developer ».

Обязанности:

  • Разработка и поддержка больших бизнес приложений;
  • Взаимодействие с группами аналитики и тестирования;
  • Участие в разработке и проектировании архитектурных решений.

Требования:

  • Высшее образование (информатика/ математика будет преимуществом). Рассматриваем в том числе выпускников технических ВУЗов (в т.ч. студентов последних курсов);
  • Опыт реализации проектов на Java (возможно собственных или в рамках обучения, если нет профессионального опыта).

Будет плюсом:

  • Знание : Spring; JavaEE (EJB 3, JPA, JSF, JMS, Webservices, REST); HTML, CSS, JavaScript; SQL; XSL; Git.
  • Понимание : JBOSS/WebSphere/WebLogic; Camel, OSGi; Hibernate.

Условия:

  • Работа в российском филиале шведской компании, оформление по ТК РФ;
  • Белая заработная плата (в зависимости от опыта кандидата);
  • Оплата обедов в офисе (денежная компенсация около 10 т.р. в месяц);
  • Офис м. Динамо (15 мин пешком или 5 мин бесплатным корпоративным транспортом);
  • Есть офис компании в г. Зеленоград (по желанию кандидата возможна работа в этом офисе);
  • График работы в офисе с 10:00 до 19:00.

Junior Java разработчик

Зарплата : от 50 000 до 70 000 руб. на руки

Город : Москва

Опыт : не требуется

Занятость : Полная занятость, гибкий график

Обязанности:

  • Разработка и развитие публичного и внутреннего API (стек технологий: Java 8, EJB, Hibernate, WildFly, Hazelcast, PostgreSQL);
  • Улучшение существующих функций МоегоСклада: интеграция с внешними системами, кассовыми решениями, развитие внутреннего сервиса биллинга;
  • Доработка клиентской части веб-приложения (пользовательский интерфейс и бизнес-логика) при помощи GWT.

Требования:

  • Выпускник или студент старших курсов технического вуза;
  • Уверенно знаете алгоритмы и структуры данных;
  • Имеете представление о паттернах проектирования и основах ООП;
  • Имеете опыт разработки на Java в учебных или домашних проектах;
  • Знакомы с Java Core (collections, utils, exceptions, concurrency как плюс);
  • Знаете SQL на уровне написания простых запросов;
  • Готовы работать от 30 часов в неделю.

Вы приобретете навыки:

  • Уделять небольшое время анализу задачи перед ее выполнением;
  • Писать грамотные и полезные unit-тесты;
  • Работать в команде, делать ревью кода;
  • Проявлять самостоятельность в постановке и оценке задач, а также оценке эффективности решений.

Условия:

  • Оформление по ТК РФ с первого дня;
  • Белая зарплата 50-70 тысяч рублей (после налогов, на руки);
  • Ультимативно гибкое начало рабочего дня;
  • Комфортный офис в пяти минутах от метро Технопарк;
  • Фирменный мерч (футболки, толстовки, кружки с собаками, блокноты и т.д.);
  • Компенсация оплаты обедов;
  • Компенсация оплаты обучения по профилю;
  • ДМС после окончания испытательного срока.

Программист-стажер Java

Зарплата : до 30 000 руб. на руки

Город : Москва

Опыт : не требуется

Занятость : Стажировка, гибкий график

Обязанности:

  • Участие в развитии интересных и амбициозных проектов в области fintech;
  • Работа в распределенной команде, взаимодействие с внешними разработчиками, взаимодействие с техническими специалистами заказчика;
  • Разработка проектов с нуля — от архитектуры до документации по сопровождению;
  • Развитие существующих проектов, техническое сопровождение, рефакторинг и развитие;
  • Экспертный анализ бизнес‐требований и технических решений, ревью кода;
  • Написание юнит-тестов и интеграционных тестов;
  • Активное участие в развитии команды.

Требования:

  • Неоконченное высшее/Высшее техническое образование;
  • Начальный опыт разработки на Java, возможно Вы только что закончили курсы;
  • Минимальные знания работы с СУБД и SQL (желательно oracle, pl\sql);
  • Опыт разработки web-ориентированных систем, опыт фронтэнд разработки как плюс;
  • Понимание полного цикла разработки ПО;
  • Вас научат работе с системами сборки (мы используем Gradle и Maven);
  • Вас научат работе с фреймворками для тестирования (мы используем JUnit, Mockito, Spock, spring-test);
  • Вас научат работе с инструментами командной разработки (мы используем Jira, Confluence, Stash, Gitlab);
  • Вас научат работе с Linux (в качестве рабочих станций у нас Ubuntu);
  • Знание английского языка — чтение технической документации;

Условия:

  • Заработная плата определяется по результатам собеседования;
  • Дружный, молодой коллектив профессионалов, у которых есть чему поучиться;
  • Обучение полному стеку технологий;
  • Уютный офис рядом с м. Павелецкая;
  • График 5/2 без привязки к рабочему времени, возможность совмещать с учебой;
  • Хорошие перспективы остаться работать в компании после стажировки.
  • Чай, кофе, печенье;)

Основы программирования
Азы программирования, основные термины и понятия

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

Урок 3. Первая программа

Выбор языка программирования. Подготовка браузера. Программа «Hello, world!».

Урок 4. Переменные

Установка удобного редактора кода. Знакомство с переменными. Простой калькулятор.

Урок 5. Типы данных

Типы данных. Операции с разными типами данных. Преобразование типов данных.

Урок 6. Алгоритмы и блок-схемы

Алгоритмическое мышление. Визуальные блок-схемы.

Урок 7. Оператор ветвления if

Выбор вариантов в программе. Оператор ветвления if. Игра в загадки.

Урок 8. Логические операции

Комплексные условия выбора. Логические И, ИЛИ. Игра «Злые птицы».

Урок 9. Циклы do, while

Циклы do и while. Игра в русскую рулетку.

Урок 10. Цикл for

Цикл for. Финансовый калькулятор.

Урок 11. Массивы

Большие наборы данных и массивы. Игра в рулетку.

Урок 12. Функции

Функции. Подготовка к написанию игры «Black Jack (21)».

Урок 13. Игра «Black Jack». Часть 1

Написание полноценной игры. Основа – раздача карт и подсчет очков.

Урок 14. Игра «Black Jack». Часть 2

Завершение написания игры. Определение результатов и победителя.

Урок 15. Карьера программиста

Обзор основных направлений в программировании. Как выбрать язык программирования? Чему учиться дальше?

Git. Быстрый старт
Основы работы с Git

Видеокурс дает опыт командной разработки с использованием Git. Учит «с нуля» организовать совместное хранилище кода и эффективно его использовать. Студенты осваивают git-клиенты с графическим и консольным интерфейсом, учатся контролировать выпуск версий программы и «откатываться» к предыдущим версиям. Подробно рассматриваются распространенные ошибки командной разработки: при слиянии веток, создании commit-ов, хранении исполняемых файлов в репозитории.

Урок 1. Назначение и возможности

Узнаем, зачем нужен git и какие возможности он открывает для программистов.

Урок 2. Базовые операции

Создаем хранилище кода, доступное всем участникам разработки по сети. Осваиваем базовые операции: Clone, Commit, Push, Pull.

Урок 3. Откат изменений кода

Учимся откатывать изменения в коде с помощью git. Осваиваем операции Discard, Revert, Reset.

Урок 4. Работа с ветками

Работа с ветками.
Параллельно разрабатываем несколько версий программы. Осваиваем операции Add branch, Checkout, Merge.

Урок 5. Конфликты

Учимся разрешать конфликты при слиянии веток.

Урок 6. Распространенные ошибки. Часть 1

Боязнь создания новых веток. Хранение исполняемых файлов в репозитории.

Урок 7. Распространенные ошибки. Часть 2

Ошибки при работе с ветками. Ошибки при создании commit-ов.

Урок 8. Pull Request. Работа с Open-Source-проектами

Осваиваем Pull Request-ы на примере работы с Open-Source-проектами.

Урок 9. Pull Request. Сдача домашних заданий.

Сдача домашних заданий в GeekBrains с помощью Pull Request.

Урок 10. Консольный git-клиент. Базовые операции

Осваиваем базовые операции в консольном git-клиенте.

Урок 11. Консольный git-клиент. Работа с ветками

Учимся работать с ветками в консольном git-клиенте.

Урок 12. Работа с версиями программы

Учимся выпускать различные версии программного продукта с использованием git.

Урок 13. Итоги

Подводим итоги проделанной работы.

Java. Быстрый старт
Основы языка Java на примере разработки небольшой игры

Видеокурс познакомит вас с одним из самых популярных, красивых, широко применяемых, надёжных языков программирования – Java. В первой части вы научитесь основам языка и научитесь писать простые консольные приложения. Далее мы расскажем, как можно буквально за несколько минут создать простую игру с графическим интерфейсом и не использовать при этом сторонние библиотеки. Цель курса: раскрыть некоторые возможности языка и показать, что Java – это просто и увлекательно. После успешного прохождения курса вы сможете использовать созданную нами модель для разработки собственных игр. Для эффективного освоения материала требуется минимальный опыт программирования, поэтому совсем начинающим разработчикам мы рекомендуем сначала пройти бесплатный онлайн-курс “Основы программирования”.

Урок 1. Знакомство с языком Java

Краткое описание языка; установка необходимых инструментов разработки; написание первой программы.

Урок 2. Переменные, типы данных, ветвления

Описание фундаментальных понятий языка Java на примере простого консольного калькулятора.

Урок 3. Циклы; игра «Угадай число»

Начинаем писать консольную игру «Угадай число», на примере которой будем продолжать изучение основ языка.

Урок 4. Методы

Демонстрация методов на примере усовершенствования игры «Угадай число».

Урок 5. Завершаем разработку игры «Угадай число»

Доводим код игры до конечного варианта.

Урок 6. Разработка игры «Поймай каплю». Часть 1

Создаём окно игры.

Урок 7. Разработка игры «Поймай каплю». Часть 2

Учимся загружать и рисовать картинки; реализуем игровой цикл.

Урок 8. Разработка игры «Поймай каплю». Часть 3

Ловим события мыши и заканчиваем разработку игры.

Урок 9. Итоги

Собираем проект в один jar-файл, чтобы его было удобно запускать без среды разработки; подводим итоги.

Курс для начинающих разработчиков, тех, кто хочет быстро освоить основы объектно-ориентированного программирования (ООП) и научиться создавать собственные проекты. Главной особенностью курса является сочетание изучения теоретических основ языка Java и практических онлайн-тренировок под руководством наставника.

Урок 1. Введение в Java

  1. Как работает Java. JVM. Общие принципы. Инструменты.
  2. Hello, world!
  3. Переменные и типы данных.
  4. Методы и их применение.
  5. Условные операторы.

Урок 2. Циклы и массивы

  1. Понятие циклов. Цикл while;
  2. Циклы for, foreach;
  3. Понятие массива;
  4. Разбор решения домашнего задания.

Урок 3. Практикум. «Крестики-нолики» в процедурном стиле

  1. Разработка алгоритма;
  2. Создание логики;
  3. Создание логики противника-компьютера;
  4. Разбор домашнего задания.

Урок 4. Введение в ООП

  1. Что такое ООП и зачем он нужен? Основные понятия;
  2. Создание классов и объектов;
  3. Инкапсуляция;
  4. Наследование;
  5. Абстрактные классы, интерфейсы и полиморфизм;
  6. Разбор домашнего задания.

Урок 5. Память, хранение данных

  1. Хранение данных в Java: стек, куча;
  2. Сборка мусора;
  3. Строковые классы, пулы строк;
  4. Разбор домашнего задания.

Урок 6. Графические интерфейсы

  1. Библиотека Swing и другие графические библиотеки. Основы Swing;
  2. Менеджеры размещения и выравнивание элементов;
  3. События в Swing. Меню и диалоговые окна;
  4. Разбор домашнего задания.

Урок 7. Практикум. «Крестики-нолики» в ООП

  1. Определение классов и GUI;
  2. Разработка логики, часть 1;
  3. Разработка логики, часть 2;
  4. Разбор домашнего задания.

Курс для тех, кто хочет укрепить свои знания в Java. На курсе ученики осваивают теорию и параллельно под руководством преподавателя с нуля разрабатывают полноценный проект на Java, получая таким образом практический опыт применения сложных объектно-ориентированных концепций, характерных для языка. Перед прохождением курса рекомендуется освоить курс для новичков: "Java. Уровень 1".

Урок 1. Объектно-ориентированное программирование Java

Углубленное изучение вопросов ООП в Java: основные принципы ООП, абстрактные классы, интерфейсы.

Урок 2. Исключения

Концепция обработки исключений, её сравнение с традиционным механизмом обработки ошибок, блок try-catch-finally, типы исключений, стандартные исключения в Java и их роль, выброс исключения из метода

Урок 3. Коллекции

Виды контейнеров в Java: List, Map, Set. Основные реализации и приемы использования, проход по элементам коллекции, сравнение и сортировка элементов коллекции

Урок 4. Продвинутые вопросы создания графического интерфейса

Создание собственных элементов управления. Работа с графикой. Обработка событий

Урок 5. Многопоточность

Потоки в Java, способы создания и управления состояниями потоков, основные проблемы при работе с потоками и синхронизация.

Урок 6. Работа с сетью

Сокеты. Написание простого эхо-сервера и консольного клиента.

Урок 7. Написание сетевого чата. Часть I

Написание клиентской и серверной части чата. Многопоточная обработка клиентских подключений.

Урок 8. Написание сетевого чата. Часть II

Разработка интерфейса для клиентской части. Авторизация. Механизмы взаимодействия клиента и сервера.

Алгоритмы и структуры данных на Java. 1 месяц.
Работа с массивами, списками, деревьями, графами, хеш-таблицами, стеком и очередью

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

Урок 1. Общие сведения об алгоритмах и структурах данных

Введение в алгоритмы и структуры данных

Урок 2. Массивы и сортировка

Работа с массивами и способов их сортировки.

Урок 3. Стек и очередь

Обзор структуры данных, стек, очередь и приоритетная очередь.

Урок 4. Связанные списки

Учимся создавать и использовать списки.

Урок 6. Деревья

Рассмотрим работу с двоичными деревьями.

Урок 7. Графы

Рассмотрим работу с одной из самых гибких и универсальных структур.

Урок 8. Хеш-таблицы

Быстрый поиск и вставка с помощью хеш-таблиц.

Основы баз данных. 20 уроков.
Проектирование БД и запросы SQL

Базы данных (БД) - это системы хранения и обработки данных, для доступа к которым используется язык SQL (Structured Query Language). Любой современный сайт, игра или настольное приложение нуждаются в хранении данных. На данный момент существует множество различных систем управления базами данных (СУБД), самой популярной является MySQL. “Основы баз данных” - это 20 интенсивных видео-уроков (по 10 минут), где мы вместе пройдём все этапы проектирования БД на примере интернет-магазина с использованием языка запросов SQL. После этого курса вы сможете использовать различные базы данных, такие как MS SQL и Postgre Sql, так как синтаксис языка SQL для них практически не отличается.

Урок 1. Реляционные базы данных

Чем отличается БД от СУБД; какие базы данных называются реляционными; обзор современных СУБД.

Урок 2. Установка СУБД

Установка СУБД MySql и графического приложения Mysql Workbench.

Урок 3. Проектирование базы данных, нормальные формы

Проектирование данных в Excel; нормальные формы; первичный ключ.

Урок 4. SQL-команда CREATE

Создание таблиц в графическом интерфейсе MySql Workbench; команда CREATE; типы данных; работа в консоли.

Урок 5. SQL-команда INSERT

Заполнение таблиц данными с помощью графического интерфейса; команда INSERT; AUTO INCREMENT.

Урок 7. SQL-команды DISTINCT, ORDER BY, LIMIT

Получение и фильтрация данных с помощью SQL-команд DISTINCT и LIMIT; сортировка с помощью команды ORDER BY.

Урок 9. Согласованность данных

Понятие согласованности или консистентности данных.

Урок 10. Внешний ключ

Понятие внешнего ключа и ограничений на значения столбцов; FOREIGN KEY CONSTRAINTS.

Урок 11. Создание таблиц с отношением “многие ко многим”

Добавление корзины в базу данных интернет-магазина.

Урок 12. Составной первичный ключ

Использование составного первичного ключа при проектировании таблицы с отношением “многие ко многим”.

Урок 13. Объединение данных из нескольких таблиц

Получение данных из нескольких взаимосвязанных таблиц; несостоятельность подхода с использованием нескольких SELECT-ов.

Урок 14. Оператор INNER JOIN

Объединение данных из нескольких таблиц с помощью оператора INNER JOIN.

Урок 15. Операторы LEFT JOIN, RIGHT JOIN

Объединение данных из нескольких таблиц с помощью операторов LEFT JOIN и RIGHT JOIN.

Урок 16. Оператор UNION

Объединение результатов нескольких SQL-запросов с помощью оператора UNION.

Урок 17. Агрегирующие функции

Агрегирующие функции COUNT, SUM, MIN, MAX.

Урок 18. Оператор GROUP BY

Группировка выбранного набора строк с использованием оператора GROUP BY.

Урок 19. Индексы

Фильтрация в GROUP BY с использованием HAVING; увеличение скорости выполнения запросов с использованием индексов.

Урок 20. Транзакции

Понятие транзакции; оператор TRANSACTION; требования ACID к транзакционной системе.

Java. Уровень 3. 2 месяца.
Профессиональная разработка программного обеспечения

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

Урок 1. Обобщения

Что такое обобщения, обобщенные классы, методы и интерфейсы, наследование обобщенных классов, ограничения при работе с обобщениями

Урок 2. Базы данных

Реляционные базы данных, язык запросов SQL. Операторы SELECT, INSERT, UPDATE, DELETE. Подключение к базе через JDBC, отправка запросов и обработка результатов

Урок 3. Средства ввода-вывода

Обзор средств ввода-вывода. Байтовые, символьные, буферизированные потоки. Сетевое взаимодействие, сериализация/десериализация объектов

Урок 4. Многопоточность. Часть I

Многопоточность в Java, разделяемая память, управление потоками и вопросы синхронизации, взаимодействие потоков исполнения, взаимная блокировка

Урок 5. Многопоточность. Часть II

Классы для работы с многопоточностью, Concurrent collections, разбор практических примеров

Урок 6. Обзор средств разработки

Логирование. Тестирование с использованием JUnit, написание тестов, класс Assert

Урок 7. Reflection API и аннотации

Понятие рефлексия, тип данных Class, метаданные классов, доступ к полям и методам, аннотации и их использование, написание собственных аннотаций.

Стажировка в GeekBrains. 2 месяца.
В формате вебинаров

Во время стажировки студентам предстоит поработать в режиме удаленной занятости над Open Source-проектом либо стартапом. Студентам будет предложено выбрать один из набора доступных для разработки проектов. Студенты научатся работать в команде, коммуницировать с другими разработчиками, product- и project-менеджерами, дизайнерами, изучат гибкие методологии, фреймворк SCRUM, освоят принципы дистанционной работы. Результат стажировки - умение работать в команде, пополнение портфолио, возможность указать работу над проектом в качестве профильного опыта работы в резюме. Стажировка проходит в формате дистанционной работы с частичной занятостью, еженедельными встречами-статусами с преподавателем в формате вебинара.

Урок 1. Знакомство, выбор проекта

Какие роли бывают в разработке. Product Manager, Project Manager, разработчик, дизайнер. Что такое MVP. Архитектура современного сервиса. Как разработчики взаимодействуют между собой. REST API, Web Socket. Backend, Frontend, мобильные приложения. Микросервисная архитектура. Основы удаленной работы. Запись в команды.

Урок 2. Методологии разработки

Обзор методологий. Каскад (водопад), Agile-манифест, Канбан, Скрам. Где и для чего применяются. Смешанные методологии.

Урок 3. Методология SCRUM

Работа по SCRUM. Планирование спринта. Причесывание бэклога (backlog grooming). Цель спринта. Инкремент. Гибкая методология в условиях дистанционной работы. Таск-трекеры (Trello, Favro)/

Урок 4. User Story Mapping

Типы задач. Декомпозиция задач. Построение карты пользовательских историй. Работа над пользовательскими историями. Работа с ТЗ по водопаду и в гибких методологиях.

Урок 5. Ответственность, мотивация, личностный рост

Чем и как мотивировать себя. Какие уровни мотивации бывают. Как не сгореть на работе. И как не забить на работу.

Урок 6. Написание резюме

Как написать резюме, чтобы HR его не отсеял. Как заинтересовать работодателя. Как продемонстрировать навыки, полученные в учебе, если профильного опыта работы пока еще нет.

Урок 7. Предварительное подведение итогов, подготовка к защите проекта

Разбор студенческих резюме. Предварительное подведение итогов. Немного о стартапах, монетизации, инвесторах.

Урок 8. Подведение итогов, демонстрация выпускного проекта

Демонстрация рабочего прототипа студентами. Обсуждение полученных результатов. Обратная связь от преподавателя. Напутствие.

Здравствуй, дорогой читатель. Давно хотел написать подобную статью, но либо не хватало времени, либо мешала предательская лень. Но, как бы там ни было, все-таки у меня получилось собраться с мыслями, чтобы написать то, что принесет вам, я надеюсь, какую нибудь пользу. С радостью поделюсь своими знаниями и опытом, в ответ с вас причитается время и внимание. По моему мнению, данная публикация хорошо подойдет для тех, кто готов определиться в своих интересах и хочет связать свою жизнь с IT - тем или иным образом. Итак, поехали!

Выбор языка программирования

Публикация начинает выглядеть как многие подобные материалы. По закону жанра я должен буду написать название пары тройки языков программирования, назвать парочку плюсов и минусов и, в итоге, так и не ответив на вопрос, перейти к следующей части. Отчасти в этом есть доля правды, ведь каждый выбирает для себя тот язык, который ему ближе, исходя из того, разработкой какого вида продуктов он хочет заниматься в будущем. Большинство из вас изучали в школе Turbo Pascal и вряд ли для вас будет новостью, что на этом языке сейчас уже практически ничего не пишут. Так и в данном случае, выбирать язык надо грамотно, хотя много знаний никогда не бывает, но если вы хотите за короткий промежуток времени эффективно влиться в ряды программистов, к выбору языка надо подходить с умом. В самом начале запомните: хороший программист никогда не останется голодным, а в большинстве случаев сможет купить себе много икры (это определение подойдет для любой специальности, но ни одна специальность не даст вам такой свободы выбора места работы, как в плане компаний, так и стран - программист он и в Индии программист).

Логично, что чем популярнее язык и востребованность, тем больше шансов будет найти работу в будущем, при этом язык должен быть несложным в освоении. Потому что хотя на C++ и пишут большое количество игр и получают за это хорошие деньги, новичку, тем более не знакомому с ООП (объектно-ориентированное программирование) лучше отложить на некоторое время этот язык куда подальше. Далее по ссылке предоставлен список самых популярный языков программирования 2014 года , и как видно, на первом месте стоит Java, далее идут C языки, затем Phyton, JavaScript, PHP, Ruby и т.д. Если самим поискать подобные статистики, то вы увидите, что в разных источниках места заняты по разному, но в целом первые 10 мест по содержанию везде будут совпадать.

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

Исходя из этих двух источников мы уже можем себе представить, какие языки программирования сейчас «в моде». Как видно по названию, автор статьи выбрал для себя Java. Хотя я считаю его лучшим для изучения ООП, найдется много людей, которые не согласятся со мной, и это логично - сколько людей, столько и мнений. Тут мы встаем на небольшое перепутье дорог: выбирать Java, С# (очень похож на Java), Phyton, если мы хотим работать с начинками программ и приложений (back-end) или же PHP, JavaScript, HTML, если хотим заниматься веб-разработкой (front-end). В первом случае я бы свой выбор остановил на Java, а во втором - на PHP, хотя опять же, тут больше по вкусу, надо уже самому искать информацию о различных языках и вообще понимать, чем ты хочешь заниматься. Для размышлений вот подборка языков, которые используются в крупнейших интернет компаниях мира .

Есть 2 основных причины, почему бы я выбрал либо Java, либо PHP. Первая - это очень популярные языки и найти соотвествующую работу не составит труда, а вторая - в том, что ни по каким другом языкам вы не найдете столько обучающего материала как по этим двум, причем как на русском, так и на английском.

Обучение

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

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

В данном случае я буду рассматривать язык Java, так как он мне все таки ближе. Благо в интернете полно людей, которые безвозмездно помогают другим в обучение, поэтому найти подходящий для вас материал не составит труда. , которые можно с пером и бумагой просматривать в стенах свою уютной квартиры (пока только на русском языке). Для тех, кто привык вчитываться в проходимый материал, опять же интернет предоставляет большие возможности и это только один из всевозможных сайтов с уроками по Java . Теории хоть отбавляй, но не могу сказать про такой обучающий сайт, как Coursera.org , где вы сможете найти обучающие курсы на различных языках и по различным областям, в том числе и программированию - опять же все абсолютно бесплатно. Таких сайтов не один и не два, стоит всего лишь поискать.

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

Ну и конечно, кто-то спросит, а как же книга? Разве не надо их читать, а если надо - то что? На это я отвечу, что от чтения книг еще никто глупее не становился. Книг тоже очень много, но я перечислю только небольшую часть из них:

Помощь в практике

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

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

  • Cyberforum - по моему мнению, самый популярный русскоязычный форум ITшников, тут можно найти ответы на вопросы, при чем и не только в области программирования;
  • Programmers forum - крупный русскоязычный форум;
  • Searchengines - небезызвестный форум, но специализируется больше в веб- программирование;
  • Stack overflow - а это уже, не побоюсь этих слов, самый популярный во всем мире IT-форум, ответы практически на все свои вопросы вы найдете именно здесь;
  • Dev shed - тоже крупный англоязычный форум;
  • Quora - форум прямо не специализирующийся на программировании, но зато большая вероятность, что вы получите ответ от настоящего профессионала.

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

Компилируем код

Довольно много я уже написал, конечно, сложно охватить такую большую тему в рамках одной статьи, но, думаю, первые шаги уже сделаны и вызвать у вас соответсвующие мысли они должны. Думаю, это только первая статья из серии «Как стать программистом» и, соответственно «зачем?», если вы стоите на перепутье дорог и пока не знаете, какой выбрать путь. В следующий раз я затрону более интересные в материальном плане вещи, ведь не секрет, что программисты люди не бедные, а уж где и сколько они получают, посмотрим в следующий раз.

Наконец, для тех, кто хочет действительно стать программистом, желаю взять быка за рога, собрать всю волю в кулак и делать то, что вам нравится. До меня уже тысячи раз говорили, но я повторюсь, главное - желание и труд. Тогда все у вас получится. Запомните самое главное: воспринимайте изучение языков программирования и различных технологий не как цель, а как СРЕДСТВО. Только представьте, какие возможности перед вами открываются. Может быть, именно вы станете одним из тех, кто меняет мир в режиме реального времени. Так что удачи и спасибо за внимание!

Видео-бонус

Теги:

  • как стать программистом
  • научиться программированию
  • выучить java
Добавить метки

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

Зарплата программиста

Хочу рассказать о зарплатах программистов. Как собственно обстоят дела с зарплатой, куда лучше идти работать, а куда - нет. Если вы не программист и попытаетесь самостоятельно разобраться в этой теме, то можете получить набор очень противоречивых данных. Все дело в том, что главным фактором, влияющим на зарплату программиста, является не его квалификация, а место работы. Иногда, при одинаковой квалификации, разница между хорошим и плохим местом может достигать 2-10 раз(!) В каждый конкретный момент времени ваша квалификация постоянна. Вы не можете за месяц стать опытнее в два раза и получать в два раза больше. А вот сменить за месяц работу и получать в два раза больше - очень даже можете. Однажды в течении двух месяцев моя зарплата выросла в три раза(!) - незабываемое впечатление. Давайте же выясним, где лучше всего работать. Вот три фактора, которые очень сильно влияют на уровень зарплат в компаниях:
  1. Является ли разработка ПО основным бизнесом компании.
  2. Ориентирована ли компания на международный рынок или на внутренний.
  3. Собственником фирмы является западная компания или отечественная.
Обратите внимание, что город, в котором вы живете не играет решающей роли. Т.е. если вы получаете в 10 раз меньше, живя в Дрездене, чем ваш знакомый в Нью-Йорке, значит, в дело вступили перечисленные выше факторы.

Конкретные цифры

Сложно привести какие-то конкретные цифры для всего мира. Я дам описание ситуации для Восточной Европы, которая в целом справедлива для всех стран, где более-менее развит IT-outsource/outstaff. Ниже приведен расклад зарплат программистов для Киева – это крупный центр ИТ-аутсорса Восточной Европы. В СПб зарплаты на 10% выше, в Москве где-то на 20%. Не встречал в Восточной Европе ни одного города-миллионника, где бы зарплаты были на 30% меньше чем в Киеве. Так как вы все из разных городов, предлагаю увеличивать приведённые мною цифры, в соответствии с указанной шкалой:Вот сколько может зарабатывать Java Senior Developer с пятью годами опыта работы, в зависимости от уровня компании, в которой работает:
Уровень Зарплата в месяц Описание
1 $200 - $500 Внизу находятся фирмы, где ИТ - это непрофильное направление бизнеса компании, заказчик - внутренний рынок, а собственник - государство. Например, ИТ-отдел в налоговой или другой государственной организации.
2 $500 - $1500 Ниже среднего находятся ИТ отделы различных не государственных структур: банков и т.д.
3 $1,000 - $2,500 Средний уровень - это фирмы, которые занимаются разработкой ПО
4 $3,000 - $4,000 Выше среднего - это фирмы, которые занимаются разработкой ПО, и заказчики у них с запада
5 $4,000 - $5,000 На вершине - фирмы, занимающиеся разработкой ПО, заказчики у них с запада, и собственник тоже. Их мало. Открытые вакансии бывают нечасто, и попасть туда непросто. Но они есть.
Что самое странное в сложившийся ситуации? Половина всех программистов работает в фирмах уровня 1 и 2. Хотите узнать, в чем подвох? Есть сотни открытых вакансий программистов в фирмах уровня 3 и 4. Эти компании готовы предложить более высокие зарплаты и, обычно, гораздо лучшие условия труда. Я знаю двух Java Junior’ов, один из которых пошел работать на $100 в месяц (в фирму уровня 1), а второй на $1,000 в месяц (уровень 4). Зачем получать меньше? Спрос на программистов превышает предложение – не идите работать туда, где мало платят! Вывод 1: Средние зарплаты Java-программистов в Киеве - около $1,200 в месяц Вывод 2: Ваша средняя зарплата, через 5 лет, если вы не пойдёте работать в фирмы уровней 1 и 2, а пойдете работать в фирмы уровня 3 и 4, будет выше $3,000 в месяц. Чего можно добиться, если не тупить Если вы будете постоянно заниматься саморазвитием в области программирования, то ваша зарплата, начиная с сегодняшнего дня, может выглядеть примерно так.

План

0-3 месяца (Ученик) Вы знаете о программировании очень мало. Может учили в школе и/или университете, но очень поверхностно. Ваша задача - учиться программированию и изучать Java. Ваша цель - устроиться на работу Java Junior’ом в компанию не ниже 3-го уровня. Первые три месяца на плане вы не получаете ничего, т.к. просто изучаете программирование. В будущем, когда у вас будет семья и куча кредитов, сменить специализацию будет гораздо сложнее. Чтобы исправить ошибку вам понадобится отложить денег на год нормальной жизни. Не делайте глупых ошибок. 3-15 месяцев (Java Junior Developer) Вы уже работаете программистом, и ваш опыт растёт с каждым днём. Не прохлаждайтесь. Вам ещё многое предстоит сделать, чтобы можно было почивать на лаврах. Ваша задача - изучать технологии, которые понадобятся вам как Middle разработчику. Какие именно технологии? Мир меняется. Я сейчас насоветую, а жизнь все поменяет. Найдите в интернете несколько вакансий и посмотрите, что для них требуется. Обязательно прочитайте книгу Брюса Эккеля «Философия Java». Ваша цель в первый год работы Java Junior’ом - дорасти до уровня Java Middle. Никто не говорит что это очень легко, но вполне возможно для целеустремлённого человека. Это сразу даст скачок ЗП до полутора тысяч. 2-й год работы программистом (Java Middle Developer, level 1) Вы хорошо потрудились в прошлый год, и теперь вы - Java Middle Developer. С зарплатой в полторы тысячи можно нормально жить. На работе вам дают серьёзные задания, и ваш опыт растёт как на дрожжах. Вы дорастёте до Java Senior Developer за два-три года. Нет смысла ускорять этот процесс. Сильного роста в зарплате вы все равно не получите. Ваша задача - изучите паттерны проектирования, прочитайте «Совершенный код» МакКоннела. Улучшайте качество своего кода и свои навыки работы в команде. Можно взять за правило каждую неделю читать одну книгу по ИТ. Тогда через год, вы будете на 50 книг умнее остальных. Не стоит откладывать это на потом: свободного времени у вас больше не станет. Вполне вероятно, что у вас появится семья, или пополнится, если уже есть. Ваша цель - выбрать несколько технологий, в которых вы будете специализироваться как Senior-разработчик. Всего вам все равно не изучить. А быть гуру в небольшой области – это хорошее решение. 3-й год работы программистом (Java Middle Developer, level 2) Вы уже опытный Middle разработчик и начинаете подумывать – стать Senior Developer. Это приятно и престижно. Ваша зарплата превышает 2 тысячи долларов (данные для Киева). С этого момента спрос на таких профессионалов как вы, превышает предложение. Вы всегда сможете устроиться на работу за пару дней, и вряд ли будете получать меньше, чем сейчас. Если, конечно, не выкинете какую-нибудь глупость. Ваша задача - продолжить изучение выбранных технологий. Работайте лучше. Не ради работодателя, ради вас самих. Проситесь в проекты с перспективными технологиями (такими как Big Data, на момент написания этой статьи). Вы все равно будете проводить в офисе 8 часов в день, так почему бы не получить за это немного больше денег и, что гораздо важнее, ценнейший опыт, который вам ещё понадобится. Ваша цель - сменить работу. Хороший коллектив есть везде. Вы столкнётесь с новыми проектами и технологиями. Не стоит раньше времени прирастать к стулу. Если вы все ещё работаете в компании третьего уровня, подумайте над переходом на четвёртый уровень. Пятый уровень, хоть и очень привлекательный, пока недостижим. 4-й год работы программистом (Java Senior Developer, level 1) Вы стали Senior разработчиком. Поздравляю. Возможно, стали им незаслуженно, и вы это чувствуете. Все равно поздравляю. Не важно, достойны ли вы сейчас вашей должности, главное чтобы вы стали достойны её в будущем. Согласитесь, лучше сначала получить хорошую работу, а через год дорасти до неё, чем дорасти до хорошей позиции и ждать её ещё год. Надеюсь, вы не забыли мой совет и читали по одной книге в неделю - теперь вашим возможностям позавидует любой студент. Вернее он готов молиться на них. Подумайте, у вас серьёзная зарплата, приближающаяся к трём тысячам долларов. Скорее всего, вы ещё молоды. Весь мир у вас под ногами. Ваша задача - ещё раз просмотреть выбранные вами технологии. Возможно, вам нужно сменить специализацию. Мир изменился, технологии изменились, да и знаний у вас за два последних года прибавилось. То, на чем вы сейчас остановитесь – станет вашим выбором на несколько ближайших лет. Самое время выбирать любимые технологии. Ваша цель - выбрать направление, в котором вы могли бы развиваться дальше. Их очень много, всех вариантов никто не перечислит, но выбор нужно сделать прямо сейчас. Если сегодня вы немного измените своё настоящее, это приведёт к большим изменениям в вашем будущем. 5-й год работы программистом (Java Senior Developer, level 2) Вы определились с вашим будущим и работаете над воплощением вашей мечты. Правильно выбранное направление в совокупности с желанием идти вперёд и результат не заставит себя ждать. Поздравляю. Я рад, что ещё одним счастливым человеком стало больше. Есть одна мудрая истина. Люди часто переоцениваю чего можно добиться за один год, и недооценивают, чего можно добиться за пять лет. Оглянитесь на пять лет назад. Так оно и есть. Ваша задача - не принимать глупых решений и не идти на поводу у лени. Ваша цель - выбрать направление и двигаться дальше. А вы думали это конец? Вспомните свой выпускной класс. Это не конец, это только начало.

Будущая специализация

Вы можете развиваться как технический специалист (верхняя ветка), как управленец (нижняя ветка) или как наемный профессионал/независимый консультант (средняя ветка). Все зависит от ваших предпочтений.

Карьера программиста

Профессия программист отличается от других профессий. Здесь нет необходимости делать карьеру менеджера, чтобы хорошо зарабатывать. Нередки ситуации, когда старший программист получает больше, чем его начальник-менеджер. Чем больше вы набираете опыта, тем сильнее ваши отношения с начальством движутся от точки «начальник-рабочий» к отношениям вида «кинозвезда и её менеджер». Зажравшиеся, знающие себе цену программисты перебирают и проектами и вакансиями. Порадуемся за своих. Что же нужно, чтобы стать таким высококлассным и востребованном в мировом масштабе программистом? Вы должны иметь большой опыт в самых новых и востребованных технологиях. Как этого достичь? Ответ ниже. После того, как вы первый раз устроились работать программистом, с вами начинают происходить две вещи, которые, как ни странно, не всегда бросаются в глаза.
  1. Вы начинаете быстро набирать опыт работы в реальных проектах. Один год опыта работы программистом может дать вам больше знаний и навыков в вашей специальности, чем 5 лет университета. Опыт – это настолько значимый показатель, что в IT-вакансиях зачастую пишут «требуется Java-программист с тремя годами опыта работы».

  2. Вы по 8 часов в день изучаете новые технологии, а вам за это ещё и щедро платят. Значимость этого фактора трудно переоценить. В некоторых случаях полученные навыки настолько ценны, что ради их получения можно работать бесплатно, а то и доплачивать. Если вы грамотно выбираете проекты, на которых соглашаетесь работать, то вас ждёт головокружительная карьера программиста.
Вот только, что же выбрать? Зачастую, если вы не знаете, какие технологии будут вам полезны, вы начинаете выбирать технологии по принципу «нравится, не нравится» или «модно, не модно». Тут уж как повезёт. Так что, лучше знать заранее, куда вы хотите попасть. Путей развития программиста очень много, поэтому я, для простоты, выделю несколько из них, и напишу своё видение полученной ситуации. Не стоит воспринимать эту схему как жёсткую позицию, скорее как упрощённый взгляд на вещи, с целью внести хоть какую-то ясность.

Двухсотлетний программист

Если больше всего вам нравится программировать , то ваш путь: Senior Developer, затем Tech Lead Developer и архитектор. Также вы можете просто работать программистом лет 50. Зачастую зарплаты старших программистов и техлидов превышают зарплаты их менеджеров. Не прогадайте.

Менеджер. Тебе повезло, ты не такой как все

Вы перешли на сторону врага. Шучу. Если у вас открылись недюжие организаторские способности , то ваш путь: Team Lead, а затем Project Manager. Это даст вам шанс стать директором и поможет при открытии своего дела. Вы ведь этого хотите, не так ведь?

Украсть трактор

Если вы успели завести семью и детей , то возможно вы хотите тихой и безбедной жизни в стране со стабильной экономикой. Задумываетесь над переездом/иммиграцией в Канаду, США, Швейцарию или даже Австралию. У вас есть отличные навыки и востребованная профессия. Вам не придётся начинать с мойщика посуды. А, например, с Senior Java Developer. Да ещё и, вероятно, на большую зарплату. Не так уж и плохо.

Посмотреть весь мир, кроме Парижа и не умирать

У вас ещё нет семьи, и вы хотите попутешествовать . Upwork – ваше все. Найдите себе заказчика, обговорите с ним рейты – от $20/час, берите ноутбук и вперёд. Вашей зарплаты должно хватить, чтобы нормально жить в любой стране мира. Почему бы не приступить к исполнению своей мечты прямо сейчас? Программирование – это комфортно.

Top