[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 ...
随机推荐
- HDU 1240 Asteroids! 解题报告
//这道题做完我只有 三个感受 第一:坑: 第二 : 坑! 第三:还是坑! 咳咳 言归正传 WA了无数次之后才发现是输入进去时坐标时z, y, x的顺序输入的 题解 : 类似胜利大逃亡 只 ...
- PHPCMS出错Call to undefined function sitename()
一站点使用PHPCMS V9.4.2,因很久未升级,在使用后台的在线升级,升级到9.5.4后,出现“Call to undefined function sitename()”错误(注原模板未升级), ...
- shell使用随笔
001 对文件某一列求和 awk '{sum += $collum};END {print sum}' /path/to/your/file 2 3 3 5 假设文件内容如上所示: # awk '{s ...
- bzoj 3131: [Sdoi2013]淘金
#include<cstdio> #include<iostream> #include<queue> #include<algorithm> #def ...
- bzoj 3122: [Sdoi2013]随机数生成器
#include<cstdio> #include<iostream> #include<map> #include<cmath> #define ll ...
- elasticsearch的服务器响应异常及应对策略
目录: 1 _riverStatus Import_fail 2 es_rejected_execution_exception <429> 3 create_failed_engine_ ...
- BestCoder Round #40
T1:Tom and pape (hdu 5224) 题目大意: 给出一个矩形面积N,求周长的最小值.(长&&宽&&面积都是正整数) N<=109 题解: 没啥好 ...
- UINavigationController导航控制器
UINavigationController导航控制器,是多个界面间跳转的重要元素,可以理解为它存储着多个viewController,它的存储结构是栈,栈的特点是先进后出,所以添加视图控制器时,要特 ...
- rpm打包
1,需要安装rpmbuild 2,准备好工作目录: mkdir -p ~/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS} 3,自定义环境: vim ~/.rpmma ...
- Java的内部类
Java的内部类 首先我们来了解一下什么是内部类? 内部类是指在一个外部类的内部再定义一个类.内部类可以是静态static的,也可用public,default,protected和private修饰 ...