В 2017 году мы придумали
техническое антикафе, как площадку для технического творчества. Многое за это время испробовано, но многое даже не особо представлено и освещено на наших ресурсах. И это, конечно, упущение. Тут важно отметить, что ресурсов в таких начинаниях всегда не хватает. Нашей задачей было не только заявить о себе публично, но и лично принять участие в том, ради чего эта площадка была создана.
Итак, сложная инфраструктура, сложные задачи, огромные возможности для самореализации. Но кто и как их будет осуществлять?
Скучные дела
Самое непростое тут в том, чтобы найти в себе силы с чего-то начать, преодолеть предлагаемую сложность, сделать первый шаг, а за ним и необходимые последующие.
Мы, в
Скучном месте, такое преодоление решили организовать не в виде курсов, а в виде технологических кружков с выбранной тематикой, где интерес ведущего кружка пересекается с интересами участников кружка.
Технологические кружки - это не образовательные курсы, в них не предполагается никаких гарантий - «научить нельзя, научиться можно». Кружковый подход, позволяет оценить свой интерес, через попытку разобраться в чём-то незнакомом на примере решения конкретной задачи. И, если что-то всё-таки пошло, если необходимые усилия приложить получилось, если удержать первичный интерес удалось, то это и есть то главное, ради чего всё и затевалось - «сложная инфраструктура, сложные задачи, огромные возможности для самореализации».
От человека к человеку
Вместо того, чтобы что-то перечислить: «Что это там за кружки такие технологические?» Хотелось бы дать ещё одно пояснение - главный вопрос состоит не в том «что?», а в том «кто?». Не в том, «что это за кружки?» А в том, «кто эти кружки будет вести?» В Скучном месте мы пытаемся собрать и оформить сообщество людей, которые готовы развиваться в технической сфере, и готовы помогать тем, кому это тоже интересно - делиться своими знаниями. То есть вести такие кружки.
Но зачем? Зачем кому-то желать тратить своё время и ресурсы, чтобы вести какой-то там кружок? На этот вопрос нет простого, одинакового для всех, ответа. Но есть общие черты в мотивации. Одна из таких черт в культуре открытых технологий состоит в потребности и «
праве поделиться».
У этой потребности есть и объективные предпосылки. Как сформулировал в своей книге главный автор ядра Linux: «Хорошо известно, что лучше всего работает тот, кто одержим страстью. Кто работает ради удовольствия» (Линус Торвальдс, Дэвид Даймонд.
Just for fun). При этом какие-то глубокие цели вполне могут быть вторичны, интересен же оказывается сам процесс коллективного творчества.
Если у вас есть такая страсть, то вы можете оформить у нас в Скучном месте свой технологический кружок. Откуда эта страсть возьмётся - уже другой вопрос. Но мы готовы помочь тем, у кого она есть, у кого она конструктивна и связана с открытыми технологиями. Готовы помочь найти для себя технологическую базу и возможность находить и заражать своей страстью других.
Скучные дела и задачи
Технологические кружки, сами по себе, только ширма, вывеска, предлог, повод для решения конкретных, понятных и ведущему, и участникам задач. А, поскольку никто не стоит на месте, задачи эти всё время уточняются. Каждый раз у кружка своя программа.
И тут возникают вопросы: «А на что же тогда опереться? Как понять о чём сегодня мы проводим наш кружок? С чего начать тому, кто совсем далёк от обозначенной предметной области? Где тут у вас программа?»
Лично мне трудно говорить обо всём за всех и сразу, поэтому дальше я хочу кратко расписать те задачи, которые оказались близки лично мне. Задачи, которых оказалось настолько много, что мне вряд ли удастся в самое ближайшее время сделать что-то большее, чем просто их перечислить.
Открытые технологии
Основная цель, которую я преследую - это развитие открытых технологий (технологий, распространяемых по свободным лицензиям). Эта цель поддерживается во вне определённой верой в то, что только открытые технологии могут позволить отдельным людям, да и с отдельным государствам (включая нашу собственную страну) попытаться преодолеть складывающийся процесс технологического неравенства. И даже больше, технологического порабощения, при котором мир разделяется потребителей и владельцев технологий.
Природа этого явления вполне объективна и связана со всё усиливающимся процессом разделения труда. При этом, сначала ради удобства, а потом ради удерживания и эксплуатации технологических наработок, отдельный человек лишается права знать и учиться, права уметь и понимать как устроены механизмы, которые он использует.
В общем, если кратко, то я убеждён, что
- технологии (кстати, не только информационные) должны быть доступны каждому;
- для осуществления этого нужно научиться их самостоятельно осваивать, причём достаточно быстро;
- для этого не обязательно быть узкоспециализированным специалистом;
- для демонстрации такого подхода необходимы примеры;
- одним из важнейших таких примеров является способность технической сферы к оформлению жизнеспособных сообществ, ориентированных в своих помыслах на интерес;
- поиск и поддержка предметных сфер, где оформление таких сообществ имеет ценность в краткосрочной и среднесрочной перспективе, имеет наивысший приоритет.
Примечание: для долгосрочной перспективы нужно опираться на совсем другие модели и обладать совсем другими ресурсами. Большинству же необходимые ресурсы всё равно недоступны. А потому и не очень интересны (в личном, мотивационном, мобилизующем на реальную деятельность плане).
Освоение открытых технологий требует знакомства с подходами открытой разработки. Открытая разработка - это культурный феномен. Культура открытой программной разработки предполагает не только способность программировать, но и желание делиться «чертежами» своих наработок с другими людьми. А это уже не совсем, если можно так выразиться, «производство» - это «производство средств производства», это «станки, которые позволяют создавать новые станки». Только воспроизводятся при этом не станки, а грамотные технические специалисты.
Желание оформить коллектив разработчиков, приходит из осознания, что компьютерная программа, сама по себе, ничего не стоит, если она никому не нужна, то есть если у неё нет пользователей. Отсюда открытые технологии включают в себя и публичный доступ, и коллективные права владения, и соответствующие юридические аспекты лицензирования, поскольку вырвать у современной реальности что-то ценное и переместить его в общественную собственность - дело не простое.
Для оформления открытой разработки требуются различные условия:
- техническая и культурная база (на самом деле, где-то в глубине это чей-то подвиг и чья-то жертва, причём не всегда достаточно осмысленные и зачастую скромно умалчиваемые);
- технически подготовленные, заинтересованные разработчики, способные создавать на основе сложившейся технической базы конкретные решения;
- актуальные технические задачи, позволяющие столкнуться с реальными проблемами, а не только с личными интересами;
- средства разработки, позволяющие решать такие задачи в адекватные сроки, и примеры их использования.
Актуальные задачи
Самое сложное и противоречивое - это найти себе актуальную и одновременно достижимую в адекватные сроки задачу. Неактуальную, но достижимую задачу решать, просто так, не интересно. Для того, чтобы такая задача стала интересной, её превращают в игру (не стоит путать с «компьютерными играми»). Любое учебное пособие - это и есть такая методически выверенная «игра».
Иногда, особенно на первых этапах, достаточно посоветовать «правильную» книгу или сайт, и человеку этого будет достаточно. Но обычно такой «игры» маловато. Для интересной «игры» нужны достойные «игроки».
При этом «играть» можно долго, бесконечно долго... Поэтому вместо «игры» я пытаюсь найти «интересные задачи» (полезные и чем-то ценные программные решения на базе современных технологий) и отобрать среди них достижимые и ценные не только для меня. Такие задачи сложно найти.
Актуальные по настоящему задачи обычно оказываются либо слишком сложными, и поэтому недостижимыми в адекватные сроки, либо совершенно бестолковыми, никому не нужными «безделушками».
Если же актуальная, в данном смысле, задача находится и оказывается понятна, интересна, нетривиальна, то такая задача, сама по себе - уже заявка на организацию технологического кружка.
Ниже представлены актуальные и интересные лично мне направления для таких задач.
Программирование «под Linux»
Программирование под Linux требует знакомства с культурой, подходами, инструментами и технологиями открытой разработки, которые, в свою очередь, требуют глубины теоретической подготовки в математике и широкого кругозора в сфере информационных технологий.
Так с чего же начать освоение программирования «под Linux»?
Ответ тут, казалось бы, очевиден. Нужно, всего лишь:
- найти себе пример проекта в исходном коде под свою задачу;
- установить «свой Linux» и необходимые средства разработки;
- освоить на примере найденного проекта, используемые в нём инструменты программирования и средства взаимодействия.
Какая бы у вас не была гениальная программная задумка - помните: начинать нужно с освоения существующей кодовой базы.
Ну, хорошо, а с чего начинать-то? Тут всё зависит от уровня квалификации. Начнём с простого и даже тривиального:
- Операционная система, драйвера, загрузчики, файловые системы, сетевые интерфейсы и протоколы... Чтобы суметь подготовить компьютерную систему к работе и связать её по сети с другими компьютерными системами, в этом нужно что-то понимать. И знакомство с Linux - это отличный повод в этом немного разобраться;
- Оболочка (по англ. Shell) - это рабочий инструмент для запуска программ и язык программирования, где каждое действие - это запуск программы. Цепочка запуска программ, как функций, передача данных из одной программы в другую через специальные каналы, плюс условия, циклы и переменные технически составляют суть так называемого «Unix way». Такие программы называются «скриптами». Разобраться в этом и занимательно, и полезно. А ещё в хакерских CTF-соревнованиях поучаствовать можно;
- Выйти за пределы оболочки, познакомиться со средствами сборки (компиляторами, специальными утилитами) и написать свою первую программу или собрать из исходного кода новую версию - это серьёзный шаг на пути к профессиональному программированию.
Дальше больше, но это уже темы для отдельных статей по каждому найденному проекту. Программирование «под Linux» - это инструменты, связь с сообществом и проекты. В эту тему существуют
студенческие и
школьные программы от Google - тоже неплохой вариант для старта.
Образовательная робототехника
Click to view
Робототехника - это сфера, где программирование тесно переплетается с производством. Любой автоматизированный станок - это, по сути, робот.
Учиться программировать на примере конкретного устройства гораздо понятнее, чем на примере абстрактных, оторванных от реалий жизни, учебных задач.
Кроме того, робототехника программированием не исчерпывается. Тут и моделирование под задачу механической части в виде «тележки с датчиками» или «манипулятора с карандашом», и разбор электроники в виде «контроллера», «системы питания с аккумуляторной батареей», «датчиками» и т.п.
И всё это становится увлекательным, когда ты не один погружён во тьму робототехнических сложностей и компромиссов. А, например, когда нужно в заданные сроки вписаться в регламент и поучаствовать в робототехнических соревнованиях.
Сейчас наблюдается серьёзный разрыв между возможностями «профессиональных» участников в таких соревнованиях и возможностями «любителей». Это становиться похожим на спорт, когда реальные достижения оказываются доступны очень немногим глубоко погружённым в тему участникам, а большинству достаются примитивные вещи.
Я думаю, что возможности любителей здесь очень сильно недооцениваются. Прежде всего за счёт возможности кооперации и коллективного творчества над открытыми разработками. Именно эту, мало освоенную часть образовательной робототехники, я считаю сейчас наиболее актуальной и достаточно интересной. Именно эти наработки мы у себя сейчас и готовим в виде открытых чертежей.
И это уже тоже отдельная тема (какие чертежи, под какие соревнования?). Об этом я напишу отдельно.
Скучные выводы
Вот такие «скучные дела» творятся в Скучном месте.
В нашей команде участвуют
разные люди, как по профильному образованию, так и по опыту. У каждого свой подход, свои цели и свои скучные дела.