Tuesday 29 May 2012

Development Environment Must-Haves: Development and Test

For any serious development environment, creating properly partitioned development and test environments is essential. Let's work backwards from production, and look at our expectations when we deploy to each environment.

Photo credit: gothopotam on Flickr

In production, we expect and demand nothing less than correct operation when we deploy a new version of our application. We expect this environment to be permanently available. If there are any problems, they must be specific to the production environment only. We can reduce the probability of this occurring by using a "regression" or as-live environment.

In regression, we know that our application has been fully tested, but we expect to encounter problems related to configuration changes or perhaps database versioning issues. We expect this environment to be permanently available as production, but accept there may be problems from time to time. By encountering these in regression, we are able to address the issues before our application makes it into production. We make sure that our application is performing as per specification and that there are no defects, by using a system test environment.

In system test, we know that our application works, in that it starts up and functions, however business functionality and overall operation has not been independently tested. We expect this environment to be generally available during testing, but accept that new releases may bring in problems which have to be addressed, and also that the application may fail during testing due to major defects. We expect to encounter these issues as well as some relating to the configuration of the environment and resources it uses, such as databases. However, we can have confidence that our application basically works, by using a development environment.

In development, nothing is guaranteed. The application may or may not work, for reasons which will be investigated by development staff. The development environment is used to ensure that released applications are basically sound, and configuration issues explored. We expect this environment to be generally available, but accept that certain tasks during the development phase may require it to be extensively rebuilt or reconfigured.

Applications (as created by your continuous integration build cycle) should be released to each environment in turn, and where problems are found, be prepared to back track and rework - and start the cascading release process again once the fixes are in place.

If you ever find yourself deploying to production and changing the production database because of a bug or change to requirements, and then back-propagating to development, you have a major problem!

In this short series I'm outlining the tools you really do need for a professional quality software development environment. Many of them will seem like common sense to many of you. Many of them have been inexplicably missing from development environments I've seen over the past few years. The list isn't meant to be "the final solution" - you may have these things, you may have alternatives, you may have nothing at all - in which case you know where to start.

Wednesday 23 May 2012

Running Competitions on Pinterest

Briers Home & Gift Web Site

Vancouver retailer Briers Home & Gift is running a competition using Pinterest, until the end of June. You can enter by pinning items from their online store catalogue on to your Pinterest board and then submitting the pin URL on the Briers web site.

What's interesting about the competition is that it has multiple streams, using a combination of random draws of pins (weekly, and at the end of the competition), a tally of re-pins and likes for each pin submitted, and the good old judges-decision-is-final who can create the coolest board on Pinterest.

The downside, perhaps, is that the entry process is a bit clunky - pinning is of course quite quick, but the form filling process afterwards is more fiddly. I'm sure there's some scope for a bookmarklet or similar time-saving tool to be created to help with this... I may have my coding hat on later in the week.

You can find out more and watch the video on the Briers web site. The competition is open to anyone, anywhere in the world, so it's worth taking a look not only to see how they're doing it, but also to take part!

Monday 7 May 2012

LinkedIn Usage Patterns Emerge

There are virtually no changes to the usage pattern for connections in my LinkedIn network during April 2012, on a network which grew only very slightly over the month.

I'm expecting this to settle into a regular pattern, showing that the majority still use LinkedIn for growing their networks rather than interacting with them, although I would also expect this to change over longer timescales as more people learn how to make better use of LinkedIn.

Click on the link below the summary chart to see the full page, with charts created in HTML5 using RGraph.
Click to view full size