Upgrade to Pro — share decks privately, control downloads, hide ads and more …

UI Components by Design: Bridging the Designer-Developer Gap

UI Components by Design: Bridging the Designer-Developer Gap

Presented at the Chicago Coder Conference 2017

------------------------------------

Abstract:
Even in an agile environment, the transition between design work and development work has been un-collaborative. Designers design a thing. Developers build a thing. And in the middle… a 1-way hand-off that lacks consideration for both crafts. We can do better. Ryan and Angelina share their challenges and insights in trying to break down that wall, learned from experiences on a large-scale, integrated UX design and UI development team. From strategies for building a purposeful team structure to technical considerations in implementing a library of UI components, you’ll hear relatable experiences and practical tips to create a more enjoyable, collaborative, and productive space for design and development.

Ryan Oglesby

June 26, 2017
Tweet

More Decks by Ryan Oglesby

Other Decks in Programming

Transcript

  1. Design, build, and scale a front-end soluFon for a 70+

    person, mulA-team, mulA-applicaAon, 4+ year enterprise project.
  2. UI Components by Design DESIGN ISOLATE ELABORATE INTEGRATE LEARN BUILD

    UX DESIGNERS ANALYSTS STAKEHOLDERS DESIGN ISOLATE ELABORATE INTEGRATE LEARN BUILD
  3. Does this appear on the top of the screen or

    the bo]om? Does it meet accessibility standards? What colors can it accept? Does it have any transiAons? What does this do on mobile? Does it have a loading spinner? When does it Ame out? Can it appear like a link? Does it have a hover? What do errors look like? What size is appropriate? Is the text sentence case or Atle case? Is the touch area large enough? What’s the tab order? What are the alignment rules? ELABORATE
  4. BUILD class Button extends React.Component { render() { const className

    = this.props.primary ? "primary-button" : "secondary-button"; return ( <button className={className} onClick={this.props.onClick}> {this.props.children} </button> ); } }
  5. DESIGN ISOLATE ELABORATE INTEGRATE LEARN BUILD UI Components by Design

    UX DESIGNERS UI DEVELOPERS APPLICATION DEVELOPERS
  6. class Cart extends React.Component { render() { return ( <form>

    <Heading>Your Cart</Heading> <CartItems /> <Inline> <BodyText>Order Total</BodyText> <Currency>{this.props.orderTotal}</Currency> <Button primary onClick={this.props.doCheckout}> Checkout </Button> </Inline> <Link>Continue shopping</Link> </form> ); } } INTEGRATE
  7. <Button /> <InputField /> <Dropdown /> <MultiChoice /> <Icon />

    <Link /> <ResponsiveDrawer /> <Address /> <Currency /> <MaskedData /> <Grid /> <BusyIndicator /> <PagedResults />
  8. <Button /> <InputField /> <Dropdown /> <MultiChoice /> <Icon />

    <Link /> <ResponsiveDrawer /> <Address /> <Currency /> <MaskedData /> <Grid /> <BusyIndicator /> <PagedResults /> A Component Library
  9. “The UI Component Library is the expression of the visual

    and interac7on design of the product. 
 It enables teams to build consistent interfaces quickly. ApplicaBon developers focus on implemen7ng complex business logic.”
  10. Component all the things @mixin layout-horizontally { … } @mixin

    layout-vertically { … } h1 { … } h2 { … } .small-font { … } .bold-font { … } .button__primary { … } .button__primary--disabled { … } .button__seccondary { … } <Heading /> <SubHeading /> <BodyText small /> <BodyText bold /> <Button /> <Button disabled /> <Button secondary /> <HorizontalLayout /> <VerticalLayout /> DELIGHT YOUR CUSTOMERS
  11. <Button /> <InputField /> <Dropdown /> <MultiChoice /> <Icon />

    <Link /> <ResponsiveDrawer /> <Address /> <Currency /> <MaskedData /> <Grid /> <BusyIndicator /> <PagedResults /> DESIGN ISOLATE ELABORATE INTEGRATE LEARN BUILD UI Components by Design
  12. Ask yourself What can I do in my current organizaAon?

    Where do designers sit? Where do developers sit? Who is in the room when your work starts? When do problems come up? How do you know when work is finished?
  13. Ask yourself Designers: Can I bring developers into my process?

    Is there space to chat as I make things? Developers: Can I involve designers in the development work that I do? Grab your designer/developer friend & get them involved!