<?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: Sten</title>
    <description>The latest articles on Forem by Sten (@stenpittet).</description>
    <link>https://forem.com/stenpittet</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%2F64296%2F3449d53e-0311-4e44-b50b-432d58cf300d.png</url>
      <title>Forem: Sten</title>
      <link>https://forem.com/stenpittet</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/stenpittet"/>
    <language>en</language>
    <item>
      <title>How to build a Pragmalith</title>
      <dc:creator>Sten</dc:creator>
      <pubDate>Fri, 10 Apr 2020 06:29:25 +0000</pubDate>
      <link>https://forem.com/tability/how-to-build-a-pragmalith-5egf</link>
      <guid>https://forem.com/tability/how-to-build-a-pragmalith-5egf</guid>
      <description>&lt;p&gt;This is a long overdue post, and I'm going to expedite it because otherwise I'll never post it. There's a heated debate going on right now about microservices vs. monoliths and I'm here to introduce you my answer.&lt;/p&gt;

&lt;p&gt;BEHOLD. THE PRAGMALITH.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;What is a Pragmalith?&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;A Pragmalith is boring. It's a way to build your app that embraces your ability to fuck up and tries to minimize the impact of your mistakes. It also recognizes that discipline is hard, so why not force good practices on us?&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;The rules of the Pragmalith&lt;/strong&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Choose the familiar rather than the exciting
&lt;/h3&gt;

&lt;p&gt;Pick the edge cases and bugs that you know rather than having to discover new ones. Treat innovation like a rare and precious gem. Read &lt;a href="https://mcfunley.com/choose-boring-technology"&gt;Choose Boring Technology&lt;/a&gt; and pass it around.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Don't trust yourself
&lt;/h3&gt;

&lt;p&gt;Document things. Write comments. Write tests. Don't SQL your prod database. Put safeguards in place to save you from the day you'll be too tired to care about discipline.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Don't be clever
&lt;/h3&gt;

&lt;p&gt;Do things the boring way. Clever code won't save you CPU cycles but it will kill many brain cells — including yours when you'll come back to it after a year.&lt;/p&gt;

&lt;p&gt;(It may also cause hair losses via forced pull action).&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Split your frontend from your backend
&lt;/h3&gt;

&lt;p&gt;Backends and frontend have different lifecycles. Keep them separate to minize risks. It will also prevent some spaghetti shortcuts where build backend logic in your views.&lt;/p&gt;

&lt;p&gt;This here is the only rule where I'm calling for something specific. And this is coming from my experience. I worked as a dev and as a product manager and I'm absolutely convinced that separating the frontend cycle from the backend cycle works best for everyone (I can expand more on this if you really want to — just ask in the comments).&lt;/p&gt;

&lt;h3&gt;
  
  
  5. The default answer to creating a new service should be "No"
&lt;/h3&gt;

&lt;p&gt;If you think you need a new microservice then you probably don't need it. New services or repositories should be painkillers, not vitamins.&lt;/p&gt;

&lt;p&gt;E👏v👏e👏r👏y👏  new service will add a new set of 👏pro👏blems. Testing, deploying, backing up, testing the backups... Adding more services is expensive and brutal. And it should be weighed against a real pain felt today (slow release cycles, devs stepping on each other, etc...)&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Architecture vs. practices&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;A Pragmalith is not just about how you structure your services. It's about having a certain mindset where you try to minimize headaches and avoid unnecessary complexity.&lt;/p&gt;

&lt;p&gt;Do the things you have to, not the things you want to.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Why not a Monolith?&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Monoliths have their own problems at scale and you'll need to break them up at some point. But really, it's about being pragmatic and do things that work for you.&lt;/p&gt;

&lt;p&gt;I don't trust myself to have the discipline to avoid shortcuts in the code. That's why our backend is a REST API in a separate codebase: it has clear inputs and outputs, and you can't cheat in the views. The separation of concerns is forced on us.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;What's our Pragmalith at Tability?&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Rails 5 API backend with Postgres&lt;/li&gt;
&lt;li&gt;React* for the web app frontend&lt;/li&gt;
&lt;li&gt;React Native* for the mobile app&lt;/li&gt;
&lt;li&gt;Gatsby for the website&lt;/li&gt;
&lt;li&gt;A Rails microservice for the Jira Connect App&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;* Items with a star mean an innovation token was used at the time&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;React was a new framework at the time, thus being an &lt;a href="https://medium.com/@stenpittet/lessons-from-building-a-fresh-react-native-app-in-37-days-9492bade5145"&gt;expensive innovation token to use&lt;/a&gt;. BUT, it was going to remove a lot of pain for our small team. We could re-use a lot of the web app code for the mobile app, and once I got the hand of React it became quite easy to approach Gatsby.&lt;/p&gt;

&lt;p&gt;But all the other stuff is boring. I really want to try Elixir and Phoenix, to learn more about Kubes, to explore all that AWS has to offer. But it would kill us.&lt;/p&gt;

&lt;p&gt;We'd have an exciting tech but a boring product.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;The Pragmalith hates fights&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;A Pragmalith is something that works for &lt;em&gt;you and your org&lt;/em&gt;. The threshold of what's boring moves with the competencies and experience of the team.&lt;/p&gt;

&lt;p&gt;I'm out ✌️&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>devops</category>
    </item>
    <item>
      <title>How we replaced (part of) Intercom with 100* lines of code</title>
      <dc:creator>Sten</dc:creator>
      <pubDate>Tue, 27 Aug 2019 12:37:39 +0000</pubDate>
      <link>https://forem.com/tability/how-we-replaced-intercom-with-100-lines-of-code-ok-it-was-105-lines-58e6</link>
      <guid>https://forem.com/tability/how-we-replaced-intercom-with-100-lines-of-code-ok-it-was-105-lines-58e6</guid>
      <description>&lt;p&gt;Edit: less clickbaity title&lt;/p&gt;

&lt;p&gt;(*ok, it was 105 lines)&lt;/p&gt;

&lt;p&gt;We started to use Intercom the classic way: we wanted a simple way for people to reach out to us. Whether they were curious visitors or existing users, Intercom gave us a great way to interact with folks and have rapid feedback.&lt;/p&gt;

&lt;p&gt;So, to be clear, we love Intercom ❤️, and they're an inspiration in many aspects.&lt;/p&gt;

&lt;p&gt;But we started to see issues with feature announcements:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Users would have a hard time clearing messages.&lt;/li&gt;
&lt;li&gt;New posts would pop up in odd situations.&lt;/li&gt;
&lt;li&gt;It wasn't possible to find old announcements if you missed it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I'm sure that a lot of it was due to a poor configuration on our end. But even if we got better at posting, it still would not solve the last issue.&lt;/p&gt;

&lt;p&gt;Replacing Intercom with another solution has been a real "scaling small" exercise. We wanted to be able to keep moving fast and letting users know about improvements, but we also had to manage costs — we could not justify spending more than a couple of days on an alternative.&lt;/p&gt;

&lt;h2&gt;
  
  
  Looking for a better solution
&lt;/h2&gt;

&lt;p&gt;I've been burned several times jumping straight into code, and I learned the hard way that you should step on the brakes first if you want to cross a wide road.&lt;/p&gt;

&lt;p&gt;We have a simple way to evaluate options when we're about to build something significant. First, we look at the core capabilities:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Customers can learn about new features.&lt;/li&gt;
&lt;li&gt;Customers can find old announcements.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Then we list some constraints:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Less intrusive&lt;/li&gt;
&lt;li&gt;Cheap implementation costs&lt;/li&gt;
&lt;li&gt;Low management overhead&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These 2 lists are enough to start outlining options. It's crucial to add the status quo as the first option because you need to make sure that you're improving things. If you just compare a set of new solutions you risk picking an approach that might degrade the current experience. &lt;/p&gt;

&lt;p&gt;So, here's what the first set of options looked like:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Keep using Intercom (status quo)&lt;/li&gt;
&lt;li&gt;Hardcode announcements&lt;/li&gt;
&lt;li&gt;Build our own announcement feature&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I put them in a table and made a quick comparison to see if option 2 or 3 would be satisfying.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fnl58epiempcude6qc7tf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fnl58epiempcude6qc7tf.png" alt="None of the options could fit all criterias"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;None of the proposed solutions were satisfying. Hardcoding posts would be super annoying to manage, and building a full service was way too expensive.&lt;/p&gt;

&lt;p&gt;We kept looking around for inspiration, and, not without a bit of irony, the answer came from Intercom itself.&lt;/p&gt;

