Как собрать продукт за полчаса, не прибегая к программированию?
Некоторое время назад мы провели вебинар с Вадимом Михалёвым, CEO Rocketslides, Codesign и Habit Hero, на тему “Что можно собрать без кода: Zero coding с практическими примерами”. Здесь мы расскажем о том, что обсуждалось на вебинаре, а посмотреть его самостоятельно вы можете, перейдя по ссылке.
Что такое зерокодинг и чем он полезен?
Уже долгое время люди, принявшие решение взяться за какой-либо IT-проект, оказываются перед следующей проблемой: у нас есть оформленная идея или гипотеза, при этом мы четко представляем себе нужный результат, но между идеей и результатом существует ощутимый разрыв. Для того, чтобы заставить проект сдвинуться с мертвой точки — то есть получить инвестиции, привлечь аудиторию, продемонстрировать первый результат и так далее, иными словами, чтобы этот разрыв преодолеть — требуется написать какой-то код.
Из-за этого складывается такое положение дел, при котором для достижения какого-то результата нужно собирать команду программистов, привлекая их своей идеей, или нанимая за деньги. Разумеется, это довольно сложно и рискованно, но для первой реализации это было необходимо. Более того, после первой реализации может оказаться, что идея была обречена изначально, а время, силы и деньги были потрачены впустую.
Эту проблему решает зерокодинг — способ, который быстро и без особых затрат помогает пройти путь от идеи до первого результата за счет готовых решений.
Приведем в пример лендинг. Для того, чтобы его сделать, приходилось нанимать большую команду: кто-то должен заниматься созданием картинок, кто-то версткой, кто-то анимацией и так далее. Сейчас же существует онлайн-конструктор сайтов и их элементов Tilda, позволяющий почти каждому быстро, буквально за вечер или два, создать лендинг, правильно отображающийся и на ПК, и на мобильных устройствах. Это устраняет необходимость нанимать большую команду создания лендинга.
Впрочем, это касается не только лендингов. Зерокодинг позволяет упрощать создание и более сложных вещей, например, мобильных приложений. Конструктор мобильных приложений Glide решает и эту проблему. Разумеется, он создает не настоящие мобильные приложения, а лишь веб-страницы, воссоздающие опыт взаимодействия с мобильным приложением, но этого будет вполне достаточно для демонстрации вашей идеи на практике, чтобы вы смогли понять, в правильном направлении ли вы движетесь, и является ли ваша очередная идея удачной.
Под зерокодингом как таковым понимают способ создания новых решений и продуктов, проверки бизнес-гипотез и автоматизации работы с помощью готовых инструментов, заточенных под определенные элементы продукта. Эти инструменты вы можете попробовать применить хоть прямо сейчас. Быстро, без проблем и практически бесплатно, не нуждаясь в целой команде разработчиков. Таким образом, зерокодинг уменьшает необходимую сумму денег и требуемое количество времени для входа на рынок в 10-20 раз, делая первые этапы создания проектов гораздо более доступными.
Кроме того, люди, умеющие работать с инструментами зерокодинга, становятся всё более востребованными на рынке из-за того, что компании с их помощью способны сэкономить большие объемы денег и времени, поэтому, эти навыки могут повысить вашу финансовую стабильность — это обеспечит вам и более высокую зарплату, и меньший шанс быть сокращенными при финансовых потрясениях.
Области использования зерокодинга
Возможности применения зерокодинга гораздо шире, чем могут показаться на первый взгляд. Готовое решение можно найти для почти любой идеи, например, маркетплейс, клуб по подписке с контентом внутри и др. Такое решение всегда будет быстрее и дешевле найма любой разработки.
Для начала работы с этими инструментами достаточно понять одну концепцию — архитектуру любого продукта можно расписать в три “слоя”:
Бизнес-логика (процессы работы с данными, принятие решений);
Клиентский слой (различные способы взаимодействия с пользователем).
Для каждого из этих “слоев” появляются свои инструменты для зерокодинга, решающие поставленные перед ними конкретные задачи. При этом нужно понимать, что когда мы говорим о создании продукта с помощью зерокодинга — мы говорим об MVP, то есть о сделанной “на коленке” и минимально жизнеспособной версии продукта. Чаще всего это просто видимость продукта, но внутри, в самом коде, может происходить что-то совершенно непонятное, это позволяет проверять концепции и идеи, а также определиться, нужны они продукту или нет.
Задача зерокодинга — воссоздать реалистичность продукта, чтобы получить как можно больше информации как о работе того или иного нововведения, так и о работе продукта в целом. Таким образом, у вас появляется возможность вырастить ценность продукта эволюционным методом, как можно скорее проходя этап проверки, внедрения и отбраковки нововведений.
Как наиболее эффективно использовать инструменты для зерокодинга?
Во-первых, очень важно выпускать версии продукта как можно быстрее, при этом эта версия, в идеале, должна быть очень плохой — это, конечно, совершенно контринтуитивно, но это так. Если вы выпустите версию, которая вас хоть немного устраивает, значит вы выпустили ее слишком поздно и получите гораздо меньше полезной информации о продукте, чем могли бы.
Во-вторых, нужно получать обратную связь от клиентов. К слову, 95% компаний не доходят до этого этапа, потому что застревают на первом этапе, пытаясь совершенствовать свои тестовые версии.
В-третьих, нужно безжалостно выкидывать то, что не работает, и продолжать пытаться создавать новые версии, пока задача не будет решена, что позволит вам представить эту версию заинтересованным лицам и начать генерировать денежные потоки.
Также есть один момент, который часто не раскрывается — когда версия продукта разрабатывается командой, когда в неё вкладывается много времени, сил и денег, возникает эмоциональная привязанность к итоговому продукту, даже если он крайне неудачен и не решает проблем, которые он призван решить. Если же об этом заявит клиент, то есть шанс и вовсе воспринять критику продукта на личный счет. Зерокодинг решает и эту проблему: так как вы вкладываете в версию продукта минимум усилий, то ее ценность лично для вас минимальна. Вас не будет волновать, что в этой версии кому-то что-то не понравилось, и вы без проблем сможете отбросить неработающее решение, больше к нему не возвращаясь, а также адекватно и непредвзято воспринимать критику в адрес продукта.
Приведем здесь аналогию, высказанную Байрамом Аннаковым, CEO одного из самых популярных travel-приложений App in the Air. Он называет MVP “голубой будкой”.
Представьте такую ситуацию: вы едете в метро и вам очень хочется в туалет. Вы дожидаетесь остановки, выбегаете и видите, что McDonald’s рядом нет, а есть только голубые будки. Вы понимаете, что если вы туда зайдете, то вы получите не очень качественный и травмирующий пользовательский опыт. Но вам очень нужно решить вашу проблему, и вы идёте и решаете ее.
Примерно так же дело обстоит и с MVP — это тоже своеобразные “голубые будки”. Компании-миллионеры начинали с тестовых версий, имевших крайне урезанный функционал (не говоря уже о дизайне), будь то Twitch, Facebook или Amazon, но эти версии работали и решали поставленные перед ними задачи.
10 инструментов для зерокодинга
Говорят, что Google Таблицы — это своеобразный “скотч”, из которого можно “склеить” всё, что угодно, и если вы не придумали, как реализовать прототип вашего решения в Таблицах, то вы, скорее всего, не очень хорошо понимаете, как реализовать его с помощью команды разработки. Google Таблицы являются обязательным инструментом для зерокодинга на уровне базы данных.
Этот инструмент упоминался нами выше. Tilda включает в себя огромное количество инструментов для сборки сайтов, позволяя создавать различные их элементы. Начиная лендингами и заканчивая личным кабинетом. Помимо этого, данный сервис выгодно отличается ценой и является самым удобным из существующих на данный момент инструментов для сборки сайтов.
Notion — инструмент для создания красивых и удобных документов, обладающий огромным количеством возможностей, вплоть до того, что сделанный с помощью Notion документ будет визуально подходить для создания лендинга без дополнительных вставок. TypeForm же — инструмент для создания красивых и удобных форм, имеющий в своем арсенале огромное количество шаблонов, подходящих для решения практически любых задач, связанных с формами.
ChatFuel и прочие конструкторы ботов для мессенджеров
Для работы в мессенджерах конструкторы ботов практически необходимы. Бот может последовательно вести пользователя по какому-то пути, заниматься продажей и так далее — это сильно упрощает работу в мессенджерах и расширяет возможности продукта по взаимодействию с пользователем.
WebFlow — это конструктор вёрстки, способный помочь, например, дизайнеру обойтись без фронтенд-разработчика. Этот инструмент автоматически верстает нарисованные элементы дизайна, а результат можно перенести в некоторые другие зерокодинг-инструменты для дальнейшей работы.
Airtable — это база данных, с которой очень просто и удобно работать, при этом она настолько же доступна, как и Google Таблицы, к которым вы наверняка уже привыкли. При определённых манипуляциях с таблицами внутри этого инструмента можно создавать различные интерактивные формы. Это может быть портфолио, галерея (да, туда можно загружать и картинки), интернет-магазин, календарь и так далее, при этом весь необходимый инструментарий находится внутри и имеется возможность очень гибкой настройки базы данных.
Существуют очень удобные возможности передачи данных внутри Airtable от одних пользователей к другим, начиная автоматической отправкой данных указанным пользователям по выбору и заканчивая отправкой выбранных данных всем, кто пройдёт по указанной ссылке. Существует даже возможность выстраивать на основе таблиц собственные интерфейсы! Результаты работы в Airtable также можно передавать в другие инструменты для зерокодинга, например, в указанный выше Tilda, и это можно сделать буквально за несколько минут.
Также в Airtable существует большой набор шаблонов, их можно использовать как для собственных проектов, так и для вдохновения, чтобы почерпнуть какие-то идеи для уже собственных шаблонов. Разумеется, у этого инструмента имеется ряд ограничений, но и их можно обойти с помощью уже других инструментов. Об этом ниже.
Stacker — удобный инструмент для взаимодействия с Airtable. Он позволяет с помощью создания личных кабинетов передавать некоторые данные из Airtable тем или иным пользователям, при этом доступ к данным можно очень гибко настраивать. Это очень сильно упрощает операции с данными, если у вас в проекте есть пользователи, которым необходимо предоставить доступ к тем или иным внутренним данным проекта (как пример, данные об участниках марафонов, необходимые организаторам этих марафонов).
Являясь зачастую недооцененным инструментом, Integromat, названный своими создателями “клеем Интернета”, позволяет связать работу огромного количества Интернет-сервисов в единую систему. Это дает возможность строить на основе взаимодействия нескольких сервисов, будь то электронная почта, базы данных, мессенджеры или что-то ещё. Также существует возможность подключения к этим сценариям собственных сервисов.
Glide — упомянутый раньше сервис для создания веб-страниц, имитирующих работу мобильного приложения. Внутри этого сервиса существует множество различных инструментов для создания и настройки интерфейса, а создать приложение можно путем простой загрузки данных из Google Таблиц. Существует возможность сохранить результат на рабочий стол и в дальнейшем обращаться к нему, как к мобильному приложению (как пример, Dribbble, будучи готовым приложением c более чем полумиллионом скачиваний, продолжает работать по тому же принципу).
Помимо того, внутри существует огромное количество готовых шаблонов.Таким образом, как можно видеть, для каждого из трех “слоев” продукта можно найти свой инструмент для зерокодинга и с помощью их комбинации очень быстро преодолеть путь от идеи до первой реализации, но если вам нужен какой-то особый функционал или если вы уперлись в одно из ограничений вышеупомянутых инструментов, то не спешите начинать искать команду разработки! Существует еще один инструмент, который может вам помочь.
Bubble — это очень масштабный инструмент, позволяющий работать со всеми тремя “слоями” продукта. Разумеется, что если рассматривать работу со слоями по отдельности, то Bubble будет справляться хуже, чем иные инструменты, заточенные под тот или иной слой, но в итоге Bubble дает возможность добиться гораздо более широкого функционала.
Разумеется, это не все инструменты для зерокодинга, доступные пользователям. Их огромное количество и новые появляются практически ежедневно. Будет полезно периодически следить за появляющимися инструментами и за изменениями в уже существующих: какое-то обновление в популярном инструменте может полностью изменить сам процесс зерокодинга.
Этой информации будет вполне достаточно, чтобы начать заниматься зерокодингом. Этот способ сборки проектов на данный момент продолжает становиться всё актуальнее и позволит вам сэкономить огромное количество времени, денег и сил, а также сделает вас более востребованным и сейчас, и в будущем. Удачи!
Хочешь научиться зерокодингу? Специально для тебя мы собрали мини-курс «Навыки: ZeroCoding!»
Кодинг — это просто, а вот программирование — совсем другое дело
В моей жизни был период когда я только начинал заниматься программированием. Я тогда думал: «Программировать так просто… Зачем люди специально ходят учиться этому?», но с опытом и образованием пришло понимание, что программирование — дело трудное.
То ли программирование — это легко, то ли я просто ничего не понимаю. MemeGenerator.net
Оценка своих успехов всегда была важна для меня, поскольку в конечном счете неважно, что думают остальные, важно что думаешь о себе ты. Анализируя свой опыт, я размышлял о сильных и слабых сторонах, образовании, практике и личностном росте. Этот процесс позволял мне учиться новому и размышлять о том, что значит быть программистом.
Кодинг, программирование и стучание по клавишам
«Опыт научил меня, что все это время я на самом деле лишь неистово стучал и бил по клавишам, а не программировал»
Программирование требует вдумчивого подхода и понимания различных типов данных, структур, а также технологий, ради обслуживания которых были придуманы языки программирования. Разница заключается преимущественно в выборе процесса, который используется в работе над конкретными задачами. Я уделял основное внимание не типам данных или алгоритмов, паттернам проектирования, производительности или чему-либо еще, связанному с качеством кода и приложений. Вместо этого, акцент делался на рабочем механизме и его эстетической составляющей, что часто приводило к появлению на свет огромных неукротимых чудовищ. Это сопровождалось лихорадочным тестированием выходных данных до тех пор, пока результат не начинал хотя бы немного походить на фичу. Все это давало мне некоторое ощущение того, что я занимаюсь программированием, однако мой подход нельзя было назвать прагматичным или продуманным.
Размышляя о данных
Структуры данных — область, благодаря которой я понял, насколько мне не хватает образования. Основная идея заключается в том, что у Вас есть различные способы хранения, вызова, сортировки и поиска по данным. Когда я только начинал программировать, я никогда не задумывался о различных задачах по работе с данными и производительности при работе с теми или иными типами данных. Очень часто я по умолчанию пользовался массивами (в том числе хэшами, json, словарями и другими терминами для наборов данных с доступом по именам полей) всякий раз, когда требовалось сохранить набор, отсортировать его или обработать в цикле.
Наборы, стэки и очереди казались мне очень интересными с точки зрения информатики, но когда дело доходило до их применения на практике в Ruby, мой энтузиазм уменьшался. В моем понимании стэки и очереди — одно и то же. Они позволяют вам получить информацию с разных концов набора данных. Единственное отличие очередей в том, что в них вы можете получить только объект, добавленный первым. Познакомившись с этими понятиями, я представлял их себе как помещение объектов в список обработки, в теории позволяющий снизить нагрузку и отправить несрочные задачи для фонового выполнения. Однако практическое применение на высокоуровневом языке программирования, таком, как Ruby выглядит практически бессмысленно, поскольку весь процесс, по сути, представляет собой заталкивание элементов в массив или изменение положения в нем.
К примеру, реализовать стек на Ruby можно с помощью вот такого простого кода:
С очередями все примерно также в плане типов создаваемых данных. Вдобавок к этому в Ruby есть свой класс для очередей:
Несмотря на свою простоту, по сути, перед нами обычный массив. В этом безусловно есть своя красота. В общем я могу представить себе их потенциальную пользу в скриптах командной строки, однако в остальном мне трудно навскидку придумать, где еще им можно найти применение.
Двоичные деревья поиска вызывают у меня неподдельный интерес из-за оптимизации времени поиска, которой они позволяют добиться и скорости получения выборки. На практике я часто с легкостью извлекал данные из массивов, но по мере увеличения размера массива поиск по нему начинает занимать много времени. Вот где в игру вступают бинарные деревья поиска, описанные в этом классном видео Гарварда. И хотя мне еще не довелось воспользоваться ими на практике, я очень хочу попробовать сделать это в реальном проекте чтобы сравнить этот алгоритм с нативными методами работы с массивами в Ruby и посмотреть, насколько быстро бинарные деревья будут работать в сравнении с обычными массивами или хэшами. В ходе их изучения и попытках найти способы и сценарии их применения, я нашел вот эти интересные статьи:
Удобство сопровождения
Мое первое веб-приложение было написано просто из рук вон плохо с точки зрения удобства сопровождения. Я совершенно не пользовался какими-либо требования к оформлению, паттернами проектирования, порядками определения методов, пространствами имен, объектами или моделями. Если бы мне пришлось вернуться к коду, чтобы пофиксить баги (которые, я уверен, там есть), вероятно проще было бы переписать все с нуля, нежели пытаться определить метод, вызывающий баг.
Плохой дизайн порождает спагетти-код. Спагетти код порождает страдания
Одной из проблем, решение которой давалось мне с трудом, были вложенные условные операторы и циклы. В таких циклах зачастую есть целый вагон if-утверждений и проверок, однако эта проблема на самом деле вытекает из другой — непонимания того, как следует правильно организовывать и разделять различные части программы. Я пытался выполнить все в больших методах и не обращал внимание на отдельные составные части, которые можно было использовать повторно или создавать в качестве модулей, расширяющих функциональность всех объектов или методов. Ниже реальный фрагмент программы, сокращенный и измененный чтобы сэкономить место.
Я конечно не собираюсь перекладывать вину на кого-то другого. Это код был написан мной, и отвечаю за него я, но все могло быть лучше, будь у меня наставник, возможность отправить код на обзор или pull-реквесты. Сегодня мне стыдно смотреть на это код, но есть и положительный момент, поскольку это говорит о том, насколько я вырос как разработчик. Следует также упомянуть о свободе и ограничениях, с которыми я столкнулся. Для этого проекта я был вынужден работать на LAMP-стеке, и вопрос этот обсуждению не подлежал. В то же время это было единственным ограничением. Мне не нужно было пользоваться паттернами проектирования или статистическими анализаторами и следовать каким-либо стилевым гайдам или политикам по формату кода. Это создает систему, в которой разработчик волен делать все, что посчитает нужным, но незнание о продолжительности жизни приложений и баг-фиксах может серьезно отразиться на конечном результате.
Со временем я стал по-настоящему ценить текстовые редакторы и экономию времени, которую они обеспечивают, анализируя потенциальные ошибки в коде по мере его написания. Но, кроме того, я также начал ценить и другие более мелкие, связанные с программирование подробности. Хорошо написанная кодовая база, следующая стандартам документации, четким требованиям и руководству по стилевому оформлению читается также бегло и просто как электронное письмо или интернет-статья (при условии, что иногда используемый язык программирования сам по себе этому способствует). В целом я также понял, что мне очень нравятся многие принципы, описанные в книге Clean Code A Handbook of Agile Software Craftsmanship Роберта Мартина и других авторов.
Разработка посредством тестирования
Преимущества разработки через тестирование, на мой взгляд, говорят сами за себя, но я понимаю, что не все согласны с тем, что тестирование несет какую-либо ценность для кодовой базы. Не буду спорить про обоснованность тестирования, но хочу поделиться с вами тем, как она помогла мне. Написание интеграционных и модульных тестов для кода еще до его фактического создания оказало мне немалую помощь. Этот подход позволил мне писать более чистый код, делать это эффективнее, и справляться с задачами, решение которых вызывает у меня затруднения.
Написание более чистого и эффективного кода находится на пересечении многих других хороших практик программирования. Разработка через тестирование, в частности, помогла мне улучшить читабельность, производительность и скорость написания. Я обнаружил, что научился писать код, который не нуждается в перепроектировании (или нуждается в нем гораздо меньше) перед отправкой в продакшн или систему контроля версий. Тестирование помогло мне не только снизить количество багов, но и количество времени, которое я затрачиваю на их отслеживание и исправление. Я обнаружил, что во время исправления бага я могу взять ожидаемый ввод или вывод, написать соответствующий тест, и поработать над тем, чтобы этот и все остальные тесты начали давать корректный результат. Это позволяет устранить баг, а код при этом продолжает делать то, что ему положено.
Разработка через тестирование помогает мне упорядочить мысли до начала написания методов или объектов. В случаях написания более комплексных фич, она помогает мне разбить ее на минимальный набор элементов, который необходим для ее корректной работы. Часто она напоминает мне о полезности написания псевдо-кода, поскольку текущие тесты рано или поздно теряют свою полезность и нуждаются в изменениях по мере развития самого кода. Однако в целом пограничные случаи есть пограничные случаи: продумывать их заранее во время создания кода гораздо сложнее. В сухом остатке я считаю, что разработка посредством тестирования помогает мне как программисту расти.
Зачем изучать программирование?
6 способов освоить кодинг дома
Интерес к программированию растет день ото дня. В марафоне по овладению навыками кодинга участвуют как взрослые, так и дети.Появляются языки программирования для различных категорий ИТ-специалистов — новичков, профессионалов, экспертов.
Что же побуждает массу людей становиться разработчиками? Частично увлечение программированием связано с насущной потребностью в развитии аналитического мышления, позволяющего эффективно решать проблемные задачи. Но не только это. С помощью кодинга можно создавать или осваивать системы, служащие для автоматизации и оптимизации рабочих процессов. А такие навыки особенно ценятся в современной бизнес-среде, где всем заправляют высокие технологии.
Вот почему в школах стали уделять особое внимание программированию. Ученикам младших классов эту задачу упрощают специальные приложения. В сети появилось множество сайтов, которые предлагают пройти образовательные курсы бесплатно или по доступной цене. Польза таких ресурсов очевидна как для кодеров-новичков, так и для опытных программистов, желающих пополнить багаж профессиональных навыков.
В процессе самостоятельного ИТ-образования вы сможете выбрать любую интересующую вас область:
Зачем изучать программирование?
Став программистом, вы сможете:
Способы освоения кодинга в домашних условиях
Для овладения искусством программирования вы можете воспользоваться одним из 6 вариантов обучения.
#1. Летняя школа / кампус
Чтобы отточить свои навыки программирования, новички и профессионалы могут посетить летнюю школу для программистов. В этих заведениях проводят курсы по теории анализа и обработки данных, машинному обучению, веб-разработке и многим другим сферам программирования. Некоторые летние школы позволяют проходить обучение в удобном для вас темпе с помощью заранее записанных лекций или плановых занятий.
#2. Книги по программированию
Вы можете постигать кодинг методом проб и ошибок. Но почему бы вместо этого не воспользоваться дельными учебниками по программированию?
#3. Обучающие видео
Видеоуроки позволяют получить полное представление о ключевых концепциях программирования. А с помощью графических иллюстраций вы сможете лучше понять все этапы.
#4. Игрушки STEM (для детей)
Точные науки сейчас в зените популярности. Игрушки STEM раздвигают привычные границы и бросают вызов многим стереотипам (таким, например, как “девочкам нечего делать в науке” или “нельзя смешивать математику и креативность”).
#5. Обучающие игры
В основном речь идет о детских играх для развития навыков работы с переменными и циклами. Но есть компьютерные развлечения и для взрослых, которые учат овладевать SQL, C++ и JavaScript.
#6. Развитие вычислительного мышления
Совершенствуйте свои навыки в таких сферах, как распознавание образов, алгоритмы и абстрактные представления. Помните, что в программировании есть свой жаргон. Например, вам придется сталкиваться с таким понятием, как циклы, независимо от того, каким языком вы будете пользоваться.
Обучение программированию в домашних условиях теперь более доступно благодаря образовательным технологиям, предлагающим широкий спектр курсов и программ. Во время пандемии, когда у людей появилось больше свободного времени, эти ресурсы помогут как новичкам, так и опытным программистам. Первые познакомятся с основами кодинга, вторые смогут отточить свое профессиональное мастерство.
Обострившаяся конкуренция на рынке труда требует от претендентов на ответственные должности постоянного обогащения набора ИТ-навыков. Неудивительно, что не только государственные мужи, но и многие родители ратуют за то, чтобы кодинг стал частью школьного обучения.



