SCM with Accurev

3 November 2010

Starting a new software project (or company!) gives you the opportunity to have a clean slate with the tools and processes you’ll use. Starting EndGame – I figured that to be genuinly agile, we needed to have agile tools, not just agile ideals. I adpoted the YAGNI policy when it came to tools and our development environment and only introduced a tool when we absolutely needed it. It took us 5 months before we needed an issue tracker – until then, google docs did the trick.

One thing we did implement on day 1 was AccuRev, and its changed the way we build and deploy software. AccuRev is a software configuration management” system that allows an agile approach to development and lies at the heart of our entire development process. I’m going to describe how we’ve deployed AccuRev across the 10 or so projects we’ve worked on this year, but first – a few definitions for the pre-AccuRev readers:

Depot: a depot is like a repository and we have one per product/client. A depot represents a walled development environment – allowing product and client work to be kept separate from other depots.

Stream: Accurev has streams instead of branches. Streams represent your work environment, with stage downstream from production and development downstream from stage. To push a change package to stage, you drag it from the development stream to the stage stream, and like-wise to push it live.  All changes flow automatically downstream, so its like an automated merge between branches everytime you promote.

Promote: like doing a check-in, promoting pushes your source code upstream. In the first instance, you promote to the development stream you’re working in, and from there we promote to a staging stream, then to production.

Change package: a set of source code files that have been changed due to a work issue.

Here’s how we’ve got it working for us:

1. The roadmap
Everything starts on a whiteboard or with user feedback and makes its way into a backlog. From there, we plan out our time across various projects and clients using Hive – the project scheduling tool we’ve been developing this year. Hive allows us to plan out milestones and high level goals and make sure we’re not over-resourcing.

Using the Hive API, we then pull out the milestones to provide a high level roadmap on our project dashboard.

2. Work and Issues
Once we’ve decided on high level goals of the next cycle(s), we convert it to work/enhancement/defect issues using AccuRev’s built in issue tracker – AccuWork. We looked at whether to use a third party issue tracker and integrate it, but Accuwork is quite a powerful system and is fully integrated with AccuRev. To provide an integrated project dashboard, we built a UI over Accuwork so that work issues can be linked to hive milestones and hooked into project documentation. It also allows our project dashboard to track progress in a cycle of work done vs budget.

3. Documentation
We’re pretty light on documentation – most revolves around a whiteboard and visual designs, however there’s always need for some level of written requirements and specifications. Within our project dashboard, each work issue can be linked to a page in our Wiki, so the spec is only one click away. The flip side is that when viewing a page in the wiki – all related issues can be listed. Once in the wiki, each page is has a variety of related pages, so its easy to jump between related specs. Our wiki uses Zoho docs and spreadsheet editors inline to provide an OK rich editor.

4. Accurev streams
Streams are where Accurev really stands out. For each product, we setup a new depot and create streams for production, stage and dev. Because we’re a small team we usually only need one dev stream, but Accurev supports multiple downstream and parallel streams. Development happens in personal workspaces and work is promoted against an issue number in to the dev stream. From there, we can promote issues to stage and from stage to live. By promoting an issue, it pulls all source changes with it. This allows us shift a change package associated with a single issue from stream to stream just with a simple drag and drop. We may have 10 change packages on stage and pull just 5 to our release candidate site. After another check of the RC, those five issues can be drag-and-dropped to the production site to deploy them.

5. Promote triggers
When we promote to dev, stage, or live – an Accurev trigger fires automatically and updates the status of all issues that have been promoted. When promoting to stage or live, release notes are created with a list of issues and promote comments (and posted automatically to our Yammer feed and project dashboard). This keeps the issues up to date and also provides a record of what we’re working on – again, giving customers more visibility of progress on their project.