&lt;h2&gt;
  
  
  The lightbulb moment💡: using what we had
&lt;/h2&gt;

&lt;p&gt;The goal was to let customers know about new features — nothing more. But we were so focused on the current experience (everything in-app) that we did not look for a different approach.&lt;/p&gt;

&lt;p&gt;Well, Intercom has a small bell icon in their navbar for feature announcements. It gets a red dot when there are new things to read about, and clicking on the bell takes you to their blog. No intrusive popup, no messages to dismiss.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F74oqjy1mkvx1giiqnk2v.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F74oqjy1mkvx1giiqnk2v.jpg" alt="Click on the bell, and you're taken to the Intercom blog."&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That was perfect.&lt;/p&gt;

&lt;p&gt;All our feature posts were already on our blog, and this is where customers could also find old posts. So we just had to send them there to read about what we've done to improve Tability.&lt;/p&gt;

&lt;p&gt;No backend required to manage posts. No need to create a fancy listing in the UI. We just needed a way to show that new blog posts had been posted.&lt;/p&gt;

&lt;p&gt;That was done simply by using localStorage to capture the last time they clicked on the link to the blog. Sure, the notification would pop up again if you switched browser for the same account, but that's still an edge case right now (but we'll fix that later).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Faxvalcl59rfeopaogpzs.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Faxvalcl59rfeopaogpzs.jpg" alt="Our own announcement UX for Tability"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  105 lines of code later
&lt;/h2&gt;

&lt;p&gt;We're pretty happy with the result and we will iterate on the implementation to improve it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;We still have to store the timestamp of the last blog update somewhere in on frontend (we deploy multiple times a day so still manageable).&lt;/li&gt;
&lt;li&gt;Having the notification popping up again in different devices will end up being annoying when we launch our mobile app.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It's not what we originally had in mind, but it does the right job: reducing noise while letting users learn about improvements.&lt;/p&gt;

&lt;p&gt;The lesson learned? Focusing on what the customer needs to do, rather than the experience you want to ship lets you be more creative.&lt;/p&gt;

&lt;p&gt;(Also, 105 lines could have been shorter, but Redux...)&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Automating focus using Continuous Delivery principles</title>
      <dc:creator>Sten</dc:creator>
      <pubDate>Wed, 01 May 2019 10:00:30 +0000</pubDate>
      <link>https://forem.com/stenpittet/automating-focus-using-continuous-delivery-principles-5fj3</link>
      <guid>https://forem.com/stenpittet/automating-focus-using-continuous-delivery-principles-5fj3</guid>
      <description>&lt;p&gt;Being a small team means that we have to wear many hats. One hour I'm looking at our acquisition funnel, and the next I'm reviewing our policies. Later in the day, I might find some time to code some features. It goes on day after day, and I can hardly predict which roles I'll have to play next.&lt;/p&gt;

&lt;p&gt;Yet, we ship. &lt;a href="https://trello.com/b/jFtwfQIG/tability-roadmap" rel="noopener noreferrer"&gt;A lot&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;We managed to do that by embracing a simple truth: &lt;strong&gt;we're bad at focus, and we need help&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why focus is hard
&lt;/h2&gt;

&lt;p&gt;Here's what generally happens. It's the start of a quarter. You meet with your team, run some workshops and set up some goals. Everyone agrees on what the North Start is, and the team is motivated to get there. Exciting!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F4penbctn76m0di0t3vuf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F4penbctn76m0di0t3vuf.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then you get back to your desk. Meetings, emails, calls, bugs, tasks, new ideas, support... Distractions start to pop, and you can't eliminate those because this &lt;em&gt;is&lt;/em&gt; work. It's what needs to happen for collaboration, and while you can reduce the noise, it's foolish to think that you can make it all go away.&lt;/p&gt;

&lt;p&gt;So, the end of the quarter comes near, and you get that email from your manager.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Don't forget to update your goals for the review next week."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You finally look back at that doc and realize that (1) you forgot about half of the things on the list, and (2) you're pretty far from your target.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fx5b62s2bof7f4kuwju8a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fx5b62s2bof7f4kuwju8a.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You try your best to improve things but it's too late, and there's only so much you can do to move the needle. Your cycle is over, but you'll start again in a couple of days.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fkjmg6bubculhdwfvzub0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fkjmg6bubculhdwfvzub0.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Using Continuous Delivery principles to get better outcomes
&lt;/h2&gt;

&lt;p&gt;Don't worry, this is not going to be a full lesson about Continuous Delivery (CD). However, there are a couple of interesting excerpts coming from &lt;a href="https://martinfowler.com/bliki/ContinuousDelivery.html" rel="noopener noreferrer"&gt;Martin Fowler's definition&lt;/a&gt; (emphasis mine).&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The principal benefits of continuous delivery are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Reduced Deployment Risk: since you are deploying smaller changes, there's less to go wrong and &lt;strong&gt;it's easier to fix should a problem appear&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Believable Progress&lt;/strong&gt;: many folks track progress by tracking work done. If "done" means "developers declare it to be done" that's much less believable than if it's deployed into a production (or production-like) environment.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;User Feedback&lt;/strong&gt;: the biggest risk to any software effort is that you end up building something that isn't useful. The earlier and more frequently you get working software in front of real users, &lt;strong&gt;the quicker you get feedback to find out how valuable it really is&lt;/strong&gt; [...].&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;and&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;You’re doing continuous delivery when:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Your software is deployable throughout its lifecycle&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Your team prioritizes&lt;/strong&gt; keeping the software deployable over working on new features&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Anybody can get fast&lt;/strong&gt;, automated &lt;strong&gt;feedback&lt;/strong&gt; on the production readiness of their systems any time somebody makes a change to them&lt;/li&gt;
&lt;li&gt;You can perform push-button deployments of any version of the software to any environment on demand&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;Looking at the benefits, Continuous Delivery helps us make real progress and ensures that we are working on valuable things. And to get CD done, you rely heavily on ruthless prioritization and fast feedback loops.&lt;/p&gt;

&lt;p&gt;I did throw out a few things that were only relevant to software development, but what if we could create rapid feedback loops on business outcomes instead of feature development?&lt;/p&gt;

&lt;p&gt;Surely it would help us make believable progress towards our North Star, and we'd be able to check that the tactical stuff we do every week contributes meaningfully to our goals.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fxsgfztabhsw4kt2uba1n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fxsgfztabhsw4kt2uba1n.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Continuous Delivery helps teams feel confident about their &lt;em&gt;outputs&lt;/em&gt;. We wanted to build a platform that helps organizations feel confident about their &lt;em&gt;outcomes&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;So we created a simple goal tracking platform with fast feedback loops at its core. We would solve our problem by automating focus and accountability.&lt;/p&gt;

&lt;h2&gt;
  
  
  Building Continuous Delivery for outcomes
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Start with the loop
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F33dropg2wj38pcyxjtt7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F33dropg2wj38pcyxjtt7.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When you create a new project on Tability, one of the first questions is "how often do you want updates?". That's how we know when to send reminders. In our case we do:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Weekly updates for quarterly goals.&lt;/li&gt;
&lt;li&gt;Monthly updates for our yearly plan.&lt;/li&gt;
&lt;li&gt;Quarterly updates for our Big Hairy Audacious Goal.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There are no daily reminders because we want to help with long-term outcomes, not tasks.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Add goals
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fo46g1yep34fhczv8sd3w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fo46g1yep34fhczv8sd3w.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The next step is to add goals. We just need the description, target, owner and due date. Targets are smart fields that can take different values depending on what you're tracking.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fr3dk5z2j5x1co3496byn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fr3dk5z2j5x1co3496byn.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;At Tability we almost always use explicit values and let the platform do the maths for us to calculate progress. There are also times where it's hard to set a metric for the goal - that can be the case for large scale initiatives where it's hard to tell if we're 30% done or 45% done. In these cases, we omit the target. We'll rely on sentiment instead (on-track, at-risk, off-track).&lt;/p&gt;

&lt;p&gt;Once a goal is created, you can see a progress chart which shows you the expected progress over time. It makes it easy to see how well we are doing week after week. It's the equivalent of the build status in our Continuous Delivery analogy.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fxlnel7b4q7p1lvgxm9u4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fxlnel7b4q7p1lvgxm9u4.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Get reminders
&lt;/h3&gt;

