Not Challenged at Work? Try This Before Stepping Off the Treadmill

My son used to be fascinated with our treadmill. He saw my wife and I running on it and thought it was the coolest toy in the house, largely because it was off limits and thus, foreign to him. One…

Smartphone

独家优惠奖金 100% 高达 1 BTC + 180 免费旋转




How to Scrum as a One Person Operation

Scrum is normally for teams with at least 3 developers. And there is a Scrum master and product owner around. However, the agile framework is full of gems even for one-man operations and indie developers. In the following paragraphs I will describe how I use the Scrum framework by first going through the Scrum events, how I apply them for the development of my app and then how I manage the backlog. This is not quite “Scrum by the book”, however, Scrum encapsulates very useful habits which make us humans happier and more productive even outside the work environment as personal Scrum. I’m also filling the framework here with practices I found work great for me.

I’m using Jira. The UX is not always intuitive, but it gives you what you need (and way more) to implement Scrum for a low price. I have tried to accomplish this inside Trello earlier, but it was too messy. No matter how I did it, I quickly lost the overview. 98% of the time I use the product and sprint backlog inside Jira and add or refine the user stories. The other 2% of my time I spent in the reports at the end of the sprint.

I have also tried the physical approach using whiteboards, index cards, post-its, etc. It looks fancy, but it’s impractical. You need something digital for simple copy-paste and search functionality.

First, a quick summary of the events. In Scrum you meet up for:

It doesn’t actually matter if you are solo or in a team. You still can and should hold the Scrum events. Here is how you can do “Solo Scrum” as indie developer.

Here you set yourself a goal (good habit!) and pick all the user stories from the prioritized product backlog in Jira you think you can accomplish in the next 2 weeks (assuming your sprint is 2 weeks). This can take just a few minutes if you kept the backlog clean and up to date. The result is the sprint backlog. This is quite straightforward and Jira supports creating a product backlog, sprint backlog and sprint goal including a start and end time.

All the user stories (not bugs) you select for the sprint backlog should be also estimated using story points (this number represents the relative size between user stories, usually from 1–13 and picked from the Fibonacci sequence: 1, 2, 3, 5, 8 or 13). Why story points? You can calculate your average velocity, measure your productivity and make planning more predictable. The amount of points you are getting done (and this means “done-done”, including unit tests and manual testing, etc.) in a sprint is your velocity.

At the end of a sprint, in the Sprint Review, you can inspect the product yourself, but it’s way better if you can get feedback from your users. Instead of inviting them to a meeting (which becomes quite difficult if it’s “just” a small app) you can talk with your users via email, Twitter, Reddit, etc. to validate that you are on the right track. This deviates from the vanilla Scrum, because the review should be a single event at the end of the sprint.

Here is how I do it:

Here you review how the sprint went in the past 2 weeks. Is there anything you can improve in your workflow? Did the tools you were using create any problems? Is there anything better you can use to save time and level up the quality? If yes, (and you should always find something) you add it as a user story into the next sprint. Ideally, you learn and improve yourself a little bit in every sprint. For software projects, this often means unit tests, automated UI tests, continuous integration, and so on. Is there a better tool money can buy than what you are using right now? Or are there better libraries you could use?

Here is how I do it:

This could happen when you plan the next sprint or in the moment where you process feedback. You check if the priority of the items is still correct, estimate user stories and sharpen descriptions and titles. Or add more ideas and context to existing items.

Here is how I do it:

Here you think (or better: journal, which is also a good habit) about how the last day went and what you plan to work on today by reviewing the current sprint backlog and if there are any obstacles in the way you need to take care of. That’s an opportunity to update the sprint backlog as well and check how many days are left in the sprint.

Here is how I do it:

This is how a sprint backlog looks like in Jira with the Kanban board layout. The label showing the remaining days is quite useful.

That’s all, we have covered all Scrum events. In my eyes, every event carries a productive habit: 1. Setting goals and incremental planning, 2. reviewing your work, 3. reviewing and improving yourself, 4. refining and updating your plan (backlog) and finally 5. daily reflection (or journaling).

In the following paragraphs, I describe (in my eyes) the ideal way of filling and managing your product backlog as an indie app developer. It’s not part of Scrum how to manage the backlog, just that you have one.