6. Automated build and deployment
Automating builds and deployments changes the way you work. We use CruiseControl.NET to deploy to our stage and live sites and it works beautifully with AccuRev. Because of AccuRev’s streams, CC.NET is only deploying the change packages in a stream. So, where you typically might have an integration branch that you’re developing into, rolling to stage and eventually rolling to live – in AccuRev you’d have three streams instead. The live site is built and deployed against the live stream, so will only include change packages that have been promoted to live. Same for stage. So, building and deploying a site is now independent of what developers are checking in – its all about what is being promoted upstream (and sometimes demoted again!). For a small dev team, we’d never go to the effort of separating all these steps into separate branches, so AccuRev gives us a process that is incredibly robust without massive overheads.

7. The project dashboard
I’ve mentioned a few times about the project dashboard. This is a web app that we’ve built that pulls everything together and gives visibility to the team and the customer. It includes:

- Trackers of cost vs budget, pulled live from our time tracker (Freckle)
- Trackers of work completed, pulled live from AccuWork
- Trackers of google analytics, twitter, sales metrics and usage metrics for each app
- Summary of the roadmap, pulled live from Hive
- Work issues, pulled live from Accuwork
- Wiki
- Status updates

Providing some confidence around price and a roadmap can be hard with an agile process. At the beginning of a project, or a cycle, the client usually wants a price and we plan it to the best of our foresight. The question then becomes whether this is a fixed price or an estimate of time & materials. We work with a mixture of both – typically a fixed price for a small project that is a single dev cycle or a license and estimates for the larger projects. This raises the issue of how does the customer have some confidence that they’re going to get what they are paying for. An approach of “we’ll work down the prioritised list until we run out of budget” is fairly risky and relies on trust. This is where our project dashboard comes in as an attempt to give the client full visibility of what’s happening in the project – in realtime.

 

That’s a snapshot of how we do SCM as of 3 November 2010.  I’m sure it will be improved by the beginning of 2011, if not by next week.  If you haven’t used a system like Accurev before, I can recommend joining one of their webinars and seeing just how important it is to have agile tools as well as agile intentions.  www.accurev.com.


What we’ve been up to this year

14 October 2010

I haven’t talked much about the projects we’ve had and have on the go this year – but I intend to!

In the meantime, we’ve finally got ourselves a simple website (minty!) that highlights a few of the projects we’ve done this year. If you’re interested, have a look here: http://www.end-game.com.


Finishing – part 2

11 August 2010

“The end of a thing is better than its beginning, and patience is better than pride.”

Put another way, finishing is better than starting.

So true and yet so hard.


Charts: buy, build or borrow?

6 August 2010

Its the same old question everytime you need some software. Do I buy it, build it myself, or find someone who’s already got it and convince them to share it?

Like any software developer, my first instinct is to build it – but then the business side of my brain kicks in and I start thinking about stuff like opportunity cost and cost/benefit.

We had this choice to make recently with charts and the answer was obviously to use one of the many great solutions out there. But, in the end it didn’t stack up and I was surprised that the right choice was just to build our own.

We were looking for something that …

- Could render to HTML, PDF, iPhone, iPad (rules out the great looking flash and javascript options)
- Could get 20 charts in a PDF with high enough resolution to show each chart full screen and without blowing out the size of the PDF (rules out using images)
- Would give us complete control over styling including being able to change style mid-series (rules out half the options)
- Is configurable via an XML template (rules out the other half of the options)

Actually, configuring any chart from XML is pretty standard when it comes to presentation, but not when it comes to the data. Charting solutions are generally not aware of the context of the report – they are only aware of the data values being plotted. We wanted a solution that could be aware of the full report, so that we could quickly change the data being charted. Like in Excel – when you have the data in one sheet and you can pivot/sum/group/etc and chart whatever you like.

So, our solution was to build a .NET SVG charting library that is report aware. SVG gives us full control over the style of each chart, series and data point.  Instead of just outputting SVG, every aspect of the chart can be styled using SVG.  It also allows us to render numerous scaleable charts to HTML and PDF without blowing out the file size.  Most importantly though, the charts are aware of the report context – so a chart no longer plots points – it plots a formula over the data. For example, to show a conversion rate, the formula “SALES / VISITS” could be used in the chart (where sales and visits are two predefined metrics). This gives us a few advantages:

