Category Archives: Factory

The Four Process Phases

I’ve previously written down the system development process for students to use from the high level. This post will break things down into each section of the four sections of cycle (discover, define, develop, and deliver) with some ideas of what should be proposed for each of them.

Discover

Starting with ‘discover’ is where the team meet the client and discuss the percieved issues of the client. The purpose here is to explore the issues raised by the client and the context of the situation in order to establish the parameters of the application. In addition to interviews, probing with Five Whys (training example and TDD example and ‘how to run exercise‘) can be useful here to ensure the problem is being addressed correctly and its full context taken into account. At this stage it is important to not consider solutions, but rather gather ideas, and defer any judgement on possible solutions. In general we are diverging from the original idea and expanding possibilities.

A suitable service design template might be useful at this point. This would help ensure that appropriate partners are brought into the process and that nothing is forgotten along the way. You may also want to use the customer journey canvas from the This is Service Design Thinking book, which is a useful guide to the processes involved and the tools, which can be used for these four stages. The other suitable canvas, which might be useful in some cases is the business model canvas from the Business Model Generation book (where you can download a useful extract too).

Define

In the ‘define’ phase potential solutions are explored. The goal is to expand possible solutions and then to start focusing on viable ones, which can be carried forward to the ‘develop’ phase. This is the phase of brainstorming and ideating possible solutions. A creative problem solving process can overlap between the ‘discover’ and ‘define’ phases to help determine suitable boundaries of the problem, while also generating possible solutions. Many general brainstorming game sessions are detailed in GameStorming and Innovation Games. Chosing which game to use is a matter of determing the type of scenario for the appropriate people involved and the desired goal. Following the session the ideas can be compared using something like Impact Estimation Charts (further example and template), or maybe develop something more out of the CPS process and in particular step 5 suggested by CPS to see which will provide ‘the biggest bang for the buck’.

If the capability is a available, then a facilitated StrategicPlay session using Lego Serious Play may be suitable to help understand the issues of the problem and possible solutions. A StrategicPlay LSP session can help build a shared vision of the problem, or possible solution, as well as to possibly strategize future scenarios, or to understand the context of the problem and the intricacies of behaviours between actors.

During this phase the team should also determine the minimum viable product that is to be developed. You can find MVP discussed with reference to wikipediastartups, and software. This is the simplest, most basic solution which can be released. The goal is to produce something for the end users sooner rather than later, so that feedback from actual usage can be used to tailor a better version. The goal of MVP is to keep adding parts of the product to the customers, instead of all of it at once. Start earning business value sooner, rather than later.

From the ‘define’ idea solution possible interfaces can be rapidly prototyped on paper, or some other simple method used to create a mock up, which can be shown to real users for feedback. Based on trials, the prototype can be refined again and shown to others for more feedback. When enough of the minimum viable product is ready as a prototype, then this is moved onto the next phase. You’ll notice that we started this phase with many possibilities and have narrowed them down via a number of processes to the bare minimum required. We have converged our ideas down based on usable feedback from users.

Develop

In the ‘develop’ phase a working prototype is developed and refined based upon ideas generated in the ‘define’ phase. This should be done using an agile process (wikipedia, scrum & XP) that incorporates incremental week, or two week long, timeboxed iterations based upon the client selecting the most suitable features to build in that increment. In order to keep the quality of the codebase high the team should be using appropriate agile practices such as pair programming based around test/behaviour driven development (TDD/BDD) so that the team only build what is needed. As the completed iterations are shown to the client these should be confirming hypothesis about which features are required, and other issues such as which user interface works better. Successful features should then be pushed onto the ‘deliver’ phase.

When the team is unfamiliar with agile practices, then games such as the Lego XP Game, or the Lego Scrum Game should be used to introduce the ideas. Activities such as CodeRetreats, or CodingDojos should also be used to introduce pair programming and TDD/BDD practices and bring people together too. The book to read for this phase would be something like Agile Estimating and Planning, which covers the basics clearly.

