[zz]Lessons from Pixar: Why Software Developers Should Be Storytellers
http://firstround.com/article/lessons-from-pixar-why-software-developers-should-be-story-tellers
When most people think of Pixar they think of movies like Finding Nemo and Toy Story. But the studio has also been producing world-class film-making software for almost three decades to help bring those stories to life on the big screen. I was fortunate to work as an engineering lead on the software team at Pixar. During my time there, we utilized techniques that are commonly used in film-making to help build the studio's new software pipeline, now called Presto. This is what I learned.
“Talk to users in their own language. Use concepts and processes that your users are familiar with in order to communicate software designs as naturally as possible.”
Film Concepts in Software
It's often said at Pixar that “story is king” and that this is the primary reason for the company's success. Appropriately then, all films at Pixar begin with the Story Department, where the initial script is developed and expressed on storyboards to refine the look and feel of the film. (Storyboards are physical boards of wood with a grid of 4" x 6" hand-drawn index cards pinned to them.) This story is pitched to the executive team before being green lit and entering production.
In many ways, designing a great software product is like creating a great story. It’s not surprising that modern agile processes refer to “user stories” as a way to capture requirements from the perspective of the user. So very early on we took this concept to the next level and created a story department in our software group. This department was responsible for designing the user workflows of our new software and communicating these to our production users on standard storyboards. These boards were presented to artists (our customers) in the format of a story pitch, allowing them to interact with us in a familiar style and meeting structure. We also had a “story room” that contained all of these storyboards up on the walls, encompassing the design for the entire system in one space.
Of course, this approach will not be appropriate for all other software projects, but the key lesson is to talk to your users, and use the techniques and language they understand best. Similarly, while it's obvious that you must listen to your users when writing software for them, we took this one step further by actually embedding some of our users in our software group.
Artists rotate off and on films at
different times, so we would try to find ones who were between films and
who were interested in affecting the direction of the studio's
software. These artists would help us refine the workflows and user
interfaces for the new software based upon their experiences with the
existing software. For example, our initial focus was to support the
articulation pipeline, so we had a senior articulator join our group
early on. He would use our software on a daily basis to try and
articulate models of Buzz and Woody, he would be in design meetings to
provide input on features and point out things we were missing. He
would also help us brainstorm new ways for articulators to work more
efficiently.
Having this level of input from an expert user gave
us the confidence that we were building something that would solve the
problems that our customers were actually having on a daily basis. The
other benefit is that these embedded artists could then become
evangelists for the product amongst their peers.
Communicating Progress
“Demonstrate your software internally. Some of the best notes can come from people you least expect.”
Once a
film is in production, individual departments assemble the digital
assets of the film, including modeling, articulation, layout, set
dressing, animation, simulation, lighting, shading, special effects and
final rendering. A system of daily and weekly reviews (known as
“dailies” and “weeklies”) is used to refine all production work. These
reviews take place in a screening room with your peers, often with the
director present. Throughout this process, the story is continually
refined and the latest film “reels” are presented to the entire company
one or two times a year, at which point all employees are encouraged to
submit notes for improvement. That is one of the amazing things about
Pixar: Even the cafeteria staff or janitors can offer feedback on the
story and characters of a film.
We therefore decided to create
reels for our software designs. These were digital movies composed of
simple hand-drawn imagery that were narrated and animated to show how
users would interact with the new system. Each workflow would star a
specific artist in the studio and show how his or her daily routine
would be changed by the new way of working. These reels were refined and
presented every six months to the entire studio in our main theater.
This was a way to increase exposure for our plans and also to solicit
feedback from anyone who might not otherwise be tracking what we were
doing.
Internally, we also adopted the concept of engineering
weeklies. This was a meeting where the entire software group gathered in
a screen room once a week and individuals could present their latest
work in progress. The demos could be rough and informal because they
were for the rest of the software team, not our users. This meeting let
everyone on the team show off what they were working on and helped to
raise a greater sense of involvement. It also provided a fun way to keep
everyone up to date on the latest state of the project.
Director/Producer Model
“Balance technical and creative visions. The best products come from
listening to both sides of your brain. Find a good balance between
technical complexity and artful design.”
Developing
a film-based software process illuminated a fundamental difference in
the way films are made and the way software is developed. In the film
business, you have a director who is concerned with the creative
direction of the movie and a producer who is concerned with budget,
schedules, and staffing. These two people are peers with a natural
tension between their roles.
This classic tension played out when I was working on The Incredibles
where, during a discussion about spending more resources to achieve a
better visual effect, the producer, John Walker, told the director, Brad
Bird, that he was just trying to make sure they could cross the finish
line. To which Brad Bird responded that he was trying to make sure they
crossed the line in first place.
By
contrast, in the world of software there is normally a single person who
is responsible for assembling the final product, often called the
product manager or product owner. There are also engineers and designers
who are responsible for the art and interaction design for the product,
but they very seldom have an equally powerful voice to the product
manager.
While I was at Pixar, we experimented with a
director/producer model to manage our new software effort. We did this
in an attempt to better balance the conflicting constraints of building
something great and building something functional and on time. Our
producer came from the world of software and was responsible for things
like defining the deployment platform, programming language, development
processes and project schedules. Whereas our director came from the
world of film-making and was concerned with things like specific
animation features, user workflows, the look and feel of the product,
etc.
Both perspectives are important and often overlap. For example, we
had a lot of discussion early on about deploying on Macs versus Linux.
This decision affected technical aspects like the programming language
and UI toolkit we could use, but it also affected creative aspects like
the user interface and interaction design that we could present to our
customers.
Having two equally-weighted voices controlling the
direction of a product can certainly make for a difficult process at
times, but finding the right balance between art and technology is
critical to building amazing products. This of course was also Steve
Jobs' philosophy at Apple, that the best ideas are formed at the
intersection of computer science and art/design. The importance of this
natural tension between art and technology is also what John Lasseter
was referring to when he famously stated that art challenges technology,
and technology inspires art.
[zz]Lessons from Pixar: Why Software Developers Should Be Storytellers的更多相关文章
- Career Planning:Developers Best Practices Tutorial
This small tutorial is based on my past 16+ years of experience in software development industry. I ...
- 《Design by Contract for Embedded Software》 翻译
原文: Design by Contract for Embedded Software (state-machine.com) Design by Contract is the single mo ...
- FBX Software Development Kit
FBX Software Development Kit The FBX Software Development Kit (FBX SDK) allows software developers t ...
- A Realistic Evaluation of Memory Hardware Errors and Software System Susceptibility
http://www.cs.rochester.edu/~kshen/papers/usenix2010-li.pdf Abstract Memory hardware reliability is ...
- software glue Middleware
https://en.wikipedia.org/wiki/Middleware https://zh.wikipedia.org/wiki/中间件 Middleware is computer so ...
- Agile software architecture design document style..( sketches and no UMLs)
http://www.infoq.com/articles/agile-software-architecture-sketches-NoUML If you're working in an agi ...
- Which SQL statement is the trump card to the senior software developer
Which SQL statement is the trump card to the senior software developer MA Genfeng ...
- 学习笔记之Machine Learning Crash Course | Google Developers
Machine Learning Crash Course | Google Developers https://developers.google.com/machine-learning/c ...
- Software development skills for data scientists
Software development skills for data scientists Data scientists often come from diverse backgrounds ...
随机推荐
- Redis + php扩展的安装与配置(windows)
-->安装Redis服务 下载redis安装包 http://pan.baidu.com/s/1pJiVFHx 下载后解压 把解压后文件夹里面的文件(根据自己的系统位数选择32位或者64位)拷贝 ...
- php WIN下编译注意问题
下载VC2012,安装打开CMD 须运行 vcvars32.bat (初始化VC编译环境) 下载PHP WIN编译包:http://windows.php.net/downloads/php-sdk/ ...
- juery 实现下拉框多选 jquery-multiselect
效果: 除了jquery,需要引用的样式和js文件: <link rel="stylesheet" type="text/css" href=" ...
- 读javascript高级程序设计16-几条函数小技巧
内容概要 作用域安全的构造函数 惰性载入函数 函数绑定 函数节流 一.作用域安全的构造函数 我们知道,当使用new操作符调用构造函数时,构造函数内部的this会指向新创建对象的实例. function ...
- 聚类clustering
聚类:把相似的东西分到一组,是无监督学习. 聚类算法的分类: (1)基于划分聚类算法(partition clustering):建立数据的不同分割,然后用相同标准评价聚类结果.(比如最小化平方误差和 ...
- Linux共享对象之编译参数fPIC
最近在看Linux编程的基础知识,打算对一些比较有趣的知识做一些汇总备忘,本文围绕fPIC展开,学习参考见文末. 在Linux系统中,动态链接文件称为动态共享对象(DSO,Dynamic Shared ...
- WPF自定义窗口基类
WPF自定义窗口基类时,窗口基类只定义.cs文件,xaml文件不定义.继承自定义窗口的类xaml文件的根节点就不再是<Window>,而是自定义窗口类名(若自定义窗口与继承者不在同一个命名 ...
- WebStorm phpStorm 注册码
WebStorm User or company Name: EMBRACE ===== LICENSE KEY===== 24718-12042010 00001h6wzKLpfo3gmjJ8xoT ...
- Mysql从客户端连接服务器连不上的问题
Mysql从客户端连接服务器连不上的问题 公司要用Mysql做一个测试,开始在自己的本地建一个Mysql数据库自己本地的程序再连上去,没有遇到过连接不上的问题.这次数据库在服务器上,从本地客户端连 ...
- MapReducer程序调试技巧
写过程序分布式代码的人都知道,分布式的程序是比较难以调试的,但是也不是不可以调试,对于Hadoop分布式集群来说,在其上面运行的是mapreduce程序,因此,有时候写好了mapreduce程序之后, ...