<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Anton Vasin</title>
    <description>The latest articles on Forem by Anton Vasin (@antonvasin).</description>
    <link>https://forem.com/antonvasin</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F690121%2Fd17393d1-8849-462d-b4af-5f9f70220630.jpg</url>
      <title>Forem: Anton Vasin</title>
      <link>https://forem.com/antonvasin</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/antonvasin"/>
    <language>en</language>
    <item>
      <title>No Code tools are either hype or niche — you should opt for niche</title>
      <dc:creator>Anton Vasin</dc:creator>
      <pubDate>Thu, 16 Sep 2021 10:35:18 +0000</pubDate>
      <link>https://forem.com/readymag/no-code-tools-are-either-hype-or-niche-you-should-opt-for-niche-4nh2</link>
      <guid>https://forem.com/readymag/no-code-tools-are-either-hype-or-niche-you-should-opt-for-niche-4nh2</guid>
      <description>&lt;p&gt;No-code is a broad term. It describes a vast set of products that help end-users assemble web pages and applications without hiring developers.&lt;/p&gt;

&lt;p&gt;In recent years, it has also become an ideology of sorts (praised, for example, in this &lt;a href="https://www.forbes.com/sites/johneverhard/2019/01/15/what-really-is-low-codeno-code-development/?sh=20c508132a8e"&gt;Forbes&lt;/a&gt; column): a promise to get rid of all complications that are intertwined with IT development — its proverbial high costs, unpredictability, and difficulty to scale the teams fast enough.&lt;/p&gt;

&lt;p&gt;However, I’d argue the promise is often exaggerated, as the proposed approaches are oversold and/or not particularly new. Still, niche solutions from the no-code toolbox might get your tasks in certain pipeline parts done surprisingly well.&lt;/p&gt;

&lt;p&gt;So let’s pick apart the ideology and get into what startups and businesses should consider when thinking about no-code solutions.&lt;/p&gt;

&lt;h2&gt;
  
  
  No-code is not particularly new
&lt;/h2&gt;

&lt;p&gt;Speaking of no-code, we usually think of it as a recent development, a step made in the late 2010s to emancipate the world from expensive engineers. Be it Notion, Mailchimp, Voiceflow, or Bubble, companies associated with no-code approaches are usually recently found startups. But is the approach actually that recent?&lt;/p&gt;

&lt;p&gt;In fact, no-code-like tools were there from the very beginning of the computer era. Take Microsoft Excel: it’s basically a way to embark on visual point-and-click methods to create a simple database instead of using SQL. Or any graphical operating system like Windows, Mac OS, or Ubuntu: they give users a command line functionality combined with visual means, without the need to learn code-like commands.&lt;/p&gt;

&lt;p&gt;This point also perfectly illustrates the limitations of no-code. It is no coincidence that most operating systems still have a command line-based core and give their power users access to it: some things are just intrinsically difficult to visualize.&lt;/p&gt;

&lt;p&gt;Yes, a lot of people don’t touch the Mac OS X Terminal and never will, but in most cases, somebody terminal-savvy needs to be around to perform any actions above a certain level of complexity.&lt;/p&gt;

&lt;h2&gt;
  
  
  No-code limits patterns of thought
&lt;/h2&gt;

&lt;p&gt;The visualization and simplification, these pillars of no-code, come at a price: no-code tools usually nudge a client to a limited number of patterns — in fact, that’s exactly what allows them to get rid of the code.&lt;/p&gt;

&lt;p&gt;Say, only a certain number of product management techniques go hand in hand with no-code task management tools such as, say, Trello. As a result, the idea itself might become stale. &lt;/p&gt;

&lt;p&gt;The problem with patterns is that they deny you the possibility of learning. A salesperson can’t become an expert in business only by using landing page presets. The code usually gives you almost infinite possibilities of configuring the system (open-source culture and the competition of approaches, programming languages and libraries usually guarantee it in any given field).&lt;/p&gt;