During this phase the process might be diverging out again as ideas explored in ‘define’ are refined and new possibilities explored while building a solution with the client. As the team and the client are also testing hypotheses, other options will also be explored. There might be lots of going back and forth between the ‘define’ and ‘develop’ phases. The key to successfully doing this will be that the team and client base decisions on some notion of ‘biggest bang for buck’, and using a ‘build, measure, learn’, or PDCA cycle, so that validated understanding is being used to make the decisions about what to include and push onto the ‘deliver’ phase. This is all greatly explained in the Lean Startup book, and illustrated in the Toyota Kata blog post using PDCA.

In order to keep the workloads manageable, the team need to institute a sort of ‘work in progress’ kanban system (scrum & kanban book) so that work is focused and delivered quickly. The clients and users only see ideas that are implemented and tested, so it is important not to have too much work ‘in progress’, because that would slow down the feedback cycle. Looking at Henrik Kniberg’s thoughts on Metrics would help here. Using a kanban board to limit the work will make this easier to achieve. There are a number of games that can illustrate these benefits such as the Kanban Pizza Game, or the Frog Factory Kanban Game.

Deliver

The purpose of the ‘deliver’ phase is to make the application go live for the client and their users. During the ‘develop’ phase limited users should have been trialing the application so that lessons could be learned, and from that knowledge final features should be pushed to the release version of the application. A continuous integration system should be used to ensure that all of the code is properly tested for smooth integration and any errors quickly caught and fixed. This is mainly to catch situtaions where multiple developers are pushing code to the version control system and one misses a change that someone else made and a test fails. It provides a useful safety net, which is not too hard to add to the process. The line between the ‘develop’ and ‘deliver’ phases can be permeable and the only difference might be that some features being used are temporary as part of an ‘a/b test’, or some other means to measure what is needed by the users, and thus might disappear if not deemed useful.

Together each of these phases should be a part of each project and while the team might spend more time in the ‘develop’ phase, they should also be sure to spend suitable amounts of time in ‘discovery’ and ‘define’ so that they ensure that they ‘develop’ the right application because they took the time to ask the right questions in the ‘discover’ phase and tested out prototypes in the ‘define’ phase to see if their ideas had merit.

Further resources

Further resources can be found to cover each of these phases. Some will be obviously applicable, while others will be less so, but will provide background suggestions for context. The focus here is on the service design aspects, which I’m assuming are new, and that the agile and other software aspects are familiar enough already.

d’school bootcamp bootleg with the basic process (they use five phases to the four here).

Service design tools has a wealth of material that can be used across the project.

Gamestorming site with games and suggestions, which can help with the ‘define’ phase.

Innovation Games has a lot of games, which can be used in the ‘define’ phase.

Conclusion

So there you have the basis of a process to co-create software bringing together service design and agile approaches. This is still not quite ‘right’ but pulls together most of the details I want to see covered. As with the post on ‘the process’ this is still a starting point, which I’m sure will change over time. Any thoughts and comments greatly appreciated.

CodeRetreat Aberdeen review

Steven Milne and I ran the first CodeRetreat in Aberdeen on 21 April and a little under twenty people turned up on the day. Adrian Mowat from EdgeCaseUK facilitated the event for us and kept everythign moving along smoothly.

Adrian ran the traditional CodeRetreat format and had everyone coding in pairs to develop Conways’ Game of Life in 40 minute blocks using test driven development (TDD) followed by a short retrospective and then a switching of partners. After the first two sessions everyone had laptops all sorted for running TDD and they focused clearly on coding tests and having fun.

Thanks to sponsorship from Codify, Fifth Ring, the Aberdeen Software Factory at the University of Aberdeen, and EdgeCaseUK we had food from ItsyWorld, which was wonderful as always.

By the end of the day after six sessions of pairing one pair had the game running in Javascript and everyone had a much better understanding of the value TDD brings to coding sessions. Thanks to all who came along, or sponsored us on the day.

In case you’re wondering. Don’t. We will run another CodeRetreat later in the year.

Project based MSc Advanced Computing Science

I’m trying to find out if there would be any interest in a degree where you mainly ‘do the work’ and learn through discussion with fellow students and mentoring staff, who can guide you to what you need to know. There would be no exams on this degree and it would all be done via coursework as groups and individuals over a year. So read the following and put something in the comments please, or email me your comments if you prefer.

The basic idea

