В нашем блоге на Мегамозге мы много пишем об интересных подходах к менеджменту (которые стараемся применять в работе над облачным сервисом 1cloud) и интересных способах решения проблем, с которыми сталкиваются ИТ-компании.

Мы уже писали о том, как нанимать программистов, как безболезненно переводить разработчиков в менеджеры, а сегодня речь пойдет о том, какую пользу для инженера может иметь запуск нового open-source проекта каждый год. Интересный пост на эту тему в своем блоге написал бывший разработчик ядра RedHat, работающий ныне над Kano OS, Радек Паздера (Radek Pazdera) — в нашем блоге основные моменты этого материала.

Успевать за изменениями


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

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

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

Новый Open-source проект каждый год


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

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

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

Тренировка в создании готового продукта


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

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

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

Размер не имеет значения


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

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

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

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

Пример — вот этот пакет загружают в среднем по 80 тысяч раз в день. Если приглядеться к исходникам на GitHub, то выяснится, что там всего три строчки кода. Делайте выводы.

Заключение


Не нужно сидеть со своей любимой, но уже старой до ржавчины библиотекой, только потому, что вы умеете с ней работать. Создание открытых проектов — это отличный способ обучения и познания нового, даже если вашего свободного времени не хватит на создание новой ОС. Никогда не знаешь, кому еще понравится эта идея. Даже если каких-то немедленных карьерных плюсов и не последует, то наличие списка завершенных open-source проектов станет отличным способом доказать свой уровень будущим возможным работодателям.

Сам Радек Паздера следует своим советам — в 2014 году он сделал проекты tco и scripster (а в свободное рабочее время dr). В 2015 успел разработать catpix и gitwalk (на этот ушло много сил и времени). Как говорит сам разработчик:

Пока не решил, что буду делать в 2016-м. Может быть что-нибудь на Rust или Go?

Комментарии (5)


  1. interPReDator
    14.11.2015 15:54

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


    1. EvilsInterrupt
      14.11.2015 16:25

      Много ума не надо. Идеи есть у всех. Просто не надо думать «какая-то глупая идея». Нужно просто взять и записать ее! Записать хоть на бумажке, главное не потерять!

      У меня для этого есть отдельная заметка в Evernote. У кого-то это может быть текстовик, который лежит на DropBox или Google Drive диске. У кого-то это может быть черновик в почте.

      Главное записать!


  1. kingu
    15.11.2015 22:50
    +2

    вот этот пакет загружают в среднем по 80 тысяч раз в день. Если приглядеться к исходникам на GitHub, то выяснится, что там всего три строчки кода

    Кто эти люди которые его скачивают? Мне было бы стыдно публиковать такой «пакет».


  1. akubintsev
    15.11.2015 23:03
    +5

    Да, давайте внесем свой посильный вклад в увеличение энтропии :)
    Надо работать не ради работы, а решать конкретные задачи/проблемы.


  1. CodeRush
    16.11.2015 00:40
    +5

    А потом вот эти же люди говорят, что у открытого сообщества нормальные программы не получаются.
    Я веду открытый проект с 2013 года, один, на языке и технологиях приличной давности (C++/Qt4). Его не скачивают миллионы и он не нужен каждому хипстеру, но он решает свою задачу. В этом году я неспеша меняю в нем движок, т.к. за пару лет требования изменились, в следующем году буду дорабатывать UI, глядишь лет через 5 со старта проекта из него выйдет что-то путное. А вот эти «по открытому проекту в год» — это большо про «помотросил, и бросил», чем про решение задачи, мне кажется.