Стоит ли иметь сторонний проект с открытым исходным кодом?

Большинство хороших разработчиков, которых я знаю, либо работают, либо недавно работали над каким-то побочным проектом. Согласно прошлогоднему опросу Stack Overflow, около 80% разработчиков относятся к программированию как к хобби.

Это не удивительно. Я начал программировать около 20 лет назад и только последние 13 лет занимаюсь этим профессионально. Так что это было моим хобби задолго до того, как стало моей работой.

Начала

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

Когда я наконец подключился к Интернету, я смог учиться намного быстрее и открыл для себя мир программного обеспечения с открытым исходным кодом. Я начал с публикации некоторых повторно используемых компонентов для фреймворка MFC. Затем, примерно в 2005 году, я опубликовал свой первый проект с открытым исходным кодом. Не было социальных сетей, я не участвовал ни в каких группах рассылки или форумах, поэтому я просто отправил проект в SourceForge и продолжил работу над следующими версиями.

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

Сегодня в мире открытого исходного кода преобладают проекты, поддерживаемые спонсорами, покровителями, а иногда даже крупными корпорациями. Мои проекты никогда не были настолько популярны, чтобы превратить их в источник прибыли. Примерно в 2013 году я начал сомневаться в самой идее работы над проектами с открытым исходным кодом.

Как и большинство разработчиков, в какой-то момент я спрашивал себя: почему я должен работать бесплатно? Мои побочные проекты требуют много усилий и часто сопоставимы по качеству с проектами, которые я выполняю на своей работе, так почему бы мне не зарабатывать на них деньги?

Миф о стартапе

Согласно опросу Stack Overflow, 25% разработчиков хотят открыть собственное дело в ближайшие пять лет. Так что мечта Кремниевой долины о создании стартапа и становлении миллионером очень заманчива. Несколько лет назад я тоже позволил себе обмануть себя этим видением.

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

Готов поспорить, что большинство из этих 25% ненавидят ежедневную маркетинговую работу, написание предложений и поиск клиентов. Конечно, как и все остальное, это навык, которому никто не может научиться, но если программирование - это ваше хобби и что-то, что приносит вам большое удовлетворение, действительно ли вы хотите обменять его на выполнение всего необходимого для ведения бизнеса?

Очевидно, что рано или поздно к вам придут с отличным деловым предложением. Они пообещают позаботиться обо всех продажах и маркетинге, позволяя вам сосредоточиться на стеке новейших технологий. Звучит очень заманчиво, но в большинстве случаев это полная чушь. Если их идея действительно настолько велика, и они могут позаботиться обо всех бизнес-аспектах такого проекта, они также могут легко найти некоторых фрилансеров, которые будут реализовывать MVP по разумной цене. Им не обязательно давать вам 50% будущей прибыли только потому, что вы знакомы с React или какой-либо другой крутой технологией. Если они предлагают вам это, они абсолютно не знают, как работает ИТ-индустрия, поэтому пожелайте им удачи и держитесь от них подальше.

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

Площадка для обучения

В конце концов я пришел к выводу, что работать над побочными проектами - это здорово, но делать это по финансовым причинам просто неправильно. Основной мотивацией должно быть желание улучшить свои технические навыки. Например, я работаю старшим разработчиком .NET, но в большинстве своих побочных проектов я использую совершенно не связанные технологии. В настоящий момент я изучаю Vue.js и работаю над новой версией своего проекта с открытым исходным кодом, WebIssues, потому что это отличная площадка для обучения написанию реальных приложений с использованием этой технологии. Подробнее об этом я писал в предыдущей статье.

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

Я даже не знаю, буду ли я профессионально использовать Vue.js в ближайшем будущем, так как меня вполне устраивает моя текущая работа. Однако, как разработчики, мы всегда должны совершенствовать свои навыки и узнавать что-то новое. Со временем технологии устаревают, и мы должны быть в курсе новых тенденций. Конечно, это не означает, что вы должны каждый месяц гнаться за следующей самой блестящей вещью. Лучше хорошо знать несколько технологий, чем все время пытаться следовать новейшим тенденциям.

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

Командный аспект

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

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

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

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

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

✉️ Подпишитесь на рассылку еженедельно Email Blast 🐦 Подпишитесь на CodeBurst на Twitter , просмотрите 🗺️ План развития веб-разработчиков на 2018 год и 🕸️ Изучите веб-разработку с полным стеком .