<?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>DEV Community: Paul Hallett</title>
    <description>The latest articles on DEV Community by Paul Hallett (@phalt).</description>
    <link>https://dev.to/phalt</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%2F295272%2F3b6f3b08-77cb-495d-86c3-ba1787291474.jpeg</url>
      <title>DEV Community: Paul Hallett</title>
      <link>https://dev.to/phalt</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/phalt"/>
    <language>en</language>
    <item>
      <title>I'm Paul Hallett, and I support women devs.</title>
      <dc:creator>Paul Hallett</dc:creator>
      <pubDate>Tue, 03 Mar 2020 20:40:51 +0000</pubDate>
      <link>https://dev.to/phalt/i-m-paul-hallett-and-i-support-women-devs-2l4m</link>
      <guid>https://dev.to/phalt/i-m-paul-hallett-and-i-support-women-devs-2l4m</guid>
      <description>&lt;h2&gt;
  
  
  Equality in tech looks like…
&lt;/h2&gt;

&lt;p&gt;A progressive and beautiful world. &lt;/p&gt;

&lt;p&gt;Equality should mean all people, of all genders, religions, and beliefs, all contribute and gain equally from working together in technology. &lt;/p&gt;

&lt;p&gt;Not just from being a developer in a team, but also equal gain from the products that are built with technology.&lt;/p&gt;

&lt;h2&gt;
  
  
  I will advocate for equality by…
&lt;/h2&gt;

&lt;p&gt;continuing to highlight the work done by lesser represented people within my team and within the technology community. &lt;/p&gt;

&lt;p&gt;I will continue to offer mentoring and support to lesser represented people who deserve equal opportunity in tech.&lt;/p&gt;

&lt;h2&gt;
  
  
  My advice for fellow allies to support self-identifying women and non-binary folks who code is...
&lt;/h2&gt;

&lt;p&gt;Treat people with compassion. We are human, and we all make mistakes. &lt;/p&gt;

&lt;p&gt;Find opportunities to give lesser represented people a chance to build something new, or learn something new, and coach them through it. Encourage and show them that they are capable. &lt;/p&gt;

&lt;p&gt;Highlight their successes and their efforts, and give them a high five when they succeed!&lt;/p&gt;

</description>
      <category>wecoded</category>
    </item>
    <item>
      <title>I built a popular open source API project, Ask Me Anything!</title>
      <dc:creator>Paul Hallett</dc:creator>
      <pubDate>Wed, 19 Feb 2020 22:54:44 +0000</pubDate>
      <link>https://dev.to/phalt/i-built-a-popular-open-source-api-project-ask-me-anything-4fn2</link>
      <guid>https://dev.to/phalt/i-built-a-popular-open-source-api-project-ask-me-anything-4fn2</guid>
      <description>&lt;p&gt;I recently blogged about how I built &lt;a href="https://dev.to/phalt/a-retrospective-on-pokeapi-2jme"&gt;PokeAPI&lt;/a&gt;, a very popular open source API. A lot of new developers often encounter this early on in their career.&lt;/p&gt;

&lt;p&gt;I want to give people a chance to ask me questions about it, or about running open source projects, or programming in python/django.&lt;/p&gt;

&lt;p&gt;So...AMA?&lt;/p&gt;

</description>
      <category>ama</category>
    </item>
    <item>
      <title>Be comfortable with being uncomfortable</title>
      <dc:creator>Paul Hallett</dc:creator>
      <pubDate>Wed, 19 Feb 2020 22:52:15 +0000</pubDate>
      <link>https://dev.to/phalt/be-comfortable-with-being-uncomfortable-j4b</link>
      <guid>https://dev.to/phalt/be-comfortable-with-being-uncomfortable-j4b</guid>
      <description>&lt;p&gt;One piece of advise I often give to new developers or people who find it difficult to accept they don't know everything:&lt;/p&gt;

&lt;h1&gt;
  
  
  be comfortable with being uncomfortable
&lt;/h1&gt;

&lt;p&gt;I have been programming for over eight years now, I've given tech talks and built open source projects, and I've been a tech lead for two years.&lt;/p&gt;

