Почему ненавидеть код-ревьюера – хорошо · 05/06/2017 · Разработка

С утра вы приходите на работу, выпиваете чашечку кофе, закусывая печенькой, и в полной боевой готовности идете на свое рабочее место. Заходите в Jira (любой другой трекер), выбираете наиболее приоритетную задачу из текущего спринта и переводите ее в статус “In Progress”. Спустя некоторое время увлеченной работы задача отправляется на код-ревью, а вы позволяете себе отлучиться еще за одной чашкой кофе.

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

Знакомая ситуация?

Вы открываете свой Pull Request и видите все эти комментарии. Вы начинаете разбираться – первые 3-4

Читать дальше ⟶

Разрушение манипуляций в переговорах · 05/06/2017 · Разное

Неожиданная тема в этом блоге, даже для меня. С другой стороны, с манипуляциями так или иначе встречается каждый разработчик. Взять, например, фразы:

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

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

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

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

– Что ж, будет сложновато, но я могу постараться. Думаю, я действительно успею это сделать.

Читать дальше ⟶

Выделение подпроекта в отдельный репозиторий на github · 05/06/2017 · Разработка

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

Итак, что дано:

  • Есть большой репозиторий, содержащий множество папок. Каждая папка – это отдельный проект.

Что необходимо сделать:

  • Одну из папок перенести в отдельный репозиторий с сохранением ее истории коммитов.

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

Я использовал стандартный гитовый filter-branch. За основу я взял следующие статьи:

В этом посте я хочу немного адаптировать процесс для лучшего восприятия (пост содержит UPDATE, рекомендую не

Читать дальше ⟶

Сложно быть Junior'ом · 05/06/2017 · Процессы

Мне действительно повезло – когда я впервые трудоустроился по профилю в 2010 году, я попал в хорошую компанию и работал рядом с профессионалами высокого уровня и просто хорошими людьми. Рядом с ними я быстро рос. Мне всегда показывали хорошие практики и действительно уделяли мне время.

Но не всем так повезло – многие начинали свою карьеру в конторах довольно среднего уровня, где их попросту было некому учить. Или вовсе не хотелось.

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

  • История, которую я слышал
  • Что в ней не так
  • Как это было со мной
  • Краткий вывод

Если вопросов нет, то поехали.

Ситуация 1: оценка временных трудозатрат на задачу.

История: начинающий разработчик, еще студент, устраивается в компанию и

Читать дальше ⟶

ИТ головного мозга в банальном разговоре · 05/06/2017 · Разное

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

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

И состоялся у нас с товарищем один разговор, вот как он выглядел в моем представлении:

– Я кстати нал практически никогда не использую. Даже, вообще никогда не использую.
– А я тоже! Разве только когда кофе беру.

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

А вот как этот же разговор звучал в представлении моего товарища:

– Я кстати null практически никогда не использую. Даже, вообще никогда не использую.
– А я тоже! Разве только когда

Читать дальше ⟶

Минимальный набор знаний молодого разработчика · 05/06/2017 · Разработка

Несколько раз у меня спрашивали, с чего же начать карьеру разработчика. В целом, вопрос этот слишком широкий и не имеет ответа как такового, поэтому я поставлю его более узко: что должен знать молодой java-разработчик, пишущий back-end?

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

Как я уже говорил, я буду оперировать терминами экосистемы Java, хотя в целом это легко можно спроецировать на любую другую платформу.

Итак, есть человек, понимающий, что такое ООП и прочитавший хотя бы одну стоящую

Читать дальше ⟶