Prioritization for Data Analysts

 

next-looker.png

For the past two years I’ve worked as a data scientist, first on the marketing team for WordPress.com and now on the growth team at Help Scout. In both of these roles I’ve been the sole data analyst on my team so I tend to have more work to do than I have time for. As a result, I spend a lot of time thinking about how to prioritize what’s on my plate. My goal with this post is to share some of what I’ve learned to help other data folks who are in similar roles.

The prioritization problem

Here’s a made up scenario:

Your manager asks you for help with a medium priority analysis that will take several days. Shortly after you begin working on it, a coworker pings you for help with an urgent request that will only take a few hours. A little while later, your boss’s boss asks you for help with a low priority one-day project.

You now have three requests from people with differing seniority each with a different duration and urgency – which do you work on next and why?

Ad hoc requests vs projects

At a high level, there are two types of data requests:

Ad hoc requests are questions that can be answered fairly quickly. They may take a few minutes or a few hours and the urgency can range from “drop what you’re doing” to “no rush at all”.

Projects take longer and usually have a higher impact on the business. For me, they range from a few days to (rarely) a few weeks.

While it may be tempting to only want to work on ad hoc requests or only on projects, the reality is that they’re both important and if you’re the only analyst, you’ll need to work them both into your schedule. For example, even if you’re working on a big project, you can’t simply ignore the urgent ad hoc requests that come up during the course of a week. Telling your CEO that you’ll get to his request in three weeks when you’re done with your project is not recommended.

Therefore my advice is to set aside about two hours each day to work on ad hoc data requests and spend the rest of your time working on your highest priority project. This will give you time to work on those longer, high impact initiatives but still give you time to work on the shorter requests as well.

I wouldn’t loop your manager into the prioritization of ad hoc data requests; he or she probably has better things to do than helping you decide “spend 30 minutes on this then spend an hour on that” etc etc. Use your judgment: work on whatever is the most urgent or will have the highest impact on the business. When in doubt, base it on the seniority of whoever is asking.

For projects, I definitely would recommend getting your manager’s help prioritizing what to work on. He or she help you decide where you can be the most impactful and when questions come up about why you’re not working on some other thing, it’s not just you who made that call.

I would only work on one project at a time. I’ve tried doing like 3 hours a day on one project, 3 hours a day on another, but all that’s going to do is make both take twice as long if not longer due to the frequent context switching.

When you meet with your manager, keep him or her up to date about where you’re at with your project. Often it’s hard to predict at the start how long a project will take. Something you thought might take a week will take a day. Something you thought would take three days will take two weeks. That’s just the nature of it. Keeping your lead informed.

Sometimes priorities will change. Your expected three-day project that is now in its second week may get put on the back burner in order to work on something else. It’s easy to get frustrated when this happens, but remember that you’re there to have the biggest impact on the business, not to finish projects just for the sake of finishing them. Sometimes what’s highest priority will change so be flexible.

When priorities change and you have to change projects midway, try to estimate what impact that will have on the completion of the original project. If you estimated you would complete your original project by the end of the week, but by switching projects it will now take an additional week, communicate that to the people waiting on the result of the original analysis.

Get clarity before beginning your analysis

Regardless of whether a request is ad hoc or a project, I’d recommending asking the requestor several questions:

  • How important is this?
  • Is there a deadline?
  • How accurate do you need the answer to be?
  • What type of end result are you looking for?

If you don’t ask about importance, you risk spending a lot of time on an analysis that is not that important to the person asking about it. It’s common for someone to ask a quick hey-I-wonder-about-this question, but they only care if you can find the answer quickly.

Similarly, ask whether it needs to be done by a specific date. If the answer is holding something up, it should get higher priority than something that doesn’t.

Asking about accuracy is something that took me a while to appreciate too. I’ve run into a lot of data requests that I can give a 95% accurate solution to fairly quickly, but that would take much longer to get to 100%. A lot of times, people will be fine with a 95% quick solution. Understanding when 95% is acceptable and when 100% is necessary can save you a lot of time.

Sometimes I also ask what type of end result the person is interested in. It often helps them and you clarify what the analysis is all about.

For longer projects, I’d also recommend periodically updating the person who requested it with your progress. As they see your progress, they might want to refine the request or may be happy with the results as-is, freeing you up to work on something else.

