Building a modern enterprise tool means walking a tightrope, with a CIO on one end of your pole and an iPhone on the other. You need to balance the needs of your business customers -- the people who pay the bills -- with the desires of your users. It’s a delicate balance, and one that needs to be considered at every point in the design, development, and operation processes.
We recently visited Box’s Los Altos headquarters to sit down with members of the company’s development team to learn just how the enterprise sharing platform is being built -- and how the team deals with the conflicting demands of mobile apps and cloud services.
Front-end: A great viewing experience on every platform
Martin Destagnol is Box’s head of Mobile Engineering, having joined Box with the acquisition of the Folders iOS application. He was responsible for the development of Box’s new iOS application, intended to be the way many users experience Box’s services and their enterprise content.
"We wanted to make the new Box app a delight to use, to really be the best of class in UX," Destagnol said, "Users need to see things in high fidelity, with all the formatting."
Mobile usage is different than desktop usage -- people are much more likely to be satisfied simply viewing a file, versus the deep editing traditionally done on a desktop.
Chris Yeh, Box's senior VP of Platform and Product, points out that 75% of views in Box are actually previews. Because so much work is done in preview mode, that means document viewers are a key piece of the Box story. As Yeh describes, "a view API takes documents and renders into HTML5. It’s so simple and so useful. The notion for us is, in the enterprise, the more people use viewers, the fewer files that are downloaded."
Viewers also help mobile users who want to look at files on devices that may not have the original app used to create that type of file. As Yeh says, "One of things we are seeing is that content types are being subsumed by applications. There is no need to know the underlying document object type."
Much of Box’s work on document viewers comes from its acquisition of Crocodoc, where Ryan Damico was founder. He’s now Director of Platform at Box, and focused on how to bring that technology to end users. Crocodoc brought eight years of experience in building document viewers, first in Flash and then in HTML 5, with a focus on quality and speed. "It needs to look the way it does in the native desktop application," explains Damico, "and speed is key, making things buttery smooth."
He sums up Box’s vision for document viewers simply, "Author on the desktop, consume anywhere."
That sounds easy, but it’s not. Document fidelity is tricky: What a user sees in a viewer must be the document that the original author created. His team has to work with complex documents, of all sizes, and there’s always something new to render. Damico sighs audibly as he says, "You always think you have seen the most complex PowerPoint…"
Not only does Damico’s team have to build a user experience around content, but they also have to consider the platform perspective. Viewers need to be relatively open so that any developer with content anywhere can use the Box View API.
Damico explains, "We need to help Box be the hub of content for viewing and annotating documents." The intent is that for end users, everything is on Box, while developers can access the service, convert those documents to HTML, and store them anywhere. "A lot of flexibility and control is required to do whatever is needed for the app," Damico notes, "And there are lots of use cases." The Box View APIs started with Office and PDF as they’re the most common formats, and it now supports many more. Damico expects the range to be expanded still further, to proprietary and industry specific document types.
The development of Box Notes has added an interesting wrinkle to the problem, as it doesn’t try to emulate Office, but rather starts afresh. As Damico says, "This is where Box gets into interesting space: away from legacy formats, but still supporting them."
Building a document viewer isn’t only about presenting content. It’s also about understanding how users will actually use that content. Will they want to make changes, share files with collaborators, or even present? The Box viewer will need to support commenting, handle tasks, allow basic editing, and control who has access to the content. Workflow is key to what’s required, along with understanding where in the workflow a document is. As Damico notes, "You don't need 10 people editing a document, beyond asymmetries in the workflow. But you do need to allow people to approve documents while in line in a coffee shop."
The team is also looking at providing analytics to document owners. "We’ll pull rich analytics around content," Damico suggests. "So you could see details of a white paper, who reads it, how far they got." He goes further, suggesting that Box can take documents beyond the simple view use case: "We can add interactivity."
Understanding how users work with Box is also helping Chris Yeh define the ways the service will change in 2014. He’s expecting that much of that focus will be around workflows and rules engines "in ways that are useful for business process in general. We can reimagine those, making easy to use, but still supporting retention, e-discovery and other key business demands."
Yeh notes that people have become used to enforced document management tools, and bringing in lightweight tooling like Box lets more people participate in the new workflows that result from the new tooling. "We see now everything from 'here it is, go use it' to very regimented use around defined workflows....We don't dictate -- people can work in whatever form they want."
Behind the scenes: Great performance is key to a great experience
When thinking about Box on mobile devices, Destagnol knows user experience is more than user interface and design. "It’s also performance, and we’ve done a lot on performance, to win every millisecond we could."
That’s meant having a team that understands iOS deeply, to get the most out of the platform as possible. He pointed at how the new app uses low-level tools to store data, rather than iOS’s common storage model, and how downloaded content is displayed initially at a low resolution, fading in to higher as more data is loaded from servers.
Those servers are also a huge part of the user experience at Box, as they need to deliver information in an appropriate format for the appropriate device. Business documents, especially presentations, can be large and complex, and that’s meant developing server-side tools that optimize content for not just device screens, but also for bandwidth. It’s as much bad user experience to get unexpected data charges as to try to use a bad design.
The key leader behind those servers is Sam Schillace, Senior VP of engineering. He's responsible for building and managing the development teams that deliver Box’s cloud platform.
Not all of his employees are writing the code that powers the service; about 10% of them are an engineering services team building the tools the rest of the developers use. There’s also a release management team who handle the automated systems that are used to push new and updated code to the Box servers twice a day. It’s a pace of delivery that couldn’t be handled without automated tooling, and Schillace tells us that Box keeps increasing the number and performance of its tests. "We’re putting in a lot of energy to ensure automated tests run quickly, and we’re now running 40,000 tests. That’s 10 times the number of tests running faster than the entire suite ran last year."
But ratchets don’t just keep performance at a steady state. They’re also a tool that can help speed the service up. "To improve performance, we lower the ratchets. It’s the only way to do it. We need to control the trends." Automated tools like these are key to delivering complex software at high velocity, with tools to handle much of the work. "The machines need to watch."
Continuous release and continuous development have led to the creation of a team of test architects who are embedded in the rest of the development teams, helping them design testable code. Box uses agile development methodologies, with 30 scrum teams. Schillace notes, however, "We only enforce a two week rhythm, let the teams run the process beyond that. It's all experimental and iterative. With an open culture that allows complaints."
Low transaction costs and easy switching for customers has an effect on how Box builds its code. "You have to earn peoples' respect," Schillace notes, "so that’s why we spend a lot of attention on metrics and monitoring. I like it, I think of myself more as a consumer person than an enterprise person. It's all about good software." It also changes the way Box manages its developers, allowing a high degree of autonomy, giving people the opportunity to have their own ideas.
There are risks, though, especially when putting together long-term plans for both the business and software development. Schillace has found that setting up teams with different incentives and motivations works well. "It makes space for longer term projects, and also meets the need to also drive for reactive responses." He has an architecture team that looks at long term trends, which then feeds into a planning process that pays attention to details. Even so, Box’s developers typically deliver 100 to 120 projects a quarter. It’s about knowing when to turn, Schillace notes. "We look several quarters out, and then reset every quarter. Planning is a whole interesting project for us!"
A shared vision for the future
The planning process means that everybody needs a shared vision for where Box is going. "We are at the beginning at a third wave of computing, a 30 year transformation," Schillace says. "We’re at the middle of it, with a lot of opportunities, so many things we could be working on. There’s no place where we can relax." He describes the resulting process as iteration. "You do need a hypothesis and keep refining it."
Platform and Product SVP Chris Yeh agrees, saying that Box must "stay nimble and aggressive. It needs a strong vision of how things should be, and to mix being an aggressive start-up with big company discipline."
Schillace sees the trend to agile development in cloud businesses as an interesting example of how the rise of technology impacted and fed on a business practice. "We’re moving from shipping bits of plastic to running servers. That means you can go a lot more quickly, it’s a huge mind shift." The way a company like Box handles application and service development needs to echo the changes in business around cloud and mobile, "It changes the way businesses react, on a minute-to-minute way of working."
Building a new developer culture is key to success in this new world, Schillace suggests. "It’s an emerging new practice in software development that puts all these pieces together," he says. That’s reflected in how many of Box’s peers are changing, with Yammer’s work on understanding the reactive enterprise, and Zappos’ switch to non-hierarchical operations. "They’re cultural secret sauces."
Reflecting on the future of enterprise software, Schillace suggests that there are few better places to invent the future. "One reason why am here is to experiment with this in the real world. I don't have any of the answers, we are working our way through it. We have to do it: there’s so much competitive pressure, so much velocity, while we are in the middle of period of fast change."
Much of what Box is doing is focused on that future, where mobile and cloud are a single platform. It’s what Schillace calls, "The next platform, the cloud that follows you around, connected to sensors, to processing. It’s a completely different beast."
It would be very easy for the company to split in two, one half delivering services and interfaces, running an enterprise business, and the other half building and selling apps, focusing on consumers. With two heads, driving in different directions, Box would either split or stall.
Instead, with a single vision built into its corporate culture that encompasses both those parts of the business, Box is able to deliver its service coherently, with enterprise developers pushing code at consumer speed, and consumer-facing developers understanding the business needs that drive the features they’re designing. The result is a platform that supports those consumer applications, while still delivering the governance and control that enterprise customers demand. It’s a tightrope act that’s looks like it’s finally made the big time.