1. The chart can be customised via XML or a UI to show any visualisation of the available data. A quick update and we’re now showing SALES and VISITS as separate series and comparing them to last year, or filtering by region.

2. Charts can be synchronised across a report, ensuring a consistent use of colour and allowing some smarts for visualising the data best.

3. Charts can be interactive on the web. A user can drill into the conversion rate to see how it was calculated, or highlight an area of interest, or filter the report by a particular region, or pivot the chart. We borrowed the dimension/metric/date model from Google Analytics to give data as many dimensions and metrics as we needed and introduced a hierarchal subject, allowing data to be easily rolled up and summerised.

It turns out that drawing the charts is the easy bit and managing the styles and data behind the charts is the high value bit that is sorely lacking. The false ecomony in our case would have been to buy the bit that draws the charts and then to have our options severly limited for managing the styles and data.

We’ve already deployed these charts over three projects with more to come, so the investment is paying back fast too.


Finishing

28 July 2010

We’re in the middle of the “finishing” phase of three v1 projects right now, and since my software lifecycle on this blog is sorely missing any comment on finishing, I thought I should share a few thoughts.

Firstly, what is finishing? Its what used to be called QA or testing, where the developers hand over to the test team and then retrospectively update the specification to match what’s been built.

I’m not that fond of the QA at the end of a project approach. If you look at risk based testing, then you identify risks up front and work throughout all stages of the project to mitigate the risks. When you get to the end of the project, there shouldn’t be that much QA left to do – just finishing. We all know that the last 5% of a project takes far longer than 5% of the time and this is a really important time where hundreds of small decisions are made.

The other thing I’m not fond of is this tension between QA being at the end of the cycle so there’s always time pressure, but also the idea that developers should hand over completed bug-free code. I tried that once and all it meant was that I had to go through the entire QA process myself (which I’m really bad at) – just to hand it over to be QA’ed again.

Finishing is about shipping working software. Its when the feature development is complete (or when you hit the 80/90% mark in your cycle or budget) and when developers, testers, BAs and everyone else involved start to focus on shipping instead of building. There will be bugs to fix, there will be missing functionality to build, there will be enhancements, there will be style changes, there will be a lot going on and its not all QA. The goal is to turn a feature-complete project into a quality shippable project and it doesn’t rest on the shoulders of the test team while the developers move onto the next project.

So, finishing is actually quite fun, I just wish we stopped setting up our projects to converge like this!


BusinessSavvySoftware.com

22 June 2010

Is it just me, or are people generally getting tired of “experts” who’ve done it once, then become full time coach?

I am, which is why I switched off google reader at the start of the year and stopped blogging.

I really admire people who’ve succeeded, then back themselves to do it again instead of just advising others how to do it.  That’s how Xero started and there’s so much more to learn by watching people do it than talk about it.

This year, I started EndGame – a software house that is full of purpose and I love it.  Its much more fun to do the stuff than to read about it or just talk about it.

There is some stuff that I’m itching to share along the journey, so I’m reviving this blog under its proper URL BusinessSavvySoftware.com and maybe, one day, I’ll even get it designed since RSS readers are so last year.


Who to employ first?

22 February 2010

For a startup business, its one of the biggest questions, risks and costs – who do I employ?

In any small business everyone wears a few hats, so it would be great to find someone who can do a variety of things.  But does that mean they are going to be expensive?

The good old rich vs king argument says you should employ senior people if you want to be rich (but lose control because you don’t hire someone with experience and ignore them) and you employ less senior people if you want to be king.  I’d rather just have someone with a hunger to learn, a can-do attitude and a good fit for the culture I’m trying to build.

So, here’s the first three people I want to work with:

#1 has got to complement my skills and since we’re building web applications – that means I need interaction design, graphical design and a CSS/JQuery guru.  That might sound like three people – but like I said, you’ve got to wear a few hats so lucky I know just the person and between us we can cover the entire process end-to-end and build some stunning software.

