Online presence of Craig Smith — Agile Coach & IT Professional in Australia

Archive for February, 2010

Effective Collaboration Using Social Media

YammerOver the last year, I have been engaged with a team of like minded peers with an aim to improving collaboration within our organisation. This journey has involved in-depth discussions around tools, processes and culture and whilst we made some headway, as always, there is still much to do.

My colleague, Rebecca Deering, has been the glue holding this initiative together, and she gave a talk at the Ark Group’s 7th Annual Internal Communication Forum this week in Melbourne on “Effective Collaboration Using Social Media”, detailing our journey thus far and our plans for the future.  It seems the session was very well received and gave us the initiative to keep charging forward as we are leading a number of our competitors and peers in this area.

Ark Group’s 7th Annual Internal Communication Forum

You can see the presentation here: http://prezi.com/ylbqqzwxd7vx/2010-ark-group-presentation_suncorp-metway/

Thoughtworks Quarterly Briefing: Emergent Design & Evolutionary Architecture

Yesterday ThoughtWorks held a quarterly briefing in Brisbane for which they shipped out Neal Ford (who I had seen speak at Agile 2008 previously). My notes from the breakfast session are following. I was also lucky enough to get invited to a roundtable lunchtime one-on-one discussion with Neal and a handful of my peers from Brisbane, which provoked some great discussion.

Emergent Design & Evolutionary Architecture - Neal Ford (Brisbane)

My key takeaways were thinking about design like a lossy compression algoritm (it’s a good analogy about the loss of clarity), the secret to winning Pacman and the insight (from the lunchtime session) that Flickr have got continuous deployment down to 30 minutes (impressive!)

The slides for this session are available on Neal Ford’s website and via Slideshare.

My notes:

  • basis for this talk comes from a number of IBM developerWorks articles by same name
  • emergent architecture – bad idea, because you need something to build on
  • spectrum of design – from waterfall to cowboy hacking, agile design is somewhere in the middle
  • big design up front – a bit like trying to reconstruct a picture that has been through lossy compression, you lose the clarity
  • emergent design (hardware) – Apple iPod click wheel – refactored, but you had to buy a new ipod to get the updated functionality
  • patterns – technical (plumbing) and domain (business logic) – defines abstractions
  • avoid abstracting too early – speculation, YAGNI, business changes radically, experience helps to identify these (architects)
  • What is Sofware Design? (Jack C. Reeves, 1992) – proves we just reinvent the same thing over and over in software
  • final delivery for engineering is a document (because you are designing a bridge, not building it), The design document in software is the complete source code (source == design)
  • manufacturing is the build process – in Java/.NET this is free, and happens automatically
  • in software, everything is part of the design process – code, test, debug
  • software cheap to build but expensive to design

Things that obscure emergent design:

  • complexity – essential (inherent) and accidental (we usually take a simple problem and accidentally make it complex) – what we imagine and what results are different (field level security example)
  • technical debt – gap between design you imagined and design you got (usually due to schedule pressures), debt is not a bad thing unless it gets out of control, so in software you need to negotiate repayment
  • negotiate repayment – hard to convince management, demonstration trumps discussion eg. cyclomatic complexity per tag / branch of code (proved that we made the date but the effect that had on the code)
  • genericness- building in layers, just in case

Things that make emergent design easy:

  • test driven design – design emerges from tests, undertanding of intent and allows you to measure it, exposes design flaws early and allows refactoring (Neal has a talk specifically on this subject)
  • refactoring – encourages collective code ownership, fix broken windows (from “The Pragmatic Programmer“), prudently refactor aggressively (fix small problems at the time they are discovered otherwise create a technical debt backlog – assign a pair that does this for the entire iteration), code should get stronger with age

Metrics

  • cyclomatic complexity – measures complexity of function based on branches and decisions
  • afferent coupling – how many other classes use this class, shows the centre of the code base – ckjm (Java), showed an example across the Struts codebase
  • expressiveness – neads to be readable, comments not executable and always out of date – Java vs Groovy and Ruby example (no closures vs closures)
  • abstractions – Pacman example – intelligence built into maze (a large state machine), ghosts use Pacman smell (can’t tell where Pacman is going, only where he has been)
  • framework level architecture – you download a library, usually not a single class, JSR294 solves this in Java (have done this with Ivy and Maven previously)
  • “architecture is the stuff that is hard to change later” (Martin Fowler see his article “Who Needs An Architect?“)
  • politics of architecture (usually because architects are senior), build vs buy (generic software with a few tweaks is usually just a myth because software can provide a strategic advantage)
  • design == code, always try to leave decisions until the last responsible moment

