I got the opportunity today to attend Apple iPhone Management and Web Application Development training with a bunch of my colleagues direct from Apple Australia. I took a heap of notes which are available below:
on iOS4,VPN functionality is now an app supplied from vendors (Juniper and Cisco), as opposed to only built into the operating system, meaning the software can be updated outside of OS revisions
security – device (pass-codes, device restrictions and policy endorsements), network (AES-256 hardware encryption, file level encryption, encrypted backups, remote and local wipes) and platform (mandatory application signing when submitted and checked when downloaded, sandboxed applications, encrypted keychain for passwords)
Profiles
self service (configuration profiles to set mail, wi-fi, etc, distributed by USB or wi-fi, made in iPhone Configuration Utility) versus managed deployments
iPhone Configuration Utility – free for Mac and PC
identity identifier – important, certificate
can set whether configuration security can be removed or not
set passcode policies – length, autolock time, remember history, etc.
restrictions
set different wi-fi settings to appear on phone, VPN settings
if you create a profile (eg com.demo.wifi) then a user could create a profile with the same name unless you sign it (in which case it would get bounced)
deploying profiles – USB, email (not recommended because they a user could use an use old profile stored in emails and you can’t tell if profile has been loaded), web, over the air
Secure Certificate Enrollment Protocol (SCEP) – a way to get the certificate and encrypted profile onto the phone when deploying over the air, Cisco technology originally used between routers, was the cludgy way before IOS4
enrollment to confirm trusted user and device, certificates and remote configuration, additional restrictions such as disable data roaming
query the phone – model and device details, version, roaming status, applications installed on phone, settings for compliance, etc
provisioning profiles for enterprise applications to set usage and expiry dates
manage phone – install and remove settings, profiles, remotely clear (good for help desks), remote locking of device, remote wipe
third party solutions in this space from Sybase, MobileIron and Trust Digital amongst others, early days for most of these vendors and technologies
once enrolled you cannot un-enrol
no limit to number of profiles – can be all encompassing or can be small (ie just a wi-fi setting), can run at the same time, can’t disable a profile only remove it
not possible to do web filtering or block a third party application to be installed (except by disallowing access to iTunes or the App Store, with MDM you can see which apps are installed
blocking access to the application (eg camera) also blocks access to the API
iTunes
activation, sync and backup and update software
activation gets carrier settings as well as registers the device, happens whenever a new SIM card is installed, possible to put iTunes into activation only mode (what they do at the Apple Store)
Application Installation
App Store, adhoc or enterprise
build application in Xcode on a Mac and get into the AppStore
adhoc and enterprise – provision, build, deploy and install (traditionally only via a cable)
for enterprise, now Wireless App Distribution, put application on a web server and install via the iPhone via your own application catalogue app
could also build an enterprise front end to the App Store, but you still need iTunes account and deal with purchases
can gift an application but is tedious
Development
SDK – native apps written in Objective C (using XCode on a Mac)
web application – native user experience but runs from a web site using HTML5 and CSS, view optimized for Mobile Safari
hybrid applications – part SDK and part web
developer platform ($99 USD) and enterprise developer ($299 USD) – get Xcode plus emulators and resources
iPhone 51% of worldwide smartphone market, in Australia it is 93% of smartphone market
web applications cannot access secure storage, camera or address book, receive push notifications orallow rapid updates, however, can do offline access and storage
web application distribution – host on a web server, create a landing page and populate with web applications
need web development skills, any IDE and most technologies (except Flash), iPhone and iPod Touch are identical to test on, can also use emulator
examples – m.uiowa.edu and m.mit.edu to replace intranet and be useful on an iPhone
same website, different view depending on the device
applications need to be finger friendly, a finger = 44px
applications need to be aware of bandwidth and latency – Edge -> 3G -> Wifi, turn on server side compression (GZip), break data into blocks (eg Wikipedia clicking Show to get more data), reduce number of files requested, JSON for requests, optimize image size for the device, use CSS3 for design
news.com.au – 1130 files on web site versus 136 on mobile site and 43 seconds versus 8 seconds load time
give users a website escape to get to more functionality if they need it
at Apple spend much more time on design and less on code, debug and test
design for ease of use- straightforward well designed workflow (such as settings screen)
viewport – 320 x 480 screen, but can display larger, set viewport via code
home screen icon – png file and link in code
full screen mode with no navigation bars, requires home screen icon and runs in own instance
set a splash screen – image and meta tag in the Head
SVG support – good for zooming and business intelligence
PDF support
URL schemes – to display maps, telephone integration, mail integration, SMS and custom – just put URL in the scheme format
geolocation API as part of 3.0 – get current coordinates, uses battery quite considerably so use on intervals
orientation – 90, 0, -90 or 180, you code if the application looks different in different modes
user agent strings for iPhone and iPad
Css3 for transforms, transitions and animations as well as design like rounded corners
touch events and gesture events eg. touchstart, touchmove and touchend
no applets, tooltips, hover, WML, file uploads and download, mouse over, print and modal dialogs, X509 certificates
Offline Data Storage
HTML5 implementation, not unique to iPhone
offline application cache – manifest file from website, requests data then keeps synchronized, means application can run offline
key-value storage – session or local storage, persist between closing the browser, cannot be encrypted in HTML5 but could store encrypted data in the value
local JavaScript database
full support for manipulating the DOM
Frameworks
Dashcode – good for simple applications or prototypes, from Apple, part of toolkit, Mac only
Sencha – rapid tool, takes care of underlying events, templates for controls and types, iPhone and iPad
My presentation from Atlassian Summit 2010 called “Kaizen with GreenHopper: Visualising Agile & Kanban Storywalls” is available on SlideShare. A video of the presentation along with the slides are also available on the Summit 2010 Video Archive.
More than a few days late, but here are my notes from day 2 of Atlassian Summit in San Francisco:
General Session
Tim Buntel discussed how Atlassian develop their products and supporting the social side of development.
concept – idea is defined, unstructured information and ideas from customers, use Confluence and a Specification Template, Balsamiq to do some UI prototyping, embed Office documents such as PowerPoint
plan – project manager gathers requirements and shepherds team, turn the requirements into epics and stories in GreenHopper, embed GreenHopper card view into the Confluence page, planning meeting use projector with GreenHopper, use markers and drag and drop into each sprint
build – developers take requirements and build, build a dashboard with open social gadgets to see relevant information, wallboards to visually see status, Bamboo for continuous builds, Fisheye to view and diff versions of code, new keyboard shortcuts in JIRA to get 15 minutes back every day, Crucible for peer code reviews
launch – marketing take the product and promote, generate release notes in JIRA, write documentation in Confluence
Michael Knighten then gave an overview of JIRA Studio:
issue key linking for associations between all of the tools
integration with Google Apps, attach documents being hosted will mean it is always most up-to-date version
workflow is the future – broken build will reopen issue, passed review will close issue, etc…
Bamboo is now included and uses Amazon EC2 for builds
release cycle to get closer to products
Andrew Rallings then spoke about Customer Support:
measure support with customer surveys (get 40% response rate, 4 times industry average, 85% have positive experience), internal measurements
distributed version control systems are growing fast, support for Git and Mercurial coming soon, Fisheye has helped people move from CVS to Subversion but will help people move to distributed version control (DVCS) as well, Fisheye to help visualize DVCS coming
leading edge customers using gadgets to assist managing distributed servers, Universal Application Links to connect applications together two-way
JIRAnywhere (current code name) JavaScript libraries to allow you to bring JIRA anywhere, such as creating and working with issues in Confluence, hover over links, etc…
Lightning Talks
A series of lightning talks on various topics were held across two different rooms. Here are some thoughts from the ones I attended:
Labels Magic (Anthony Pelosi)
finding information usually involves searching or scanning pages
as an author if you know some of the general information, you can bring this to the user, the inflexible approach is trying to put everything under a parent page, organise pages by business unit rather than time and use labels and the contentbylabel macro to track time sensitive information
add labels to pages and then display related pages with contentbymacro label, then create a combined product page
works on current space (self) or across spaces
label conventions require them to be typed correctly, there are automatic label suggestions however
Auditing Your Build and Release (Jim Severino)
define your process, diagram it, Atlassian think of theirs in loops (internal and continuous integration)
measure your process because you can’t change what you are not measuring (eg. checking out trunk, browsing version control)
canary builds or control builds that should always succeed to determine that infrastructure is working
get multiple build agents
control configuration with a system like Puppet (open source) and Open VZ to get kernel based virtualisation
build needs to be a first class part of the product, Atlassian embed build engineers into the teams
get people involved and talking about the build
test release artefacts after they are assembled
Information Radiator (Brendan Humphreys)
these can be low tech like lava lamps or build lights or a scrum story board
you want fast feedback and to change culture
big and understood at a glance, should be aesthetically pleasing
new JIRA wallboard – section of the wallboard cycles between burndown, relative performance and review blockers
built as a plugin that renders gadgets, just need a wallboard view mode
Atlassian has workflows for budget approvals, kudos, audit trails for permanent records (such as approval to work on open source projects), any business process to replace a piece of paper
push process (hand off to someone else) versus pull process (unassigned, issues in waiting eg. support tasks)
issues always have a state and resolution (done or not done)
transitions are powerful, they have conditions (restrictions to move through the process), validators (fill out a field before proceeding), post functions (do things automatically)
schemes give you fine grained control, give you flexibility, be careful with how you name them
“Unresolved” == field has no value
default workflow was written with software development in mind, and that Atlassian is an open company (resolved == done and closed == shipped)
powerful + flexible = complex
what ever you do (K.I.S.S.) – the fewer steps, people will actually want to use the system
visualise your workflow, identify things to edit, plan transitions and test by walking a through issues through the workflow
easy to write plugins intrepreneurial and entrepreneurial – growth area for Atlassian and their plugin providers
introduced the Universal Plugin Manager – upgrades plugins automatically as well as assisting with Atlassian product upgrades, available now as a plugin for JIRA and Confluence and will be worked into the entire product suite in the future
Mike Cannon-Brookes (co-founder and co-CEO) then took the stage to announce some new products:
concept to launch – concept, plan, build, launch
Confluence – new editor coming in 4.x that will combine the best of the wiki markup and rich text editor
GreenHopper – 900 users last year and 10,700 users this year, fastest growing Atlassian product ever, GreenHopper 5 announced with a completely overhauled user interface
Launchpad
A live voting vendor presentation, where a number of vendors get five minutes each to demo their plugins and get votes via SMS from the audience.
Adaptavist – demo of a Health Monitor plugin that lets you visualise Confluence CPU, memory, classes and threads in real time
AppFire – launch of Firestarter (a portable wiki applicance) that allows you to sync with a central Confluence instance
Comala Tech – Ad Hoc Workflows plugin for workflow approvals (approving pages before they are published) and creating end-user workflows
Contegix – managed hosting providers are now launching in Europe
New Relic – monitor any Java application (including JIRA) from within JIRA with a plugin to RPM, will also let you profile a production application with a low (5%) overhead (30 day free trial with promo code atlassian2010)
KapIT – ConfluenceFX desktop client for Confluence, real time updating and notifications, looks like TweetDeck for Confluence
TaskDock – easy way to automate tasks, emails, calendar entries into Confluence
Tempo – Tempo Plugin which makes timesheeting easy within JIRA
Unsurprisingly, Gliffy took out the voting with their pirate costumes with Near Infinity the runner up.
Going Agile with PBS
Tristan Mayshark from PBS Interactive delivered this session.
use LAMP, Amazon Web Services and Red Hat
tools include Komodo, full Atlassian Suite with Gliffy, Balsamiq and Adaptavist Theme Builder under community licence, SVN, Git and Gitorious (front end to Git) and TestLink for managing manual test cases
have made a switch to agile recently and it has had real benefits, initially used JIRA sporadically and no standard QA process
Agile definition at PBS:
empowering teams with the tools and communication to succeed
accept changing priorities are the norm
developing products in an incremental way
minimize time to market and maximise value
start with an envision session using stickies on a wall, then using GreenHopper enter cards and estimate using t-shirt sizes (anything over 4 is an epic)
group stories into a release that adds business value, and then to 2 week iterations
drive stand-up meeting direct from the GreenHopper task board, for distributed teams use DimDim (alternative to WebEx)
Bamboo pointed at Git and SVN, use Selenium for UI testing (but manually test Flash as it is problematic to test), keep screenshot artefacts from Selenium on the Bamboo server as a visual history
TestLink (open source) integrates nicely with JIRA for manual tests (when something fails it fires off a JIRA ticket), but Bamboo is replacing much of the functionality, has nice charting functionality
still deciding best practice for code reviews using FishEye and Crucible
Confluence used for documentation and run books (support documentation)
Crowd used for access control
gains are visibility, transparency and efficiency
next step to look into JIRA API (using Django), tying Crowd into the current internal directory
try to do stories in an iteration, if that is not possible tie to an epic in the release
Performance Tuning: Pulling A Rabbit From A Hat
George Barnett from Atlassian on how they performance test JIRA.
what you monitor you can improve
using JMeter (shocking interface but best tool out there), published scripts for JIRA and Confluence, patched version of JMeter to get around issues with the JavaScript
automate using Bamboo and Maven
weekly soak test runs for 12 hours (1-2 months of load), daily test runs for 30 minutes
upgrade Java from 1.5 to 1.6 – out of support, better runtime code and better support for newer hardware – massive performance increase including 25% CPU improvement (equivalent of one core), better performance on the current versions of Java 1.6 than earlier
faster memory will give Java better performance – DDR3 gives 3 times improvement over DDR2, and current hardware makes a massive difference
garbage collection – Parallel New and Parallel Old much faster than CMS, so choose the right one
virtual machines are a performance impact (43% hit), but we are talking 100ms, on average about 30% slower (100% slower when resource starved), Atlassian have recommendations for JIRA and Confluence in a virtualised environment
upgrade browsers to a modern browser (IE6 is unsupported and slow)
heap size tuning – we know the JVM will starve with not enough memory, but it does not drown with too much memory (big performance jump from 1.5Gb to 3Gb, not much gain after 6Gb)
SSD does not show much considerable gain for read only, shows most improvement when putting the database on SSD
MySQL Percona release showed no considerable improvement for JIRA over standard MySQL database due to caching (but good for applications that have high query rates above 3,000-4,000 queries per second), MySQL tuning did not have much advantage either
State of the Union (Part I)
An overview of the new features coming up in JIRA and GreenHopper.
Delivering World Class Documentation And Support Through Confluence
Sarah Maddox presented this session on how the technical writing process is done at Atlassian.
doc sprint (sometimes known as a Book Sprint)- get people together in a room for a few days to write documentation – when you put people together and give them a purpose they do awesome stuff
take photos when doing Doc Sprints and have fun – the photos are good to convince others to join next time
dragon slayer documentation for complex steps or documentation – 8 stages with many steps
people love a challenge and a game, so make documentation fun
free t-shirts help too…
Confluence As A Support Knowledge Base
Jeremy Largman presented this session.
low barrier to launch – just setup a space and create a template for consistent look and feel
key to a good knowledge base is proactive articles
knowledge base surveys (was this helpful?), intelligent search to get highly ranked articles to the top and federated search in the knowledge base survey plugin
use an internal tool called Hercules to scan Confluence pages for error messages to give cutomers a response when they raise a support ticket in JIRA
is it working – do a knowledge base survey, use Google Analytics, measure support tickets and do business intelligence on the database
Google Analytics shows that 99% of hits come from Google not from Atlassian website, but once they hit the site they stay and search within it
measure impact on support – unnecessary (could have found it themselves), avoidable (would have been avoidable if the knowledgebase existed) and necessary (a knowledge base would not have helped)
measure to ensure unnecessary and avoidable and decreasing and necessary are increasing
satisfying for support engineers to be proactive
Other Stuff
I stopped by the Atlas Bar to ask some questions for my colleagues in the hope I would get some brilliant answer I had not already considered:
LDAP for JIRA – we just hooked our JIRA instance up to AD, but, unlike Confluence, JIRA does not have the property to allow users to be automatically added to the database. The bad news is there are no easy answers to this currently, about the only way is to write a script to keep the users in sync. The better news is that JIRA 4.3 is supposedly getting an LDAP overhaul, so I’ll hunt down some more information tomorrow.
Searching attachments in JIRA – there is no way out of the box to search attachment names or to search the contents of attachments, and there are no plans for such functionality. However, there is a plugin called the JIRA Searchable Attachments plugin that does exactly what we want, unfortunately, it is not compatible with JIRA 4.x so it might require some code hacking to get working effectively.
I also recorded about 20 minutes of questions and answers for a customer video during the afternoon, I am going to be very interested to see what comes out of the editing process (and what gets left on the cutting room floor!)
The inaugural Agile Alliance Meetup in Brisbane kicked off on May 13 at the Hilton, Brisbane with a talk by Kristan Vingrys (Global Test Lead for ThoughtWorks) talking about the changing role of a tester. I have had the good fortune to work with Kristan a couple of times this year, so was looking forward to catching up again as well as seeing this talk.
Among other announcements, Robin Mack is the Brisbane liason for Agile Alliance Australia and they are currently looking for volunteers, sponsors and speakers.
testing – find out what system is and what it does
testing is not about putting a quality assurance stamp on software before it goes out the door, its about understanding the quality of the application
traditional testing – V model – independent, based on a feature complete system, exit criteria from each phase
collaboration – more related to agile – single velocity for entire team (not just developers), co-located and interspersed team, loose boundary of roles, work closely with developers (not throwing information over the wall)
should not be iterative testing (testing 2-3 iterations behind), independent or separate velocity
stop finger pointing, no longer a gatekeeper
tester should be able to check out code, try it out whenever they want to
tester should have direct contact with business to break down direct animosity with the developer
measured by value added to the team not by defects found or number of tests written
test early – make sure the story is testable, do all testing earlier (including non-functional testing such as UAT)
Acceptance Test Driven Development – building quality in, not testing it in, this is not just about automation
handover – developer should call tester over to ensure that the requirement has been met, give the tester the keyboard for 2 minutes to see if they can break it before check-in
exploratory testing – difference between exploratory and ad-hoc, it should have a plan, allows to execute test cases while learning the system, a good approach to test the tests, looking for different ways to learn about and break the system
automation – a good way to continually do regression testing, it is not a test strategy, is not just tests (can also be used for automated assisted testing, trawling through log files, etc), automation is code so treat it like code (not using good behaviours will end up as brittle code)
unit testing – benefits the tester, know what comes from the developers has been tested to a certain level
continuous integration – push the regression suite so that it becomes the responsibility of the team
pairing – way to transfer knowledge, to and from the tester, focus on higher value testing
co-location – can talk directly to the team about issues or further understanding
standups – understanding what the team is doing, what they are working on, know areas of system to spend time on or stay away from
automated functional testing – not running the same test again and again and again
ratio of testers to developers – hard to gauge, depends on the skills, not everybody on the testing team needs to be a tester
test analysis – what are we going to test, understand requirements, architecture, test execution (by a human or a machine), environment management (testing the right thing, a stable environment)
“you can’t find a defect if it doesn’t exist”
troubleshooting – being able to track down a problem, find the artefacts and hand it off to the correct team to fix
every role on the team should contribute to testing in some way
metrics that you collect change when you move from waterfall to agile testing
generating a test report should not take very long – should be an indication as to whether someone needs to have a conversation with me, answers questions about the state of the test team
people make assumptions on vanilla metrics
Metrics:
points in test over time – number of stories that are in the testing column on the storywall, indicate if the team is keeping up with testing activities
outstanding defects over time – how defects are tracking over time
number of bounces per story point – bounces back and forward between the development and the testing columns
not all defects need to be logged – only needs to be captured if it is not going to be fixed straight away, better to spend time on automated test to check defect will not come back rather than logging it
be aware of fake defect debt – when a story gets pushed through and defect/s get raised to be fixed later
add value by getting team focused on quality
Then there were some questions from the crowd:
environments – want enough environments to avoid test scheduling (where possible), happy to do UAT in an earlier environment if it means you are getting early feedback that is useful
tester velocity – should be focused on the velocity of the team and the definition of done, investigating using Kanban techniques to set a limit on a column (perhaps for testing to enable team flow)
automated tests – depends on where business logic, for AJAX you need to do more UI tests, main issue is getting tests running as quickly as possible and getting fast feedback, prefer not to test via the UI because it is very fragile
skillsets – pulling a team together will look at troubleshooting and may need to hire somebody just for this task, a team with developers that strong minded makes it hard for a tester to get their opinions across
test plans – does not necessarily need to be a document, the important thing is that there is a shared understanding, should never be signed off because it should be constantly revisited
skilled team of testers and developers – who should write the automated tests – look at skills, should not be written by those whp do not understand programming or test analyst – answer what I want to test and how do I go about developing it
regression test definition of done – business need to articulate the level of risk they are willing to accept, understand where the business value is in the system, finding a defect may encourage you to spend more time
After on and off reading of this book for about six months, I finally got around to finishing Tribes by Seth Godin. The book was a gift from my CIO for my involvement in a collaboration initiative at work. The following is my brief review and notes from the book.
Review
The tag line for the book is “we need you to lead us”, and this essentially is the theme of the book. The book reinforces the idea that in this internet age, anybody can (and should) be a leader and anybody can make a living doing things that they love. Furthermore, it highlights that challenging the status quo is okay and that the traditional factory management approaches are dead. It is an easy read and uses a number of examples throughout the book to reinforce the ideas being presented. For the most part, it was common sense to me, but it served as an encouragement and reinforcement to the ideas that I already believe in. This book is best passed on to colleagues who need that push over the edge to challenging the norms in the workplace.
Overall it was an easy, entertaining read and I recommend it to anyone who needs reinforcement or encouragement to lead change.
Summary
Here are my key notes from the book:
a tribe is a shared interest and way to communicate
everyone is a leader
move from being stuck embracing a factory instead of a tribe and acting like managers and employees and not leaders
heretics are the new leaders, challenging the status quo
leaders have followers, managers have employees
leading from the bottom (with a newsletter) – the story of how Seth in the mid-1980’s took a small team with a difficult challenge, and how twice a week he sent a newsletter to all of the employees in the company detailing the team and their good work. Over time a number of people transferred or moonlighted on the project to be be part of the journey, and years later people still talk about the project. The moral of the story is leading, not managing.
factories are efficient and stable, but nobody in factories make a difference. Over time, factories have become less stable, nor are they the illusion of a dream job.
beware of the unicorn in the balloon factory
a remarkable product or service is like a purple cow (brown cows are boring, purple cows are worth mentioning). Why is your team not producing more purple cows?
good leaders back off and lead the tribe. This is different to doing nothing. Leadership is a choice to not do anything. Lean in, back off, but don’t do nothing.
change needs belief. Change is not made by asking permission, it is made by asking forgiveness later.
sheepwalking – hiring obedient people for brain-dead jobs and raising fear to keep them in line. Rather, hire amazing people and give them freedom to do amazing stuff.
thermometers reveal something is broken, thermostats are indicators to keep us in sync with the outside world. Thermometers are more valuable than thermostats and very organisation needs at least one.
creating a micromovement: 1) publish a manifesto; 2) make it easy for followers to connect with you; 3) make it easy for followers to connect with another; 4) money is not the point; and 5) track progress. The principles are: 1) transparency; 2) movement is bigger than you; 3) grow to thrive; 4) compare to status quo or push in a different direction; 5) exclude outsiders; and 6) build followers up rather than tear others down
be willing to be wrong rather than avoiding being wrong, the secret of leadership is to do what you believe in, paint a picture of the future and go there
“no” is not the enemy, it is “not yet”, because “not yet” is safe, Change never fails because it is early, it almost always fails because it is too late
Reagans secret – listen, value what you hear, and make a decision even if it contradicts the people you are listening to. People want to know they have been heard
The Simpsons Movie – Matt Groening resisted product placement, which delayed the project but would have ruined it. Compromise can expedite, but can also ruin.
Over 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’s7th 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
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.
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!)
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
The 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:
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
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
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
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
You must be logged in to post a comment.