#2 there are a lot of possibilities here, but the best is someone to focus on my weakness(es) – which is the operations side of things allowing me to focus on development and running the business.  I’ll never forget one of my best customers saying to me, “I love your product, but the only time you ever talk to me is to chase money – so I’m going to switch to this other product”.  Without good operations, its so easy for things to spin out of control – so having someone to take care of this side of things will be massive.

#3 is to replace me.  I want to run the business, so I need to replace myself as a developer.  I also want to have time to learn about the parts of business that I don’t have so much experience in, so I figure I’ve got to make myself redundant as a developer.  Not that with 2 developers I’ll exactly be redundant – but at least we can deliver software without me getting in the way.

I’m really pleased to have found great people for the first two roles – people who share my values and excitement for what lies ahead.  #3 will have to wait a little longer, but if its you then I’d love to hear from you.


Words are cheap

16 October 2009

0909nnn1-300x176

We all know that a picture speaks 1,000 words, but even more important than pictures are actions.  Actions speak louder than pictures and words.

You could write and talk all day about doing something, but its worth nothing until you do it.

That’s one of the reasons why I like the Agile Manifesto:

  • Individuals and interactions over processes and tools
  • Working software over comprehensive documentation
  • Customer collaboration over contract negotiation
  • Responding to change over following a plan

peoplematter432-copy1-300x182


Documentation is expensive, but its necessary

12 October 2009

We need documentation to help us achieve optimal communications and control; however we also understand that documentation can be an overhead that doesn’t add value to our customers.

There are two types of documentation and you should always be aware of why you are writing documentation and for whom.

Project documentation is for communication
Project documents are used for communication within a project and are not maintained once the project is completed. These documents are necessary to:

  • Sell the concept
  • Remove ambiguity
  • Facilitate a multi-location team
  • Manage the details

Product documentation is for management and control
Product documents are used for managing and controlling the product and will be maintained until the product or feature is retired. These documents are necessary to:

  • Manage priorities and scheduling
  • Maintain quality standards
  • Maintain correctness
  • Educate people

When you’re using documentation to communicate, then you’re capturing the state of the requirements etc at a given point in time. If the requirements change, then you don’t update your original communication, you make a new documentation to communicate the changes clearly.

Communication isn’t a living document.

However, when you document for education, then it is a living document. If the requirements or scope changes, then anyone reading your old document for education purposes will be misled, therefore in order for your document to meet its purpose, it has to be maintained. This means every time you write a document for education purposes, you’ve just added an overhead to your project – a document that has to be updated as the project changes. If you are not going to maintain the document – then you aren’t writing it for educational purposes. To make the maintenance cheaper, the document can contain less detail and more principals that are less likely to change.


Roadmapping

10 February 2009

For a long time, we had a two dimensional roadmap – ie a list features and some release dates.  It was quite hard to communicate any dependencies and how projects were prioritised so there was a general feeling that we were just rolling out one feature after the other.

A roadmap is really only useful if you know your destination, otherwise its just a bunch of ordered features, so the first question to ask is:

What is the destination that this roadmap takes our company/product to?
Its quite likely that there will be some competing goals here – maybe its to open up new markets, or maybe its to innovate in your existing market. You may need to focus on one goal, or a few, but its important to first understand your goals so that you can measure the impact of each project and make sure its getting you closer to the destination.

The next question to ask is:

What’s the quickest route to the destination?
This is what roadmaps are all about – knowing your destination and planning how to get there most efficiently.

Once you understand the goals, then get your stakeholders in a room and chuck ideas up on a whiteboard.   Rank each as high/medium/low impact – based on how close they get you to your goals.  Then rank each as high/medium/low difficulty – based on how long they will take to deliver.

The high impact, low difficulty projects are a no-brainer
Now you can start to plan the roadmap against your goals.  There will be dependencies between features and SDP (software delivery platform) projects needed to support customers, operations, billing etc – but you can prioritize the projects with high impact, low difficulties first, then the high/med and med/low projects etc.

