Как выбрать фирму Java программисту? Карьера программиста.

Автор: Петр Арсентьев



Выбор фирмы.

Для Java программистов нет проблемы найти работу. Работу можно и нужно менять каждый 2-3 года. Это нужно делать, чтобы постоянно расти. Возникает вопрос, как выбрать нужный проект?

Уровень зарплаты.

Основной показатель – это заработная плата. Она должна быть больше на 10-20% от вашего последнего места работы. Чем более важные задачи делает программист, тем больше ему платят. Забудьте про ярлыки: senior, ведущий, главный. Ярлык Senior нужен только корпорации, чтобы дольше Вас удерживать в фирме. Единственный показатель Вашей крутизны это Ваш доход.

Старые и новые технологии.

Я часто слышу мнение от своих учеников, что он или она выбрала фирму, потому что в ней используются новые технологии. Здесь нужно понимать, что новые технологии – это не всегда хорошо. Важно, какие задачи вы будете решать на проекте. Например, фрейморку Spring Cloud всегда два года. Звучит заманчиво. Однако, задачи на таком проекте будут связаны с созданием Rest API и конфигурированием микросервисов в AWS. В начале, это будет интересно, а потом окажется, что все очень однообразно. Поэтому важны не технологии проекта, а задачи, которые будет решать программист.

Процесс разработки.

Процесс разработки является один из самых важных моментов при решении выбора проекта. Главная задача команды – это выпустить продукт, которым люди будут пользоваться. После запуска продукта, его нужно поддерживать и расширять. И здесь возникает компромисс.
Можно фокусироваться на скорости выпуска продукта, уменьшая издержки за счет качества кода. Например:
- программу можно писать без тестов
- пренебрегать документацией (функционала, архитектуры, кода)
- использовать только ручное тестирование
- запускать приложение можно только на тестовых серверах.
Однако с дальнейшим развитием проекта дорабатывать его становится сложно и медленно.

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

1. Пишут ли в проекте документацию?
Документация должна быть на все: функционал, архитектура, код.
Описывается процесс запуска, сборки, тестирования. Новый член команды не должен тратить время других членов команды. Он должен читать документацию проекта! Это позволяет избавиться от незаменимых людей. Если есть документация, то любой программист может понять, как работает проект.

2. Как разворачивается приложение?
Идеальный вариант используются инструменты сборки maven или gradle. Проект можно развернуть через команду gradle run

3. Можно ли проект развернуть локально? Как это делают другие члены команды?
Проект должен разворачиваться локально. Каждый разработчик должен использовать свой локальный экземпляр для тестирования. Здесь всегда руководствуемся временем. Чем меньше время тратится на рутинные задачи (сборка, запуск, тестирование), тем лучше.

4. Какое среднее время сборки проекта? Сколько времени тратится на запуск проекта?
Тоже самое в пункте 3. Чем быстрее запускается и собирается, тем лучше. Если время сборки и запуска занимает 10 минут, 6 перезапусков сервера – это 1 час вашей работы. Вы будете просто сидеть и ждать, когда запустится сервер, чтобы проверить свою работу. Такой процесс разработки очень деморализует.

5. Если ли в проект CI? Какие проверки в нем настроены.
В проекте должен быть независимый судья. Он будет собирать проект, запускать тесты, обновлять сборки. С ним нельзя будет поспорить, по поводу почему падает тест. Так же все программисты будут писать код в одном стиле. Это все упрощает понимание кода. Как следствие увеличивается производительность всей команды.

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

Вывод.

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