The Blog - Archive for projects

Optimisation Tactics

by adambutler Filed under: Knowledge,Optimisation

Optimisation is a core element in building any successful product regardless of whether its a website, an app or even a game. But optimisation isn’t just about keeping the file size down its about providing the most fitting possible solution for any given task.

When optimising we think about value, usability, readability, communication and personality as well as the more traditional foundations such as SEO and load times. Covering all these core concepts will ensure you have a delicious product.

So how do we do it?

Throughout each step of design, development and testing we think about these core principles based on our collective experience and through experimenting. Here is one such example…

For one of our top secret projects we have in development we have two large containers which you can navigate between, we found that having a drop shadow these containers caused a subtle but noticeable lag when animating in and out. As with any project there is always more than one technical way to active a task so we brainstormed potential fixes which would allow us to keep the design with a drop shadow.

We decided to trial our current method (A), animating css position values, against CSS Transitions (B). To stress test the demo each container was filled with 2312 child elements all individually coloured and with opacity. The parent containers have the same drop shadow as we intend to use in our project.

Method B out performed A quite significantly in each of the tests. Spending just a little bit of time on this problem helped ensure we had a buttery smooth animation. Although this is a very specific example this logic is used each of the optimisation tests that we run and is essential to making great products.

You can view this test here…. but remember it is a stress test so it may crash your browser.

Changing our Git Workflow

by Tom H. Filed under: Knowledge,Technology

We’ve been using Git for quite a while now. We don’t have a single SVN repository. This makes for happy developers!

For a while we’ve been using Git Flow as our preferred workflow. It’s been pretty good, certainly from the point of having some sort of a recognised workflow/process. The only problem is, it’s turned out to be a bit heavyweight for what we want.

We love agile development, and for us, this means:

  • Short sprints of development
  • Regular releases (minimising serious issues)
  • Flexibility to experiment and throw away bad ideas
  • Team spirit and collaboration

The problem with git flow is it’s far better suited to a fairly fixed release cycle. We’ve found the release mechanism is cumbersome for quick/regular releases, and… it’s all a bit heavyweight for the entire team. We want all of our team to feel they can commit and contribute without feeling they might break something in the process. We also want to encourage communication, collaboration and experimentation!