Communicate the roadmap based on the goals
Its good to keep your goals in front of everyone and show what goal each project is working towards.  The roadmap below shows goals as ‘swim-lanes’, with release milestones marked along the top.  Some people like to give each release a code-name – I like to give it a theme, which sets people’s expectations about what’s in the release (ie: yes – hooking up the twitter API is a great idea, we’ll look at it in the networking release)

Roadmap template

Roadmap template

This has become quite an effective template for visually communicating priorities between projects, how our roadmap is meeting our goals and how there are dependencies from release to release and between product and SDP.

If you’d like to have a play with your own roadmap, download this roadmap template for Microsoft Visio and fill in the blanks.  Let me know how you get on via comments.


Product Lifecycle: Part 4 – Delivering

2 October 2008

The whole point of product development is to regurily deliver quality software to customers.    Seth Godin is always saying to spend your marketing budget on engineering and build a product that people will talk about.   

This is the basis of permission marketing: build a remarkable product, tell a story to a sneezer, they will spread the word, people will come asking for more.  This starts with building a product that’s worth remarking on, which you can do by accident or you can be intentional about.  Keep in mind that often users will ask you to copy your competitors, which isn’t very remarkable.

Understanding and managing your roadmap helps you to be intentional and ensure that you are solving the right (and most profitable) problems for the right people, so the final part of the process is simply to deliver.

One thing that always needs to be kept healthy is the back channel.  I described the roadmap as a radar, giving a point in time reference of the priorities.  The back channel is the off-the-radar stuff that just shows up and is either a no brainer or is very high value with very little effort.  There will always be quick wins that can and should by-pass the entire process and get straight into the software.  These quick wins are only possible when the rest of the process is operating smoothly, they’re the exception to the rule.

At Xero, our mantra is to release early, release often.  Delivering software into the hands of users builds momentum and satisfaction for both customers and the development team.  And don’t forget to have fun.

Read the whole series
Product Lifecycle: Part 1 – solving problems
Product Lifecycle: Part 2 – scope
Product Lifecycle: Part 3 – the roadmap
Product Lifecycle: Part 4 – delivering


Product Lifecycle: Part 3 – The Roadmap

28 September 2008

Scoping a feature into a project is one thing, but scoping 50 features into 200 projects that deliver on the strategy of the company becomes a roadmap.  You can take this to extremes and try to plan out the next 2 years or take the other extreme and focus on just the next thing.  Agilers say we should delay decision making until the last responsible moment, but there is a difference between decision making and planning.  

I think its diligent to plan ahead 3 months, but with the understanding that the roadmap is like a radar – its a blip that’s only accurate at the point it was created – but once we have this reference point, its much easier to see changes and to comminucate priotities.   

At Xero, we use two levels of roadmap, but I’ll explain it as three, because the first two (buyer & product) are very specific to your product offerings.

Buyer Roadmap
Managing a separate roadmap for each buyer persona helps keep in perspective who you are solving problems for and helps to prioritise features for each buyer persona.  

Product Roadmap
You may have a 1-1 buyer-product mapping or one buyer for many products or many buyers for one product or many buyers for many products.  How you productise your software is a strategic decision and managing a product roadmap helps keep your strategy in perspective.

Company Roadmap
This roadmap is the convergence of the product roadmaps into one roadmap that can be communicated to the company without getting overwhelming.

At Xero, we present our roadmap based on the current goals that we’re aiming for.  For example, one goal is to be the easiest accounting system and there are projects we do to serve this goal.  Another goal is to achieve customer numbers so there are different projects we do to serve this goal.

Product Lifecycle: Part 1 – solving problems
Product Lifecycle: Part 2 – scope
Product Lifecycle: Part 3 – the roadmap
Product Lifecycle: Part 4 – delivering


Product Lifecycle: Part 2 – Scope

25 September 2008

Scoping is about two things:  understanding the bigger picture and saying no.

