process
On Process
People get confused, companies get confused. When they start getting bigger, they want to replicate their initial success, and a lot of them think that somehow there’s some magic in the process that they’ve created. And so they start to institutionalize process across the company. And before very long people get very confused that the process is the content.
In my career I’ve found that the best people are the ones who really understand the content. And they’re a pain in the butt to manage. But you put up with it because they’re so great at the content. And that’s what makes great products. It’s not process, it’s content.
Just-in-time manufacturing
Get embedded in the team. Designers should use sprint planning, grooming, standup, and retro as opportunities to provide design to — and receive feedback from — the rest of the team. Designs can take the form of written or verbal descriptions, not just wireframes and high-fidelity mockups.
Only design what’s needed. Use constant communication between engineering and product partners to understand what your collaborators will need next. Then, plan on delivering only what is needed, and nothing more. Use the agile process — grooming, planning, and retro — to find any shortfalls or excesses.
Avoid creating a backlog of designs. Designs don’t age well. In the time between finishing design and shipping code, it’s likely that you’ll learn something new that changes your understanding. If you’re producing more design than can be implemented, focus more on the quality of each design.
How beautiful the world would be if there were a procedure for moving through labyrinths
Design skirmishes
it is apparent that the unfolding of the design process assumed a distinctly episodic structure, which we might characterize as a series of related skirmishes with various aspects of the problem at hand.
As the scope of the problem became more determined and finite for the designer, the episodic character of the process seems to have become less pronounced. During this period a systematic working out of issues and conditions took hold within the framework that had been established. This phenomenon is not at all surprising when we consider the fundamental difference between moments of problem solving when matters are poorly defined and those with clarity and sufficiency of structure.
Within the episodic structure of the process, the problem, as perceived by the designer, tends to fluctuate from being rather nebulous to being more specific and well-defined. Furthermore, moments of "blinding" followed by periods of backtracking take place, where blinding refers to conditions in which obvious connections between various considerations of importance go unrecognized by a designer.
How we can do better
It actually doesn't matter whether you actually have a formal retrospective. It doesn't matter whether you have four or five labels of things on your retro board, or exactly how you do the retro. What does matter is the notion of thinking about what we're doing and how we can do better, and it is the team that's doing the work that does this, that is the central thing.
Holistic and prescriptive technologies
Holistic technologies are normally associated with the notion of craft. Artisans, be they potters, weavers, metal-smiths, or cooks, control the process of their own work from beginning to finish. Using holistic technologies does not mean that people do not work together, but the way in which they work together leaves the individual worker in control of a particular process of creating or doing something.
The opposite is specialization by process; this I call prescriptive technology. Here, the making or doing of something is broken down into clearly identifiable steps. Each step is carried out by a separate worker, or group or workers, who need to be familiar only with the skills of performing that one step. This is what is normally meant by "division of labor".
That which requires caring
Today's real world of technology is characterized by the dominance of prescriptive technologies.
The temptation to design more or less everything according to prescriptive and broken-up technologies is so strong that it is even applied to those tasks that should be conducted in a holistic way. Any tasks that require caring, whether for people or nature, any tasks that require immediate feedback and adjustment, are best done holistically. Such tasks cannot be planed, coordinated, and controlled the way prescriptive tasks must be.
Prescriptive technologies eliminate the occasions for decision-making and judgment in general and especially for the making of principled decisions. Any goal of the technology is incorporated a priori in the design and is not negotiable.
Direct management
Direct Management does not include or permit the concept of profit to occur. The management is fee-based, or based as a fixed salary, and all construction costs are fixed ahead of time, and the building design is modified during construction, to make up any over-runs. The manager is not able to move money around at will, or put it in their pocket. At the same time, the design is approximately fixed, but with the understanding that it may be changed, during the evolution of the building, so that subtle adaptations can be included in the emerging building. In the Direct Management method it is the architect themselves and the direct manager who together manage the building works and all on-site construction for the owner.
Manifesto for Agile Software Development
A DefinitionWe are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value:
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
That is, while there is value in the items on the right, we value the items on the left more.
Deadlines are bullshit
An ArticleIn software development deadlines are a necessary evil. It is important to understand when they are necessary, and it is important to understand why they are evil.
- External vs. internal deadlines
- Why are internal deadlines evil?
- Engineers who love their work
The Design Diagram
An Idea by Charles Eames & Ray EamesThis Eames drawing, often referred to as the Design Diagram, was created for a 1969 exhibition at the Louvre entitled, What is Design? Charles and Ray mailed it to the exhibition curator to augment their answers to a series of questions she had posed.
In Defence of Intuition
An Essay by Boris MüllerDesign, it seems, is not only becoming more methodical but also more scientific. This is not surprising. Design as a discipline has moved from “product beautification” to being a central part of product development. It has incorporated methodologies from human-computer interaction, sociology, and anthropology as well as advertising and management. And with the rise of design thinking, a wider range of professional disciplines are using creative methods.
I don’t want to criticize design methodologies. But against the backdrop of an overly structured design process, it is important to remind our community that there is one fundamental aspect to design that cannot be formalized in a methodology. And that is intuition.
Why we need to stop over-complicating UX
An Article by Hugo FroesMany have become so focused on the process and methodologies that they’ve forgotten the fundamentals of why we started focusing on the user and what we hope to achieve with that focus.
Beyond Artboards
An Essay by Chuánqí SunThe Pursuit of Lossless Design-Development Handoffs.
Just-in-time Design
An Article by Matthew StrömThere is a disconnect between product design and product engineering.
The Hot Potato Process
An Article by Dan MallThe big misconception I’ve seen designers and developers often fall victim to is believing that handoff goes one way. Designers hand off comps to developers and think their work is done. That puts a lot of pressure on the designer to get everything perfect in one pass.
Instead, great collaboration follows what Brad Frost and I call “The Hot Potato Process,” where ideas are passed quickly back and forth from designer to developer and back to designer then back to developer for the entirety of a product creation cycle.
Building Momentum
An Article by Dan MallFight the Waterfall
Start all of the pieces of work a little bit earlier. The key to starting work early is not succumbing to the pressure of having to finish the work. Don’t worry about finishing. If you’re a developer, you can start doing things while your design or information architect are working because a lot of your work actually isn’t dependent on their work. Some of it is, so you probably won’t be able to finish, but that shouldn’t stop you from starting.
Share Work-in-Progress Early and Often
When you share work-in-progress, share it with the caveat that no feedback is needed at this point. You’re simply sharing it to let people know where you are. For example, if you have to make 12 wireframes, share it when you finish 2 or 3. Rather than spending a whole week to drop 12 wireframes, share 2 – 3 wireframes every 2 days. The more often you do this, you start to build rhythm, and rhythm builds momentum.
The care and feeding of software engineers (or, why engineers are grumpy)
An Article by Nicholas ZakasWe do say “no” very quickly, not just to designs, but to everything. That led me into thinking about the psychology of software engineers and what makes us the way we are.
The art of taking
A Quote"By making it possible for the photographer to observe his work and his subject simultaneously, and by removing most of the manipulative barriers between the photographer and the photograph, it is hoped that many of the satisfactions of working in the early arts can be brought to a new group of photographers. The process must be concealed from—non-existent for—the photographer, who by definition need think of the art in taking and not in making photographs. In short, all that should be necessary to get a good picture is to take a good picture, and our task is to make that possible."
— Edwin H. Land, co-founder of Polaroid
Painting With the Web
An Article by Matthias OttSo much about [Gerhard Richter's painting process] reminds me of designing and building for the Web: The unpredictability, the peculiarities of the material, the improvisation, the bugs, the happy accidents. There is one crucial difference, though. By using static wireframes and static layouts, by separating design and development, we are often limiting our ability to have that creative dialogue with the Web and its materials. We are limiting our potential for playful exploration and for creating surprising and novel solutions. And, most importantly, we are limiting our ability to make conscious, well-informed decisions going forward. By adding more and more layers of abstraction, we are breaking the feedback loop of the creative process.
Technical debt as a lack of understanding
An Article by Dave Rupert"If you develop a program for a long period of time by only adding features but never reorganizing it to reflect your understanding of those features, then eventually that program simply does not contain any understanding and all efforts to work on it take longer and longer.” — Ward Cunningham
The small web is beautiful
I believe that small websites are compelling aesthetically, but are also important to help us resist selling our souls to large tech companies. In this essay I present a vision for the “small web” as well as the small software and architectures that power it.
Why aim small?
Why aim small in this era of fast computers with plenty of RAM? A number of reasons, but the ones that are most important to me are:
- Fewer moving parts. It’s easier to create more robust systems and to fix things when they do go wrong.
- Small software is faster. Fewer bits to download and clog your computer’s memory.
- Reduced power consumption. This is important on a “save the planet” scale, but also on the very local scale of increasing the battery life of your phone and laptop.
- The light, frugal aesthetic. That’s personal, I know, but as you’ll see, I’m not alone.
Features and complexity
Niklaus Wirth of Pascal fame wrote a famous paper in 1995 called A Plea for Lean Software. His take is that “a primary cause for the complexity is that software vendors uncritically adopt almost any feature that users want”, and “when a system’s power is measured by the number of its features, quantity becomes more important than quality”.
Solving the problem of software bloat
But instead of just complaining, how do we actually solve this problem? Concretely, I think we need to start doing the following:
- Care about size: this sounds obvious, but things only change when people think they’re important.
- Measure: both your executable’s size, and your program’s memory usage. You may want to measure over time, and make it a blocking issue if the measurements grow more than x% in a release. Or you could hold a memory-reduction sprint every so often.
- Language: choose a language that has a chance.
- Remove: cut down your feature set. Aim for a small number of high-quality features. My car can’t fly or float, and that’s okay – it drives well.
- Say no to new features: unless they really fit your philosophy, or add more than they cost over the lifetime of your project.
- Dependencies: understand the size and complexity of each dependency you pull in. Use only built-in libraries if you can.
Raw size isn't enough
A few months ago there was a sequence of posts to Hacker News about various “clubs” you could post your small website on: the 1MB Club, 512KB Club, 250KB Club, and even the 10KB Club. I think those are a fun indicator of renewed interested in minimalism, but I will say that raw size isn’t enough – a 2KB site with no real content isn’t much good, and a page with 512KB of very slow JavaScript is worse than a snappy site with 4MB of well-chosen images.
...[Instead, it's about] an “ethos of small”. It’s caring about the users of your site: that your pages download fast, are easy to read, have interesting content, and don’t load scads of JavaScript for Google or Facebook’s trackers.