So, the solution is, we’ve switched to Github Flow way of working. So what is it? The basic principles are this (stolen from http://scottchacon.com/2011/08/31/github-flow.html):

  • Anything in the master branch is deployable
  • To work on something new, create a descriptively named branch off of master (ie: new-oauth2-scopes)
  • Commit to that branch locally and regularly push your work to the same named branch on the server
  • When you need feedback or help, or you think the branch is ready for merging, open a pull request
  • After someone else has reviewed and signed off on the feature, you can merge it into master
  • Once it is merged and pushed to ‘master’, you can and should deploy immediately

Here’s an excellent presentation that explains it:

What about clients reviewing code before it might be production ready? Well, we simply push a given feature branch to our stage server. If two developers are working on a separate feature branch, they can either merge each other’s feature branches or create a new shared branch for the purpose of a client reviewing code.

We’ve dropped all our develop branches and the team have been merrily discussing pull requests and getting stuff done. So far so good, we are liking the shift a lot.

User stories, luvvies and conveying project scope

by Mark P. Filed under: Knowledge

We get sent a lot of ideas for apps; mobile and web based. Sometimes we get the most amazingly detailed documents that give us a thorough understanding of what the idea is and what it’s supposed to achieve.

Inevitably this is the exception to the rule, as being from different industries most people know what  they want yet find it difficult to know the best way to describe it and miss out large chunks that are important to us. In the NLP world this is known as “deletion”. We all do it; “pass me that”, we delete the reference assuming that whoever we are talking to knows what we’re on about.

When we get job referrals like this, at the expense of possibly losing the project we ask the potential client to clarify their idea with two specific processes. This also helps us determine if they are serious about the project.

  1. What’s the essence of the idea? This is essentially the elevator pitch.
  2. User stories. What platforms and users are involved and what can they do. We call this the “stage” and actors.

The five minute elevator pitch

Distilling the essence of an idea into a single sentence is a really great way to communicate your project succinctly. A nice template to get this up and running quickly is as follows:

  • For [target customer]
  • who [statement of need or opportunity]
  • the [product name]
  • is a [product category]
  • that [key benefit, compelling reason to buy].
  • Unlike [primary competitive alternative]
  • our product [statement of primary differentiation].
As an example for ContactZilla
For teams and businesses who need to keep track of their contacts the ContactZilla platform is a contact management solution that is completely social. Unlike Sugar CRM our product merges contacts from social media and traditional sources effortlessly.

Just this one statement helps with our understanding in a really big way. It’s quite a fun exercise too. We originally discovered this in the book “The Agile Samurai“.

User Stories

User stories are a pragmatic way to get a project communicated effectively. Essentially you are describing what the application should do for particular types of user and while not telling the developer how to do it. This means you don’t have to keep asking “is it possible?” you just state what is needed. The developer then needs to figure out how; with the resources available.

Project managers will weep that we ask a prospective client to come up with user stories. It is such a simple way to convey interactions, goals and functionality that even if done badly it’s usually more helpful… (we can argue about that in the comments)

First you need to identify the “stage”, this is a simple theatre metaphor that a lot of people understand straight away – the stages in a lot of cases can be an administrative area and a public facing area. We then need to identify the “actors”. These are the different types of luvvie people interacting on your stages. For example an administrator, a guest visitor, a bronze user, etc. This then leads to the user stories themselves.

As an [actor], I can [feature] so that [reason]

As an Administrator, I can delete a blog post so that I can keep things tidy.

You may find that you don’t need the reason, so get rid of it.

As an Administrator, I can delete a blog post.

If we now combine this with the stages we can break up the user stories into sections;

Administration Area – Managing Users

As an Administrator I can delete a user

As an Administrator I can send a message to a user

My profile page

As a logged in user I can update my profile picture

As a logged in user I can change my biography

You can take this much further as a project manager and a development team but for the sake of simplicity this gives a client a really good starting point to convey what they want to achieve in a succinct format.

We find that most clients find this a really rewarding process, it focuses them on what they want to achieve as opposed to how to achieve it. In some cases it also demonstrates the complexity of what it is they want and either validates or invalidates their idea. Which we can all agree is best done early.

Conclusion

Using these two simple techniques helps both parties enormously. It’s not always necessary and doesn’t need to be an extensive exercise but just enough to ensure a level of understanding on the side of the development, project management and sales team (after all its hard to quote for something you don’t understand).

The Agile Manifesto

by Mark P. Filed under: Company,Knowledge

The following is from the Manifesto for Agile Software Development it’s fair to say that we do our best to follow this for most of our projects. I thought I’d reproduce it here for those that haven’t seen it…

We follow these principles:

Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.

Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage.

Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.

Business people and developers must work together daily throughout the project.

Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.

The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.

Working software is the primary measure of progress.

Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.

Continuous attention to technical excellence and good design enhances agility.

Simplicity–the art of maximizing the amount of work not done–is essential.

The best architectures, requirements, and designs emerge from self-organizing teams.

At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.

FaceJam – a web toy for parties, conferences and networking

by Mark P. Filed under: Products,Technology

We’ve just put up the first version of Face Jam. A really simple online tool that once “connected” stops you from forgetting all of the those lovely people you met last night…

A user sends a Twitter name by SMS (to a short code) and receives back a message with their full name, location and other networks. The person will also be saved to your online account so that when you’ve sobered up got in front of a PC the next day you can check out (and connect with) the people that you met last night.

It’s super simple and good fun. We’ve got a few neat enhancements in the pipeline too.

Currently it’s UK and O2 only due to the use of the Bluevia Oauth. We’ve got another etcher post coming about the development journey.