You have to say no to 100 things so you can say yes to the one right thing.  Some people say ‘good is the enemy of best’ – ie saying yes too soon means you’ll settle for a good solution but not the best.  Others say, ‘best is the enemy of good’ – ie if you strive for perfection you’ll never deliver anything, so its better to get something good out the door.  

Both are true, so how can you make such calls if you don’t have an understanding of the bigger picture?  Of course there’s always a bigger picture to the bigger picture, but that’s important too because eventually you’ll work your way right back to the company’s strategies and vision.

To make good decisions and to empower yourself to say no 100 times, you need to know where an idea fits.  9 times out of 10 you’ll hear a solution before you understand the problem, so you need to start by working back to the problem, then understand who the problem applies to, then understand what the solution is, then understand what the ideal solution is and how that fits in with the rest of the product.

Once you understand how it fits (and this is usually a thought process or a discussion – not a meeting or a document), then you can start to scope it back to a deliverable project.

At Xero, we tend to deliver a feature in stages of:

Entry level – get a solution into the hands of users so the feedback can begin.  80/20 rule applies.

Easiest – our goal is to be the easiest accounting system, which means supporting some edge cases and hiding complexity.

Automated – we save users time by removing tasks that they shouldn’t have to do manually. 

Innovate – once we have a great solution and really understand the problem domain, we can introduce game changing innovations.

We only design one stage at a time and the next stage will be designed based on user feedback.  Each of these stages generally represent a project that will be scoped and prioritised into the roadmap but usually won’t be delivered in consecutive releases. 

Product Lifecycle: Part 1 – solving problems
Product Lifecycle: Part 2 – scope
Product Lifecycle: Part 3 – the roadmap
Product Lifecycle: Part 4 – delivering


Product Lifecycle: Part 1 – Solving Problems

22 September 2008

I love developing software because its possible to create something of value from simply an idea in your head.  

Over the past few months, I’ve been talking to a number of people who are using agile or want to use it to build better software products. There are a lot of people using “agile” as a wild-card to implement rigid processes which often feel counter-intuitive to the goal.  

If I’ve learned two things about being Agile, its to focus on people over process and to take the agile toolset and apply these precepts over (not instead of) the existing precepts of building a good team with the right culture and leadership and using good software engineer principals.

My next four posts are a look at the bigger product lifecycle, within which sits the software development lifecycle.  The purpose isn’t to say this is the way or the best way, but to give an example of how Agile principals can be achieved in a design-led environment where the business wants a predictability. 

When you read this, keep in mind that its always about people over process so a lot of what I describe are just precepts upon which we discuss and plan the product development.  We are also trying new things all the time which keeps it interesting.  

Solving the Right Problems

Developing a product is as much about the bits that come before and after the software development.  Identifying problems, finding a solution that resonates with people, understanding the difference between buyers and users, then building it and finding the right messaging to get it into the hands of people who will spread the word.  Its so much fun and can have such a big impact on people when its done right.

Identifying the right solution to the right problem is often overlooked and when we do get this bit right (read Tuned In to learn about getting this right) – how do you build and deliver it better, faster, cheaper?  

I don’t care much for repeatable processes that get followed religously.  What’s more important is having the right people on your team, then equipping them to work to their strengths.  Process is important though because it gives us the framework for being creative.

So, lets have a look at the bit in the middle of ‘problem’ and ‘solution’

To solve the problem, we kick off a project which will include some design, some development, some testing and some deployment.  This is where the debate on software methodology comes in – some people like to iterate the whole process, some like to iterate the development and testing, some like to iterate the design and some like to deliver the whole lot at once.

How you do it largely depends on the people in your team (which will hopefully be defined by the needs of your product).  If the developers are designing the app and talking to users then you can have very small iterations over the whole lot.  If you have highly structured requirements or your developers don’t have much domain knowledge, then you may iterate over the development and testing within a big project, or just deliver the lot within a small project. 

At Xero, we’re design-led, which means we iterate many times over the design (for a single project – not the whole app), then build and test in one hit.  While iterating over the design, it will be reviewed by developers, testers, users, customer care, sales people and generally anyone who has an interest.