&lt;p&gt;I regularly, almost daily, do not know how to immediately solve the tasks I am given. Over the years I have learned tricks to help me discover a path to a solution, but I rarely have a solution jump up straight away.&lt;/p&gt;

&lt;p&gt;This is a common situation for programmers: &lt;em&gt;we are problem solvers&lt;/em&gt;. We don't just write lines of code. Problems are problems because they don't have easy solutions.&lt;/p&gt;

&lt;p&gt;So when you're faced with a problem and you have no idea where to start remember: &lt;strong&gt;that's okay, it's part of your role. You will figure it out.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Get comfortable with being uncomfortable. Every time you learn a new technique to help you problem solve: remember it, and use it when you encounter a new problem.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>career</category>
    </item>
    <item>
      <title>A retrospective on PokeAPI</title>
      <dc:creator>Paul Hallett</dc:creator>
      <pubDate>Tue, 18 Feb 2020 01:15:15 +0000</pubDate>
      <link>https://dev.to/phalt/a-retrospective-on-pokeapi-2jme</link>
      <guid>https://dev.to/phalt/a-retrospective-on-pokeapi-2jme</guid>
      <description>&lt;p&gt;About seven years ago I created &lt;a href="https://pokeapi.co"&gt;pokeapi.co&lt;/a&gt;. This is the story of how I built it.&lt;/p&gt;

&lt;p&gt;It is always a delight to hear people talk about PokeAPI and how they use it. Sometimes, I don't even mention I built it to those people. I just like seeing how much joy it brings them, and how much they learn from using it. It is a feeling I can't quite describe. I feel like the creation of the site involved a short amount of very intense effort that turned into my most successful thing ever. So it's not like I did anything nobody else could, I just did it first.&lt;/p&gt;

&lt;p&gt;And to top it all off, it's about...Pokemon?!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--dUogqOfL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.kym-cdn.com/entries/icons/original/000/027/475/Screen_Shot_2018-10-25_at_11.02.15_AM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--dUogqOfL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.kym-cdn.com/entries/icons/original/000/027/475/Screen_Shot_2018-10-25_at_11.02.15_AM.png" alt="https://i.kym-cdn.com/entries/icons/original/000/027/475/Screen_Shot_2018-10-25_at_11.02.15_AM.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I had graduated university in early 2013. At university I had built a few simple Pokemon battling simulators as I was learning to code. The way the Pokemon video games worked made a lot of sense to me, from a "programming" perspective. It's all about numbers and structured data. I was already a keen Pokemon fan (obviously) and at one point I was even &lt;strong&gt;in the top 16 Pokemon trading card game players in the UK&lt;/strong&gt;. I had even taken the &lt;a href="https://www.pokemon.com/us/play-pokemon/organize/become-a-professor/"&gt;Professor course&lt;/a&gt; and judged at competitions.&lt;/p&gt;

&lt;p&gt;In 2013, APIs were just beginning to become valuable products, with startups like &lt;a href="https://twilio.com"&gt;Twilio&lt;/a&gt; and &lt;a href="https://stripe.com"&gt;Stripe&lt;/a&gt; being the new hotness of the early decade. After I graduated I moved to London to work with a &lt;a href="https://hubbub.org/"&gt;company&lt;/a&gt; I had interned at the previous summer. The part of programming that captured my attention was the philosophy behind &lt;a href="https://www.martinfowler.com/articles/richardsonMaturityModel.html"&gt;REST APIs&lt;/a&gt; but I didn't see many APIs following this pattern.&lt;/p&gt;

&lt;p&gt;So I took the idea of a pure REST API, and then I took the data that was &lt;a href="https://github.com/veekun/pokedex"&gt;scraped from the games&lt;/a&gt; and I built a REST API for it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--LfJ5Zp_n--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/9I9vBBL.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--LfJ5Zp_n--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/9I9vBBL.png" alt="https://i.imgur.com/9I9vBBL.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The project took me literally one weekend to complete. I sat in &lt;a href="https://goo.gl/maps/m8a4jTAFg9XdMViW9"&gt;this costa coffee shop&lt;/a&gt; and bought about ten coffees over two days, stole their wifi, and wrote the entire project. That was all it took.&lt;/p&gt;

