Atomic’s Curriculum for Teaching Young Developers about Design

Created for recent Computer Science grads, Atomic’s Accelerator program is designed to supplement their development training and get them up-to-speed fast on higher-level consulting practices and skills. Participants in Atomic’s Accelerator Program make a commitment to study on top of their 40-hour work week, and they receive significant coaching and training in project management, team leadership, and handling customer relationships.

In recent weeks, I’ve had the fun and energizing opportunity to lead the design-focused portion of our Accelerator curriculum. Members of Cell Zero have been doing three to four hours of reading homework on design topics each week, complemented by two-hour discussions in which we unpack and distill our learnings.

Wait….what?

Many people might wonder, why in the world would you require your developers to learn about design?

Simply put, we believe that designers and developers working together are able to build better products than designers and developers working separately, a concept we call poly-skilled teams. Designers and developers each bring an important lens to the problem space, and the more we can empathize and collaborate with one another, the more value we can create for our customers.

Design Basics for Developers

Our design course covers:

  • History of design and development integration at Atomic: pain points, “A-ha” moments, and milestones
  • Introduction to design thinking, human-centered design, and personas
  • Contextual inquiry
  • Usability testing
  • Basic concepts in interaction design, using patterns to create interfaces
  • Introduction to the discipline and common patterns of information architecture
  • Dieter Rams’ 10 principles of good design
  • Basic concepts in visual design, including grid-based layouts, contrast and white space, typography, and color theory
  • Basic principles of visual interface design
  • Basic concepts of branding and identity
  • Introduction to design collaboration tools and practices including design charettes, project design principles, style tiles, storyboarding, wireframing, prototyping, critiques, and big visible artifacts

Seems like a lot, doesn’t it?

Obviously, we do not expect our developers to read a few articles about visual design and instantly become designers. However, a developer with a broad awareness of key design concepts and practices will be better equipped to support a designer’s efforts—just as a designer who understands the basics of how an app is put together (and can maybe even write some rudimentary code) will be able to avoid designing experiences that introduce unnecessary headaches for their developer teammates.

Design affects every aspect of software, and here at Atomic, design is a team sport. Many design practices are worthwhile and beneficial for developers. For example, contextual inquiry and user testing help us develop empathy for our users. Information architecture can impact how a database or backend is structured (and how much it costs to implement and maintain it). Interaction design at the workflow level can greatly impact the complexity of a product.

These are areas that benefit from high levels of cross-discipline collaboration. Developers who know these practices, who participate and support in them, can help contribute to the success of the product. Doing so can help them realize a higher level of personal satisfaction, autonomy, and fulfillment in their work.

Visual Design

Visual design is probably the design activity that least lends itself to cross-discipline collaboration. Just as we don’t expect our designers to create an API or understand much about how it works, we wouldn’t task our developers with creating or critiquing a visual design. However, we still cover visual design topics (such as typography, grids, white space, and color).

We do this to de-mystify visual design and demonstrate that it is not magic. Visual design is the artful and creative application of many known principles about how to create artifacts that communicate clearly and effectively, in an aesthetically pleasing way. Developers who understand these principles are better equipped to pay attention to the details of a design, leading to fewer “move this button 3px to the left” moments and resulting in more polished design implementation.

I’ve truly enjoyed discussing these topics with Cell Zero, and I love working with teams that understand the value that design brings.