<?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: Peter Ehrenberg</title>
    <description>The latest articles on Forem by Peter Ehrenberg (@dipe).</description>
    <link>https://forem.com/dipe</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%2F564574%2Fed7567e4-95c6-496d-a3c9-db392f1f7ba6.jpeg</url>
      <title>Forem: Peter Ehrenberg</title>
      <link>https://forem.com/dipe</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/dipe"/>
    <language>en</language>
    <item>
      <title>More women in the teams! That's better. For men too.</title>
      <dc:creator>Peter Ehrenberg</dc:creator>
      <pubDate>Fri, 05 Mar 2021 16:21:37 +0000</pubDate>
      <link>https://forem.com/studio_m_song/more-women-in-the-teams-that-s-better-for-men-too-1ihl</link>
      <guid>https://forem.com/studio_m_song/more-women-in-the-teams-that-s-better-for-men-too-1ihl</guid>
      <description>&lt;p&gt;I'm not talking about football, I don't know anything about that. I'm talking about teams that want to build products that customers love.&lt;/p&gt;

&lt;p&gt;More than once I've seen top-class teams made up of alpha males fail miserably. Individually, they might have succeeded. But as a team? Tunnel vision coupled with strong opinions can quickly become a problem.&lt;/p&gt;

&lt;p&gt;With us knowledge workers, mixed teams are simply better. Young, old, man, woman, diverse, different cultures, colourful: this enriches perspectives, experiences and talents. The team can draw on all this. And it is precisely this that strengthens creativity, imagination and ability as a source of ideas, approaches and solutions. &lt;/p&gt;

&lt;p&gt;Working in self-organised teams is always an imposition and demands a lot from the team members: openness, courage, respect, commitment and focus. We all know how exhausting the storming phase in the team is. But even in this phase, a diverse team can draw on its many strengths, complement each other and thus be superior. &lt;/p&gt;

&lt;p&gt;Honestly, I (as a man) have no desire to work in an all-male team anymore. For me, that has the mustiness of a losers' locker room. Quite selfishly, I would like to see: more women in the teams!&lt;/p&gt;

&lt;p&gt;So men: #SheCodedAlly&lt;/p&gt;

</description>
      <category>wecoded</category>
    </item>
    <item>
      <title>Micro frontends with Feature Hub</title>
      <dc:creator>Peter Ehrenberg</dc:creator>
      <pubDate>Thu, 21 Jan 2021 15:54:45 +0000</pubDate>
      <link>https://forem.com/studio_m_song/micro-frontends-with-feature-hub-3153</link>
      <guid>https://forem.com/studio_m_song/micro-frontends-with-feature-hub-3153</guid>
      <description>&lt;p&gt;The idea of &lt;a href="https://micro-frontends.org/"&gt;micro frontends&lt;/a&gt; is to split a web app into several smaller applications and still provide seamless integration for the user.&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://feature-hub.io/"&gt;Feature Hub&lt;/a&gt; is an &lt;a href="https://feature-hub.io/docs/getting-started/motivation#our-requirements-for-micro-frontends"&gt;opinionated&lt;/a&gt; JavaScript implementation of the micro frontends approach to creating scalable web applications with multiple teams and different technologies.&lt;/p&gt;

&lt;p&gt;Motivation for introducing micro frontends can be:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;divide large, monolithic applications into several smaller self-contained applications&lt;/li&gt;
&lt;li&gt;facilitate more frequent deployment through small, independent artifacts&lt;/li&gt;
&lt;li&gt;create the ability to update, modernise or even rewrite parts of the front-end more incrementally than before 
smaller, more modular and better maintainable code bases &lt;/li&gt;
&lt;li&gt;scalable organisations through decoupled, autonomous teams with end-to-end responsibility&lt;/li&gt;
&lt;li&gt;allow a vertical cut along user features (instead of along technical levels)&lt;/li&gt;
&lt;li&gt;bring together different technologies, e.g. a classic (non-headless) CMS and SPAs by avoiding using the CMS as application platform&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  The Feature Hub approach
&lt;/h1&gt;

&lt;p&gt;Feature Hub comes with three basic concepts:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Integrator:&lt;/strong&gt; The integrator assembles the web page from several applications (Feature Apps) and places them into the content on the page.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Feature App:&lt;/strong&gt; In the context of Feature Hub, a micro frontend is called a Feature App. A Feature App encapsulates a UI feature that can be assembled and reused. Feature Apps can share state (via Feature Services) to enable a consistent user experience.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Feature Service:&lt;/strong&gt; A Feature Service provides a shared state to the Feature Apps to ensure a consistent user experience. They also allow encapsulation of browser APIs and resources that are not intended to be shared (e.g. history, local storage).&lt;/p&gt;