&lt;p&gt;It might not be that important for the first project, but crucial for the growth and future of any professional. There are some domains such as computations or high-load systems performance where you can not simply ‘no-code’ your way out of complexity.&lt;/p&gt;

&lt;p&gt;That’s why I and my team at &lt;a href="https://readymag.com?utm_source=dev.to&amp;amp;utm_medium=pr&amp;amp;utm_campaign=nocode_tools"&gt;Readymag&lt;/a&gt;, a browser-based design tool that helps create websites, portfolios and all kinds of online publications without coding try to avoid staleness at all costs in our solutions, never limiting our users to presets, always giving them access to a clean canvas. We also give our users tools for coding.&lt;/p&gt;

&lt;h2&gt;
  
  
  Good tools have precise scope
&lt;/h2&gt;

&lt;p&gt;However, I firmly believe that no-code approaches are great when it comes to a narrow-scope task. Take Zapier, a tool for API integration, that we actually use in Readymag; or Airtable, a tool to automate the creation of CMS.&lt;/p&gt;

&lt;p&gt;The idea here is not to waste your time on something that can be easily automated and configured, still use the power of engineering for the necessary parts. &lt;/p&gt;

&lt;p&gt;Another example is specialized e-commerce tools such as Stripe or Ecwid. Instead of creating our own e-commerce sub-tool, we at Readymag have integrated them. We try to leave each part of the pipeline to the specialized tool, be it code or no-code. &lt;/p&gt;

&lt;p&gt;And we think of Readymag as another such tool — a web editor, great for interactive graphics and interactive UX, but possibly powered up with additional APIs or custom code for larger and more complex projects. A full-fledged no-code approach is limiting, but a specific no-code tool might significantly increase your development process. &lt;/p&gt;

&lt;p&gt;Summing it up — never buy into no-code as a mantra, but always keep an eye out for its niche practical uses.&lt;/p&gt;

</description>
      <category>readymag</category>
      <category>nocode</category>
      <category>webdesign</category>
    </item>
    <item>
      <title>What makes Feature Flags a path to faster and safer development</title>
      <dc:creator>Anton Vasin</dc:creator>
      <pubDate>Fri, 20 Aug 2021 12:07:22 +0000</pubDate>
      <link>https://forem.com/readymag/what-makes-feature-flags-a-path-to-faster-and-safer-development-obd</link>
      <guid>https://forem.com/readymag/what-makes-feature-flags-a-path-to-faster-and-safer-development-obd</guid>
      <description>&lt;p&gt;&lt;a href="https://martinfowler.com/articles/feature-toggles.html"&gt;Feature Flags&lt;/a&gt; (or Feature Toggles) is a way of working with code that allows teams to modify system behavior, without changing existing or deploying new code. It allows teams to handle deployments and new releases separately,  and iterate rapidly.&lt;/p&gt;