&lt;p&gt;I created a twitter account for it and shared the project on hackernews and boom I &lt;a href="https://twitter.com/PokeAPI/status/402026263327412224"&gt;got 2,000 hits in less than a day&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Depression
&lt;/h2&gt;

&lt;p&gt;Let's jump into a side story quickly because I think it is important. I've struggled with mental health since around the time I built PokeAPI. In fact: the reason I was so focussed and hammered it out is because I was in a major depressive peroid and desperately needed some distraction. I had no friends in London, I was running out of money, and I no family there to help me.&lt;/p&gt;

&lt;p&gt;I have to deal with mental health every day, and it's hard for me to understand how I produced something like PokeAPI when I was in one of the darkest periods of my mental health journey. But it is what it is, and for the record: I am managing my mental health very well now.&lt;/p&gt;

&lt;h2&gt;
  
  
  PokeAPI v1
&lt;/h2&gt;

&lt;p&gt;The original version was a debug-mode (yes, I left it in debug mode for about a year) &lt;a href="https://djangoproject.com"&gt;Django project&lt;/a&gt; running &lt;a href="https://django-tastypie.readthedocs.io/en/latest/"&gt;Tasty pie&lt;/a&gt; to expose the data through an HTTP API. It was really janky, it barely held together. I coded the frontend using very basic JavaScript knowledge (I didn't become a proper js developer for at least another five years) and some poor css.&lt;/p&gt;

&lt;p&gt;But that didn't matter because &lt;a href="https://twitter.com/PokeAPI/status/411435695740575744"&gt;it became popular really fast&lt;/a&gt;. It even landed me my first real job, where I got to travel around the world and promote APIs. I was incredibly lucky and at the time I had no idea how I had pulled it all off.&lt;/p&gt;

&lt;h2&gt;
  
  
  PokeAPI v2
&lt;/h2&gt;

&lt;p&gt;Around 2015 the API had served roughly a million requests. I figured out this number by logging each hit in a database table for each month. I would then print out that table in csv format, copy &amp;amp; paste it into a spreadsheet, and then do some excel math to sum the values.&lt;/p&gt;

&lt;p&gt;The site was still very janky, but at least I had turned off debug mode by this point. A developer called &lt;a href="https://github.com/zaneadix"&gt;zaneadix&lt;/a&gt; came along and wanted to extend the API to support all the data in the veekun data set. I told them I was happy to let them contribute, and they did, incredibly so. This version was built on the same project but it used &lt;a href="https://www.django-rest-framework.org/"&gt;Django REST Framework&lt;/a&gt; to provide the APIs.&lt;/p&gt;

&lt;p&gt;We released v2 of the API around June 2015. The most contribution I did at this point was code review and bug fixing. V2 was a huge success, and I think we hit 25 million API requests about a year later.&lt;/p&gt;

&lt;h2&gt;
  
  
  Moving towards static sites
&lt;/h2&gt;

&lt;p&gt;So by 2018 I was barely involved in PokeAPI. There was occasional bug fixes and data updates, but a team of people were now managing it all for me, without me asking. &lt;a href="https://github.com/Naramsim"&gt;Alessandro&lt;/a&gt; and &lt;a href="https://github.com/tdmalone"&gt;Tim&lt;/a&gt; became, for all intents and purposes, the core developers of PokeAPI.&lt;/p&gt;

&lt;p&gt;At this time I didn't contribute much, and I let the project run stale. I had more important things in life to deal with. I think it's okay to step back from stuff like this. But I could have been more open about it.&lt;/p&gt;

&lt;p&gt;The team wanted to help me reduce the cost of the site. It was costing me around $40USD a month to run, purely because it was unoptimised and running on one giant machine on DigitalOcean.&lt;/p&gt;

&lt;p&gt;Alessandro and Tim came up with a &lt;a href="https://github.com/PokeAPI/ditto"&gt;tool&lt;/a&gt; that scraped the site, generated json files, and then hosted them on a server. The frontpage and docs became a &lt;a href="https://github.com/PokeAPI/pokeapi.co"&gt;separate repo too&lt;/a&gt;. This reduced the costs to less than $10USD a month. I maintained the cost for the domain, which was around $30USD a year.&lt;/p&gt;

&lt;h2&gt;
  
  
  and now
&lt;/h2&gt;

&lt;p&gt;So here we are, in 2020. The project is as strong as ever. We provide about 23 million API requests a month. That's an insane number. It is used for teaching API development all over the world. I see it mentioned in all sorts of blog posts, official documentation examples, and even &lt;a href="https://www.polygon.com/2014/6/27/5850720/pokemon-battle-slack-vox"&gt;video game articles&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://geekeasier.com/pokeapi-the-free-pokemon-restful-api-for-developers/10053/"&gt;Here&lt;/a&gt; are &lt;a href="https://shkspr.mobi/blog/2016/05/easy-apis-without-authentication/"&gt;just&lt;/a&gt; a few &lt;a href="https://www.twilio.com/blog/2014/11/build-your-own-pokedex-with-django-mms-and-pokeapi.html"&gt;more&lt;/a&gt; articles &lt;a href="https://dev.to/search?q=pokeapi"&gt;talking&lt;/a&gt; about it.&lt;/p&gt;

&lt;p&gt;What more is there to do? It needs new data. It is about a game and a half behind the current series. There are something like 1000 Pokemon now.&lt;/p&gt;

&lt;p&gt;It could benefit from some new features. But that would increase the costs. I don't think it will ever be a full time job, because the lawyers will come running at me.&lt;/p&gt;

&lt;p&gt;Side note: I met some developers from the Pokemon company, and they love my API. They were keen to collaborate, and I tried to pursue something but it never went anywhere. Their loss, I guess.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I am thinking of coming back to build new stuff&lt;/strong&gt;. I know it's an excellent resource for learning, and I want to tidy up the source code and use it to show off good open source practices, not just a good API resource for learning.&lt;/p&gt;

&lt;p&gt;Also: people keep asking for a search feature. This would not be in the production version, to keep costs down. But it would be easy to add to the open source project. So maybe. Watch this space.&lt;/p&gt;

&lt;h1&gt;
  
  
  Retrospective
&lt;/h1&gt;

&lt;p&gt;What would I share about this story? Let's do an open retrospective to talk about the good and bad.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bad
&lt;/h2&gt;

&lt;p&gt;What has gone wrong with this project?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;I should stop avoiding issues on the project and address them.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;I have not shown enough appreciation for those who helped to keep it alive when I was absent.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Building things are really easy, working with people is hard.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;I used to treat every comment as personal criticism. I felt obligated to deal with all issues. That's not okay, and I shouldn't have to.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Good
&lt;/h2&gt;

&lt;p&gt;What has gone well?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;It only took a short amount of very intense effort to get this started. My advice to anyone who wants to build something: &lt;strong&gt;you can do it! Just try!&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;It has inspired probably hundreds of people to program. I genuinely wonder how many people have been introduced to programming because of me and the rest of the team. That feeling is just bliss.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;It has helped me with my career. Some people say you should run a side project because it will show off what you can do. PokeAPI literally scored me multiple jobs, so that advice was true for me.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;I ended up discovering a framework (Django) that I love. I went on to help with it and ended up becoming a Django foundation member.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Parting advice
&lt;/h1&gt;

&lt;p&gt;PokeAPI didn't take me long to build, and it was only a short, intense burst of effort. But I was also very very lucky. Don't feel disheartened if you can't find a niche thing to build. But &lt;strong&gt;do keep building stuff&lt;/strong&gt; - you never know where it might take you. There are hundreds of franchises or things out there that could do with an API; so build one!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--VTMEEgJv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://media1.giphy.com/media/jvVn70uHEOBqg/giphy.gif%3Fcid%3D790b7611152dca43c20770d39b31ad34ea9d69ecd0b3a13a%26rid%3Dgiphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--VTMEEgJv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://media1.giphy.com/media/jvVn70uHEOBqg/giphy.gif%3Fcid%3D790b7611152dca43c20770d39b31ad34ea9d69ecd0b3a13a%26rid%3Dgiphy.gif" alt="https://media1.giphy.com/media/jvVn70uHEOBqg/giphy.gif?cid=790b7611152dca43c20770d39b31ad34ea9d69ecd0b3a13a&amp;amp;rid=giphy.gif"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Lean retrospectives for developers</title>
      <dc:creator>Paul Hallett</dc:creator>
      <pubDate>Fri, 14 Feb 2020 00:35:38 +0000</pubDate>
      <link>https://dev.to/phalt/lean-retrospectives-for-developers-ejj</link>
      <guid>https://dev.to/phalt/lean-retrospectives-for-developers-ejj</guid>
      <description>&lt;p&gt;They same time is money, but I hate that way of thinking. I think "&lt;em&gt;Time is valuable&lt;/em&gt;" is a better saying. Getting the most out of people's time is important, especially when it is hard to get everyone into a room together.&lt;/p&gt;

&lt;p&gt;I see a lot of people running retrospectives, and I see them resulting in very little value; just an opportunity to vent or raise issues. The lack of value comes from the fact that almost no time is given to creating actionable items out of a retrospective. People like to have their voice heard, but they value actions and results from being heard more. If it carries on without action, your retrospectives will no longer be valuable, and people will stop attending.&lt;/p&gt;

&lt;p&gt;So if you're running a retrospective, how do you maximise the amount of value without having to learn the secret sauce of managing them effectively?&lt;/p&gt;

&lt;p&gt;So here is how I run retrospectives, based off me running about 100 or so, and the experiences I've had with them.&lt;/p&gt;

&lt;p&gt;I've found the best thiing is maximise the amount of time discussing issues and creating actions. Those actions can then be followed up, &lt;strong&gt;and most importantly: addressed at the start of the next retrospective&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;You should be able to fit this into an hour comfortably.&lt;/p&gt;

&lt;h1&gt;
  
  
  Step by step
&lt;/h1&gt;

&lt;p&gt;There are three phases to my retrospectives:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Address previous action items&lt;/li&gt;
&lt;li&gt;Gather ideas&lt;/li&gt;
&lt;li&gt;Discuss ideas and write actions&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  First things first
&lt;/h2&gt;

&lt;p&gt;Take one minute to remind everyone that retrospectives are a safe space to critically discuss issues. This is not a blame game, and if you really want to, remind everyone of the &lt;strong&gt;Retrospective prime directive&lt;/strong&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Regardless of what we discover, we understand and truly believe that everyone did the best job they could, given what they knew at the time, their skills and abilities, the resources available, and the situation at hand."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Address previous action items
&lt;/h2&gt;

&lt;h3&gt;
  
  
  5 minutes
&lt;/h3&gt;

&lt;p&gt;Go through the list of action items you created last time. Explain what steps were taken to complete the action. If the action wasn't completed: ask if it is still important. If it is not important: drop it. If it is: add it to new Action list. If an action keeps being ignored, you have an issue that needs to be addressed outside of the retrospective.&lt;/p&gt;

&lt;h2&gt;
  
  
  Gather ideas
&lt;/h2&gt;

&lt;h3&gt;
  
  
  5 minutes
&lt;/h3&gt;

&lt;p&gt;Ask people to write down their ideas on post-its. You can use whatever retro format you like. I prefer &lt;strong&gt;start, stop, continue&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;After &lt;strong&gt;3 minutes&lt;/strong&gt;, ask people to start coming up and placing the tickets on a whiteboard or wall. People do not have to voice their opinion on their ticket yet. People can keep writing tickets until the five minutes is over.&lt;/p&gt;

&lt;p&gt;As facilitator; I like to start grouping tickets into topics during this time. Chances are people have similar feelings about the positive and negative things happening in the team. The only section that will be different is the ideas section.&lt;/p&gt;

&lt;h2&gt;
  
  
  Discuss ideas and write actions
&lt;/h2&gt;

&lt;h3&gt;
  
  
  50 minutes
&lt;/h3&gt;

&lt;p&gt;This section is where the value of retrospectives is hidden. So I try to maximise the time spent here.&lt;/p&gt;

&lt;p&gt;For each topic; summarise it to everyone. Chances are you are aware of the topic, so you can give some extra context if you like. Do not ask people for their voice or opinion on each topic yet.&lt;/p&gt;

&lt;p&gt;Once summarised, start with the negative section (like &lt;strong&gt;stop&lt;/strong&gt;). People often pick the positive topics to discuss first, I think it is best to leave that section to the end. For each topic, summarise what people are feeling. Ask the group: &lt;em&gt;"Does anyone having anything more to add"&lt;/em&gt;?&lt;/p&gt;

&lt;p&gt;Now is the time to start discussing this topic. As a facilitator: I try to find opportunities for actions that can help solve the issue in this topic. Propose ideas to the group or encourage people to suggest ideas.&lt;/p&gt;

&lt;p&gt;I find if I spend more than five minutes discussing a topic then it usually won't get much further. So as a facilitator I try to reach a decision on an action in five minutes. If people feel like more time is needed for that topic: then the action can be &lt;em&gt;"Have a longer discussion about topic X before the next retro"&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Once the negatives are out of the way, start discussing the ideas. Usually one person will suggest one idea, so encourage them to explain their idea more. I find that the actions from this section usually result in someone trying out the idea and reporting back to the team before the next retrospective.&lt;/p&gt;

&lt;p&gt;Finally, I summarise the good points. This section is usually around team wins, production deployments, feature launches, or other successes. They're a great way to end a retrospective and they usually don't have actions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Wrap up
&lt;/h2&gt;

&lt;p&gt;To wrap up the retrospective, I summarise the actions that are to be taken. I will try and assign each action to a person. Shared responsibility is good, and there is a higher chance actions will be completed. I usually take a photo of the post-its or write them down, and send around an email summarising the whole meeting. This email becomes the list you read from at the next retrospective about what actions you had previously.&lt;/p&gt;

&lt;h1&gt;
  
  
  Easy
&lt;/h1&gt;

&lt;p&gt;There you have it: my lean retrospective without any magic or fluff. It's straight to the point and designed to maximise the time. Feel free to copy and paste this idea fully, or take the parts that you find valuable.&lt;/p&gt;

</description>
      <category>retrospective</category>
      <category>lean</category>
      <category>agile</category>
    </item>
    <item>
      <title>What is the deepest number of ssh tunnels you have gone to?</title>
      <dc:creator>Paul Hallett</dc:creator>
      <pubDate>Thu, 16 Jan 2020 01:50:09 +0000</pubDate>
      <link>https://dev.to/phalt/what-s-the-deepest-number-of-ssh-tunnels-you-have-gone-to-20e</link>
      <guid>https://dev.to/phalt/what-s-the-deepest-number-of-ssh-tunnels-you-have-gone-to-20e</guid>
      <description>&lt;p&gt;At work, to do any manual inspection in the "backend" server for one of my projects I have to ssh into the "frontend" server first.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;home~&lt;span class="nv"&gt;$:&lt;/span&gt; ssh &lt;span class="nt"&gt;-A&lt;/span&gt; paul@frontend
frontend~&lt;span class="nv"&gt;$:&lt;/span&gt; ssh backend
backend~&lt;span class="nv"&gt;$:&lt;/span&gt; |
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;This is only two layers deep, but it made me wonder how far people have had to go in their day-to-day work in order to work with their projects.&lt;/p&gt;

&lt;p&gt;So, what's the deepest number of ssh tunnels you have gone up to? Why did you have to do it?&lt;/p&gt;

</description>
      <category>watercooler</category>
    </item>
    <item>
      <title>What are the biggest barriers to writing tests in your project?</title>
      <dc:creator>Paul Hallett</dc:creator>
      <pubDate>Wed, 18 Dec 2019 01:44:30 +0000</pubDate>
      <link>https://dev.to/phalt/what-are-the-biggest-barriers-to-writing-tests-in-your-project-4h8h</link>
      <guid>https://dev.to/phalt/what-are-the-biggest-barriers-to-writing-tests-in-your-project-4h8h</guid>
      <description>&lt;p&gt;Does your team struggle to write tests? If so, why?&lt;/p&gt;

</description>
      <category>discuss</category>
    </item>
    <item>
      <title>How do you deal with blame culture in your team?</title>
      <dc:creator>Paul Hallett</dc:creator>
      <pubDate>Wed, 18 Dec 2019 01:43:25 +0000</pubDate>
      <link>https://dev.to/phalt/how-do-you-deal-with-blame-culture-in-your-team-3ain</link>
      <guid>https://dev.to/phalt/how-do-you-deal-with-blame-culture-in-your-team-3ain</guid>
      <description>&lt;p&gt;This boils down to code ownership, somewhat (IMO).&lt;/p&gt;

&lt;p&gt;Do you work in a team where everyone owns everything, and shares the work / problems / issues together?&lt;/p&gt;

&lt;p&gt;Or do you work somewhere with a "you change it you own it" culture?&lt;/p&gt;

&lt;p&gt;What is working well for your team, and what isn't?&lt;/p&gt;

</description>
      <category>discuss</category>
    </item>
    <item>
      <title>Help me design better Django applications</title>
      <dc:creator>Paul Hallett</dc:creator>
      <pubDate>Tue, 17 Dec 2019 23:00:22 +0000</pubDate>
      <link>https://dev.to/phalt/help-me-design-better-django-applications-2dna</link>
      <guid>https://dev.to/phalt/help-me-design-better-django-applications-2dna</guid>
      <description>&lt;p&gt;I've been building a set of pragmatic guidelines around Django for the past year. it's based off the experiences I've had scaling Django applications. It takes an API-first approach to ensure developer productivity and flexibility is kept high.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ae-z_YBc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raw.githubusercontent.com/phalt/django-api-domains/master/diagrams/dads_logo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ae-z_YBc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raw.githubusercontent.com/phalt/django-api-domains/master/diagrams/dads_logo.png" alt="https://raw.githubusercontent.com/phalt/django-api-domains/master/diagrams/dads_logo.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I want to get feedback on it.&lt;/p&gt;

&lt;p&gt;I've had a few people use the guidelines, and by using them myself I have iterated on it a few times. We've had four versions so far.&lt;/p&gt;

&lt;p&gt;But I know it can be better.&lt;/p&gt;

&lt;p&gt;So if you use Django, or you're interested in Domain Driven Design, please give it a read, or maybe even try adopt the pattern yourself.&lt;/p&gt;

&lt;p&gt;Throw some opinions at me here or on &lt;a href="https://github.com/phalt/django-api-domains/issues"&gt;github&lt;/a&gt;, and let's aim to make API-based Django applications better, for everyone!&lt;/p&gt;

&lt;h3&gt;
  
  
  -&amp;gt; &lt;a href="https://github.com/phalt/django-api-domains"&gt;https://github.com/phalt/django-api-domains&lt;/a&gt; &amp;lt;-
&lt;/h3&gt;

</description>
      <category>django</category>
      <category>ddd</category>
      <category>systemsdesign</category>
    </item>
    <item>
      <title>Do these three things when you start a new developer job</title>
      <dc:creator>Paul Hallett</dc:creator>
      <pubDate>Tue, 17 Dec 2019 21:24:31 +0000</pubDate>
      <link>https://dev.to/phalt/do-these-three-things-when-you-start-a-new-developer-job-2bm3</link>
      <guid>https://dev.to/phalt/do-these-three-things-when-you-start-a-new-developer-job-2bm3</guid>
      <description>&lt;p&gt;I have worked at quite a few places now. Each time I have started a new job, I have found it difficult to get myself into "full productivity mode". With each job I started, I figured out a new thing I can do to help me reduce the on-boarding time.&lt;/p&gt;

&lt;p&gt;In my new role, which I started in November 2019, I did some preparation. I picked three things that helped me get up to speed in the past. I would try and do these within the first two weeks of my new job.&lt;/p&gt;

&lt;p&gt;I won't focus on the admin tasks like sorting out HR, or setting up your developer machine, or getting access to various tools your team uses. These things should be helping you become productive and valuable quickly.&lt;/p&gt;

&lt;h2&gt;
  
  
  Grab time with each team member
&lt;/h2&gt;

&lt;p&gt;Getting to know your team members is a great way to understand who they are, how they work, and what they do.&lt;/p&gt;

&lt;p&gt;In your first few days, you might get assigned a buddy. They will  try to introduce you to the people who matter most for your role. This usually goes by in a flurry and you are likely to forget their names. When you start writing or reviewing code, you will likely be nervous about offending them. This is all normal. But you can reduce the amount of time you feel awkward by having one-to-ones first.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;That's why I recommend scheduling informal one-to-ones with each team member, spread out across your first two weeks.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Goals:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Get to know what each team member does.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Ask them how long they have worked at the company.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Ask them what is going well on the project.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Ask them what can improve.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Get to know who they are as a person (if you feel comfortable talking about that).&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Grasping the situation like this helps you understand the state of the project. It also helps you to understand who the humans are around you. We're all interesting characters and no two people are the same.&lt;/p&gt;

&lt;p&gt;This will also set you up to understand how you can be effective in the team. Perhaps there is an issue that keeps coming up that you can help to solve? Someone might ask you about a skill that you're good at and if you can help them learn it.&lt;/p&gt;

&lt;p&gt;In my experience, I learned from three separate catch ups that we wanted to improve our testing. I shared some of my past experiences around this subject. We agreed that one of my first goals would be to help the team skill-up writing software tests.&lt;/p&gt;

&lt;h2&gt;
  
  
  Understand the project domain
&lt;/h2&gt;

&lt;p&gt;Every new role comes with a brand new project and problem. If you are lucky, the project will be well documented, with some diagrams about how it works. There may even be a wiki describing how the problem is being solved by your software and what value it provides to users.&lt;/p&gt;

&lt;p&gt;Even if these type of documents exist, sitting down and understanding the domain of the project is a valuable exercise.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I recommend grabbing another developer and drawing an entity relationship diagram on a whiteboard in your first few days.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Remember: you are not drawing a database structure, you are drawing a domain diagram. It should focus on the application logic. It should be understandable by non-technical members of your team. &lt;a href="https://stackoverflow.com/questions/21265491/what-is-the-difference-between-a-domain-class-diagram-and-a-design-class-diagram"&gt;Here is an explanation if you're stuck&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Goals:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;You should use this time to ask questions. Make no assumptions about how things work.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Understand the high-level domain of the system.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Learn how the system achieves the user requirements.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After you have drawn a domain diagram, if one does not already exist, now is a good time to take a picture and stick it in your wiki or docs. It will be helpful for future team members.&lt;/p&gt;

&lt;p&gt;In my experience, I spent an hour learning about one of the projects I am working on. I challenged my own assumptions and helped to understand the state of the project. I even ran it by a second team member to confirm my understanding was correct.&lt;/p&gt;

&lt;h2&gt;
  
  
  Complete a small programming task
&lt;/h2&gt;

&lt;p&gt;Some blog posts have recommended this one point: ship some code on your first day. I guess the intention is to help you understand the procedure for shipping code. Learning how the team tests, reviews code, and ships it is definitely valuable. But I don't think it needs to be the absolute first thing you do.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I recommend taking on a small programming task in your first week&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The task should not be a bug fix. It should be a minor feature that you can finish in about a day of work (excluding environment set up time). You should be writing some tests and learning the review process by doing this.&lt;/p&gt;

&lt;p&gt;If you can find a team member who is free, you can even try pair programming on this task.&lt;/p&gt;

&lt;p&gt;Goals&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Understand how the software is designed.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Understand the process for writing tests.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Understand how you make a pull request and merge your code.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Understand what "done" means for a feature ticket.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In my experience, I had to change a date time picker to display the last 2 years only. It was a simple enough change and I learned about the framework and how our CI/CD pipeline worked by doing it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Remember: starting is slow
&lt;/h2&gt;

&lt;p&gt;Let me wrap up by saying: starting a new job feels slow. You are likely used to high productivity from your previous job. This will feel like running through mud. That is a totally normal feeling.&lt;/p&gt;

&lt;p&gt;Learn how your new software works.&lt;/p&gt;

&lt;p&gt;Learn how your new team works.&lt;/p&gt;

&lt;p&gt;Start contributing value, not just through writing code but by figuring out how you can work with your team members too.&lt;/p&gt;

</description>
      <category>career</category>
    </item>
  </channel>
</rss>