&lt;p&gt;Feature Hub supports the use of any front-end technologies such as Vue.js, Angular or React. Feature Hub also allows different technology choices for the integrator as well as for the Feature Apps. While it is possible to create a custom solution for the integrator tailored to the UI frameworks or libraries of choice, for both React.js and Web Components, Feature Hub provides out-of-the-box solutions.&lt;/p&gt;

&lt;p&gt;For their daily work Feature App teams typically build a simplified integrator, which only contains what their FeatureApp needs to run and be tested. This way they do not constantly need to rely on an integration environment, but using their own independent “development integrator”.&lt;/p&gt;

&lt;p&gt;Feature Apps should be self-contained, end-to-end and with sufficiently user value or business value, so that a team can develop and operate the application autonomously and independently. Connections to backend systems are in the responsibility of the respective Feature App (and usually done via a Backend for Frontend/BFF). FeatureApps can and should be deployed independently from each other.&lt;/p&gt;

&lt;p&gt;The Feature Services are rather lean and only share specific state information between Feature Apps. Feature Services provide a versioned API to enable backward compatibility and thus flexible and decoupled implementations of different Feature Apps.&lt;/p&gt;

&lt;h1&gt;
  
  
  Our experience after 2 years Feature Hub
&lt;/h1&gt;

&lt;p&gt;The Feature Hub has been created by &lt;a href="https://sinnerschrader.com/"&gt;SinnerSchrader&lt;/a&gt; as part of our client work in 2018. In order to facilitate collaboration and reusability, we decided to publish the core functionality of our micro frontend solution as open source (MIT license).&lt;/p&gt;

&lt;p&gt;In our client project the integrator in the production environment based on an Enterprise Content Management System/CMS (Adobe Experience Manager/AEM in our case) using Feature Hub.&lt;/p&gt;

&lt;p&gt;A nice special feature of our CMS solution is that it allows the author/editor to compose a page equally from modular content elements and also from various Feature Apps. For the end-user of the page, the transitions between a content element and a Feature App should not be visible.&lt;/p&gt;

&lt;p&gt;We are currently using the React integrator only. It is capable of rendering Feature Apps which are also built using React on the server as well as on the client (server side rendering/SSR). This enables us to meet the search engine optimization (SEO) requirements of our client.&lt;/p&gt;

&lt;p&gt;In the meantime, several teams from the client's company are contributing to our client project worldwide with their market- and use-case-specific Feature Apps using micro frontends based on Feature Hub. Our client's project git has in between several hundred users and over a hundred repositories.&lt;/p&gt;

&lt;p&gt;Introducing micro frontends definitely come with additional technical complexity. Before you introduce this into your software, you should definitely ask yourself two questions:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Is it also OK from your user's point of view to split different functions into separate pages so that you don't need deep UI integration?&lt;/li&gt;
&lt;li&gt;Do you have still unused options to structure your software in such a way that smaller units can be developed and deployed independently from each other?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;In these cases, if I were you, I would try these options first instead the micro frontend approach.&lt;/p&gt;

&lt;p&gt;But for all the technical complexity of our project at this scale, our insight is that by far the biggest challenge, and at the same time the biggest opportunity for an optimal user experience, is in the interaction, collaboration and alignment between the different business parties involved.&lt;/p&gt;

&lt;h1&gt;
  
  
  How to start?
&lt;/h1&gt;

&lt;p&gt;If you want to quickly try out micro frontends based on Feature Hub, as part of the &lt;a href="https://feature-hub.io/"&gt;documentation&lt;/a&gt; there is a simple demo (todoMVC) available as &lt;a href="https://feature-hub.io/docs/getting-started/demos"&gt;source&lt;/a&gt; and &lt;a href="https://feature-hub.io/todomvc/"&gt;live&lt;/a&gt;. &lt;/p&gt;

&lt;h1&gt;
  
  
  References
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://feature-hub.io/"&gt;https://feature-hub.io/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.thoughtworks.com/radar/techniques/micro-frontends"&gt;https://www.thoughtworks.com/radar/techniques/micro-frontends&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://martinfowler.com/articles/micro-frontends.html"&gt;https://martinfowler.com/articles/micro-frontends.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://micro-frontends.org/"&gt;https://micro-frontends.org/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.thoughtworks.com/de/radar/platforms/cms-as-a-platform"&gt;https://www.thoughtworks.com/de/radar/platforms/cms-as-a-platform&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#FCKNZS!
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>react</category>
      <category>node</category>
    </item>
  </channel>
</rss>