With applications that are delivered online (which can include installed apps too), release cycles can be daily, weekly or monthly.  At Xero, we aim for about a month, but are flexible depending on what we’re working on.

Having regular releases is a great way of getting software in the hands of users and then using their  feedback to improve and extend the product.  This is also a main principal of agile to build-show-build-show and whether you iterate like this over the design or the software itself, the important thing is to involve users in the process.  At Xero, we iterate over both and I’ll discuss this more in part 2.

Life would be easy if we only had to think about one project at a time, but we usually have 10-20 projects in the works at any time and another 20-50 queued, so the prioritisation and dependencies between these is an important factor.  There are two things to look at here: the scope and the roadmap which are the topics of parts 2 and 3.

Read the whole series 
Product Lifecycle: Part 1 – solving problems
Product Lifecycle: Part 2 – scope
Product Lifecycle: Part 3 – the roadmap
Product Lifecycle: Part 4 – delivering


Business of Software Highlights

7 September 2008

The Business of Software conference was a real success – thanks to Neil and Joel and all the people behind the scenes for organising it.

Some highlights for me were:

  • Meeting so many top software entrepreneurs from around the world.
  • Lots of discussion about pricing software, with agreement on one point: ‘Pricing software is hard.  Pricing software is very hard.’
  • Lots (and lots) of discussion about agile, with not much agreement at all except that the common perceptions of Agile are plain wrong and simply copying what worked for someone else is likely to fail.  There is a huge appetite to improve productivity, quality and correctness and people are looking to Agile for answers.
  • Seth Godin talking about ‘Ideas that spread win’
  • Eric Sink’s comparison of product management with parenting
  • Steve Johnson gave the big picture of product management including explaining the difference between inbound marketing (understanding buyer/user problems and opportunities) and outbound marketing (communications and messaging etc).
  • My favorite quote, ‘Friends build products, enemies only build documents’ (Steve Johnson)
  • If you’re interested in some research on founders and succession, have a look at Noam Wasserman’s blog.
  • Steve Krug’s definition of usability: ‘useable for its intended purpose‘.
  • At least two of the speakers told us that we’re in the fashion business!

Overall a great week and thanks everyone for being so open to discussion.


Business of Software conference

3 September 2008

I’m in Boston this week for the Business of Software conference which kicks off tomorrow.  Boston is pretty cool with a lot of history.  I did a tour today including MIT, Harvard, the Cheers bar and a harbor cruise.

I’m really looking forward to the conference which is jam packed with software business heros and gurus.


MNZCS

22 August 2008

I applied this week to become a member of the New Zealand Computer Society.  As a Software Professional, regardless of what role I’m playing, I think there’s value in being part of a professional body with a code of ethics and an emphasis on ongoing professional development.  They also have a mentoring program which I’m hoping to get into to be mentored and in time to be able to mentor others.

The code of ethics is actually very good.  Its worth reading to remind us why we are software professionals and what value we are creating for other people:

  1. Members’ responsibility for the welfare and rights of the community shall come before their responsibility to their profession, sectional or private interests or to other members;
  2. Members shall act in the execution of their profession with integrity, dignity and honour to merit the trust of the community and the profession, and apply honesty, skill, judgement and initiative to contribute positively to the well-being of society;
  3. Members shall treat people with dignity, good faith and equity; without discrimination; and have consideration for the values and cultural sensitivities of all groups within the community affected by their work;
  4. Members shall follow recognised professional practice, and provide services and advice carefully and diligently only within their areas of competence;
  5. Members shall develop their knowledge, skills and expertise continuously through their careers, contribute to the collective wisdom of the profession, and actively encourage their associates to do likewise;
  6. Members shall apply their skills and knowledge in the interests of their clients or employers for whom they will act without compromising any other of these tenets;
  7. Members shall take reasonable steps to inform themselves, their clients or employers of the economic, social, environmental or legal consequences which may arise from their actions; and
  8. Members shall inform their clients or employers of any interest which may be, or may be perceived as being, in conflict with the interests of their clients or employers, or which may affect the quality of service or impartial judgement;

