30 May 2015

О пользе и вреде open-source разработки и обмена знаниями.





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

И каждый, читая очередную статью на хабре, используя очередную библиотечку найденную на Github, или находя ответ на мучивший его вопрос на Stackoverflow, наверняка, ни раз ловил себя на мысли о том, что было бы круто восполнить карму - черкануть статейку, поделиться наработанной базой кода, помочь решить тобой уже решённый вопрос человеку, который бьётся над ним уже не первый день. Да хоть просто, поделиться ссылкой на интересную статью в twitter-е. 

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

Одно из выступлений на конференции UIKonf 2015, которое сильно меня вдохновило, как раз и было послащено этой теме: вот оно.
Автор (не безызвестный в кругах iOS разработчиков Ash Furrow) говорил о том почему не стоит бояться делиться своими работами с обществом, а также какая от этого может быть польза.

По сути, Ash сделал самое важное - собрал воедино и озвучил всё то, что и так понятно каждому из нас.

Ниже я привожу краткий пересказ основных идей высказанных им и разбавленных отсебятиной.




1. Совершать ошибки - это не страшно.




Одна из основных причин отказывать себе в удовольствии поделиться опытом с другими - это боязнь сделать ошибку, сделать что-то не правильно или не совсем хорошо.
Постоянно звучащий вопрос: «Что, если я ошибусь? Что если я что-то сделаю не так?» останавливает многих во всех аспектах нашей жизни, в том числе и в этом.

Так вот, с этого момента и впредь у вас больше не будет отмазки в виде этого назойливого вопроса, на который нет ответа… раньше не было…сейчас я дам вам на него ответ! Готовы?

Если вы ошибётесь, накосячите, с размаху, в прыжке нырнёте в грязь лицом и начнёте в ней барахтаться - всё будет отлично!

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

Более того, ваш код - это не вы сами! Ваша статья - это не вы сами!
Вся критика, все отзывы - о вашей работе, не о вас самих.

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

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



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

Другая мораль - кошки решают все проблемы)



2. Обмен опытом и знаниями поможет карьере и бизнесу.

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

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

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

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

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

Кроме всего прочего, осознание свое ценности для сообщества приносит положительные эмоции, заставляет чувствовать себя отлично!  Заставляет хотеть принести ещё больше пользы, решить более сложную проблему, мотивирует на дальнейшие действия. Это очень и очень приятно!

Во-вторых, обмен опытом полезен для бизнеса.

Выкладывая код в общий доступ, вы делаете ещё один шаг к тому, чтобы он стал лучше.
Теперь не только ваши сотрудники, но и коллеги всего сообщества могут просматривать его, находить слабые места и ошибки. 

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

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

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

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

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

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

Немаловажно и то, что специалисты будут осознавать, что и им, присоединившись к вашей команде, выпадет шанс делиться своим опытом (а хотят этого все)!

Ash рассказал, что, едва ли не ключевой причиной его перехода на текущее место работы (компанию Artsy), послужила её ориентированность на open-source разработку и обмен знаниями. Всё, для чего нет веской причины сделать закрытым, считают они, должно быть открытым. То есть, он сможет делиться своим опытом в рабочее время, а ему ещё и заплатят.



3. Начните прямо сейчас!



Совершать ошибки не страшно!
Выгода от обмена знаниями неоспорима!

Так когда начать? Прямо сейчас!

Как ни странно, самое сложное, как и во всём другом - начать. Стоит только начать - дальше всё пойдёт само собой. Так что начните прямо сейчас, начните с самого сложного: заведите себе страничку. Страничку, на которой вы будете делиться своим опытом. Любую, где угодно - это не играет никакой роли! Я завёл тут)

При чём, завести страничку надо заранее, не надо ничего писать, для начала - заведите страничку!

Когда появляется идея что-либо написать, мы, полные энтузиазма, заходим на какой-нибудь сервис и…начинаем создавать блог, выбирать для него дизайн, название, адрес…адрес уже занят - давай другой, ну ладно, пусть этот, надо подтвердить email, надо настроить профиль…Короче, когда всё это закончится, уже вовсе не до какой-то статьи. На это уходит уйма времени (я свой блог заводил несколько дней в несколько подходов).

Сделайте сейчас самое сложное - заведите страничку. Только начните!

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

Чем же поделиться, спросите вы?
Есть много всего!
  • Код.
  • Полезные техники.
  • Обзор или просто ссылки на интересные статьи.
  • Инструменты, помогающие в работе.
  • Проблемы, которые вам удалось (или не удалось) решить.
  • Документация к коду и библиотекам других разработчиков.
  • Тесты на открытый код других разработчиков.
  • Заводить баги на библиотеки и код.
  • Свои решения для улучшения и доработке открытого кода других разработчиков.
  • Всё, до чего вам есть дело.

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


Есть множество примеров:
  • Facebook со множеством open-source решений.
  • objc.io со всесторонними статьями по iOS разработке.
  • Ребята из HeightstreetApp полностью отпрыли из приложения для Apple Watch.
  • У помянутая компания Artsy впринципе ведёт разработку в open-source.
  • Apple объявила, что до конца 2015 года отправит в OpenSource Swift: стандартную библиотеку и компилятор.
  • и многие другие. Вот тут не большой обзор от NatashaTheRobot open-source приложений.
В заключении скажу, что польза обмена знаниями очевидна и неоспорима, а минусов от него нет вообще. Давайте будем эгоистами, давайте делиться знаниями!)