&lt;p&gt;Feature Flags vary by usage and context. Here we’ll look into three of the most powerful techniques that you can leverage:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Trunk-based development&lt;/li&gt;
&lt;li&gt;Uncoupling deployments and releases&lt;/li&gt;
&lt;li&gt;Living on your product (aka &lt;a href="https://en.wikipedia.org/wiki/Eating_your_own_dog_food"&gt;dogfooding&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When getting started with this approach, your product doesn't necessarily have to be complex. Also the solution you choose doesn't have to cover every possible use case, at least not from day one. Teams can use popular SaaS solutions, open-source projects or just start with a simple JSON file in their repo, so don't be intimidated by how much is possible. The most important thing is to change your thinking when it comes to writing and releasing new code.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://trunkbaseddevelopment.com"&gt;Trunk-based development&lt;/a&gt; enables engineers to check unfinished features into the main branch and safely release them into production at any time. When working this way, teams develop code in short-lived branches that enable developers to merge and deploy safely. This technique helps cut the time it takes to merge new code by avoiding the big, complex conflicts usually associated with long-lived feature branches. Checking in code regularly guarantees that teams can move quickly, without obstacles. To do this, teams use feature flags to disable unfinished code until it's time for release. When the feature is ready, simply enable the flag and release the new feature into the world. This allows teams to separate releases from the act of merging code. It also means moving from long development cycles to a series of short ones. Instead of big changes being merged at once, there are now lots of small iterative changes that are merged and deployed often, preferably many times a day. This helps teams move faster and safer.&lt;/p&gt;

&lt;p&gt;Being able to tie a particular feature to a particular user, or a group of users, allows you to verify your ideas cheaply and safely. Аlmost every new feature in &lt;a href="https://readymag.com?utm_source=dev.to&amp;amp;utm_medium=pr&amp;amp;utm_campaign=feature_flags"&gt;Readymag&lt;/a&gt; is released for internal users first — so our design team can test them thoroughly. It is especially powerful if you use your own product in your daily work, because your beta testers are right there working alongside you. Get feedback fast and test your ideas before you release a feature for the general public.&lt;/p&gt;

&lt;p&gt;Feature Flags allow easy experimentation. Often there is some idea, maybe a concept for a new feature or a smart way of improving existing code, that needs to be tested. Using Feature Flags allows developers to explore these ideas in a real production environment without fear of breaking something. Try things out and see what's working, and what's not, then decide how to act on it later. Combine this way of working with monitoring and product analytics, and you'll get a really powerful combo!&lt;/p&gt;

&lt;p&gt;So let's illustrate all of this with a real world example. Recently we launched new subscription plans for Readymag. To implement them, we needed to adjust some parts of our application that control available features and what limits are set for each plan. This is where Feature Flags help immensely. First, we added a new Feature Flag to our system. From there we wrote new code and adjusted the existing behaviour behind the flag. We did this over the course of many iterations, continuously deploying new changes into production. For example, the front end looked like this:&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;Here, we conditionally render a new part of the UI. Existing code works as usual until the flag is enabled.&lt;br&gt;
Since we have two different components in this example, the team working on this can safely work on a new interface without disrupting the existing flow.&lt;br&gt;
Elsewhere in our system we would have code like this, implementing another part of this update:&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;Of course it is always a good idea to test your code, especially when using something as dynamic as Feature Flags. So we did just that:&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;When we were ready to launch the update, we just enabled this flag and the feature was rolled out. Not only did this approach allow us to merge and deploy code continuously, it also made it possible to enable new code branches in several services at once without coordinated deployments. &lt;/p&gt;

&lt;p&gt;Here are some best practices around Feature Flags that we use in Readymag:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Feature Flags should have a short life cycle—they are used only before a feature is released, not to control long-term product behaviour.&lt;/li&gt;
&lt;li&gt;Always ask yourself if it would be easy to delete a particular flag later.&lt;/li&gt;
&lt;li&gt;Each Feature Flag is responsible for a single feature. It should have a name that is commonly understood.&lt;/li&gt;
&lt;li&gt;All flags should have similar semantics: all flags enable something, they don’t disable features.&lt;/li&gt;
&lt;li&gt;Sometimes it is better to duplicate code to ensure clean removal of the flag when the feature is released.&lt;/li&gt;
&lt;li&gt;Flags can and should be used for experimentation and to verify hypotheses.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So, the next time you're battling with some exhausting merge conflict, or you find your team holding on to some code because it’s too early for it to be released, or you wish that your team could try out some idea but it’s too dangerous,  try using Feature Flags. Solve your problem at hand, and hopefully change your whole product development cycle for the better.&lt;/p&gt;

</description>
      <category>featureflags</category>
      <category>readymag</category>
      <category>experimentation</category>
      <category>trunkbaseddevelopment</category>
    </item>
  </channel>
</rss>