Also – if you haven’t read the IEEE software engineers code of ethics before, its also worth reading:

Software engineers shall commit themselves to making the analysis, specification, design, development, testing and maintenance of software a beneficial and respected profession. In accordance with their commitment to the health, safety and welfare of the public, software engineers shall adhere to the following Eight Principles:

1. PUBLIC – Software engineers shall act consistently with the public interest.

2. CLIENT AND EMPLOYER – Software engineers shall act in a manner that is in the best interests of their client and employer consistent with the public interest.

3. PRODUCT – Software engineers shall ensure that their products and related modifications meet the highest professional standards possible.

4. JUDGMENT – Software engineers shall maintain integrity and independence in their professional judgment.

5. MANAGEMENT – Software engineering managers and leaders shall subscribe to and promote an ethical approach to the management of software development and maintenance.

6. PROFESSION – Software engineers shall advance the integrity and reputation of the profession consistent with the public interest.

7. COLLEAGUES – Software engineers shall be fair to and supportive of their colleagues.

8. SELF – Software engineers shall participate in lifelong learning regarding the practice of their profession and shall promote an ethical approach to the practice of the profession.

It makes you lift your head up and take a bit more pride in your work.


Tuned-in

8 August 2008

I’ve just finished reading Tuned-In, by the guys at Pragmatic Marketing and its a must read for anyone involved in productisation.  

When developing good software, we focus the design and usability on the users, but we need to focus the roadmap and marketing on the buyers.  The tuned-in approach draws your focus to understanding who your buyers are and making sure that you’re solving real problems that exist for them.

Even if your users and buyers are the same, the problems that lead them to buy your software are different to the problems they will experience while using your software. 

How do you know if a problem is worth solving?  It will be urgent enough for people to pay to solve and prevalent enough to give you a profitable market.

It makes me think of many ideas I’ve had and heard, including plenty that people were in the process of committing years of effort into, all of which solved a problem, but none of which solved an urgent or prevalent problem.

Its pretty simple stuff – and the authors have applied their own advice to how they wrote the book, so read it!


Agility vs predictability

31 July 2008

Steve McConnell makes some good comments re-enforcing that your development methodology needs to be driven by your business goals.

“Whether agility or predictability is more important depends both on what a business’s customers are requesting and on how long-range the request is. Customers say, “I want this capability.” In an ideal world, the business will be able to say, “OK, here it is right away.” Being able to say “here it is right away” is what agility is all about.”

“But the lack of comprehensive requirements combined with an emphasis on “embracing change” just enabled the company to move more quickly in the wrong direction”

Finding the right blend of predictability and agility is important and requires good leadership and planning as opposed to just a good methodology and processes.


Zoho’s end game

29 June 2008

Some interesting comments from Zoho CEO Sridhar Vembu over on Gopal Shenoy’s blog.

On the Zoho suite, we have believed from the beginning that a lot of the value of collaborative productivity is integration across the products. Traditionally database oriented offerings (such as CRM) and document-centric offerings (the office suite) have existed in their separate silos. We believe the key to next generation productivity is integration across these silos.

Salesforce seems to agree, because they have partnered with Google for the Office suite part. Before that partnership, they tried to acquire us, which tells you what they would have liked to do, but we politely said no because we didn’t believe there was a cultural fit. They even tried to get us to drop our Zoho CRM, in return for a “deal” to integrate our office productivity apps with their CRM suite. It is our diversified business & product mix that allowed us the freedom to resist such unfair demands.

So, its about the integration more than the collaboration & other SaaS goodness.  This comes through not only in the integration within their own apps, but in the integration model they offer with third parties.  I’ve had a play with their spreadsheet integration and they allow it to be run as an embedded spreadsheet within another app.  Data can be loaded from and saved to the third party app with no Zoho account required.  This is quite powerful, but wouldn’t be nearly so interesting if their apps weren’t online and quite good too.


Follow

Get every new post delivered to your Inbox.