&lt;p&gt;Tability will take over after goals are created. It will automatically send notifications to owners to remind them of the outcomes they're in charge of, and to ask them to provide an update on their progress.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fadluptoky7qvrlujen9b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fadluptoky7qvrlujen9b.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In practice, it means that I can completely check out on weekends and enjoy a great time with the family. Every Monday at 8am, our bot Tabby sends me a reminder with a list of my goals for the quarter. This way I always keep our priorities in the back of my mind while I go through my tasks during the week.&lt;/p&gt;

&lt;p&gt;That's the integration part of the process where the team checks the health of their goals early and often.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Share updates
&lt;/h3&gt;

&lt;p&gt;We made progress updates light and easy to do.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Progress: How fare are you today?&lt;/li&gt;
&lt;li&gt;Status: What's your sentiment? On-track, at-risk, off-track?&lt;/li&gt;
&lt;li&gt;Comment: Why do you think we're where we are? (and do we need to do something about it?)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fzojugrefy6qv7mfve9n7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fzojugrefy6qv7mfve9n7.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We automate a lot with Tability but, contrary to a typical CD pipeline, updates have to be manual. That's because the value comes not from the metric, but from how we interpret it. Thinking about why we're ahead or behind our targets helps us refine our strategy and adjust our execution. If we outsource reporting to a machine, it will be great at capturing data, but it won't know how to explain the bigger picture.&lt;/p&gt;

&lt;p&gt;And if you're still not convinced about manual reporting. Think about how often you've made good predictions. It's significantly hard to pick the right metrics and the right targets for a specific outcome. What's the best way to measure user happiness? What about satisfaction? Onboarding? You might have some ideas, but I'm sure I can find you scenarios where your choices won't work.&lt;/p&gt;

&lt;p&gt;So we do our best to keep updates light and simple. We want to create quick loops with real feedback from the team, allowing others to chime in and offer help when necessary. Over time the progress updates create a clear view of how we've been tracking, and it's easy for us to look at the past to get context.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fqe1az81apnaampshvq4z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fqe1az81apnaampshvq4z.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Goal tracking enables us to move faster with confidence
&lt;/h2&gt;

&lt;p&gt;Continuous Delivery has had a significant impact on the productivity of software teams. It has helped reduce development risks, improve product/market fit by getting early feedback from users, and made organizations more agile - allowing them to adapt the scope of their work from one sprint to another, to make sure they would always provide value to their customers.&lt;/p&gt;

&lt;p&gt;With Tability, we see similar benefits applied to outcomes. By having weekly reviews of our progress on long-term goals, we're able to focus on the things that matter the most. We're getting less distracted by side projects, bad meetings, low priority items. We can adjust our strategy after a few weeks if our current effort is not producing the right results.&lt;/p&gt;

&lt;p&gt;But more importantly, we're able to move fast while being a remote team, because we have a clear understanding of where we want to be, and how far we are from there.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This post was first published on &lt;a href="https://blog.tability.io/automating-focus-using-continuous-delivery-principles/" rel="noopener noreferrer"&gt;our blog&lt;/a&gt; and you can sign up for &lt;a href="https://tability.io" rel="noopener noreferrer"&gt;Tability&lt;/a&gt; today. Don't hesitate to add feedback and questions in the comments - and you can find me on Twitter at &lt;a href="https://twitter.com/stenpittet" rel="noopener noreferrer"&gt;@stenpittet&lt;/a&gt;&lt;/em&gt;.&lt;/p&gt;

