My focus is on making software, coaching Agile/Scrum teams, and being a husband and father--definitely not on blogging--so please do not expect very frequent posts here.

Thursday, May 11, 2017

Microsoft Build 2017 conference Liveblogged notes

Let me know if you want further thoughts on anything below.  What a busy conference!  It is more crowded than I thought, and I definitely not bored.

TLDR: Go to Build 2017 on MSDN Channel 9 to search for the videos that interest you the most.  The best education for me was the New in .NET “three runtimes” session by Hanselman and Hunter, but the most impressive was certainly Saqib Shaikh’s blind coding demo in the first five minutes of the “what’s new in Visual Studio” session.

Full notes:

  • Keynote 1 – Satya Nadella, Scott Guthrie

    • IoT/Cloud and “Intelligent Edge”: now able to sync logic in Azure cloud to devices apart from the cloud
    • Hanselman: Azure CLI, .NET Standard, PostgreSQL and MySql on Azure; SnapPoints (see breakout sessions)
    • AI / learning APIs: language, text, audio, more
  • New in .NET: Scott Hanselman & Scott Hunter
    • .NET Core is highly wanted; C# is #3 language, growing, talked about
    • Architecture Guidance now available; see http://dot.net/architecture: samples, guides, etc.
    • .NET Standard - formerly PCLs; a contract - allows sharing code, binaries,
      • No change to the way code works
      • For libraries, not for UI apps
      • UI might be Framework 4.7, Core, UWP, Xamarin, Unity, etc.
    • .NET Core 2.0 has one package reference for ASP.NET All
    • VS 2017 Update 3: more refactoring features, live unit testing, C#7.1,
      • File globbing: drop files into folder; appears in solution explorer
      • Can edit .csproj without unloading
      • Live unit testing of .NET Core and Framework too.
      • Debugging: tells you WHY exceptions are thrown
      • Ctrl+T, "F" for file, "M" for member, etc. – reduces need for Resharper
      • Suggesting variable names, add a property with Ctrl+. – reduces need for Resharper
      • VS2017 Code style conventions and enforcement – reduces need for Resharper
      • Preview of FxCop live suggestions; live fix for you
    • Can build .NET Core on Mac using new Visual Studio for Mac
    • Azure
      • now has dependency map with warnings, key stats, errors; example errors are given with full detail
      • automatically takes snapshots (dumps) of state with errors from items running on Azure
      • Can set additional snappoints (not breakpoints) to get these dumps: doesn’t stop anything or slow things down; can do it in prodution; can look at with “snapshot debugger” – need to start collection and get snapshot as soon as it happens, but app doesn’t pause
      • Azure Functions: serverless functionality; based on .NET libraries; can debug locally or remote debug
        • can run functions based on triggers
  • Containers with Kubernetes and Docker: Brendan Burns & Gabe Monroy
    • Most outages are self-inflicted: our systems are complicated.  We have understanding of our local space, but not about how our changes affect something else. 
    • Usually we have Application, Server Cluster, Kernel/OS, and Hardware to worry a bout
      • “DevOps” is mostly about the Application layer, but it also should be about the rest of  layers
      • Container Cluster Managers, Containers, IaaS/vitrualization decouple us from other layers
    • New system for Kubernetes orchestration: “Draft” making containers easier for developers; reduce conceptual overhead; demo:
      • "draft create” – scaffolds a docker app
      • “draft up” – sends app to ACS Docker Container cluster, automatically
      • Do not have to install Docker or Kubernetes on client, just need a remote ACS Docker Container cluster running (E.g. as set up from web hosting team)
    • New tool Helm – a package manager for your Kubernetes cluster
      • Helm needs to be installed as an app on Kubernetes cluster, then you can go nuts with packages without hassle
      • “helm search <term>” to look for packages
      • “helm install <packagename>” – installed, but also helps you configure it
    • Still need application management for multiple devs, source control, CI tools: example from GitLab
      • set up a file .gitlab-ci.yml
      • uses a pipeline as set up in GitLab
        • spin up container, run build, deploy, spin down container
        • so close to Kubernetes that we can customize the actions in the pipeline
      • That’s great, but what if we aren’t using Gitlab?
    • These systems are becoming modular, more accessible to all. 
      • We don’t make GUIs anymore, we rely on existing OS and tools to do so
      • E.g. Kube Lego simiplifies LetsEncrypt to automate certificate acquisition whenever needed in a Kubernetes cluster – never need to manage certs
  • Azure CLI - Kamaljit Bath:
    • To manage Azure, you can use GUI, PowerShell, or new Azure CLI 2.0 (for general use) or 1.0 (for ASM services)
    • Natural and idiomatic integration with bash and GNU/Linux tools
    • Meant to fully support Azure services
    • Can be installed on any OS with a native installer, or use the web version
    • Examples:
      • “az” list all commands
      • “az account list” list subscriptions on my account
        • “az account list –o tsv” for tab-separated values
      • “az vm list” list VMS on my subscription
        • “az vm list –o json > file.json” get JSON version in a file
      • “az vm show –h” help with all the parameters for az vm show
        • “az vm show –g <TAB>” for autocomplete on groups
        • “az vm show –g MyresourceGroup –n Mynewdemovm –show-details”
      • “az find –q plan” – help on commands with "plan”
      • “az vm list –o json | jpterm” – show JSON on left side and query results of a JMESPath expression on right side in jpterm
        • “az vm list –query ‘[]{JmesExpression}’ – same thing without the tool
    • Interactive mode – “az interactive”
      • Gives much intellisense-like help, more examples to choose, help text
      • “vm create ::1” runs first example for vm create
      • Can go into specialized scopes, e.g. “cosmosdb”
        • create –name MyCosmosName"….
    • Search for “Get started with Azure CLI 2.0” on microsoft.com
  • Angular and Typescript Rob Wormald (Google)
    • To be clear: “AngularJS” is Angular 1; Angular 2+ drops the “JS”
    • Angular apps are made of components, and put together with decorators
    • Everything Google does runs on Angular
    • TypeScript and Open Source CLI tools have not been used inside Google – instead were using Google Closure Javascript that no one likes – now transitioning to TypeScript because:
      • has inline types
      • fast to recompile
      • decorators
      • is Google Closure-compatible (side-by-side)
      • IDE support
      • Use bazel.build instead of Grunt/gulp/webpack
  • WCF microservices in containers is a work in progressJeff Fritz
    • WCF is big and heavy, lots of power
    • Must use Windows containers for WCF.  Linux containers won’t work.
    • Windows containers are big but easy to use.  Good to get rid of managing VMs. We’ll have better SoAs.
    • We support HTTP(S) and TCP bindings, IIS-hosting and self-hosting, anonymous endpoints “very easy” in a container
      • Do not support MSMQ or HTTP authentication
      • Can’t pass in environment variables on the command line, can’t orchestrate very easily – looking into extending Configuration Manager
    • WCF dockerfile example
    • Sample code
    • Visual Studio with standard ASP.NET project doesn’t understand WCF on Docker, nor debugging it
    • Maybe better to use a self-hosted WCF host (“BasicHttpHost” in the sample code) – still can’t debug
    • How to do it: Install Docker for Windows, pull the latest microsoft/wcf image, try lift-and-shift an existing service,
  • Keynote 2: Windows – Terry Myerson, Joe Belfiore, Abolade Gbadegesin, Alex Kipman
    • Windows 10
      • Fall Creators Update: new app Windows Story Remix (photos, videos, Paint 3D, work with phones): automatic videos and compositions like Google Photos; automatic sync with phones, ink notes that can be anchored to things in videos; Devs will have access to 3D/mixed reality features via APIs
      • Fluent Design System will start influencing apps with light, depth, motion, material
      • OneDrive Files On-Demand: mix of file on hard drive, cloud, or both in Windows Explorer; more automatic synching
      • Windows Timeline: keeps track of all tasks from earlier; search; automatic syncs tasks across devices
      • Connect your Android/iPhone to your Windows Phone
      • Cloud-powered clipboard – copy/paste across devices (e.g. integrated into SwiftKey)
      • XAML Standard 1.0 coming: will unify UWP + Xamarin UI code
      • UWP features: pen integration, material, fluid transitions
      • Graph APIs for people, activities, devices – built in to Windows 10, available via “Project Rome SDK” for Android and iOS
    • Windows Store + UWP apps
      • Visual Studio Test Cloud will have full support for UWP and many devices
      • Windows 10 S is a version of windows that is only for Windows Store Apps (for schools, other specialty apps)
      • Apps like Spotify, iTunes, SAP Digital Boardroom, Autodesk Sketchbook or will be in Windows store
    • Dev Tools
      • Ubuntu, SuSE Linux, Fedora soon be apps in Windows Store
      • Xamarin Live Player: .NET C# Xamarin apps deployed to iOS device with full debugging capabilities, instant sync on UI changes
      • Narration on every Windows 10 PC – can tell what the visually impared will experience; Narrator developer mode to put self in the shoes of a visually-impared person
    • Windows Mixed Reality: VR, AR; PCs, Consoles, and holographic computers/headsets
      • Motions controllers: optical sensors, trigger, stick, touchpad – no external cameras
      • headset + controllers from Acer for $400 coming 2017Q4 – can preorder at http://windows.com/mixedreality
  • Private conversation: F# could be good for creating DSLs or anything where composing/manipulating functions would be complicated in C#. Using duck typing-like type inference simplifies coding.  Don’t be afraid to have most of an app in C# but a key part in F# if necessary.
  • Developer’s Guide to the Galaxy – snippets of various demos or talks
    • Mixed reality is hard to develop?  Who does all the 3D?  It is possible to dev with only a PC and webcam.  Using Unity, add a camera and a image to the scene.  Add a 3D model from a .fbx (e.g. from Remix via Paint 3D), add to hierarchy, scale and position it.
    • Chris Barker on MyPeople in Windows 10 Fall Creator’s Update: API is simple; can use toaster popup with XML
    • David from France on WebVR and BabylonJS: full 3D and VR in the browser
      • Render 3D scenes
      • switch between plain view and stereoscopic fisheye view e.g. for Cardboard
      • Can use C# and Typescript;
      • Detect gaze, select objects, even gather video texture from webcam
    • JD - Progressive web apps:
      • A “Service worker” runs independent of a browser frame – can speed up if the feature is available, enables offline functionality, not distruptive otherwise
      • Use PWA Builder to help get started – gets a service worker ready for you to drop into your app
      • Can also use hardware from Javascript web app
    • UWP Community Toolkit Sample App in the Windows Store – can copy XAML code, etc, from it
  • .NET Q&A PanelDamian Edwards, Mike Harsh, Immo Landwerth, Rich Lander
    • Portability Analyzer tells us what changes apps need for .NET Core.  Tips:
      • Use .NET Core 2.0.  .NET Core 1.0 has much lower compatibility.
      • Error messages have good suggestions (click the triangle)
      • Compiler messages might be easier to start
      • Be sure to use VS2017 Update 3
    • .NET Core still supports P/Invoke, even on Mac & Linux – COM interop is not supported, MSMQ not yet supported but would be Windows-only if it is supported; System.Drawing and Directory Services not supported
    • Must call ConfigureAwait(false) all the time on the server?  See also this Q. The default of “true” is still better.
    • Need Core 2.0 or Framework 4.6 for snappoints/debug snapshots
    • Why use .NET Core rather than Framework for web apps:
      • Cross-platform (Linux, Mac OS, ARM)
      • Self-contained .NET libraries (don’t need to install new framework on server)
      • .NET Core is changing quicker and getting more new features (it is also open-source)
      • Some performance advantages
    • Other Framework vs. Core ideas
      • .NET Framework is not going away, support will continue, but it won’t get too many new features
      • Can run .NET Framework apps in containers – don’t rewrite things
      • Can use a ASP.NET Core API in front of a Framework library
      • Not recommended to run ASP.NET Core on .NET Framework—it is really meant for .NET Core
    • TLS 1.2 support in Framework 3.5 is in a hotfix, and must be enabled via registry key.  It is fully in Framework 4.0
    • Web Assembly support in .NET?  Nothing decided yet (probably not)
    • How to load different versions of the same assembly?  e.g. may get TypeEquivalenceExceptions – very hard to overcome with an easy way.  Still using the later version is the easiest way.
    • There is one specific use case that `async void` is for (event handlers); never use it otherwise.  Probably need a way to catch it in Code Analysis.
    • Can run Kestrel on Raspberry Pi? Not with UWP on Windows IoT.  Can run a C++ Console app on Windows IoT.  Not easy.
    • Managed Add-in Framework not on .NET Core.  No one cares about it.
  • Deep Learning demo:
    • Started with audio data for leaks in a pipe; using a Jupyter notebook to walk through: run microphone ball through pipe, get WAV file, get integer values from it, Fourier transforms to get an array of arrays, then make images, then colorize them, then build a neural net, then train the model, then run model against any image to predict probability of an image showing a leak; show results in a 2x2 confusion matrix; then figure out ways to improve the model
    • Real-world: trained with 2000 images was good enough
    • Transfer Learning can help you train the model
  • Visual Studio 2017 and the CI pipeline: Ahmed Metwally & Mark Wilson-Thomas
    • Can configure CI in Azure and VSTS right from Visual Studio; build failure would happen right in Visual Studio status var - Not useful with Jenkins
    • Visual Studio now has tighter feedback: see problems as soon as they are made when coding
      • When “in the zone”, don’t always want to fix all the little issues.  VS can help us understand what Code quality is at..
      • Change pending indicator is in the status bar
      • New “Build & Code Analysis results” in the Changes pane helps you commit with confidence (or fix issues before you do)
    • Continuous Delivery extension for Visual Studio is new.  Road map:
      • Today: Support for ASP.NET, CI Build failure notification, link to build results,
      • Next: in-IDE pull requests, code analysis in pull request
    • join on slack aka.ms/cd4vs_slack
  • Visual Studio 2017 Coding at 88 MPH Tips and Tricks: Justin Clareburt and Alison Buchholz
    all at aka.ms/vsnavshortcuts, below are the ones that were new to me:
    • Git Repos from other machines show up on Start Page – easy cloning
    • Folder view supported in solution explorer – do not need projects
    • Shift+Alt+Enter: full screen mode
    • Esc: go to main text editor – Alt+F6 go to recent tool windows
    • Shift+Esc: close current tool window
    • Suggested mappings:
      • Window.Dock: Ctrl+Insert
      • Wondow.DockAsTabbed: Ctrl+Shift+insert
      • Window.AutoHide: Shift+Insert
      • Windows.HideAll: Shift+Alt+Ins
    • Move to next/prev tab Ctrl+Alt+PgDn and +PgUp
    • Ctrl+T: Go to all box with filters
    • Shift+F12: find all references
    • Ctrl+Alt+Home: keep previewed doc
    • Alt+W, L: Close all documents
    • Ctrl+Shift+F12: go to first error
    • Solution Explorer: Sync with active document button (or track active document option on )
    • Extensions
      • Git Diff Margin:
      • Solution Error Visualizer
      • Fix Mixed Tabs
      • Hot Commands
      • Open Output Folder
      • Add Folder to Solution
      • Multi Edit Mode
  • The future of Visual StudioAmanda Silver, Tim Sneath
    • Blind coder demo – Saqib Shaikh.  Pretty amazing how a blind person can code efficiently.
    • Visual Studio is the most popular IDE for web developers; C# is the third-most popular language
    • VS2017 version 15.3 will be out soon; lots of new features
      • Emphasis: Catching issues early (“shift left”)
        • Realtime experiences for unit tests, violations
      • New installer, choose only the parts you need
      • Live unit testing
      • Refactorings: sorts, null checks, string interpolation, many more
      • Code Analysis extension
      • “Enable Docker Support” in new Project dialog
      • True Linux C++ development in Visual Studio
      • Visual Studio Data Scientist mode for R
    • Visual Studio for Mac
    • Experiment: VS can infer EditorConfigFile for style rules
    • Linux subsystem – full Linux apps
  • The future of C#Dustin Campbell, Mads Torgensen
    • C# 7 and 7.1
      • tuples, tuples with named items
        • Infer names of Tuple items in C# 7.1
      • async Task Main now allowed
      • new Task types – ValueTask (good for memory intensive tasks
      • Deconstruction: get values underneath a tuple
        • underscore for items we don’t care about
      • Local functions
      • Pattern matching (types or constants), even in switch, even with conditions
      • Inline variable declaration `out int i`
    • VS features
      • New braces connected with faint lines
      • depend on C# version autofix in C# 7.1
      • “convert to binary” refactoring
      • Better “go to references” and “find references”
      • Find references of literals
      • Auto complete for partially typed namespaces/types
      • Suggested parameter names (intellisense)
      • Autofix for git-style merge complete
      • Press enter to split a long string into concatenated strings
      • Refactor to initialize property (like Resharper), separate nibbles
    • C# 8
      • Default implementations inside interface (avoids requiring all implementations to implement new members)
      • Annotated possibly null (e.g. `string? s` as a return value)
      • foreach await, using await
      • more flexible extension methods
      • Records (automatically generated classes)
  • Supercharging debugging in Visual Studio – Kaycee Anderson
    • Execution Control
      • Remember to add command-line args in Project Properties – Debug
      • Can start debugging with F10 – first point
      • Recent function returned values now show in locals; to see in watch window with “$returnValue1”
      • New choice “step into specific” instead of stepping to the first one
      • New icon for “run to click” just like run to cursor, but more discoverable
      • Can “run to cursor” from call stack window, instead of step out, step out, step out
      • `if (debugger.IsAttached) Debugger.Break();` – hardcoded breakpoint
    • Data inspection
      • Choose among several visualizers in data tips
      • Alt+F12 for peek window
      • Hold Ctrl to hide intellisense overlays
      • Can right-click to add expressions to pinned watch snips
      • “Make Object ID” makes a reference $1 that you can use in watch window even when other references change
    • Breakpoints & Diagnostics
      • Breakpoint actions: make conditional, make tracepoint
      • quick and dirty profiling – see pertips at the right side of each recently-executed line
      • consider keeping Diagnostics tools window – now has more useful summaries
        • take snapshots to compare two points in time e.g. memory
      • Coming soon: historical debugging via “Step back”
    • Exceptions: New exception helper in debugging – has…
      • inner exception scroller
      • more information on cause of exception,
      • optional exception settings (also there’s an exception settings window)
    • Multithreading
      • Parallel stacks window: shows visualization of all threads
      • Parallel watch window: see values across all threads
        • Can freeze thread in parallel watch window, run all other threads
      • After a breakpoint is hit, remove breakpoint to avoid hitting the same breakpoint in other threads (step around)
        • can filter breakpoint to a thread ID
    • aka.ms/vsdiagsamples – the samples for the above
    • aka.ms/diagnostics
    • aka.ms/SuperChargeYourDebugging
  • Miscellaneous notes on the side
    • .NET Conf 2017 is Sep 19-21: free online conference
    • .NET Fringe conference June 4-6
    • Recurring theme: increasing reliance on CLIs, especially ones that look like bash

    Sunday, May 7, 2017

    Presenting at DevJam's ProductConf 2017 on Tweaking Scrum

    I know it's last minute, but I will be leading a talk on Tweaking Scrum for Better Products, this Monday May 8, 2017, at DevJam's ProductConf in St. Paul  It looks like there is still time to register!

    It is a mistake to leave the product decisions to the Product Owner alone. Every member of an always-improving, self-organizing Scrum team will help to make the team's work and the product better. This highly collaborative session will have a section on prepared insights on how to tweak typical Scrum practice as learned from several years of software development on Scrum teams; then the bulk of the time will be open for your insights on how you have tweaked Scrum that you might share with the group. However, this discussion will not simply be show-and-tell time; instead, we will think through the suggestions from a product lens in order to see if the potential impact is outweighed by missing out on the benefits from "untweaked" Scrum. We will avoid dogmatic thinking but not controversy as we tweak Scrum together.

    If you are coming to ProductConf, be sure to come over and say hi!

    Tuesday, March 28, 2017

    I'll keep this short as it isn't software-related, but I started a new "amateur philosophy" podcast called "Objections to Objectivism", which explains, explores, and criticizes the philosophy of Ayn Rand. Check out the Objections to Objectivism site, the O2O podcast feed, or find it on any podcast app like iTunes, Stitcher, TuneIn, or Podcast Addict.

    Tuesday, November 1, 2016

    Scrum Guide updated to include valuing commitment, focus, openness, respect, courage

    Recently, Ken Schwaber and Jeff Sutherland updated the official Scrum Guide to include SchwaberSutherlandJuly2016the Scrum values, which are:

    • Commitment
    • Focus
    • Openness
    • Respect
    • Courage

    Sutherland emphasizes that teams adopting Scrum must have a commitment to change and to take your company into the future. Without embracing this change, "you can't get there" and Scrum will be of little value to you.

    Schwaber highlighted that focus to work on nothing but the sprint goal will yield the best results; working on other items destroys your productivity. Sutherland noted that doing twice the work in half the time is only possible if the teams focus on the sprint goal alone.

    Stakeholders and the team alike need to have a spirit of openness. Sutherland stressed that all happenings must be visible; only when everyone knows what is happening can you best decide how to adjust and how long work will take. We should go so far as not to work on anything that isn't visible.

    These are only possible with respect for each other; blame and cover-ups result in poor outcomes. If we respect everyone where they are, they can be empowered to grow and achieve. Sutherland says this applies even to high-pressure cutthroat venture capital-driven startups. Schwaber stresses that respect creates a positive hubbub, a buzz that is charged up with work getting done.

    Courage, both to do the right thing and to attempt hard things, is necessary because change is risky. Leaders have a big role to encourage taking wise risks and accepting the downside that sometimes results. Schwaber emphasizes that Scrum provides a safety net--you will never waste more than a sprint's worth of work.

    Scrum has the power to make your work life more fun, more balanced, and happier.

    View the Scrum Guide: http://www.scrumguides.org/scrum-guide.html - The newest changes are near the beginning, under "Scrum Values".

    Friday, February 12, 2016

    A compact layout bookmarklet for TFS web work items

    UPDATE 2016-05-06: Now supports the TFS Product Backlog, Board, and Sprint Backlog, with resolved/closed work items green and crossed-out, as well are much improved User Story (Kanban) board.

    Do you want your UI controls and whitespace cruft taking up half your browser window, like the default view in the first image?  Wouldn’t you like your TFS backlog to instead show as much info as possible, as on the second image below?



    You can!  Drag this to your bookmark bar (Firefox or Chrome):

    TFS Web Compact (for TFS 2015 and Visual Studio Online)
    TFS Web Compact (for TFS 2012)

    Then, whenever you have TFS web work items or task board open and you want to see more content and less cruft, click it.  Be sure to use "full screen view" in TFS and in your browser as desired.
    I’ve also made the 2015 version available as a gist.

    [Bookmarklets are tiny programs stored inside bookmarks or links. Similar to (but simpler than) add-ons and extensions, they add new tools to your web browser. Bookmarklets are shared on web pages as web links. To add a bookmarklet to your browser, right click on its link and choose the bookmark option, or drag it to your bookmark bar. To use it, simply click on the new bookmark you added.]

    Sunday, January 24, 2016

    Basic Scrummaster Duties checklist

    I really like Michael James's Scrum Master's Checklist to give us an idea of the work a Scrum Master can do to make their team the best.  However, it doesn't really show the basics of being a Scrum Master, so the following should help with that.

    Scrum Master duties list:
    Always:
    • Nudge, steer, and help the team to do all Scrum events and activities
    • Help the product owner and team in any way to be more productive
    • Remember the Agile values
    Before daily scrum:
    • Ensure the team has updated the hours remaining on all tasks.
    • Update and post the burndown chart.
    During daily scrum:
    • Note all impediments reported by the team for later aggressive follow-up
    • Steer the team to stick to short answers to the three questions; steer them away from discussing problems or details during the scrum (Often say "this sounds like an important discussion; can we have it after the scrum?")
    After daily scrum:
    • Help team to overcome impediments as a top priority
    • Ensure relevant team members meet to overcome impediments before doing regular work
    • Keep outside distractions away from the team
    • Answer (or research) all Scrum questions the team has
    Anytime, to prepare for sprint planning:
    • Gather info on vacation/unavailable time for all team members in the next sprint
    • Ensure (help) the Product Owner refines and reorders the backlog
    • Ensure the product owner prepares a sprint goal
    • Schedule the next sprint planning
    • Schedule the sprint review; arrange for stakeholders to attend it.
    • If the stakeholders can't attend the Sprint Review, reschedule it.
    • Ensure the team will prepare a demonstration for the sprint review.  Ensure it is appropriate
    • Prepare any other charts or information radiators helpful for planning, such as a velocity trend chart
    • Schedule a backlog estimation/refinement meeting as required
    In sprint planning:
    • Facilitate the entire meeting; take team through all parts
    • Take notes from the retrospective
    • Announce velocity in story points from last sprint
    • Announce team capacity in hours for the next sprint (accommodating vacations, etc)
    • Post/arrange the product backlog for sprint backlog selection
    • Keep the team on track for breakdown into tasks; write/post task cards if necessary
    • Ensure a reality check of task hours vs. capacity happens and adjustments made
    After sprint planning:
    • Create beginning burndown chart, task board, and any other information radiators
    Never:
    • Demand that the team take any certain action
    • Assign work or take unilateral action to change a practice
    • Neglect Scrum Master duties in favor of "regular work"
    Once you have the above under control, consider additional duties from the Scrum Master's Checklist.

    Tuesday, December 1, 2015

    Szalapski.com Scrum Rubric


    Agile is a set of values, and does not imply or require certain practices. Scrum is a framework that says a software product should be developed by a self-organizing team, in multiple fixed-length sprints, in full collaboration with the product owner, using Agile values and principles throughout. Scrum specifies a few practices, but as a framework, it is up to the team to insert many other practices into it.

    The following is a guideline on practices to strive for. It is not a maturity model—the goal is not to adopt as many of these practices as possible. It is not a roadmap—do not try to adopt a minimal set of processes at first before adopting others. Instead, it is a menu of options. We recommend you, as a team committed to Scrum, immediately adopt all of sections A, B, and C; adopt as much of section D as you can; and consider adopting any practices in section E.

    Following this rubric is not sufficient; you must learn and apply the concepts and stories of Scrum from training, books, other practitioners, and experience, starting with the Scrum Guide. It is possible to adopt most of these practices and still miss the point of Scrum, so do not take this rubric as a gold standard.

    (I offer coaching on all these practices.)

    A. Agile values and principles – If you don’t follow these, then nothing else matters
    • Value people over process
    • Value working product over documentation
    • Value collaboration over contracts
    • Value responding to change over following a plan
    • A willingness to change any practice, attitude, or relationship that conflicts with the four values
    B. The price of admission – If you don’t do these, you ain’t doin’ Scrum
    • A commitment from all to follow the Agile values and principles
    • Empowered, committed, singular, decisive product owner who is always available and interested
    • Self-organizing team with 2-9 most-time members (do not include 40% or lower allocations)
    • A designated Scrum Master on the team
    • Fixed-end sprint iteration of 1-4 weeks
    • A product backlog consisting of all the important known work to be done
    • A sprint planning session starting each sprint
    • A sprint backlog consisting of all the work to be done in the current sprint
    • A scrum each day during the sprint; self-assigned tasks
    • Emphasis in the scrum is on finding and exposing blocks; discussions happen afterward, not during
    • A commitment to daily adjust based on circumstances
    • Potentially shippable working software at the end of each sprint
    • A retrospective meeting every sprint
    C. Practices strongly urged
    • Estimating product backlog items using planning poker or other system
    • A formal sprint goal
    • Sprint backlog broken into tasks, estimated in hours remaining, updated daily by the team
    • Work remaining daily burndown chart
    • Regular backlog grooming sessions
    • A well-attended sprint review and demo meeting to stakeholders at or after end of sprint
    • Sprint planning happens the first day after the end of the previous sprint (no gap)
    • A shared definition of “done”
    • A short quality plan
    • Automated unit testing  (for software)
    • Zero compiler warning tolerance (for software)
    • Literally standing up during the scrum
    • Velocity tracking and capacity planning
    • A “Minimum Viable Product first” attitude
    • A refactor-as-you-go attitude
    • A team of generalists and generalizing specialists
    • Steady, sustainable pace; no overtime
    • Fixed-end sprint iteration of 1-3 weeks
    D. Practices recommended for most Scrum teams
    • A product owner who reports to the business, not to IT
    • Product owner sits with the team
    • Most product backlog items in the form of proper user stories
    • Swarming on fewer stories at once
    • Spikes whenever needed
    • A technical debt backlog; a commitment to work on technical debt
    • Continuous integration: Automatic builds, automatic testing, automatic code analysis (for software)
    • Asynchronous code reviews (for software)
    • Co-located team; common work area/team room
    • Coding standards (for software)
    • Ad hoc pair programming encouraged (for software)
    • Automated integration tests (for software)
    • Shorter sprints
    • Manual testers on the team (for software)
    E. Optional practices to consider for your team
    • User Story mapping
    • Story brainstorming sessions
    • Estimation of ROI using planning poker
    • Test-Driven Development
    • A burn-up chart of completed vs. remaining work in the backlog
    • Light-hearted shame trophy for breaking the build
    • $1 or other light-hearted fine for being late to scrum or other important meetings
    • Pair programming required
    • Continuous deployment
    • Chaos monkey
    • Advanced training
    • Automated behavior-driven and/or acceptance tests
    • Zero bug tolerance
    • Mandatory fun
    • Personas
    • 1:1 retrospectives
    • WIP limit
    • Reserved time for training/self-education
    Values to remember throughout
    • The 12 Agile principles
    • Servant leadership
    • Self-organizing team
    • Remove impediments and keep out distractions