Staying organized

I’ve seen some data teams ask people to fill out a little template (usually in a Trello card) to help people ask good data questions. I prefer to discuss the details with the person, then create a Trello card for myself with the relevant information.

I would recommend keeping a list of all potential projects and ad hoc data requests. That is, don’t just try to keep it all in your head. I do this in Trello with four lists:

  • Multi-week Projects
  • Multi-day Projects
  • Multi-hour Projects
  • Quick Requests

Whenever someone asks a question, I get the details from them then create a new card and add it to the appropriate list.

You could also have a Completed list where you drag cards as you complete them to keep a record of it. I’ve also seen some teams have a list for each month or quarter (January 2018, February 2018, etc) and drag completed cards to the relevant list when it’s complete. I did that in the past, but tend to just archive the cards now to avoid cluttering up the Trello board.

Invest in a proper BI tool like Looker

One other big win has been switching from manual data analysis (using MySQL queries and R) to Looker, the premier Business Intelligence (BI) tool on the market today. I could go on for hours about how amazing Looker is, but at a high level it lets you:

  • Create dashboards that are automatically updated as the underlying data changes.
  • Use LookML, Looker’s modeling language, to teach Looker how our data fits together. With that in place, I rarely have to write queries by hand anymore. I can use Looker’s interface to quickly ask and answer questions.
  • This also means that other people at the company who may not have querying skills can answer their own questions without asking me every time.

I’d highly recommend checking out Looker if you still find yourself wrangling data a slow manual way.

If this post resonates with you, I’d love to connect

If you’re a data analyst, especially if you’re the only one at your company or part of a small team, I’d love to chat to learn more about what you’re working on, how you prioritize, etc. Drop me a note: matthew.h.mazur@gmail.com. Cheers!

Experimenting with waking up early to work on side projects

In the past when I’ve worked on side projects it’s been primarily on nights and weekends. Between school and work, I never had time for them during the day and because I’m not much of a morning person, nights and weekends always worked better.

When my son was born about three years ago, a lot of the time that I would have put into side projects went towards trying to be a good dad to him and now also to my daughter. This led to less time during the week because after I would get done with work, I would spend time with them and after they would go to sleep, I wanted to spend time with my wife and relax. I also can’t stay up too late because I needed to get up with the kids in the morning. Similar story on weekends.

This has led to my side projects time dropping from maybe 10-15 hours/week to only 3-4 hours/week for the last several years.

Inspired by my friend and coworker Dave Martin, I’ve started experimenting with waking up early to work on side projects. Not 4am-5am like him (!), but just at 6am. That gives me 1 to 1.5 hours to focus on side projects most days. I take Saturday off and also wind up skipping some other days, but it’s probably doubled the amount of time I put into side projects to around 7-8 hours per week.

To make this work, I’ve also had to adjust my evening routine. Instead of going to bed around 10:30pm, I try to be in bed by around 9:30pm to make sure I get in 8-9 hours. I wind up watching less Netflix, but don’t feel like I’m missing anything important.

And as a side effect, I’ve found that I’m sleeping a lot better now that I’m no longer jumping straight from coding into bed a lot of nights. All too often I’d just lie there for hours waiting for problem solving mode to turn off. Now I read and it makes it much easier to fall asleep.

If you typically work on side projects at night like I did in the past, I encourage you to experiment with waking up and going to bed early for a few weeks to see how it works for you.

Building vs Buying Software

At Automattic and now at Help Scout I’ve been involved in several discussions about the merits of building something internally vs paying for a third party SaaS tool or plugin. Examples include the internal analytics platform Automattic (which we wound up building ourselves) and a business intelligence tool at Help Scout (which we wound up buying).

If you’re lucky it will be an easy decision, but more often than not there will be pros and cons to both approaches that you’ll have to weigh. Some of the factors include:

Do you have the engineering resources and know-how to build it? If not, you’ll obviously have to buy.

How much time will it take to build? As anyone who has built software knows, estimating how much time it will take to “complete” is often incredibly difficult. A one month project could easily turn into four after all is said and done. The more complex the project and the longer it will take to build, the more you should lean towards buying.

How much does it cost to buy? The cheaper it is the more it makes sense to buy.