</description>
      <category>productivity</category>
    </item>
    <item>
      <title>The 4 stages of goal-tracking (aka don't jump into OKRs)</title>
      <dc:creator>Sten</dc:creator>
      <pubDate>Fri, 22 Mar 2019 05:05:09 +0000</pubDate>
      <link>https://forem.com/tability/the-4-stages-of-goal-tracking-aka-dont-jump-into-okrs-27ai</link>
      <guid>https://forem.com/tability/the-4-stages-of-goal-tracking-aka-dont-jump-into-okrs-27ai</guid>
      <description>&lt;p&gt;&lt;em&gt;This is the second post in our series about pragmatic goal-tracking. While this is not diving into dev practices it's something that I believe is important to empower Product teams. By being more outcome-driven you can reduce micro-management and let the team own more of the future.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;You can check the previous post introducing &lt;a href="https://blog.tability.io/be-like-a-remote-team-empower-your-team-to-scale-productivity/"&gt;the business case for setting and tracking goals&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Staying productive as you grow is a common challenge for teams. Agile practices help a lot to make sure that your projects are delivered faster, but they don't guarantee that your team is working on the right initiatives. This is why goal-setting, and the Objective and Key Results (OKRs) framework in particular, are rapidly gaining in popularity - they provide an easy way to create a shared understanding of what matters for the business, and what the top priorities are.&lt;/p&gt;

&lt;p&gt;However, it's often daunting to go from nothing to setting multi-level OKRs that are tracked religiously. Change management is hard, and there are multiple stages to pass in order to grow your outcome-driven muscle.&lt;/p&gt;

&lt;h2&gt;
  
  
  Stage 1: No shared goals
&lt;/h2&gt;

&lt;p&gt;This is where you start, and while it might sound silly it's an extremely common place to be.&lt;/p&gt;

&lt;p&gt;When you're early stage it's hard to have a clearly defined view of where you want to be in 3, 6, 12 months. You're still figuring things out talking to as many users as possible and trying to get a sense of what the market wants.&lt;/p&gt;

&lt;p&gt;You might have a target for revenues and users but it's not broken down much further in metrics that each member of the team can relate to.&lt;/p&gt;

&lt;p&gt;What are 5 signs that you're in stage 1?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;There are no goals beyond revenue and customer growth targets.&lt;/li&gt;
&lt;li&gt;There are no monthly and quarterly review of progress and impact.&lt;/li&gt;
&lt;li&gt;The roadmap is reactive, new projects are decided when the current ones are finished.&lt;/li&gt;
&lt;li&gt;Micro-management is needed to make progress. The team doesn't have enough understanding of the path forward to make their own decisions.&lt;/li&gt;
&lt;li&gt;The team feels disengaged from the product - people are checking-in to do the work decided by leadership.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Stage 2: We want goals
&lt;/h2&gt;

&lt;p&gt;Even if you do not plan for stage 2 it's something that you'll get to eventually as your team grows. Past a certain size, it's not possible to keep having in-person discussions with everyone, and it's hard to keep up with the number of open questions about the future. You have more people moving together, and you need good ways to make sure they're going in the same direction.&lt;/p&gt;

&lt;p&gt;You're just starting to think actively about your North Star and most of your effort will go into changing the culture to build more trust and become more data-driven.&lt;/p&gt;

&lt;p&gt;What are 5 signs that you are in stage 2?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You have some metrics beyond your sales and customer targets but they're mostly defined by leadership.&lt;/li&gt;
&lt;li&gt;You're covering key performance indicators (KPIs) like monthly active users (MAUs), conversion rates, customer acquisition costs (CAC), but you do not have goals that are driving improvements in specific aspects of your products.&lt;/li&gt;
&lt;li&gt;You follow the evolution of your KPIs but have not set targets for them yet.&lt;/li&gt;
&lt;li&gt;Progress is generally reviewed on a quarterly basis.&lt;/li&gt;
&lt;li&gt;The team has a shared understanding of the vitals of the business, but not everyone feels like they can have an impact.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Stage 3: We set goals
&lt;/h2&gt;

&lt;p&gt;Okay, now we're getting to the stage where things start to scale in an exciting way. Stage 3 companies have teams running their own workshops to define how they'll measure success. There's a clear vision coming from the top that you can look up to understand how you can contribute to success.&lt;/p&gt;

&lt;p&gt;There are still some hiccups when it comes to tracking goals and defining realistic targets but people can now work autonomously and report on outcomes to leadership.&lt;/p&gt;

&lt;p&gt;5 signs you're at stage 3:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You have a few people championing the concepts of SMART goals and OKRs.&lt;/li&gt;
&lt;li&gt;Leadership creates the vision but teams can define their own goals.&lt;/li&gt;
&lt;li&gt;Targets are set but there are some big misses due to goals being too ambitious.&lt;/li&gt;
&lt;li&gt;Goals are set before each quarter and written down in a shared doc or spreadsheet&lt;/li&gt;
&lt;li&gt;But, updates are sometimes missed, and you do not keep the progress history.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Stage 4: we track goal
&lt;/h2&gt;

&lt;p&gt;At stage 4, your company is fully driven by outcome. Every team knows what their focus should be and they are able to self-evaluate to make hard calls on projects that are late or not delivering the impact expected.&lt;/p&gt;

&lt;p&gt;This is when your company produces unexpected results as people are able to come up with innovative solutions to achieve a particular outcome. It's also when you can see a high engagement from the team as they become accountable for their own decisions.&lt;/p&gt;

&lt;p&gt;5 signs you're at stage 4:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Everyone is familiar with the concepts of KPIs, SMART goals and OKRs.&lt;/li&gt;
&lt;li&gt;Teams are able to design a set of goals to improve significantly a particular theme or aspect of their product ( &lt;em&gt;expand customers, knowing our users, ecosystem integrations&lt;/em&gt;). &lt;/li&gt;
&lt;li&gt;Leadership can focus on longer-term goals (where they want to be in 2-3 years) and let teams define the right outcomes for each quarter.&lt;/li&gt;
&lt;li&gt;Progress is shared and monitored on a regular basis (weekly for quarterly goals, monthly for yearly plans).&lt;/li&gt;
&lt;li&gt;Historical data is kept and you can go back in time to understand how you got to where you are today.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Moving up the ladder
&lt;/h2&gt;

&lt;p&gt;There are a few more posts outlining how to move from 1 stage to another but I'm mindful of dev.to being a tech community. I'd be keen to share the rest of the series if the crowd is happy (and tech posts will be coming back soon!)&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This post was originally published &lt;a href="https://blog.tability.io/the-4-stages-of-goal-tracking-how-to-go-from-0-to-okrs/"&gt;on our blog&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>productivity</category>
    </item>
    <item>
      <title>Be like a remote team: empower your team to scale productivity</title>
      <dc:creator>Sten</dc:creator>
      <pubDate>Thu, 07 Mar 2019 02:25:11 +0000</pubDate>
      <link>https://forem.com/tability/be-like-a-remote-team-empower-your-team-to-scale-productivity-3ng8</link>
      <guid>https://forem.com/tability/be-like-a-remote-team-empower-your-team-to-scale-productivity-3ng8</guid>
      <description>&lt;p&gt;&lt;em&gt;This article is part of a series about pragmatic goal-tracking that we're publishing on &lt;a href="https://blog.tability.io/"&gt;our blog&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;One advantage that we don't talk about often enough about remote teams is that they're forced to ditch micro-management early on and adopt collaboration practices that help them scale execution - you can't rely on verbal checks to get work done across multiple timezones. You need to build trust and get a shared understanding of where you are now, and where you want to go.&lt;/p&gt;

&lt;p&gt;At &lt;a href="https://tability.io"&gt;Tability&lt;/a&gt; we're small, and remote. And by remote, I mean several layers of timezones between us. I live in Sydney, and Bryan is in Portland. Same love for coffee, different temperatures.&lt;/p&gt;

&lt;p&gt;This situation gives us a few advantages:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Great coverage of our customers.&lt;/li&gt;
&lt;li&gt;Flexible hours and minimum commute (I work from a co-working space, Bryan works from home).&lt;/li&gt;
&lt;li&gt;Long, uninterrupted, blocks of work.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But, being remote also forced us to grow up faster and fix some collaboration issues that you'd generally associate with bigger companies.&lt;/p&gt;

&lt;h2&gt;
  
  
  The big collaboration problems of small distributed teams
&lt;/h2&gt;

&lt;p&gt;Whether it's on Twitter or in the press, it seems that 2019 is going to be the year of remote teams. And it's not just for startups! Larger organizations are also becoming more and more open to having employees working outside of their headquarters. More than a fad, this is now a convincing perk to attract and retain the best talent in tech.&lt;/p&gt;

&lt;p&gt;There's a problem though. The cost of coordination for remote teams is an order of magnitude higher than for people sitting in the same office. A co-located team &lt;em&gt;should&lt;/em&gt; be investing the same amount in collaboration, but they can usually do away with it much longer than distributed teams.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Everyone is in the office at the same time. You can talk to the entire team at once by raising your voice.&lt;/li&gt;
&lt;li&gt;Impromptu meetings can be organized on the spot.&lt;/li&gt;
&lt;li&gt;You can get questions answered right away. Just turn around to your neighbor.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This proximity and availability make it easy to rely on over the shoulder checks (&lt;em&gt;are you done?&lt;/em&gt;), rapid interruptions (&lt;em&gt;hey can you check this?&lt;/em&gt;) and just-in-time requirements (&lt;em&gt;oh that's not how it's supposed to work...&lt;/em&gt;). The alternative is to spend more time up front to explain the problem we need to tackle, outline the expected benefits, define how we'll measure success, and finally prepare the work that needs to be done.&lt;/p&gt;

&lt;p&gt;The second approach will yield better results, but the upfront costs are often scary for teams that are already under pressure. So we push back until it becomes apparent that we need to change the way we work to scale.&lt;/p&gt;

&lt;p&gt;(Un)fortunately for remote teams, your colleagues are sitting far from you. So you have no choice but to invest in practices that will help everyone on the team to work autonomously while going in the same direction. It's the same type of problem that large organizations are facing when a vision has to be shared by teams that can't meet in person. How can you empower people to move fast in the same direction with low friction?&lt;/p&gt;

&lt;h2&gt;
  
  
  3 simple steps to switch to an outcome-driven culture and scale execution
&lt;/h2&gt;

&lt;p&gt;The best way to help your organization move faster is by giving everyone the means to understand the impact they can have to take the business where it should be. Instead of giving people projects, you give them goals - they will decide themselves what projects are more suited to deliver the expected outcome.&lt;/p&gt;

&lt;p&gt;But turning your culture around can take time and there are a few things to put in place.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: write everything down, starting with the vision
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;"If I had more time, I would have written a shorter letter." - Blaise Pascal&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It takes efforts to extract one's thoughts and put them down shortly and concisely. And it's not enough to write a few bullet points in a doc. You will need to make sure that everyone has the same understanding of the content, and that all potential questions and doubts have been addressed.&lt;/p&gt;

&lt;p&gt;This is going to set the tone for the future - every goal, every initiative that is proposed should relate to that initial vision.&lt;/p&gt;

&lt;p&gt;Once that is done you should keep the practice of writing things down, starting by answering a few questions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What are we doing?&lt;/li&gt;
&lt;li&gt;Why do we want it?&lt;/li&gt;
&lt;li&gt;Who is it for?&lt;/li&gt;
&lt;li&gt;How will we know it works?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You'll note that there's no &lt;em&gt;when&lt;/em&gt; in here, and that's because before deciding if something should be done &lt;em&gt;now&lt;/em&gt; or &lt;em&gt;never&lt;/em&gt;, you should first have a good understanding of its value. Then, you can move on to evaluating the cost, and only after that will you have enough information to see if it is a good fit for your vision compared to other initiatives that you might have on your list.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2: start measuring success
&lt;/h3&gt;

&lt;p&gt;The second step is to make sure that you have the right tools to know if your projects are successful. It's not enough to look at sales and signups. You need to be able to drill down further to have a deeper understanding of how improvements are affecting the performance of your product.&lt;/p&gt;

&lt;p&gt;If you want your team to be able to work better autonomously, you need to provide them with ways to self-evaluate and judge if they are making the right decisions. Do you have tools to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Track events in your product?&lt;/li&gt;
&lt;li&gt;Analyze your conversion funnels?&lt;/li&gt;
&lt;li&gt;Get you Net Promoter Score (NPS)?&lt;/li&gt;
&lt;li&gt;Understand retention, churn?&lt;/li&gt;
&lt;li&gt;Know where leads are coming from?&lt;/li&gt;
&lt;li&gt;Track your Monthly Recurring Revenues (MRR), Monthly Active Users (MAUs), Customer Acquisition Cost (CAC)? &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This list is not exhaustive and it will vary a lot depending on your product, but that's a good place to start. You absolutely need to be able to give more than revenue targets to your team if you want them to make good decisions.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3: Rely on goals rather than projects
&lt;/h3&gt;

&lt;p&gt;My coding background has trained me to focus on delivering features. I got really good at this, being able to do quick trades in implementation to ship a new improvement in time.&lt;/p&gt;

&lt;p&gt;A lot of businesses are organized that way. We define projects and train people to be flexible and find solutions to make sure that deadlines are met. It's very effective, but it puts too much emphasis on outputs (get the project done) and not enough on outcomes (get the expected results). It might look like a subtle difference but you're teaching your organization to innovate on delivering solutions, rather than finding the right problems to solve.&lt;/p&gt;

&lt;p&gt;This is why, once you know who to measure success, the final step is to switch to being more driven by outcomes. There are different ways to get there but the path we will explore in future posts will look like this:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Start by finding the &lt;a href="https://neilpatel.com/blog/single-startup-metric/"&gt;one metric that matter&lt;/a&gt; (OMTM) for your business&lt;/li&gt;
&lt;li&gt;Use the &lt;a href="https://www.atlassian.com/blog/productivity/how-to-write-smart-goals"&gt;SMART template&lt;/a&gt; to define underlying goals&lt;/li&gt;
&lt;li&gt;Adopt &lt;a href="https://felipecastro.com/en/okr/what-is-okr/"&gt;OKRs&lt;/a&gt; to structure your goals and get bottom-up initiatives.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That's it for the introduction. Feel free to go &lt;a href="https://blog.tability.io/#subscribe"&gt;subscribe to our newsletter&lt;/a&gt;, and you can also find me &lt;a href="https://twitter.com/stenpittet"&gt;on Twitter&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>okrs</category>
      <category>productivity</category>
      <category>teamwork</category>
      <category>remoteteams</category>
    </item>
    <item>
      <title>A simple goal framework to collaborate remotely</title>
      <dc:creator>Sten</dc:creator>
      <pubDate>Thu, 24 Jan 2019 22:40:31 +0000</pubDate>
      <link>https://forem.com/tability/a-simple-goal-framework-to-collaborate-remotely-4n3d</link>
      <guid>https://forem.com/tability/a-simple-goal-framework-to-collaborate-remotely-4n3d</guid>
      <description>&lt;p&gt;Last week I stumbled upon the following question on IndieHackers: &lt;a href="https://www.indiehackers.com/forum/is-it-possible-to-have-a-startup-with-the-co-founders-living-in-different-countries-fa64126ef7" rel="noopener noreferrer"&gt;"Is it possible to have a startup with the co-founders living in different countries?"&lt;/a&gt;.   We're in that exact situation at Tability with one founder (Bryan) in Portland, and the other one (me) in Sydney.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F2ztz1m3kr1b0d60diilp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F2ztz1m3kr1b0d60diilp.png"&gt;&lt;/a&gt;&lt;br&gt;
I shared a few tips on that post that I want to expand on here.&lt;/p&gt;

&lt;h2&gt;
  
  
  Remote problems are large teams problems
&lt;/h2&gt;

&lt;p&gt;Bryan and I both worked at Atlassian before starting Tability, so we have a few years of experience working in large-ish companies (YMMV). What surprised me when we started working as a remote duo is that a lot of the issues we faced were quite similar to the problems I ran into while I was a Product Manager in a team of 20, working with a dozen of other groups across the world:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You can't rely on over-the-shoulder communication to clarify things.&lt;/li&gt;
&lt;li&gt;You need to build an environment allowing people to be autonomous.&lt;/li&gt;
&lt;li&gt;You need to find ways to keep everyone informed and engaged.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You might object that this is true for all organizations, but you don't really feel the pain if you're a team of 5 all sitting in the same room. At that stage, it's still easy to keep everyone on the same page by standing up and talking out loud, and you're small enough that you can keep track of what each person is doing. But, add a couple more people to the team, and communication will start to break down. There's too much going on, and it becomes harder to identify the signal from the noise.&lt;/p&gt;

&lt;p&gt;There's another way to experience that pain, even if you stay small.&lt;/p&gt;

&lt;p&gt;Make your team remote-first. Just like we are.&lt;/p&gt;

&lt;p&gt;Timezones and distance will produce the same communication issues that you'd have with a larger co-located team. TL;DR; we had to figure out pretty early on how to make sure we would be rowing our boat in the same direction.&lt;/p&gt;

&lt;h2&gt;
  
  
  Purpose &amp;gt; Focus &amp;gt; Measures (PFM)
&lt;/h2&gt;

&lt;p&gt;We created a simple document that drives our effort and makes it easy to find answers when we're wondering what we should be working on. It's inspired by a mix of our experience at Atlassian, &lt;a href="https://sliwinski.com/v2mom/" rel="noopener noreferrer"&gt;Salesforce V2MOM&lt;/a&gt; and &lt;a href="https://en.wikipedia.org/wiki/OKR" rel="noopener noreferrer"&gt;OKRs&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;It's a straightforward model designed to be easily understood and quick to adopt.&lt;/p&gt;

&lt;h3&gt;
  
  
  Purpose at the top
&lt;/h3&gt;

&lt;p&gt;The first section of the document defines our purpose as a company. This is something that should last a few years. We're still iterating on our mission statement but it goes something like that:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Bring teams together to solve big problems&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It should be precise enough that it sets a clear direction, but loose enough that it doesn't stifle innovation. I'd recommend taking some time to figure it out because everything else will come down from it. Using the &lt;a href="https://en.wikipedia.org/wiki/5_Whys" rel="noopener noreferrer"&gt;5 Whys&lt;/a&gt; and the &lt;a href="http://innovatorstoolkit.com/content/technique-1-jobs-be-done" rel="noopener noreferrer"&gt;Jobs To Be Done&lt;/a&gt; is a good start, but if you're like us you'll probably do several iterations as you get to know your customers better.&lt;/p&gt;

&lt;h3&gt;
  
  
  Focus areas underneath
&lt;/h3&gt;

&lt;p&gt;Below the purpose, we've listed our big priorities for the next 12 months. There are still no metrics at this stage. Instead, we list 2-3 focus areas that will drive our roadmap for the year.&lt;/p&gt;

&lt;p&gt;In our case we have:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Don't run out of money:&lt;/strong&gt; we're a young bootstrapped startup so managing our cash flow is critical.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Land teams:&lt;/strong&gt; we love it when individuals use Tability, but we're building it for teams primarily.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Awesome goal-tracking:&lt;/strong&gt; we could expand to goal-setting but we want first to do excel at goal-tracking first.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;These focus areas are fairly large and will help pick initiatives for the next 12 months. It's what we often go back to when we're putting things on the backlog. Does it help with cash flow? Does it make teams sticky? Is it making goal-tracking easy and great? If there isn't a positive answer for any of these question then it's probably not a good fit.&lt;/p&gt;

&lt;h3&gt;
  
  
  Measures at the bottom.
&lt;/h3&gt;

&lt;p&gt;Finally, we have set 2-3 measurable goals per focus areas to help us track progress. I won't give you our exact targets but the overall document looks like the picture below.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fnsb58840nkxtlh9764ls.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fnsb58840nkxtlh9764ls.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Good goals are hard to define. It's often easy to fall for vanity metrics that do not really challenge your business. Metrics do not exist to make you feel good. They are here to make sure that you're achieving the results you need, or at least help you realize that you might not get there with your current approach.&lt;/p&gt;

&lt;p&gt;Once you've picked a set of metrics, just run a few scenarios to double-check that they'll help you know the truth. For instance, if you focus on the growth of accounts instead of the growth of &lt;em&gt;active&lt;/em&gt; accounts you can easily get a false sense of accomplishment if you see a lot of people signing up. But if most of the newly signed users never return to your product then your business will quickly go underground.&lt;/p&gt;

&lt;p&gt;Overall I'd suggest not having more than 10 driving goals in your document because the more you have, the more you're going to dilute your effort. It's better to have a great impact on a few things than having lots of small improvements in different areas.&lt;/p&gt;

&lt;h2&gt;
  
  
  Split things into quarters
&lt;/h2&gt;

&lt;p&gt;Now that our PFM doc is set up we can use it to drive the roadmap. At the beginning of each quarter, we look at what we can do to maximize impact in each of the focus areas. We always have a clear view of the next 3 months, and an outline of months 3-6. Beyond that, we can just refer back to our strategy document to understand what our priorities will be.&lt;/p&gt;

&lt;p&gt;The goals are roughly the same as the ones in the PFM but the targets are adjusted for the quarter.&lt;/p&gt;

&lt;h2&gt;
  
  
  Measure, learn, adjust - on repeat
&lt;/h2&gt;

&lt;p&gt;Now, this is what truly makes a difference. Creating a vision document, setting some goals is cool. But the real value is in tracking progress regularly. This is quite different from having a weekly demo, or weekly standup where you talk about what you've done in the week.&lt;/p&gt;

&lt;p&gt;We update progress on our quarterly goal every week. It's a simple update with a red/yellow/green status as well and how far we are from the target. This is a bit akin to applying Continuous Delivery to strategy, and providing updates on a weekly basis has several benefits:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It helps us realize pretty quickly if we're stagnating in an area, or if something is in the red&lt;/li&gt;
&lt;li&gt;It keeps us accountable and softens the noise that happens during the week.&lt;/li&gt;
&lt;li&gt;It helps us be more responsive and agile.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;More importantly, it helps us drive a culture where we focus on impact rather than tasks.&lt;/p&gt;

&lt;h2&gt;
  
  
  Adopting the PFM
&lt;/h2&gt;

&lt;p&gt;I created a &lt;a href="https://docs.google.com/spreadsheets/d/1CAgnyvSR6Kll3Z9CV-kRbh_I6Wmsz3Ta229nJ-E6l5Y/edit?usp=sharing" rel="noopener noreferrer"&gt;Google Sheet&lt;/a&gt; with a PFM and a goal-tracking template which should be enough to get you started.&lt;/p&gt;

&lt;p&gt;Obviously, we're also building a great tool to help teams track their goal. So if you're looking for something better than a spreadsheet, you should &lt;a href="https://tability.io" rel="noopener noreferrer"&gt;sign up for Tability&lt;/a&gt;. It includes automatic reminders, an accountability bot, and makes it easy to share updates and visualize progress.&lt;/p&gt;

&lt;p&gt;I'm always keen on learning from other teams so please share your own approach and feedback in the comments, and you can always reach out to me on &lt;a href="https://twitter.com/stenpittet" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This post was first published on &lt;a href="https://blog.tability.io/a-simple-goal-framework-to-collaborate-remotely-and-focus-on-impact/" rel="noopener noreferrer"&gt;https://blog.tability.io&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>startup</category>
    </item>
    <item>
      <title>Squadlytics is on ProductHunt! Applying CI/CD principles to organizations</title>
      <dc:creator>Sten</dc:creator>
      <pubDate>Tue, 06 Nov 2018 11:18:20 +0000</pubDate>
      <link>https://forem.com/tability/squadlytics-is-on-producthunt-applying-cicd-principles-to-organizations-i31</link>
      <guid>https://forem.com/tability/squadlytics-is-on-producthunt-applying-cicd-principles-to-organizations-i31</guid>
      <description>&lt;p&gt;Hey all! It's an exciting day for us at Squadlytics as we've just &lt;a href="https://www.producthunt.com/posts/squadlytics-2" rel="noopener noreferrer"&gt;launched on ProductHunt&lt;/a&gt;. It's been a lot of sweating and perseverance to get there today, and it's really cool to reach a ProductHuntable state.&lt;/p&gt;

&lt;p&gt;We're building a continuous feedback platform to help teams stay focused on their goals and share progress easily. The basic idea is to bring the benefits of Continuous Integration to track the health of projects.&lt;/p&gt;

&lt;p&gt;There's a lot of friction today in the way people share goals and results. You have to find the right spreadsheet or doc, update a column, lose history. And if you're something like Jira or Trello for it, you often end up with a custom setup that is hard to share across your organization. &lt;/p&gt;

&lt;p&gt;At Squadlytics &lt;a href="https://dev.to/squadlytics/how-we-measure-simplicity-to-make-sure-users-can-do-more-with-less-c1n"&gt;we're working hard to keep things simple&lt;/a&gt; and create fast feedback loops. If we can remove that friction and accelerate feedback, then it is much easier for teams to address the issues preventing them from reaching their objectives.&lt;/p&gt;

&lt;p&gt;Check us out at &lt;a href="https://www.producthunt.com/posts/squadlytics-2" rel="noopener noreferrer"&gt;https://www.producthunt.com/posts/squadlytics-2&lt;/a&gt; - we're eager to get your feedback!&lt;/p&gt;

</description>
      <category>productivity</category>
    </item>
    <item>
      <title>How we measure simplicity to make sure users can do more with less</title>
      <dc:creator>Sten</dc:creator>
      <pubDate>Thu, 04 Oct 2018 12:07:18 +0000</pubDate>
      <link>https://forem.com/tability/how-we-measure-simplicity-to-make-sure-users-can-do-more-with-less-c1n</link>
      <guid>https://forem.com/tability/how-we-measure-simplicity-to-make-sure-users-can-do-more-with-less-c1n</guid>
      <description>&lt;p&gt;&lt;em&gt;I hesitated to share this post here because it's more about UX than really teaching something new about software development. I thought it'd still be relevant as we're all building experiences at the end of the day.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;At Squadlytics we have a strong commitment to simplicity. Heck, I'll go further and say that this is our raison d'être, and we've put a little framework together to help measure friction in our product.&lt;/p&gt;

&lt;h3&gt;
  
  
  Wait, what's Squadlytics?
&lt;/h3&gt;

&lt;p&gt;Our platform helps teams stay focused by providing continuous feedback on goals and results.  Most of the teams we talk to have goals they care deeply about. They worked hard to figure out the best path forward, and they strive to deliver their best work.&lt;/p&gt;

&lt;p&gt;But as they grow it becomes difficult to share progress and get visibility on how people are doing. You're either using a spreadsheet, which gets lost among all the other docs of the company. Or you have to set up heavy-handed performance management systems, which can be complicated to use and slow the feedback loop.&lt;/p&gt;

&lt;p&gt;We believe we can make our users happier with a simple, lightweight solution. We want to help teams know what the priorities are, and how they're progressing. Then we get out of the way.&lt;/p&gt;

&lt;h2&gt;
  
  
  How we treat simplicity as a feature
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Defining a framework to measure simplicity
&lt;/h3&gt;

&lt;p&gt;When you release a new capability, it's reasonably easy to measure its success. You look at the analytics events and compare that with your expectations. It's straightforward to measure the impact of things that are added to a product.&lt;/p&gt;

&lt;p&gt;But when you talk about simplifying things, removing behaviors, it's hard to understand how much you're moving the needle because we lack metrics for that. It's much easier for us to quantify outcomes (how many users signed up) than processes (how much effort did it take for the user to sign up).&lt;/p&gt;

&lt;p&gt;Rather than coming up with a complicated formula, we decided to look at 2 things in our case:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How many clicks does it take to complete a step?&lt;/li&gt;
&lt;li&gt;How many times do you switch context?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We then weighted both actions and decided that a context-switch would be 3 times as painful as a click. This is purely arbitrary and could be debated, but the goal was to reflect that having to go from one screen to another is much more annoying than clicking around the same page. So we end up with this:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Friction Index = Clicks + 3 x Context-switches&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Defining the user flow
&lt;/h3&gt;

&lt;p&gt;Once we had the framework, we had to pick a user flow to measure. We did not want to stop at the bare minimum after signing up. Repeating some core actions would give us a better understanding of what our users go through.&lt;/p&gt;

&lt;p&gt;If you stop at one instance of each action, you can easily be under the illusion that your process is good enough. But if creating a page takes a dozen clicks, it will quickly become a pain if it's a task performed often in your product.&lt;/p&gt;

&lt;p&gt;So our scenario was the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A user (you) wants to sign up for Squadlytics to give it a try with 2 colleagues, Joe and Jane.&lt;/li&gt;
&lt;li&gt;They want one project with 2 goals (1 for themselves, 1 for Joe).&lt;/li&gt;
&lt;li&gt;They want a sub-project with 2 sections and 3 goals (1 for themselves, 1 for Joe, 1 for Jane).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This flow would allow us to cover the signup, onboarding, goals creation and invites. It does not take into account the second user experience on purpose as we're focused on the first user.&lt;/p&gt;

&lt;h3&gt;
  
  
  Establishing the baseline
&lt;/h3&gt;

&lt;p&gt;We measured our Friction Index (FI) 2 weeks ago, and the results are below. Note that we counted the max number of clicks instead of going for the optimal path. By that, I mean that even when you could press enter to submit a form, we would use a click to submit it instead. &lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;#&lt;/th&gt;
&lt;th&gt;Step&lt;/th&gt;
&lt;th&gt;Clicks&lt;/th&gt;
&lt;th&gt;Context-switch&lt;/th&gt;
&lt;th&gt;Context-switch weighted (x3)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Signup&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Email confirmation&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Create your profile&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Create your workspace&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Create your first project&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;Create goal for yourself&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;Create goal for Joe&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;Create sub-project&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;Create goal for yourself&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;Create goal for Joe&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;td&gt;Create new section&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;12&lt;/td&gt;
&lt;td&gt;Create goal for Jane&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Total&lt;/td&gt;
&lt;td&gt;65&lt;/td&gt;
&lt;td&gt;18&lt;/td&gt;
&lt;td&gt;54&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Honestly, when I saw these numbers for the first time I couldn't believe that it was taking 65 clicks and 18 screens to go through this simple flow. 🤯. Here's another way to see that data: each step circle is proportional to the number of clicks or screens involved.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fzorythc6ovugcnux7sc6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fzorythc6ovugcnux7sc6.png" alt="old-friction"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That really made me feel bad, but we had something to work with. Our FI was 119 and we needed to reduce that number.&lt;/p&gt;

&lt;h2&gt;
  
  
  Things we did to improve the user experience
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Reduce context-switching
&lt;/h3&gt;

&lt;p&gt;It's generally useful to take the user through a step-by-step process the first time they use your products. But it can quickly become painful if you keep that heavy flow for repetitive actions.&lt;/p&gt;

&lt;p&gt;One example for us was the creation of new projects where we were taking you to a project form, and then back to the newly created project. We changed our approach to automatically generate the project as soon as you'd hit the &lt;code&gt;create&lt;/code&gt; button. You could then edit the project title and other settings directly from the page itself.&lt;/p&gt;

&lt;h3&gt;
  
  
  Better inline-editing
&lt;/h3&gt;

&lt;p&gt;A great thing about spreadsheets is that you can just click on a cell to update its value. This is far much easier than having to show up an entire form with multiple entries when the user only wants to change one parameter.&lt;/p&gt;

&lt;p&gt;We implemented inline editing in our project view so that you could change most of the goals, sections and project parameters without having to go to another screen or trigger a popup.&lt;/p&gt;

&lt;h3&gt;
  
  
  Pick defaults values
&lt;/h3&gt;

&lt;p&gt;Instead of always asking the user to fill in all the fields when creating goals, we would keep the previous values entered for the owner, score and deadline. That helps reduce the number of clicks required when creating multiple goals in a sequence as there a high chance that some of these values stay the same.&lt;/p&gt;

&lt;h3&gt;
  
  
  Focus on the right fields
&lt;/h3&gt;

&lt;p&gt;A lot of the clicks were wasted on clicking on the first field of a form. We switched to auto-focus wherever it made sense. Once again it may look like nothing, but at scale it can become a UX burden.&lt;/p&gt;

&lt;h2&gt;
  
  
  The result
&lt;/h2&gt;

&lt;p&gt;After 2 weeks of work, this is how the metrics improved.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;#&lt;/th&gt;
&lt;th&gt;Step&lt;/th&gt;
&lt;th&gt;Clicks&lt;/th&gt;
&lt;th&gt;Context-switch&lt;/th&gt;
&lt;th&gt;Context-switch weighted (x3)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Signup&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Email confirmation&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Create your profile&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Create your workspace&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Create your first project&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;Create goal for yourself&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;Create goal for Joe&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;Create sub-project&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;Create goal for yourself&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;Create goal for Joe&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;td&gt;Create new section&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;12&lt;/td&gt;
&lt;td&gt;Create goal for Jane&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Total&lt;/td&gt;
&lt;td&gt;51&lt;/td&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;td&gt;33&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Our new Friction Index is 84, which is a ~30% improvement on the previous experience. It still too much if you ask me, and a lot of that has to do with the email confirmation step. But I'm super happy to see that we cut in half the cost of creating goals and projects since it's something that people will often do with the product.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F2oxpyj0qy34qmuq4wl99.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F2oxpyj0qy34qmuq4wl99.png" alt="new-friction"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Visually we can see that fewer steps involve switching context and we reduced the number of clicks in many places.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fck8et4hqrbt0mgbnq61l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fck8et4hqrbt0mgbnq61l.png" alt="old-vs-new"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Data doesn't tell all the story
&lt;/h2&gt;

&lt;p&gt;It's important to not blindly look at the numbers and set lofty goals without understanding context. If you look at the absolute numbers, it removes all the complexity of the user experience, and it doesn't help understand the investment required to keep things simple.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Ffqb5rpjnm68feu3e1n45.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Ffqb5rpjnm68feu3e1n45.png" alt="old-vs-new-comparison"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It's important to dig into the details and look at what's happening in each step. In our case, we have highlighted the email confirmation step. That's because it means we lose control of the experience at that point and things can be much worse than what we think.&lt;/p&gt;

&lt;p&gt;Another thing is that a lot of the ideas to reduce friction came from talking to our users and observing them working with the product. Sometimes you can't cut corners, and it's better to have a couple more clicks, screens or steps to explain the value of your product. Other times you'll notice that you created new pains without realizing it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Enabling users to do more with less effort
&lt;/h2&gt;

&lt;p&gt;As I said in the intro, simplicity is a crucial feature for us. It's how we distinguish ourselves from the market, and it's essential for us to make sure we're helping our customers to get more things done faster.&lt;/p&gt;

&lt;p&gt;If anything, I hope that this post will encourage you to take a look at your product and try to measure your own friction index.&lt;/p&gt;




&lt;p&gt;&lt;a href="https://squadlytics.com" rel="noopener noreferrer"&gt;Squadlytics&lt;/a&gt; is a continuous feedback platform that helps teams keep projects on track. We remove friction from sharing goals and make updates easy to do.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>design</category>
    </item>
    <item>
      <title>What are best practices for persisting positions when using drag &amp; drop?</title>
      <dc:creator>Sten</dc:creator>
      <pubDate>Wed, 03 Oct 2018 08:17:47 +0000</pubDate>
      <link>https://forem.com/stenpittet/what-are-best-practices-for-persisting-positions-when-using-drag--drop-43hj</link>
      <guid>https://forem.com/stenpittet/what-are-best-practices-for-persisting-positions-when-using-drag--drop-43hj</guid>
      <description>&lt;p&gt;We're in the process of implementing drag &amp;amp; drop in our platform to reorder elements and while the UX is straightforward to manage I've seen a lot of options for persisting the order in DB.&lt;/p&gt;

&lt;p&gt;I'd love to get some wisdom from the community and see what the best practices are. I've looked around on StackOverflow and found &lt;a href="https://softwareengineering.stackexchange.com/questions/304593/how-to-store-ordered-information-in-a-relational-database"&gt;this article&lt;/a&gt; that has an interesting option to limit queries.&lt;/p&gt;

&lt;p&gt;So, in your experience, what's the best approach for it?&lt;/p&gt;




&lt;p&gt;Edit: for those stumbling on the post look at &lt;a href="https://dev.to/gmartigny/comment/60lc"&gt;Guillaume's comment&lt;/a&gt; for neat SQL statements.&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>webdev</category>
    </item>
    <item>
      <title>A simple tool to promote trust in your company culture</title>
      <dc:creator>Sten</dc:creator>
      <pubDate>Fri, 21 Sep 2018 07:28:59 +0000</pubDate>
      <link>https://forem.com/tability/a-simple-tool-to-promote-trust-in-your-company-culture-5877</link>
      <guid>https://forem.com/tability/a-simple-tool-to-promote-trust-in-your-company-culture-5877</guid>
      <description>&lt;p&gt;A week ago I wrote a &lt;a href="https://dev.to/squadlytics/focus-on-outcomes-not-hours-spent-in-the-office-1mhb"&gt;blog post&lt;/a&gt; about switching to a trust-based culture that seemed to have resonated with the dev.to community. This was a bit unexpected, and a few people ended up signing up for our service after reading that blog post. So today, I thought I'd be a bit more formal and explain why, what and how we're building Squadlytics.&lt;/p&gt;

&lt;h2&gt;
  
  
  Start with the why
&lt;/h2&gt;

&lt;p&gt;Over the past couple of years, technology has significantly evolved to give us more flexibility. Collaboration tools enable async work, Slack helps us stay connected, conf calls are easier than ever. The need to be in the same space at the same time to work is fading away, and people are rightfully looking for better work arrangements.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fwsaxt2k2wphfq9vnzuf2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fwsaxt2k2wphfq9vnzuf2.png" alt="Employees want flexibility, not ping-pong tables"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Remote work and flexible hours are becoming the ultimate perks that companies can offer to attract and retain talent. On top of that, it's also a great way to support people that can't do 9 to 5 and level the playing field. The traditional organization with complex layers of management is disappearing in favor of smaller autonomous teams that can execute better and faster. But that means that we need new tools to promote the vision of the company and make sure that we're all working towards the same goals.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's the easiest way to keep projects on track?
&lt;/h2&gt;

&lt;p&gt;Here's a classic scenario. You meet with your team a couple of weeks before the beginning of the quarter and do a few intensive workshops to decide what your goals are. Everybody is aligned, and now you go to get sh*t done. But after a few weeks, barely anyone can remember the objectives that were set. Focus starts drifting away.&lt;/p&gt;

&lt;p&gt;The easiest way to prevent that is to repeat the strategy, repeat the goals, early and often. It sounds boring, I know, but it's effective. Everybody gets busy, and many unforeseen problems will pop on our roadmap. That is why we need periodic reminders of the "why"s because it's really hard to be both solving a problem and thinking about why it's there.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fw5s0oy6k0oi2a1h3sccj.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fw5s0oy6k0oi2a1h3sccj.jpg" alt="This is why you should not interrupt a programmer"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What we've built to help with that
&lt;/h2&gt;

&lt;p&gt;We started Squadlytics to help teams switch to a better work culture which would empower people to achieve goals. And what we ended up building is a tiny, lightweight reminder engine.&lt;/p&gt;

&lt;p&gt;I know, it sounds silly.&lt;/p&gt;

&lt;p&gt;But we wanted to achieve a few things:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Keep the tool simple so that it doesn't become a chore.&lt;/li&gt;
&lt;li&gt;Make it accessible to everyone in the organization and avoid domain-specific language.&lt;/li&gt;
&lt;li&gt;Make it easy to share with other teams.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So, in a nutshell, Squadlytics is a goal tracking platform that sends reminders to make sure that (a) you know your goals and (b) you know how much progress you've made and (c) you know your team/company priorities.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fd51ezm0dghnaw203jt2h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fd51ezm0dghnaw203jt2h.png" alt="Squadlytics dashboard"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To use Squadlytics you just need to do the following:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Create a project&lt;/li&gt;
&lt;li&gt;Set some goals with owners&lt;/li&gt;
&lt;li&gt;Add update every week (or month/quarter)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;We kept the updates super simple, using traffic lights colors to indicate if you're on-track, at-risk or off-track.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fix5t3kn0yxk54atjmai5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fix5t3kn0yxk54atjmai5.png" alt="Squadlytics update"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Last but not least, we have a bot that will chime in to send you reminders, and that will downgrade the status of your goals if you forget to update them 😬. We're still experimenting with this, but we're trying to add built-in mechanics to help keep teams accountable.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sign up for our beta today
&lt;/h2&gt;

&lt;p&gt;While there's still a lot for us to do I'm super proud of what we've done so far. Tracking goals is only the tip of the iceberg for us, and we aim to promote better ways to work.&lt;/p&gt;

&lt;p&gt;You can sign up at &lt;a href="https://app.squadlytics.io" rel="noopener noreferrer"&gt;https://app.squadlytics.io&lt;/a&gt;, and don't hesitate to add a comment or email me at &lt;a href="mailto:sten@squadlytics.com"&gt;sten@squadlytics.com&lt;/a&gt; if you have any questions.&lt;/p&gt;

&lt;p&gt;--&lt;/p&gt;

&lt;p&gt;(you can also check the main website at &lt;a href="https://squadlytics.com" rel="noopener noreferrer"&gt;https://squadlytics.com&lt;/a&gt;)&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>showdev</category>
    </item>
    <item>
      <title>Focus on outcomes, not hours spent in the office</title>
      <dc:creator>Sten</dc:creator>
      <pubDate>Wed, 12 Sep 2018 15:50:18 +0000</pubDate>
      <link>https://forem.com/tability/focus-on-outcomes-not-hours-spent-in-the-office-1mhb</link>
      <guid>https://forem.com/tability/focus-on-outcomes-not-hours-spent-in-the-office-1mhb</guid>
      <description>&lt;p&gt;There are many blessings in being a remote team, but one that I like particularly is that you can't check over your shoulder to see who's in the office.&lt;/p&gt;

&lt;h2&gt;
  
  
  Empower people with goals
&lt;/h2&gt;

&lt;p&gt;If you focus on hours, you'll get what you want: people will show up on time, and leave after you. But you're promoting the wrong thing. You're signaling that it's more important to be around than to create something that matters. The primary drive for giving people an expected set of office hours is because you're deriving a certain amount of value from it - if I ask the team to work from 9 to 5, then we will be able to achieve &lt;em&gt;this much&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;A better approach is to go the other way around. If you give clear goals and give people the means to achieve them, then it doesn't matter how they organize their agenda as long as they deliver what everyone agreed on. That's especially important if you want to be more inclusive as not everyone can give you a straight 8 hours day.&lt;/p&gt;

&lt;p&gt;Another thing that happens is that you will scale your ability to delight your customers. When people are given goals instead of tasks, they care more about the outcome. There may be times when you'll look at the solution and will believe that you had a better idea. But if you give people room to make mistakes, then you give them room to grow. And it won't be long before your team starts moving much faster, while you can focus on other things.&lt;/p&gt;

&lt;h2&gt;
  
  
  Negative outcomes are valuable too
&lt;/h2&gt;

&lt;p&gt;One rebuttal for focusing on outcomes is that it can be understood as ignoring effort. But a negative result is still a result. Building a product can be seen as an iterative process that consists in being less wrong about what people want over time. &lt;/p&gt;

&lt;p&gt;Bad outcomes should be accepted as long as you learn from them. You should always do a post-mortem on projects, and try to understand what went wrong. It can be that the concept was poorly defined, that you didn't have enough resources, that external factors impacted the timeline, and yes, sometimes it will be because someone did a poor job. But more often than not, there will be many reasons why you didn't get the expected results, and it's rarely the fault of a single individual. So learn, fix, and repeat.&lt;/p&gt;

&lt;h2&gt;
  
  
  Embrace a remote team culture, even if you're in the same office
&lt;/h2&gt;

&lt;p&gt;Remote teams are forced by nature to document things, to communicate more, to be open. But more importantly, remote teams have to build trust and discard micro-management in favor of creating a strong culture where the vision, values, and goals are shared broadly.&lt;/p&gt;

</description>
      <category>productivity</category>
    </item>
    <item>
      <title>Get your end-to-end pipeline ready before coding any features</title>
      <dc:creator>Sten</dc:creator>
      <pubDate>Fri, 31 Aug 2018 09:20:34 +0000</pubDate>
      <link>https://forem.com/tability/get-your-end-to-end-pipeline-ready-before-coding-any-features-57oi</link>
      <guid>https://forem.com/tability/get-your-end-to-end-pipeline-ready-before-coding-any-features-57oi</guid>
      <description>&lt;p&gt;When you get a great idea (and after it's been validated), the next thing is to start building your MVP. But instead of implementing any of the required features, it's best to begin by shipping a "Hello World" to production.&lt;/p&gt;

&lt;h2&gt;
  
  
  Late deployment pipelines are costly
&lt;/h2&gt;

&lt;p&gt;A lot of teams have adopted Continuous Integration because it allows them to move faster. By integrating the work of everyone early and often into the mainline, you reduce the risk of conflicts and you make it trivial to understand what is breaking.&lt;/p&gt;

&lt;p&gt;The same thinking needs to be applied to deployments. Every week you're going to be solving small configuration problems. Missing dependencies, env variables, service configuration, monitoring tools... As you add more features to your software, you will also increase the amount of configuration required for it to work. If you wait until you're satisfied with your local tests to release your app then you're likely to spend a significant amount of time figuring out how to set things up in a public environment.&lt;/p&gt;

&lt;p&gt;The better approach is to start with your classic "Hello World" and to ship that in what will be your production. It doesn't matter if it's on mobile, desktop, web. Just make sure that you know how to deploy what you're building. And then deploy your work early and often, every day if you can.&lt;/p&gt;

&lt;p&gt;You will drastically reduce the risk of releasing and, while it looks like slowing down at the beginning, it will make you move faster. Some platforms have hard constraints on what you can ship, and you want to figure that out right from the start instead of having to refactor your code down the line.&lt;/p&gt;

&lt;h2&gt;
  
  
  Ship early, get more feedback
&lt;/h2&gt;

&lt;p&gt;Now here comes the real benefit. We tend to vastly overestimate how finished our work has to be before we can show it to others. So we keep adding features after features. And then at some point, we judge it ready and put it somewhere where others can play with it.&lt;/p&gt;

&lt;p&gt;Having your application being accessible early will help a lot to fight that tendency. Of course, it's best to keep things private until you can safely onboard people, and there are many ways to do it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Private URLs&lt;/li&gt;
&lt;li&gt;Password protection&lt;/li&gt;
&lt;li&gt;Unlist your app on marketplaces&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But the point is that you want to be able to pull out your phone or your laptop at any moment and show what you're working on. The more feedback we get, the better we can make our products. And this is also a great way to get early adopters.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>devops</category>
    </item>
  </channel>
</rss>
