четвер, 9 червня 2011 р.

CAJD::Interesting tasks

Открываю обещанный цикл статей по следам заседания "Клуба анонимных Java-девелоперов" на jeeconf.  Пока мне видится такой себе FAQ, по темам, которые всплыли уже надцатый раз и получили конкретные законченные ответы.
Итак, вопрос первый

Скучный проект не позволяет применять и развивать навыки программирования. А хочется роста, как быть?

Здесь необходимо чуть-чуть выйти за рамки ситуации попробовать найти корень проблемы. Я вижу только два варианта, почему проект "скучный"

Точечные задачи, требующие точечных решений

Здесь действительно на каком-то этапе становиться не интересно. В случае, если этих задач очень много, то можно хорошо прокачивать скилы автоматизации и оптимизации рутинных процессов. Разумеется это полумера, потому что в этом случае очень скоро все будет автоматизировано и оптимизировано и задач станет мало, а может быть не станет вовсе.
В результате все равно наступает момент, когда цели становятся слишком мелки и достигаются слишком просто. Варианта всего два
  1. Сменить проект. Шаг радикальный и не всегда возможный в рамках одной компании. Если сменить проект в текущей конторе не возможно, то прийдется менять контору. Это не всегда плохо, но если менять контору не хочется, то
  2. Заняться параллельно другим проектом. В идеале получить дополнительную оплачиваемую нагрузку. В реальности такое тоже не всегда возможно, но всгеда остается волшебный мир Open Source. И вот там уже можно реализовать себя в любом качестве и изучать все, что угодно душе
  3. Legacy-проект, устаревшие технологии и жесткие ограничения на изменения

    Этот вариант встречается в 80% случаев. И в этом случае скука, лишь следствие непонимания сути задачи. Дело в том, что любую проблему можно решать творчески, в любой задаче всегда есть интересное зерно: рутинные, повторяющиеся задачи можно автоматизировать; плохой и медленный код рефакторить; сложный и дремучий копипаст превратить в стройную и логичную структуру классов сохранив публичный API без изменений. В данном случае важно понять, какую именно проблему необходимо решить, зачем и почему выставлен именно такой баг и как наиболее правильно решить проблему. Ключевые слова решить проблему, не исправить баг, не переписать код, не изменить архитектуру - нет, решить проблему. Решение проблем и есть те самые инженерные навыки, которые стоит в себе развивать, но об этом будет отдельный пост.

    Краткое резюме

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