Hacks in Tableau: Friday thoughts Episode 4
Every time we lean on a hack, we let Tableau off the hook for building the feature we actually need.
- Sheet swapping (using a parameter to enable and disable sheets in a container) is presented in documentation as a feature, but a 12-step process to show and hide a chart is really a hack masking a missing UI capability
- Hacks let Tableau get away with not improving the layout and formatting system, where authors spend 50-60% of their time
- Set actions and map layers got hijacked for user-interface tricks, exposing how siloed product teams ship features for one chart type rather than holistically
- Hacks hurt performance at enterprise scale — they sit hidden inside workbooks with no flag, and become a problem when Tableau later changes the underlying behaviour
- Hacks are hard to hand over and maintain, behaving like Excel's VBA black boxes when the original author moves on without religious documentation
- What I mean by hacks0:00
- Sheet swapping: feature or hack0:46
- Performance and the neglected layout system2:29
- Set actions hijacked for UI4:14
- Map layers and product silos5:52
- How hacks damage the product long term9:46
- Performance and handover at enterprise scale11:49
- Closing thoughts and channel update14:27
0:00Hey, Sam here. Today, I want to talk about
0:02a topic that drives me crazy. I've got
0:04nothing to show you. So if you're expecting
0:06me to show you something amazing in Tableau
0:07, this won't be the time where I do that.
0:10However, I do want to talk about hacks. And
0:12by hacks, I don't mean people like me who
0:14've spent too much time in front of a screen
0:16working on Tableau. By hacks, I'm talking
0:18about these tricks that we sometimes use to
0:21get ourselves out of sticky situations in
0:23Tableau dashboards and inside a Tableau
0:25workbooks.
0:26For a long time, people have asked me, "Hey
0:28, Tim, the mat players, you didn't do a
0:30video showing us how you can use it to do,
0:33you know, triple or quadruple axis charts."
0:35And there's actually a reason for that. I
0:38personally have an issue with teaching
0:40people hacks because of a philosophy that I
0:43think I've slowly developed over time.
0:46And I'm not saying that this is an issue
0:47for everyone. I'm not saying everyone
0:49should stop using hacks, because I think
0:51there is a time and a place. But there's a
0:53there's a deeper problem that I have with
0:55hacks. And it was sort of exemplified to me
0:58the other day during an exam, when a
1:00question came up, and it asked, "How do you
1:03get a user to switch between two charts in
1:07Tableau?" And it gave you a bunch of
1:09options. And it's essentially this
1:11capability here.
1:13I didn't even believe for myself that this
1:14was actually something that was in
1:16documentation, or something you should do.
1:19And this is probably a borderline hack.
1:22Okay, so you don't, it doesn't necessarily
1:24mean that this is a hack, because in some
1:25ways, this feature has gotten better over
1:28time.
1:29But essentially, what you can do is you can
1:31create a parameter, and you can then use
1:33that parameter in a calculation to control
1:36which view is being used. So essentially,
1:38your parameters then controlling whether a
1:41sheet is hidden or not. And that's
1:43essentially what happens. And essentially,
1:45you can then choose, "Oh, I'd like the map,
1:47I'd like the bar chart." And it's just
1:48switching off charts.
1:50And what's actually happening here is you
1:52're dragging all three charts into the
1:54container, and the parameters actually
1:56dynamically enabling and disabling the
1:59charts. And then the charts that is
2:01disabled sort of collapses. And there you
2:04go. Okay, so in real terms, the
2:07documentation makes this look like a
2:09feature, but in my view, it's a hack.
2:11Because for me, the right way to do this
2:13would be to give the user a capability in
2:15the user interface, along with things like
2:18containers and layouts, and control and the
2:21ability to be able to change that. And so
2:24let's get talking a little bit more about
2:26hacks and why they drive me crazy.
2:29The number one reason I don't think you
2:31should be using hacks is because of
2:33performance. Now, a lot of the hacks that
2:36we typically see, let's take the map layers
2:39options where you had essentially changing
2:41the capability where essentially map layers
2:44, well, layers are only supported in maps.
2:48So what people were doing is they were
2:49building a map, then disabling the mapping
2:51capability, the background, essentially,
2:53that turns into a scatterplot. And then
2:55from there, you can then start to visualize
2:57whatever you want. The reason I find those
2:59techniques a little bit cumbersome is
3:02because
3:03I think what they've allowed Tableau to do
3:05is essentially get away with not building a
3:08proper user interface for the product. And
3:11if you know me, I have absolutely ranted
3:13and raved for a long time about the lack of
3:16improvements to the layout system inside a
3:19Tableau to the point where I think most
3:21people in Tableau fed up with me bringing
3:23it up, and they're absolutely sick to the
3:25you know, to the nuts every time I bring it
3:26up every time we talk about it.
3:28But the layout system hasn't had any
3:30improvement for such a long time. And as
3:32people will tell you, this ends up being
3:35over 50 to 60% of the time, and all the
3:38spends just fiddling with things like
3:40formatting and layout and so on and so
3:43forth.
3:44And so I very much will literally rejoice
3:46the day we get those features. But the
3:48downside of that is because we're not
3:50getting improvements in the layout and the
3:52formatting, we're also not getting
3:55improvements in terms of the UX
3:56capabilities that we want to be able to put
4:00into these products, these analytical
4:02products so other people can use them.
4:04And so, yes, when you don't do any
4:06innovation or what's over on layout, people
4:09will try and bend the existence of what
4:11they use to be able to do stuff. A really
4:14good example is set actions. Now when set
4:16actions came out, I think the number one
4:18use case for set actions wasn't actually
4:21analytical use cases.
4:23It was in fact user interface hacks that
4:24you could then do to build things like menu
4:27systems and drop downs. I'm not going to
4:29bother trying to show you those on screen,
4:31but I will go find tweets and maybe put
4:33links to stuff that you can sort of go out
4:35and check out.
4:36But it was a real shame because set actions
4:37were really, really powerful feature. And
4:40what ended up happening is it got hijacked
4:43by users who were just crying out for some
4:46user interface capabilities to be added to
4:49Tableau.
4:50Every single feature that comes out, I can
4:52't think of any time there's a new chart, a
4:53new capability. By default, our sort of
4:56first instinct is to try and find ways of
4:58doing things that we wanted to do with the
5:00user interface or with layout or with
5:02design that we haven't been able to do.
5:06And so I actually think that the more we as
5:08a community start to use hacks, the more
5:11Tableau is actually able to get away with
5:13it. Because if I look at this document here
5:16, I don't think this is the appropriate way.
5:20I don't think it's appropriate that it
5:21takes 12 steps to give someone a user
5:24interface to be able to switch a chart on
5:27or off.
5:28You should just be able to create a menu
5:29system and the button system, link the
5:31different selections to those charts. And
5:33when you click on them, they show up and
5:35they hide. Now, they did add something
5:37called show and hide controls, which now
5:39also works for tiled content. Check out my
5:41video on that.
5:42But nonetheless, it's a far cry from what
5:44we've actually been doing for years, and it
5:47's sort of crying out for masses of
5:49improvement. Same with layers. Actually,
5:51layers is a really good example. And I'll
5:53actually highlight how this highlights a
5:55specific problem inside of Tableau.
5:57But in essence, layers, map layers, and if
6:00you had put map layers in front of any
6:03author, the first thing they would have
6:06asked us, Hey, can I do this for charts as
6:09well? Okay. layering is not something we
6:11want to just do in maps. Maps are in many
6:14ways just a an elaborate scatterplot with a
6:17background.
6:17And so people thought exactly that. And
6:19they've sort of manipulated that capability
6:21and built a bunch of features out of it.
6:23And it actually highlights what I think is
6:26a core problem when we come to product
6:28development, especially in large companies,
6:31which is these kinds of features tend to
6:34have a home.
6:35And when there is no one home for the
6:37entire user experience, as it were, so if
6:39there's no product team whose job it is, is
6:42to look at something like map layers and
6:44ask the question, hey, shouldn't map layers
6:47be a feature that's possible in all charts,
6:50then essentially, things like this happen
6:53where one part of the product, maps, looks
6:56at that feature and goes, this is
6:58incredible.
6:59This is going to help us tell better
7:00stories with maps. And it has absolutely
7:03done that. And yet, let's for argument's
7:05sake, say there's a there's a histogram
7:07team. And they how did the histogram team
7:09not look at that and think, well, yeah,
7:11that would be useful for our charts too.
7:14And in fact, and how did anyone in the
7:16charting system or anyone who looked at
7:18that didn't look at layers and think that's
7:20an incredible capability? How else could we
7:23use that to augment our analytical
7:25capabilities when we're doing stuff? How
7:28could our users use layers to tell stories
7:31with their data?
7:32And you don't have to go far to find that
7:34out. If you go to Tableau Public, surprise,
7:36surprise, a free product, lots of people we
7:39can work week out, visit the days left,
7:41right and center that highlights so many
7:43use cases for layers.
7:45And so, to me, that's a real problem.
7:48Because, again, if you'd gone through the
7:49development process, you wouldn't have
7:51arrived at the solution and said, mapping
7:52is the only part of the product that
7:54deserves this.
7:55And so it's slightly hints at the fact that
7:57they are sort of not necessarily silos
7:59within the product development team, but
8:01they are sort of camps within the product
8:03development team. And they have to sort of
8:05pitch for resources.
8:07And if one team can pitch for some
8:08resources, then they get that resource
8:10assigned to their particular part of the
8:12project. But for some reason, that resource
8:14is not sort of a holistic one, you know,
8:16while they're working on my players, it
8:19would have been interesting to say,
8:20Well, could we spend a bit more time and
8:22bring this out for all chart types and make
8:24it more of a wow feature. Instead, you've
8:27kind of got this layout that's deliberately
8:29been designed for other charts as well, but
8:32just this hasn't been sort of kind of doesn
8:34't feel finished.
8:35Okay. And so that sort of highlights a
8:37problem in general for me, because so much
8:39of where we've got to today with Tableau
8:42now needs the product to come together, a
8:44lot of the features we need going forward
8:47to make Tableau the best product that can
8:50be needs
8:51multiple disciplinary teams to come
8:53together. If you think about the layout
8:55system that doesn't just need the
8:57formatting team, the dashboarding team to
8:59come together. It also needs the charting
9:02team to come together because most of the
9:04things we're formatting involves analytical
9:06charts that we're building.
9:06We also need the server team to get
9:07involved because we want to build those
9:09things and animate them and make them
9:11beautiful. They need to be performant and
9:13fast and load in seconds on Tableau server.
9:16So how many of the things we need to do
9:18going forward require a more holistic sort
9:20of joined up approach across multiple teams
9:22, the kind of approach you kind of see Apple
9:25where when iOS 15 for example has just come
9:27out a bunch of the features work right
9:31across the
9:31whole ecosystem of Apple, they don't just
9:33work, you know, in their sort of silos they
9:36work across the whole setup. And so, going
9:38back to hacks which is sort of how I've
9:41gotten onto this run in a way, hacks really
9:43highlight sort of the weaknesses of the
9:46approach
9:46that comes in in product development. And
9:48sometimes I have to say this, sometimes as
9:51a community we tolerate it, we actually
9:53accept the fact that these hacks are the
9:55accepted way of doing things to the point
9:58where it makes it to documentation a 12
10:00step process
10:01which between sheets actually makes it to
10:03documentation, and even into an exam, and
10:06in my opinion, that shouldn't be how user
10:09interface design is done it shouldn't be 12
10:12steps to show and hide a single chart
10:14inside a tablet, and that shouldn't be
10:18something
10:18that is held as an achievement or something
10:20like that. There's actually a video a
10:22colleague of mine has done on this feature
10:24and it's had 18,000 views and it's kind of
10:26makes me cry because 18,000 people out
10:29there think that this is the right way to
10:32do that.
10:32And actually there's a better way of doing
10:33things of course there's a better way of
10:35doing things if you asked half of those
10:37people, they could probably draw something
10:39on a napkin that might not necessarily be
10:41better but would work in their heads a lot
10:43better than what we currently have now.
10:45So, the hacks, the hacks really really I
10:47think damage the quality of the products we
10:50get long term because if there's, if
10:52something never ever sort of bubbles up to
10:55the top of the pile in terms of need if we
10:58don't cry about something sort of hard
11:01enough because there's a hack that kind of
11:03suffices, then essentially it just never
11:05makes it to any developer or any sort of
11:08product managers table to be fixed because
11:10new features and new requirements
11:12to keep up with the competition will always
11:14take priority. And so this is sort of not
11:17necessarily a plea, but I'm sort of saying
11:19to people don't put up with hacks.
11:22Because if you put up with hacks, what will
11:24end up happening is over time we'll have a
11:26very hacky product, which has lots of sort
11:29of nuances I mean, it's not too long ago we
11:31had to use sheet to make buttons to
11:33progress and that was again a documented
11:35way of doing things
11:37until someone realized that's awful let's
11:39just give you a button element. And because
11:41the reason that was done is because it was
11:43causing performance issues actually had an
11:45impact on the server, and it was sort of
11:47making things go crazy.
11:49And that leads to my final point around
11:50performance, all these hacks that we do,
11:52when you actually deploy them in an
11:54enterprise setup, if you just imagine let's
11:56say you build a hack in your workbook and
11:58it's fine in your workbook because in your
12:00workbook is just you and your content.
12:03But let's say you start sharing this
12:04practice let's say you get held as a
12:06champion, and someone asks you what's the
12:08best practice way of doing this, this and
12:10this, and you share that skill with someone
12:12.
12:13Now they go build the same thing and they
12:15teach it to more people, and that sort of
12:17keeps going and before you know it you have
12:19a tableau server where maybe a small
12:21percentage maybe 10 to 20% of the workbook
12:24have these hacks in them, but these hacks
12:27don't sort of surface themselves
12:29there's no like little part of tableau
12:30saying hey I used a hack these hacks are
12:32just hidden inside of workbooks and there's
12:34no real easy way to know which ones are
12:36being used and what impact they're having
12:38but they're sitting there, sort of just you
12:41know waiting to become a problem.
12:43And where it does become a problem is
12:44especially when tablet then decides to do
12:46something about it. And now you've got to
12:48go find those hacks and remove them and do
12:50them in the supported way, so that things
12:52start to perform a little bit better.
12:55Okay, so performance is always a sort of a
12:57key thing that's especially pertinent when
12:59you run on premise for tablet server. Now I
13:02have to say most of the hacks are maybe
13:04exaggerating most of the hacks don't cause
13:06the kind of performance issues that really
13:09sort of take a server down.
13:11Those tend to be sort of bad practice
13:13things like large cross tabs you know large
13:15tables, but nonetheless, they do have an
13:18impact and in some cases they do slow
13:20things down especially when they get led on
13:22to really complex data sets or really large
13:25data sets.
13:26It just sort of multiplies the problem. And
13:28so, number one, I think it ruins the
13:30product development process for everyone
13:32because we don't sort of get the focus and
13:34attention we need on features and then
13:37number two, performance, you know
13:39performance is not something you can
13:40guarantee. Number three for me personally
13:42as a consultant is hacks are very hard to
13:44hand over. And the amount of times I've
13:46been handed over something and then it's
13:47been built with a hack and then you look at
13:49the hack and you go, really, this is not
13:52resilient, this
13:53is not going to withstand sort of
13:54resilience testing or not going to stand
13:57the test of time. Let's say I leave, I've
13:59built a hack and then I move on, unless I
14:01've documented that hack religiously which
14:04is not often the case.
14:06And then, again, that hack is sort of just
14:07living there now someone comes in to edit
14:09that they look at it. And it's essentially
14:12the same problem that Excel has had with
14:13things like VBA script where it's just
14:15basically a black box.
14:17And so, hack sort of just proliferate
14:19throughout the entire sort of community,
14:21and there's no real way there's no sort of
14:23common folklore about how things should be
14:26done.
14:27And so, listen, I'm not trying to be some
14:29some old granddad, you know, in my day we
14:32did things properly I'm not trying to be
14:34that kind of person. I love seeing the
14:36innovation I love seeing the energy that
14:38comes out of these little tricks, and
14:40actually sometimes
14:41features come out of these things is
14:42because people push the boundaries of the
14:44product that we discover features and we
14:46discover sort of capabilities, but in my
14:48view we don't get feature improvements,
14:50often enough, as a result of the hacks.
14:53Too often those hacks just become the
14:55common way of working. Now, I'm going to
14:57stop there because I think I'm just going
15:00to end up sounding like an absolute grand
15:02dad if I carry on, but nonetheless, and that
15:04's my opinion that's my view and so when
15:07people ask me
15:07Hey Tim why haven't you done that video on
15:09that little tips and tricks or how do I do
15:11this you'll see comments all the time,
15:13asking hey how do I do this or this, and
15:15often you might see me linked to someone
15:17else making that video.
15:19And in my view, that's sort of my approach,
15:21I don't make videos on these hacks because
15:23in my opinion, I think, as soon as
15:25something changes about them they're going
15:28to break, whereas supported features tend
15:30to get improved on so I can make another
15:33video, a few months later saying hey you
15:35know the
15:35map layers feature now that's available for
15:38all chart types and here's how it works.
15:42And instead you don't have to sort of
15:45figure out some sort of hacky solution that
15:48happened. My light just went out mid round
15:50that's how that's how long I've been
15:50recording so I'm going to stop there.
15:51Let me know what you think, am I being some
15:53old fogie, am I wrong, am I flat out just
15:55incorrect. Do you have an opinion on this I
15:58'd love to know, and as a hacker and your
16:01life or as a hack change your life I want
16:03to know about the good stories as well
16:06because let me be honest again
16:06hacks sometimes do get you out of sticky
16:08situations. I just don't like how much we
16:10lean on them in the tablet community,
16:13instead of actually pushing for a better
16:15product and having the time spent on things
16:17that we've been crying out for for a long
16:20time.
16:21So, thanks for watching if you've enjoyed
16:23this, check out some of my other Friday
16:25thoughts, and I did a video on tablets
16:28feature and that actually went down pretty
16:30well. Lots of you sort of got in touch and
16:33lots of stuff has sort of happened since
16:35that discussion
16:37and I've been watching some of my videos on
16:39tablo as well about that video so again,
16:41watch out some of that content in your own
16:43time it's the kind of stuff you can switch
16:45on in the background, and I do something in
16:48the background just listen to me talk
16:51because it's not often
16:52much on screen so I do check out these sort
16:54of Friday episodes as well. I'm going to be
16:56trying to get back into the videos I took a
16:58sort of a mini break what tends to happen
17:00after a big release is I tend to sort of
17:02take a short break, because when you record
17:04a lot of videos,
17:04you can't really spread out the new feature
17:05releases either because there's only really
17:07a short window where they're relevant, and
17:10then people start searching for them over
17:11time so what I try and do is get them out
17:13early.
17:14Now I've had one issue with slack, setting
17:16up slack for tab online for me at least has
17:18been really troublesome. I'm actually
17:20engaging tablet support on that particular
17:22topic to try and see if we can get it fixed
17:23.
17:24And once that's fixed I'll actually be able
17:25to show you how to set it up, and then how
17:27it works. That's probably one of the
17:29biggest features I haven't covered yet, but
17:31we'll definitely be covering that and then
17:33hopefully we can make hay on some of the
17:35other features
17:36I haven't done yet on 2021.3, but that's it
17:39for now thanks for watching and I'll catch
17:41you in the next video.
17:42Transcribed by https://otter.ai
Hacks are something we have to use from time to time to get things done or add features our clients ask for but recently I’ve found myself growing frustrated at the culture around how we accept these hacks as solutions and then features which then become documented and even validated through certification. In this video, I try and highlight why I think this is a trend we need to be more concerned about and the impact it has on feature development going forward.0:00 Intro2:28 Feature escapism6:30 Map layers example9:55 Hacks become features13:38 Managing hacks in a workflow14:57 Trying not to sound like a broken record