My idea is that the ‘clients’ would be local businesses, who might need some prototype work done to prove/disprove an idea, but also maybe a research group which works with local groups to explore issues and problems, or maybe charities too. Even more exciting would be if a student had an idea for a start up, which we could develop over the year. I know from other work done with the Aberdeen Software Factory that we can find lots of projects on which to work, so that’s not a problem. I think this idea would work, but I need to sanity check it with the public. So, I’m asking, does this sound like the sort of thing you’d be interested in?

As a student

Would an MSc where you only did group work with real clients for two terms appeal? You still do an individual project in the summer. The goal is for students to learn to successfully develop software solutions while helping to solve local and global problems so that they have a portfolio of external client examples by the end of the degree. Does this sound like it would appeal? What more would you want to know before you signed up for such a degree?

As an employer

Would you want to hire people who had a track record of workinig on four or five projects the previous year with a variety of clients be ideal? What would you want to know they’d done over the year, or just have them be able to point you to websites, or applications in which they’d made a contribution?

As a potential client

What would you want to get out of this sort of arrangement? Assume that all of the IP can be sorted, as I’m told it can be based on current types of projects underway at the university. What else would you want to know before you committed to such a collaboration?
Like I said, I think this is the way to go: learn by doing and then do it some more to develop good habits. This is also what is suggested as good practice by any number of reports on employability and learning and of course, the big universities do similar project based work too. Sheffield does its MSc work with Genesys at the MSc level, which is what inspired the Aberdeen Software Factory in the first place. We should aim to do what we can at our level and find our level and then get better.

Now that you’ve had a read email me something, or put something in the comments. Thanks.

The Aberdeen Software Factory completed its first year

The Aberdeen Software Factory is now about a year old. I was running events under this title for longer, but about a year ago we put the paperwork in place to take paid consultancy work.

As an ongoing means to find work for students, both paid and unpaid, the ASF did fine. We had three paying contracts done through Interface, which is funded by the Scottish Funding Council. A fourth one is waiting in the wings until such time as the business is more certain of its market and the correct approach to take. In addition, we also worked through five group projects over the summer with ‘live cases’, a term used by the Global Venture Lab to signify real company collaborators. One of these started as an Interface project done as an unfunded student honours project, which produced a proof of concept, which then carried on over the summer as group project. We also had one collaborator set a course assessment for students, the results of which were rolled into prototype done as a funded student project over the summer. Lastly, another student has continued a volunteer project through fits and starts that match a client’s ability to work on the project himself.

Some of the projects had their own characteristics and personality. They have almost all been run at a distance between the clients and the student providers. Sometimes this was more of a problem then it should have been. Othertimes this was not an issue, and the work ran smoothly. For some projects we also had a turnover of students. Where the students stayed the same, or where the switch of students was between sections of the work, then the projects ran smoother.

Through this work the ASF also enabled two hackdays, and facilitated a third. The first was in conjunction with Rewired State as part of the National Hack the Government Day 2011, where people came together to use open data to build a better state. This event led to the Donor Wall ‘designathon’ competition for the new library as a way to bring people together to offer the best way to display donors to the library building. The last event was organising the space and facilities for a mini-hack day at the ScottishGovCamp event in Aberdeen.

Looking to the future, some goals for the next year, based on past experience would be these:

a) try to avoid switching students during the project where possible. In all cases, this happened unexpectedly and wasn’t known at the start of the project. If we must switch students, then we need to give them more support to get up to speed, before they officially start the project.

b) look for ways to bring the students and clients together at least once or twice per project, even if only over skype, but ideally in real life.

c) bring students more into the backlog processing process so that they have a better view of the bigger picture of the software development process.

d) look for opportunities to bring in more design thinking and possibly, where appropriate, service design thinking into the process so that we provide a more rounded service.

e) We should also change the name to something that suggests more creativity than ‘factory’. More about this later.

f) do more hack-day events to keep all students interested in building apps ‘just because’, especially if we can get cross and multi-disciplinary teams involved.

All in all, not a bad year. May the next one be even better.

Thinking about Lego Serious Play and Simplex

For the last year or so I’ve been looking on and off at Lego Serious Play (LSP). I’ve been thinking about two aspects of LSP. First, I’ve been wondering how I could bring it into my university classroom with students. Second, I think it could be a useful addition to the range of skills available to the student driven software development I help organise with non-departmental clients. LSP could help form connections between different parts of the university, as well as the wider community of Aberdeen and the surrounding area. Combined with the Simplex problem solving approach, this could be a powerful combination to help us help others, and help form part of the learning processes used in the department.