How much will it cost to build? At first this might seem like $0, but engineers are expensive. A developer making $120K/year might be $180K/year fully loaded (with benefits, taxes, etc) or $15K/month. Several developers spending a month on a project can easily cost tens of thousands of dollars. And that’s not even counting PMs, designers, and anyone else involved in the project. It’s tempting to think “we have to pay them anyway so it doesn’t really cost us that”, but it’s not so simple once you consider what other revenue-generating projects they could be working on instead (and you don’t have to employ them anyway). There’s a real opportunity cost to building something internally.

Does the thing you’ll buy meet all of your requirements? If it’s critical that the software do something and the SaaS you’re considering doesn’t do it, you’ll probably need to build. However, you might be better off paying for a tool that is 90% of what you think you need vs spending weeks or months building something that might be 100%.

What other capabilities does the tool you’ll buy provide? While you might be able to build something that meets your minumum requirements, a tool you buy is likely going to do a lot more than the minimum. You may not think you need those extra features now, but there’s a good chance that you will later. At that point you might have little choice but to keep iterating on what you’ve built which can easily extend the duration of a project.

Is it important to own the data? Third party tools will likely collect user data which may be a concern both from privacy and analysis perspectives.

How likely is it that the third party solution will exist in 5 years? And are there alternatives you could switch to if that hot-new-startup you pay for shuts their doors in six months?

Are you building this as a long term investment? When we were considering whether to buy or build Automattic’s internal analytics platform one of the factors was that we planned on Automattic existing in 10, 20+ years so it made sense to invest time building something that we could use for the long haul. Be skeptical with this one though: while we might hope that whatever we’re working on now will exist in 20 years, the reality is that it probably won’t.

I usually default to buy unless there is a compelling reason to build. In my experience software usually takes much longer to build than initially expected so it winds up making more sense to pay for a 90% solution that you can have immediately and devote those engineering resources to the core business. But again, it’s often not so simple in practice and there can be reasons to build instead (full control over the features and design, ownership of the data, cost, etc).

I’d love to hear about your experience buying vs building. Was there ever a time you built something that you later regretted or vice versa?

More hours != more results

I used to play a lot of online poker and thanks to a combination of third party analytics tools like PokerTracker and ones I built myself, I was able to gain a lot of insights into my own play.

For example, the generally accepted best time of day to play online is usually late at night because that’s when people are the most tired and therefore make poor decisions. I once looked at how much money I made per hour broken down by hour of the day. Because I played a lot at night to take advantage of the poor play by others, I expected my highest hourly rate to be in the evenings and early morning. But the numbers told a different story: my hourly rate after 11pm was about break even. After countless hours of late night play, my overall profit would have been the same had I not played at all after 11pm.

Turns out that even though others were playing poorly during those hours, I was too, which negatated any advantage that I had.

The late night play also took its toll on my wellbeing during the day because I’d inevitably be tired from staying up late to play.

I bring this up because the experience taught me that working harder often isn’t the solution to a problem. It’s tempting to think that you can just put in more hours and you’ll achieve more results, but if the quality of your work suffers you might not make any meaningful progress or worse, you could undo the previous progress you made.

Next time you catch yourself trying to push through on a task even though you’re not feeling 100%, consider taking a break until you are.

A 70/20/10 approach to time management

If you have a lot autonomy in your job to choose what to work on, it’s worth spending some time thinking about how to effectively choose tasks and distribute your time among everything you have to do.

Lets say you have three tasks:

  1. Task A (High Priority)
  2. Task B (Medium Priority)
  3. Task C (Low Priority)

In this example, it’s clear that you should work on A, then B, then C.

But in the real world, each task takes a certain amount of time and that can complicate things. If you’re lucky, it looks like this:

  1. Task A (High Priority, 1 Day)
  2. Task B (Medium Priority, 1 Day)
  3. Task C (Low Priority, 1 Day)

In which case you should still do A, then B, then C.

This also works when the shortest tasks are also the highest priority tasks:

  1. Task A (High Priority, 1 Day)
  2. Task B (Medium Priority, 3 Days)
  3. Task C (Low Priority, 1 Week)

But what happens when the highest priority tasks also take the most time?

  1. Task A (High Priority, 1 Week)
  2. Task B (Medium Priority, 3 Days)
  3. Task C (Low Priority, 1 Day)