The product (and sprint backlog) is where your product lives. I’m adding everything to the backlog. Every piece of feedback. Yes, everything. Because everything counts — and the more, the better. That’s what works really well in Jira. You won’t get overwhelmed by the sheer amount of items due to the prioritization of items and by using filters.

The backlog is a key part of the feedback loop. And it’s simple: The most important items are at the top. What’s important? All those tangible things you hear over and over from your users. The backlog is quickly filled, even if you abandon your old system and start from scratch if you have set up a good feedback loop.

I will outline how it usually works for me and then go deeper into the important points:

Feedback can come from users, from yourself, team members (if you have any) or any other believable sources. Feedback from actual paying users is usually more valuable than from people without “skin in the game”. The important part here is to capture the original message. Don’t try to interpret and condense the feedback at this point. You can add what you think the user means but always save the original. Save it in the description part of an item in Jira after while you create a new user story or bug. This comes extremely handy once you start developing. Also, save the email address of the user who shared the feedback. This will become useful later if you need feedback on the closed feature or bug. Or if you need to clarify anything. Furthermore, reply quickly and encourage people to write to you. Keep the feedback loop going!

Here is how I do it:

It’s not strictly Scrum, but you can see it as part of the review. Since you usually can’t invite stakeholders and customers to a single live meeting, you need to pull it from existing users after making a release. Since you saved each piece of feedback from multiple users along with the email address, you can write them now and ask how they like it. Your users will love you for your responsiveness and fast development.

You need to do this every time you process feedback or review the backlog. This can be seen as part of the “Backlog Refinement”. As per Scrum max. 10% of the team’s time should go into this. So take your time, but don’t go crazy. The priority is sometimes a moving target. Or features have about the same priority and it’s hard to say. Just make sure the most important items are near the top. Also, estimate your user stories using story points. These are relative values describing the size of a feature. Later this becomes useful if you want to calculate your velocity (how many story points you do per sprint) and using this you can estimate when you are done with a set of user stories (like a specific version).

Now the critical part: Always fix bugs first. Ideally, there are no bugs in the backlog. If there are no bugs, you are ready to ship. You are flexible. You can add new features quickly. So fix them as soon as they come in. If you are currently in the middle of a feature, finish it and then take the first bug from the top.

Why that? Bugs have no story points. Because they belong to some user story and it means this story wasn’t quite finished (or not well tested). Also, it’s really hard to estimate a bug. Fixing it right away reduces your velocity — which it should. It gives you a more realistic value. The worst case scenario is if you develop months on end and then decide to quickly test and fix bugs near the release date. You will be surprised how long it takes. And it becomes a kind of waterfall model.

Bugs are always at the top for me. I add them right away to the sprint backlog once I read about a bug in an email from a user.

The idea of short sprints and a potentially releasable increment at the end of a sprint is not to ship crappy updates. You ship quality. The “trick” is to have testing and bug fixing as part of your process. The more efficient and automated the better. This is usually solved with automatic unit and UI tests.

Here is how I do it:

Try to ship an update after every sprint or even multiple times in a sprint (as long as you don’t annoy users with new downloads). Take 2-week sprints. That’s just about right for most projects. If you have engaged your users before, feedback will start pouring in again shortly after the update went online. You can be also more active and message the people who requested the features or reported the bugs you have just closed and ask them how they like the results. And that’s where the feedback loop closes.

In Jira it’s easy to filter by versions and epics by using the side panel left beside your backlog:

These are the filters I’m using right now as I’m ramping up NotePlan for version 2.0.

You can use versions for major releases you are working towards which don’t fit into a single sprint. Like a version “2.0”. Then pull in the user stories which are relevant. Remember to keep the amount low. It’s too easy to bloat it and keep on developing forever towards this version.

Epics are big user stories which you need to break down. In Jira an epic is just another filter. Bundle multiple user stories into a single relevant epic.

Here is how I do it:

Add a comment

Related posts:

O dia

Ouvi a professora de balé falar, enquanto dizia alguma outra história que já não parecia mais pertencer aos nossos antigos laços. De repente, tudo ficou assim, escancaradamente, dava para enxergar…

Corn Prep

Corn is one of those vegetables that has an extended season to allow you to do all kinds of recipes and techniques. Given that there are times when you frankly don’t have a lot of time to stand over…

Why Do People Rather Text Than Talk?

It has become common that people type on their phone rather than talk. It’s become a normal occurrence on any number of social and family events, no matter the occasion. They have a habit of texting…