I’d read about how StrategicPlay (DE) and StrategicPlay (CA) had been using this combination and was thinking it would work well as an extra layer of learning to bring to the classroom. Lectures just aren’t enough really, and these ‘thinking with hands’ aspects all seemed worth the time and effort to better understand. Also, what’s not to like about Lego? Discussions with Katrin Elster and Jens Hoffmann at StrategicPlay in Hamburg, about Simplex and LSP helped greatly in sorting out my ideas too. Thanks to both of you.

LSP with the students has several appeals as a concept. It provides a voice for all students, as it’s inclusive and all contribute to the group story. LSP also moves away from the two-dimensional aspects traditionally associated with computing departments, and should make the students think more about the ideas, before leaping into action with their laptops. The longer thinking time, and in particular ‘thinking with their hands’, as someone said, should provide more reflective solutions.

A key issue, however, is that as I currently understand LSP, it assumes longer sessions, which don’t lend themselves to our timetable issues. Therefore, it will be a matter of either, finding concepts within the LSP application toolbox that can be adapted to the timeframes available, or developing new ones to suit my needs.

LSP with non-departmental groups has  number of potential aspects. We could promote it as a means for idea generation, envisioning and strategizing. As I become more involved in cross-polinating events such as hackdays, and <whatever>Camps, which bring people from different disciplines together it could be a useful way to facilitate the eliciting of ideas for the participants.

What’s it good for?

For example, instead of using paper and pen to describe possible ideas I can see using LSP-like aspects to develop prototypes for applications to bring out metaphores of features. As they would be in the round, we’d also be able to see the relationships between the ideas, and be able to find gaps in the possible application. Thinking with our hands would also open more creative apsects in the participants too.

Smaller exercises, only 20-30 minutes long, should also be useful for illustrating simple concepts in the classroom instead of trying to cover them in lectures alone. We leave too much to lectures, and this could be a way to use more powerful teaching techniques.

Where’s the track record for LSP?