Agile Academy Meetup: Usability & Clouds

MeetupAgile AcademyThe Agile Academy runs a quarterly meetup in Brisbane and held a meetup this week on usability, whilst their meetup in November was on Cloud Computing. Here is my wrapup:

Agile Is From Mars, Usability Is From Venus

  • lots of good agile usability discussion started by Jeff Patton on the agile-usability group
  • cobbled together design forces usability not to have the incremental design it needs
  • coding is creative, the only thing mechanical is compiling
  • be a tribe leader and collaborate, suggested reading is Tribes by Seth Godin. Teale recognised by her managers for her leadership for getting out there and posting to the internal Yammer site
  • goal directed design, focus on the goals of the user – design applications in terms of needs and goals and underlying motivations, so when the transport or technology changes, the design work is still relevant
  • poetpainter.com (Stephen Anderson, Interaction Designer) – who are we designing for and what are we designing for, fundamentals of experience design (http://www.poetpainter.com/thoughts/category/Models–Frameworks/)
  • get into the head of users with user needs – motivation keywords to articulate user needs – increase positive aspects, maintaining status quo and decrease negative aspects – flopped as a workshop but worked wonders as a survey (and surprised the business as to the candid responses from the users)
  • user goals – who I want to be (life goals), what I want to do (end goals) and how I want to feel (experience goals)
  • use success sliders to understand how important the project team view usability
  • personas – need to have understanding of users and need to do impact analysis
  • storyboards do not need to be neat, just a rough drawing to determine if you are hitting the mark
  • put the name of the persona in the storycard (not just the role) such as: As a [role of user] [name of persona]…
  • use MOSCOW (Must, Should, Could, Won’t) for prioritisation
  • 960 grid system – consistent framework for screen design
  • parallel track system – designers one iteration ahead of developers and business two iterations ahead of developers
  • the featuritis curve – more features you add, the harder it is use
  • 5 second usability test – realise that the middle part of the page is the most important part of the page, helps business understand where to put content – see http://fivesecondtest.com for example, but Teale creates her own with PowerPoint
  • for more on usability testing read the Handbook of Usability Testing or use TechSmith Morae (but this is very expensive)

From the question and answer session:

  • hard to manage parallel development two iterations ahead because stories always change, Marina Chiovetti added that research suggests this only works for a maximum one or two week sprints/iterations whilst Phil Abernathy suggested that the use of usability frames means that screens are being tested with the users upfront
  • Tealse does not use wireframing tools but rather does these in a workshop by hand. She only uses Adobe Photoshop when needed. Someone suggested that Adobe Fireworks is also a good tool and has templates on 960 Grid System
  • PAC analysis – People, Activities, Context

Agile, Lean & Green IT Come Together

Gavin Keeley presented at the Agile Academy November 2009 Meetup:

  • President Obama mentioned green as much as the global financial crisis in his innauguration speech
  • commerical use of IT is responsible for 2% of CO2  emissions, larger than the airline industry
  • of all PCs in use, only 6% of capacity is utilised
  • power is the biggest issue for data centre managers – can’t get enough off the grid
  • Suggested reading: Green To Gold by Esty & Winston
  • Amazon is the poster child for cloud computing, issues with latency in Australia thoughcloud – getting capacity just before you need it
  • agiles final frontier – how do we get colleagues in infrastructure on the journey with application developers
  • VMware at Virtualization Forum 2009 – View, vSphere, vCloud, vApps (what was Spring) – 85% market share
  • Microsoft Windows Server 2008 Hyper-V also on the bandwagon
  • Xen – open source virtualisation technology – Oracle only allowing certification on Xen
  • latest buzzword – the software mainframe – that’s restrictive, how about the software data centre
  • 3tera doing interesting things in the grid space
Follow

Get every new post delivered to your Inbox.

Join 984 other followers

%d bloggers like this: