{
    "componentChunkName": "component---src-pages-markdown-remark-frontmatter-slug-jsx",
    "path": "/attempting-agile/",
    "result": {"data":{"markdownRemark":{"html":"<p>It's been a long time since I first heard of agile. However, I didn't really know what it was until a couple of weeks ago. I knew from listening to my parents talking about it that it is a way of working — something like a mindset. It took so long for me to start wondering what agile is, because I didn't think it would help me solve my coding problems. Whenever I would reach a point in a project where I just couldn't wrap my head around the complexity anymore I thought that I am just too stupid. Now I know that the missing piece in this puzzle was structure. I mentioned earlier the term 'coding project'; This implies that whatever I was doing served the goal of coding. This approach was destined to fail, because there is no actual goal — no user to be satisfied. This is where agile comes in. The premise of an agile project is that there is a user to be satisfied. According to this method, everything I as a developer do should be focussed on reaching this goal. In hindsight, many of the challenges which have made me quit my projects in the past were set by myself. It's clear to me now that having a goal would have made things so much easier. That's because having a goal allows me to move towards it, no matter how small the steps.</p>\n<p>So, what exactly is agile? Apart from the mindset, agile is a bunch of tools and methods that help us manage large software projects. I haven't understood everything there is about agile, but the great thing is that even just incorporating one of the many tools can improve a project. For example, me and my best friend are currently working on a simple multiplayer browser game. Although it is a really simple game, I want to do it well. A non-agile way would be to create a master plan with pixel-perfect UI and a detailed list of all features the game should ever have upfront. I don't do that. Instead, I think about the story a user would tell when he plays my game and put the key points on sticky notes. So far, I have a one-dimensional, horizontal, high-level storyline of the actions a user can take in my game; This is called the backbone. Now, I brainstorm tasks a user would complete and add them under the respective note from the backbone. Coming back to my multiplayer game, I might have a backbone note saying \"identify myself\" and under it two actions \"create nickname\" and \"design avatar\". Next, I add a vertical dimension by prioritising the features: Important at the top, less important at the bottom. Because of the iterative nature of agile, I don't need to know all features beforehand. To get going, I want to mark of just the features that are absolutely necessary to provide value to the user; This is often called the MVP (Minimum Viable Product). What I have built so far is called a User Story Map and I can easily draw horizontal lines, grouping the notes, to plan releases of my software. To build the MVP, all I need to do is to write software that satisfies the tasks beneath the backbone and over the top-most line. In a sprint, these tasks would constitute my backlog.</p>\n<p>The great advantage of a User Story Map is that I can add new tasks to it, and I can re-prioritize the tasks at any time. This makes software project so much easier because it is impossible to know what the end product should be like at the beginning of a project. Software changes, and it should change to reflect the needs of the user.</p>\n<p>This was just one example, but there is a lot more to agile than what I have covered here. Next week, I will write about how Test-Driven-Development ties into agile. Stay tuned!</p>","excerpt":"It's been a long time since I first heard of agile. However, I didn't really know what it was until a couple of weeks ago. I knew from…","frontmatter":{"slug":"attempting-agile","title":"How Agile removes complexity from Software Projects","thumbnail":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","backgroundColor":"#b89868","images":{"fallback":{"src":"/static/fd33651aa60e0f5e0ba7bbc544bd447a/3b307/attempting-agile.jpg","srcSet":"/static/fd33651aa60e0f5e0ba7bbc544bd447a/d9f52/attempting-agile.jpg 200w,\n/static/fd33651aa60e0f5e0ba7bbc544bd447a/0132d/attempting-agile.jpg 400w,\n/static/fd33651aa60e0f5e0ba7bbc544bd447a/3b307/attempting-agile.jpg 800w,\n/static/fd33651aa60e0f5e0ba7bbc544bd447a/1e618/attempting-agile.jpg 1600w","sizes":"(min-width: 800px) 800px, 100vw"},"sources":[{"srcSet":"/static/fd33651aa60e0f5e0ba7bbc544bd447a/b9488/attempting-agile.webp 200w,\n/static/fd33651aa60e0f5e0ba7bbc544bd447a/47294/attempting-agile.webp 400w,\n/static/fd33651aa60e0f5e0ba7bbc544bd447a/89c0d/attempting-agile.webp 800w,\n/static/fd33651aa60e0f5e0ba7bbc544bd447a/94e9c/attempting-agile.webp 1600w","type":"image/webp","sizes":"(min-width: 800px) 800px, 100vw"}]},"width":800,"height":533}}}}}},"pageContext":{"id":"9216d8cd-5efc-5236-a875-29ef15e8457d","frontmatter__slug":"attempting-agile","__params":{"frontmatter__slug":"attempting-agile"}}},
    "staticQueryHashes": ["27537384"]}