That’s just it. This is not new, and the more I dig around the more I find things happening in isolated pockets, both in the commercial world, as well as some parts of several universities too (Huddersfield, Liverpool John Moore’s. Several papers on the background and science of LSP are available by LSP (open source), Rasmussen, Hylton and Statler. These all point to sound reasons of why the process works from the psychological pespective. Work on neuroscience also supports the process, and how it draws on the right-side creative aspects of people, can be found in Hunt, and the work of Rock. The combination of these different reasons about ‘why’ it works, supports the case studies that are also available from the different practitioners, who are working with firms large and small.

So what next?

The next step is to read more and try more small examples with LSP and Simplex as time permits in the current work schedule. The next big step would be to work on these approaches for use with students and non-departmental clients for group projects in the new year.

National Hack the Government Day – Aberdeen

Come to the event at the University of Aberdeen and use open data to make government work better for you. Come and meet other students, developers,  and designers to develop useful apps to make life easier using data that’s produced by the government at local, regional or national levels. We’re holding a remote version of the same NHGD event being organised by Rewired State at the Guardian offices in London.

The goal is to make government work better for us the people using data it already has. This is your chance to show that your ideas can have an impact and that we can do it better than the big firms.

We’ll provide the space and some refreshments, you come with ideas and enthusiasm.

When: Saturday, 26 March 2011, 9:00-17:00

Where: Room 311, Meston Building, University of Aberdeen

What to bring: you and your laptop

Sign up here: http://www.eventbrite.com/event/1356255597

Preliminaries

Before you come your laptop should be set up to work well with a team depending upon your specialty. This needs to be done before you come in order to maximize the day we have available. This could include

  • a version control system such as Git so that you can easily collaborate with your team
  • a programming language such as Ruby and Rails, or Java, and/or the Android SDK, or iOS if you’re an iPhone/iPad developer
  • web development tools to create and edit web pages using HTML and CSS
  • suitable graphics tools for design work

This is not a chance to learn how to program, but rather a chance to show your design and development skills, and get experience working with others. This means we’ll provide support to help you with tools, but we’ll not teach you programming, or design.

Bring your ideas, and think up others

By all means come with an idea in mind and look for people on the day to help you implement it. Come and scratch your itch with us.

Similarly, if you just want to design and develop things, then come along too. Also do look through what others have done in the past for other Rewired State hackdays, and we’ll hopefully have some ideas that you can work with too.

In order to maximize time, and to let people mull over ideas, do feel free to share ideas in the comments below.

Remember, it doesn’t have to be a big thing, even making an app to make it easier to read the RSS feed of Aberdeen events would be useful.

We hope to have prizes on the day for categories determined on the day, such as app to save the most money, app most likely to be used by the most people and such.

We are also interested in having sponsors, contact b.scharlau@abdn.ac.uk

Data repositories and APIs

You can find data to work with at these locations, although some of it might need to be put into more useful formats. Some places to start looking around are:

http://www.aberdeencity.gov.uk/open_data/open_data_home.asp for the local Aberdeen data sets

http://linkedscotland.org/data the datasets used by the Scottish Linked Data group

https://sites.google.com/site/scotlandsdata/ has more Scottish data sets

http://www.scotland.gov.uk/Topics/Statistics is the starting point for Scottish data sets

http://data.gov.uk/ has the main national data sets including linked data with Sparql queries and links to the Ordnance Survey maps

http://www.guardian.co.uk/data for a ton of data and ways to use it, and get ahold of it.

Aberdeen Software Factory is a ‘go’

The university has approved the idea of a software shop run by students with me as manager for the projects they do. I thought this would be a struggle to start up, but they just said ‘Yes, it’s a good idea. Let’s do it.’ I didn’t have to use any of the arguments I had mentally lined up to show why it would be useful. (You can see more of the gestation of the idea under the ‘factory‘ and ‘working world‘ categories)

This year everything will be run under the umbrella of the university so I’ve avoided the ‘you have to do it as a spin-off’ issue, which takes time and effort, at least for now. This will let us prove whether there is enough business out there to do this, and that there are enough students interested in working part time as developers/consultants to run such a business. I’ve been assuming that there will be enough business and that there will be a pool of students who I could draw upon to work in such a business.

The basic idea is that we’ll have two students per project doing ten hours a week each working in two-week iterations, or 40 hour iterations if you will. The time scale of two-weeks should be ok as it gives us time to close the feedback loop with the client between when we start/stop the iteration. If we did it longer, then it will drag, so two weeks should be about right. All contracts are therefore on a rolling two-week basis so the effort is on evolutionary development of the product and the client can stop when they feel they’ve received what they want.

I just need to line up about twelve clients and we should have the year covered for one pair of students. If we can find twelve more, then we could hire another two students. If you’re interested in this, then please get in touch.

In the meantime I’m writing terms and conditions, job descriptions for the students and tying up loose ends about how this will be run on a day-to-day basis from my end. It is slowly coming together and should all work ok as we evolve the process and find a way to make it work. It’s a project that I think all universities should be doing, and know that it will help the students in the long run as they make the transition from students to employees later, as well as let them see how their studies fit into what they will be doing later.

Failure Demand at TechMeetup

I did a talk at TechMeetup Aberdeen last week on Failure Demand. You can find the slides on my Interests page, or watch the video when it’s up on the TechMeeup blog site. The basics of Failure demand can be found in a a blog entry by David Joyce, and one of John Seddon’s blog posts. Basically, the story is the same, how to reduce the amount of work that you do which is later found to be not needed: either you built something that wasn’t needed due to miscommunication, or was more than was asked for, or is rework due to bugs, etc. The goal is to always reduce failure demand as it produces no new value for the customer.

Software house starts

The student software factory is up and running. It’s on a volunteer basis with about four or five students meeting twice a week for about two hours each session. Some of them do a bit on the projects outside of this time, but not a great deal as they still have other committments for coursework, and paying jobs to supplement their income. Nonetheless, they are enthusiatic and are providing teams to help work out what’s required to scale this up and remove any impediments when we hopefully offer it as an optional module next year.

The biggest holdup so far is getting software tools in place for students and ensuring that all team members can push/pull code changes from the git repositories that we’re using. When I get some time I must set up basic downloads from local sources for students to use instead of downloading from the original sources. Similarly, they need to have clear instructions for setting up system paths, etc for Windows, Linux and Mac OSs, which students seem to be using.

My aim for getting the project management aspects going, user stories, metrics, etc is to introduce them as we go along, and as they’re needed. I want to keep the students enthused in their work, and to let them take the lead to code up the examples as they go along and put order into their work as needed to keep it going in the right direction.

Pursuing the bigger picture of a running software house, was the tangential idea of having any appropriate students helping out in the summer months. We’ll see if that can be sorted out. While we couldn’t offer the students paying work, we could offer them experience working with real clients on real p projects. This would easily run alongside the current group projects for the conversion MSc students that run in the summer, and the individual advanced MSc projects.

Similarly it would be useful to help mentor students who are running their own one-person software houses, of which there seem to be a growing number, to help them grow and improve their processes. I’m assuming that most of them slide into this by accident, and only pick up new ideas as they cover that part of the process in their coursework, or after they did a placement with a firm. Hence, they could use some mentoring to help them on their continuious improvement. It would also be useful for them to meet their fellow entrepreneurs once a fortnight or so and to discuss common problems, issues, etc. Must get it organised for next term.

Industrial Experience at Leeds, Kent and Sheffield

While at the University of Kent in Cantebury last week for the HEA-ICS conference I had a chance to discuss some of the other programmes that offer students places in software houses either as part of their undergraduate programme, or as an extra job for which they need to apply for a place. At Kent and Sheffield this can be done as part of the programme, while at Leeds this is an extra done outside of the curriculum.

About three years ago the University of Kent started their IT Clinic programme based upon the Genesys Solutions programme at the University of Sheffield. Last night I was able to speak to someone at Kent who’s worked with the IT Clinic. He told me about the programme at Sheffield, which I looked up later. Some of the interesting things about both of them are that they are integrated into the curriculum for the undergraduates and the postgraduate students. This means that the students are getting course credits for the work they do, and that the ‘work’ the business brings in is also separated from the ‘processes’ of project management and development, upon which they are assessed. At Kent the IT Clinic is also only one stream of many, which the students can do for their degree, as it is not something that all students will want to pursue.

At Sheffield all students do group projects as part of the ‘Software Hut‘ (link to course site), which explicitly uses extreme programming, TDD and pair programming as part of the process from the very beginning of the term. Once they have done this module, then they can go and do further development and project work in the Genesys Solutions office for credit and gain further experience. The projects for the Software Hut are for external clients, but each client might have four teams competing to build the ‘best’ solution for that client, with the ‘winning’ one chosen by the client being the one implemented in the end. This is an intriguing idea, but I’d have thought it would be a waste of time, as the client doesn’t get any results until much later, and they work with a fake luxury of multiple prototypes that can be tried and tested, which is not the usual way things work.

At Leeds the students can apply to take part in the Leeds Source-IT consultancy project. This is a new venture, which started around February of this year as a way for students to gain more practical experience, while also providing a service to the community. A key issue, which they have noticed is that students can only work about five hours a week on their projects during term time, to allow for their time for coursework. Needless to say, this proves limiting in how much work the team can take on at any one time.

One difference with the Kent solution is that it is as much about software development as it anything else, which can be a project. Therefore the consultants there will do laptop clinics to help students out at the start of term, and they’ll also do other hardware projects, and not just focus on software. On the one hand this can be a useful awareness raising activity, but on the other, it is diverting attention away from learning the tools of the trade in software engineering. Focusing on software will also look better on the cv for the student too, when she or he comes to apply for work after they finish their degree.

Both Kent, and presumably Sheffield too, have staff who look after the programme finding clients for the teams. In Kent, they have hired outside consultants, who worked in the region previously and therefore had good understanding of the local market. At Leeds they have someone who looks after all of the student related programmes in the department to look after this one too.

I think I need to plan a path that gets our programme to such a state as simply and naturally (ie as organically in a natural progression) as possible. Establish the components, glue the components together in a path students can take, and show their value to the department as a whole. This is the next step in this project.

UPDATE: (10 Sept) Forgot to mention Philip Greenspun’s ideas on universities and the economy and how the curricula students encounter with project based learning can help the local economy and prepare students for the working world. While he doesn’t push a software house for students, he does provide industrial relevant projects for students to develop.