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

Design at Scale: Techniques for great UX develo...

Design at Scale: Techniques for great UX development across large organizations

It is hard to build good software, really hard. Doing so at scale is even more challenging. Add in the requirement that apps be well designed with a consistent UX and most organizations find failure. In this session you will get a rare glimpse into the platforms, frameworks, processes and techniques that GE uses to build software. Take a deep dive into our technical architecture, based on modern web development frameworks. Learn about the techniques used to support a community of 14,000 global developers. Learn about the challenges in running apps both on the cloud and embedded into devices.

Dan Harrelson

April 03, 2013
Tweet

More Decks by Dan Harrelson

Other Decks in Technology

Transcript

  1. A design system is a collection of visual and interaction

    elements that embodies the brand. The system is often expressed across many channels including web, mobile, desktop, and service so that a consistent user experience is produced.
  2. A design system is a collection of visual and interaction

    elements that embodies the brand. The system is often expressed across many channels including web, mobile, desktop, and service so that a consistent user experience is produced. High quality
  3. Code Put the design system into the hands of developers

    <link href="./css/themes/iids/iids.min.css" rel="stylesheet"> <!-- Include modernizr and respond first so they can shim any elements which are missing in older browsers. Other javascripts should be included at the end of the page to improve load time. --> <script src="./js/vendor/modernizr-respond.js"></script> </head> <body> <div class="navbar"> <div class="masthead navbar-inner"> <div class="container"> <a class="brand" href="#"><span class="ge-logo">General Electric</span> <button class="btn btn-collapse" data-toggle="collapse" data-target=".pr <i class="icon-bar"></i> <i class="icon-bar"></i> <i class="icon-bar"></i> </button>
  4. // ------------------------- // GLOBAL IMPORTS // ------------------------- // Web Fonts

    @import "fonts/inspira.less"; // GE Inspira @import "fonts/meta-serif.less"; // Meta-Serif // ------------------------- // BOOTSTRAP IMPORTS // ------------------------- // // What's happening here? // // This file imports all the core components from Boo that the // core can be kept up-to-date without inadvertently theme CSS. // CSS Reset @import "../../../libs/bootstrap/less/reset.less"; // Variables and mixins @import "../../../libs/bootstrap/less/variables.less" @import "../../../libs/bootstrap/less/mixins.less"; HTML/CSS Bootstrap Modernizr Respond.js LESS
  5. 'use strict'; define([ 'jquery', 'bootstrap/bootstrap-collapse', 'bootstrap/bootstrap-tooltip', 'bootstrap/bootstrap-transition' ], function($) {

    /* NAVBAR PUBLIC CLASS DEFINITION * =============================== */ var Navbar = function(element, options) { this.init('navbar', element, options); }; Navbar.prototype = { constructor: Navbar, init: function(type, element, options) { this.type = type; this.$element = $(element); JavaScript JQuery RequireJS Knockout.js Grunt Node
  6. function($, d3, bar, gauge, donut) { $(function() { $('div[data-visualization="bar"]').each(function( var

    el = $(domEl); d3.select(domEl) // configure the chart .datum([el.data('value')]) .call( bar() .width(el.width()) .height(el.height()) .rounded(0) .min(el.data('min')) .max(el.data('max')) .tick(el.data('threshold')) ); }); $('div[data-visualization="gauge"]').each(functio { Visualization Highcharts d3 DataTables JQueryUI <div data-visualization="gauge" class="chart1" data- value="73" data-threshold="50" data-max="100" data- label-min="0" data-label-max="16mm"></div>
  7. .navbar .ge-logo { !border:0; !font: 0/0 a; !text-shadow: none; !color:

    transparent; !width:36px; !height:37px; !display:inline-block; !float:left; !margin: 0 9px 0 0; !background-color: transparent; !background: url(../../../img/iids/vector/ge- monogram-athensgray.svg) no-repeat; !background-size:contain; /*The GE Monogram has slightly different width/height dimensions*/ Helpers Font Awesome GE Icon Toolchain Parsley.js Chosen Jasmine      .icon-signin { .ie7icon('&#xf090;'); } .icon-trophy { .ie7icon('&#xf091;'); } .icon-github-sign { .ie7icon('&#xf092;'); } .icon-upload-alt { .ie7icon('&#xf093;'); } .icon-lemon { .ie7icon('&#xf094;'); }
  8. Play Framework Modern application framework Focused on Java & Scala

    Built-in support for LESS, RequireJS and more Modular and open source Fun!
  9. API’s everywhere REST everywhere JSON everywhere HTTP and WebSockets Service

    Connectivity http://rest.ge.com/performance Play HTTP/JSON {
  10. Open Source, Open Access Share your roadmap Solicit contribution Share

    the source, show how it was done Be available
  11. My roadmap JAN FEB MAR APR MAY JUN JUL AUG

    SEP OCT NOV DEC JAN FEB MAR APR MAY JUN JUL AUG SEP OCT NOV DEC JAN FEB MAR APR MAY JUN JUL AUG SEP OCT NOV DEC JAN FEB MAR APR MAY JUN JUL AUG SEP OCT NOV DEC JAN FEB MAR APR MAY JUN JUL AUG SEP OCT NOV DEC JAN FEB MAR APR MAY JUN JUL AUG SEP OCT NOV DEC JAN FEB MAR APR MAY JUN JUL AUG SEP OCT NOV DEC JAN FEB MAR APR MAY JUN JUL AUG SEP OCT NOV DEC Visual Designer Preview TOOLS CORE Visual Designer Limited Release DSP 1.0 DSP 1.0.2 IIDS 0.8.5 IIDS 0.9.x IIDS 1.x IIDS 1.x IIDS 1.x IIDS 1.x IIDS 1.x IIDS 1.x IIDS 1.x IIDS 1.x IIDS 1.x DSP 1.5 DSP 2.0 Lifecycle Support JavaScript MVC Catalog Preview Studio Redesign 7 Widgets 3 Templates 15 Widgets 5 Templates Tutorials, Boilerplate Catalog 1.0 50 Widgets Custom Templates Data modeling HTML5 for mobile Graph DB Native for mobile Your feature here End user customization Your feature here Diagramming component Round tripping w/ IDE
  12. Bill Scott Sr. Director, User Interface Engineering at PayPal "If

    you could pick one thing to change an engineering organization it would be to bring Github in-house! It will democratize your code and if you use it right, it will make your code the centerpiece of all you do" "At PayPal, we used Github to de-centralize our centralized platform team, change the way we write our code (distributed and transparent), change the way we deploy our code, content, marketing pages & components. And finally, change the way we install and scaffold our applications."
  13. Source available to all GE devs Pull requests Simple and

    transparent workflow Integrated into project flow Collaboration in Code
  14. var opt = require('./options'); module.exports = function(grunt) { // Project

    configuration. grunt.initConfig({ pkg: '<json:package.json>', clean: { folder: 'www-release' }, requirejs: { Build scripts Grunt Maven Python { "name": "iids-example-multipage", "author": "General Electric", "version": "0.1.0", "private": true, "devDependencies": { "grunt-contrib-mincss": "0.3.x", "grunt-contrib-requirejs": "0.3.x", "grunt-contrib-clean": "0.3.x" } }
  15. Design at Scale takes a crisp perspective on what makes

    great UX for your organization. Provide the best tools that empower your army of developers and designers. Happy developers make better and more engaging software. Focus on a developer experience that supports great user experience.