<?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: GPI Engineering</title>
    <description>The latest articles on Forem by GPI Engineering (@gpi_engineering).</description>
    <link>https://forem.com/gpi_engineering</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%2Forganization%2Fprofile_image%2F2522%2F22b4e0d0-74d6-489e-991e-a4eeeb2de66e.png</url>
      <title>Forem: GPI Engineering</title>
      <link>https://forem.com/gpi_engineering</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/gpi_engineering"/>
    <language>en</language>
    <item>
      <title>Three ways the lockdown improved our agile culture</title>
      <dc:creator>Tom Wright</dc:creator>
      <pubDate>Tue, 07 Jul 2020 08:22:30 +0000</pubDate>
      <link>https://forem.com/gpi_engineering/three-ways-the-lockdown-improved-our-agile-culture-e8g</link>
      <guid>https://forem.com/gpi_engineering/three-ways-the-lockdown-improved-our-agile-culture-e8g</guid>
      <description>&lt;p&gt;&lt;em&gt;This article was written by &lt;strong&gt;Paul Boylan&lt;/strong&gt;. Paul is a Scrum Master at GPI, establishing a supportive environment where the development team can work at its best.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;At the end of our Coleridge sprint on the Horizon project, we had our first major demo for the leadership team. Hardly settled into our new offices, we were a little in denial we would soon be working out of our homes. Before the end of our Duxford sprint we were all in lockdown, and we faced the challenge of sprints Ely through Hauxton as individuals.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Self-organisation
&lt;/h3&gt;

&lt;p&gt;This was a new team, who hadn’t been working together for long. Normally a challenging time. Still in the polite stage, differences in working styles were showing as a theme in retrospectives. Sending everybody home would likely exacerbate this. In fact, with change now inevitable for everyone, I now saw the team finding ways to work. Practice, the ‘how’, emerged from the team.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Stand-up engagement
&lt;/h3&gt;

&lt;p&gt;I have three stand up meetings each morning. I am not in the same room as any of the teams. They might be split across a couple of locations, but they are in a group. This changed with lockdown. The purpose of the stand-up meeting is for the developer to tell their own story to themselves, but also to the team. It is easy to slip into the habit of making each update sound like it is to the Scrum Master, especially when the Scrum Master is the most remote. It is an update to the person who wasn’t here yesterday and won’t be here today. Unexpectedly, with everyone working from home, a more complete circle was formed, increasing participation and collaboration.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Story selection
&lt;/h3&gt;

&lt;p&gt;Another area refreshed by the lockdown has been story selection. Over time, the cadence of sprints begins to work against value. We want to deliver the highest value possible each sprint, but we know there is a next sprint coming. In lockdown, I have noticed a new importance in having something great to show. We began to visualize the product, one sprint on, either with or without a feature. It is easy to imagine a craving for interaction and a need for purpose as driving this, but another idea is that we are living with more ‘cannot do’ now and this has sharpened our focus on the ‘can do’: what if the user can do this… or this?&lt;/p&gt;

&lt;p&gt;If agile thrives in environments of adversity, unpredictability, and change, then it follows that there is a risk that it loses ground where these are absent. The challenge, I think, is to keep with us the spirit of these times.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;How has lockdown affected your agile practice? Let me know in the comments below.&lt;/em&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Accelerating data ingestion with Bartscript</title>
      <dc:creator>Tom Wright</dc:creator>
      <pubDate>Tue, 23 Jun 2020 08:28:46 +0000</pubDate>
      <link>https://forem.com/gpi_engineering/accelerating-data-ingestion-with-bartscript-4jf3</link>
      <guid>https://forem.com/gpi_engineering/accelerating-data-ingestion-with-bartscript-4jf3</guid>
      <description>&lt;p&gt;Pricing and reimbursement data are the lifeblood of the pharmaceutical industry. The maintenance of GPI Pulse involves retrieving, standardising, and interpreting data from over 100 different sources. Automating this data collection and processing is vital to our commercial success.&lt;/p&gt;

&lt;p&gt;Historically, our data processing pipelines have been built by developers. These work well, until the data source changes. Unfortunately, when the source drifts, it takes a developer to make the corresponding adjustment to the pipeline.  One of our significant challenges in the engineering team has been balancing this sort of maintenance with feature development. At the same time, the analysts were facing delays.&lt;/p&gt;

&lt;p&gt;Our response has been to invest in bespoke tooling for our data analysts. Taking the lessons learnt from the development of our traditional pipelines, we have been able to produce a generic, customisable pipeline. This approach has put our analysts back in control of data processing and increased the agility with which we can respond to upstream changes in data formats.&lt;/p&gt;

&lt;p&gt;Central to this strategy has been the development of an internal “Domain Specific Language” (DSL). For the sake of familiarity, we modelled this new language on Excel formulas. This language allows for the declarative articulation of a group of data transformation actions, arranged in a sequence of phases. We call this new language “Bartscript” in honour of the contractor who lead the development efforts.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--vRBy187c--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/j8moe3ryk9quj0i1qcm6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vRBy187c--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/j8moe3ryk9quj0i1qcm6.png" alt="A simplified example of Bartscript in action"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Even though it is so niche, Bartscript has many of the features you’d expect from a fully-fledged programming language:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Branching logic&lt;/li&gt;
&lt;li&gt;Loosely typed and liberal when it comes to coercion.&lt;/li&gt;
&lt;li&gt;Full sandboxing&lt;/li&gt;
&lt;li&gt;Comprehensive error handling&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Despite this sophistication, Bartscript remains deceptively simple to use. This simplicity has facilitated a team of two analysts and one developer to automate sources at a rate of 5 per sprint. For comparison, under the old approach, we would have expected one developer and one analyst to work on one country full time for one sprint (give or take). In other words, we have reduced development time by two thirds.&lt;/p&gt;

&lt;p&gt;The real test will come when one of the pipelines requires some modification due to a change in its source. We hope that, in many cases, the analysts can make the necessary changes with minimal support from the developers. We are still in the early days, but the initial signs are good.&lt;/p&gt;

</description>
      <category>data</category>
      <category>dsl</category>
      <category>pipelines</category>
      <category>bartscript</category>
    </item>
  </channel>
</rss>