Is it still true that you should work on A, then B, then C?

We can test our principles by looking at how well they hold up under extreme circumstances:

  1. Task A (High Priority, 1 Month)
  2. Task B (Medium Priority, 1 Week)
  3. Task C (Low Priority, 1 Hour)

Should you still work on A then B then C when A will take a month and C will take an hour?

Probably not… but you also shouldn’t just work on your shortest tasks first either. You could wind up spending a lot of time working on low priority tasks without spending time on things that matter.

I’ve found that a 70/20/10 approach works pretty well:

Spend 70% of your time on your high priority tasks, 20% of your time on medium priority tasks, and 10% of your time on low priority tasks. In a standard 5-day work week, that works out to be 3½ days on high priority tasks, 1 day on medium priority tasks, and ½ a day on low priority tasks. And if you have multiple tasks with the same priority, work on the shortest ones first.

That will ensure that you’re spending most of your time on the things that matter, but still are making progress on the medium and low priority tasks that need to get done as well.

 

 

 

 

 

Effectiveness

If you followed me back in the day while I was working on my failed Lean Designs startup, it probably would have been hard to tell that things were headed in the wrong direction. Even for me, it took a long time to realize how many problems there were with the idea and execution.

I’ve thought about that a lot since then. It’s really hard to observe something and evaluate how things are going based on activity alone. Activity is necessary and important, but only if it’s applied effectively.

How can you tell whether activity is effective? Looking ahead, it’s difficult unless you have a deep understanding of the problem and the possible solutions. For example, it might have seemed like setting up an LLC and having a logo designed for Lean Designs were important tasks, but really they weren’t. If you’ve built an online business before you might realize that, but if not it would be tempting to look at the completion of those tasks and think I was making meaningful progress.

Looking backwards is a bit easier. Compare your current results for some goal with where you were a month ago, six months ago, a year ago. Have you made progress in whatever metric that matters? If your goal is to build and grow a SaaS startup, have you launched? What do your growth and retention rates look like? If you’re trying to lose weight, are you? If you’re trying to write more often, have you been?

It’s tempting to want to explain why when the results aren’t there. In the short run, there can be a lot of valid reasons why things aren’t going well. Bad luck, illness, etc etc. But the further back in time you go, the harder it becomes to attribute the lack of results to these types of factors.

If you look at where you are today with a goal and your results haven’t changed from six months ago despite lots of activity, it’s worth taking a step back and trying to identify the root cause. Ask why a bunch of times. Maybe there is a valid reason, but in my experience it’s often something more fundamental. Maybe I’m not as motivated by the goal as I thought which is causing me not to put the effort into it that is really required. Like with Lean Designs, maybe my entire approach is wrong. Maybe I shouldn’t have been working on Lean Designs in the first place.

And to be clear I’m not saying the ends justify the means. Just that results are important when goal-setting and the longer you go without meaningful results, the greater the odds are that something is fundamentally wrong with the goals or the execution.

Put another way, if I’ve been working on something for a while and the results aren’t there, I’m probably doing something wrong and need to re-evaluate my approach.

This might be obvious, but it took me a long time to really internalize it so I wanted to share in case it helps anyone.

Would love to hear your thoughts.

JavaScript Dates with Moment.js

One of the biggest frustrations developers deal with is working with dates. For an excellent overview of why dates are so complicated, check out JavaScript dates, trains, Passover, and Henry VIII by Curtis Autery.

When it comes to working with dates, JavaScript will make you want to hit your head against your desk. Even for simple tasks, working with JavaScript’s Date object can be a major hassle. It lacks a lot of basic functionality that you’d expect like being able to format a date/time a certain way, adding or subtracting from dates, working with locales, and a lot more.

There are hacky ways to accomplish these things as the thousands of StackOverflow posts about JavaScript dates can attest, but save yourself the trouble and check out moment.js.

Moment.js is an awesome library that makes working with dates in JavaScript a lot less painful. Dare I say it, maybe even enjoyable. Rather than give an incomplete introduction to its features here, scroll through the Moment.js docs page to see everything that you can do with it.

And next time you find yourself writing new Date in your code, take 30 seconds to download moment.js and save yourself hours of frustration.