Monthly Archives: July 2016

Top 5 Tips to Making Your Online Community

When staring up a new online community, or even regenerating an old one, the most important thing to consider is the categories. The main reason that people visit online communities is for discussion and debate. Categories are a brilliant way to split up conversation types so users to the website can find related discussions which they may be interested in. To ensure discussions occur, take some time to write out the areas that people may want to discuss related to your subject. Try not to put too many categories as people may feel a bit overwhelmed when visiting the website for the first time, and not know where a specific post should go. Do not however go the other way and make too few categories as they may become very general and posts will not stay specific to the categories.

A good way to ensure there are enough categories without cluttering the community is to create sub categories. These sit nicely within a specified category and give suggestions of more in depth areas that may be more suited to the post.

Design

If you are going to use a new forum with none or very few posts in, one way to make users remember the website and potentially start posting, is to ensure the community has a good design. Even if the forum is empty, a good clean design that is specified towards the audience and subject of the community can help to make it stand out from many other dead communities. It also shows users that the owner of the community has made an effort, rather than just having a blank default design, and therefore there is more chance of a response from posting a topic.

Software/add-ons

With a wide variety of community or forum software available on the Internet, it is very important to ensure you pick the perfect one. Users may not be as bothered by the software, but as the person who is required to administer the forum and set up various aspects, if the software is wrong it can be extremely hard to get the community running as smoothly as you may wish.

The other aspect of deciding what software you want to use, is the availability of add-ons. These can be games, statistics from the website, a shopping system or even an enhancement to the usability of the community. This again can be a key factor in visitors becoming part of your online community, many of the newer add-ons can add a lot of value to your community and give it a much more professional feel, especially when it is relatively new.

Remain Active

To me this seems like the most obvious of all the tips, but to many it is something that seems to pass them by. All forums will go through a period where there is a lack of posts, this could be as a result of the subject matter being seasonal, people are on holiday during the summer months, or just simply that the interest in the forum has dropped.

If you are going to attempt to keep the community active, you need to maintain you input and enthusiasm for the community. Without this, no users are likely to post there again, especially if no one else is willing to post on the community.

If members see you are enthusiastic about the subject and the community, they will become enthusiastic themselves and hopefully increase the post count and discussions.

Moderate

The final tip for a successful online community is the moderating of the community. It is very important to ensure posts and topics and moderated into the correct areas, while deleting any spam or inappropriate content. When forums are very young however, many people are drawn to smaller more intimate forums due to their lack of moderation. This may sound strange, but large communities often will over moderate users and only allow certain posts. Smaller communities however are less concerned with these types of posts and more concerned that discussions are actually occurring. The balance required is a fine one, moderating is a good thing, in moderation, but make sure you don’t over do it.

The Five Stages of Interviewing Offshore Software

The following describes some techniques that I use when interviewing candidates for Software Engineering positions in offshore locations. I have brought these techniques together into five stages:

  1. Logic and Problem Solving Ability
  2. Computing Knowledge
  3. Specific Skills
  4. Spoken and Written English Ability
  5. Communication Skills and Personality
  1. Logic and Problem Solving Ability

When I first started out interviewing offshore software engineering candidates in Malaysia, I wasted a lot of time looking at their CVs and using those as the basis for the first stages of interviews. This resulted in the candidates doing a lot of talking about projects they (claimed) they had done and skills they (thought) they had before I even started measuring their technical ability. Some CVs looked very impressive indeed, their authors claiming almost endless lists of skills acquired, many to “advanced” standards. Now, back in the UK, for the most part when talking about highly skilled jobs there is an unspoken rule when it comes to CVs, candidates only listing skills that are really worth listing and certainly being prepared to back up any claims of “advanced” levels of proficiency in any of those claimed skills. It is no surprise that upon receiving such impressive CVs in Malaysia I assumed the candidates were very high quality indeed and decided that the first hour of the interview should be about them talking about their experience (to help them relax into the interview) and me doing a bit of a sell on the role and company. Only after that would we dive into the technical questions, which looked like they would a breeze for them. Unfortunately, the aforementioned CV “rule” that applies in the UK does not apply in Malaysia, nor does it at any other offshore location that I have interviewed candidates from thus far. I could therefore quite easily waste the first hour of an interview talking to a candidate about their CV, and perhaps spending some time talking about the role and the company, before even thinking about getting their hands dirty with some technical questions. When the technical phase began, many candidates were turned down because it quickly became apparent that the person I had talked to for the previous hour or so was not the person who was on the piece of paper (the CV) in front of me; they had exaggerated wildly and in some cases blatantly lied on their CV.

When only recruiting for one or two positions, wasting an hour here and there talking to a candidate who has deliberately fabricated their CV is not a big deal. Indeed, many candidates I talked to were truthful and I subsequently hired them. However, when recruiting on a larger scale offshore, the numbers go against you and such an approach can be hugely inefficient. Given that I was recruiting on a larger scale, I had to find a way to determine as quickly as possible if a candidate I was interviewing was worth talking to further. I therefore put aside their CVs and piles of certificates and jumped straight into a bunch of logic and problem solving activities (which involve writing code) on the whiteboard; I was quietly amazed with the results.

The questions were short and simple, often programmatic, such as:

  1. Using the language of your choice (or even pseudocode for junior candidates), write a function to reverse a string.
  2. Using the language of your choice (or even pseudocode for junior candidates), write a function that prints all the prime numbers from 1 to n.

At the very start of the interview, before asking these questions, I would I often ask a candidate to rate themselves, 1-10 (1 being beginner, 10 being advanced), in each of the programming languages they listed on their CV, quite a few responding confidently that they were 8,9, 10’s in languages such as C and Java. I would record these ratings on the whiteboard, in view of the candidate, for later reference. I then asked the candidate to complete questions similar to (1) and (2) on the whiteboard in front of me. The key with the questions is that I emphasise to the candidates that they are to choose which language they want to use when writing the solution to the problem, thus removing any potential for them to claim they struggled with the question due to a particular language being imposed on them. Furthermore, I am happy for them to use pseudocode / English if they are unable to code the solution (though that in itself will tell me something about the ability of the candidate and will set alarm bells off if they are applying for a more senior position). Based on the candidate’s solution to problems such as these, it doesn’t take long to establish if they are worth interviewing further for the role in question. We are talking minutes. For example, I still vividly remember an already very senior candidate C developer who had worked in the USA as an embedded engineer and was now back in Malaysia working on C code related to aviation systems. He applied for one of my senior software engineer jobs in Malaysia. On paper, he looked fantastic – good degree, strong background and the right skills. To my surprise, he struggled to reverse a string in his language of choice, C, for which he had rated himself as a 9 when asked at the start of the interview (and which I wrote on the board). I don’t mean he got one or two statements wrong due to not remembering syntax, I mean he completely could not reverse a string as per question (1) above. After far too much guidance from me, eventually we got there. Thinking he was nervous, I then gave him the prime numbers question (2) as above. After some initial explanation from me as to what a prime number was (he did know it in the end, perhaps he forgot) he had no idea where to go and just wrote drivel on the board, continually wiping it out, puzzling his forehead and writing yet more drivel. He looked embarrassed. I stopped it there and asked him what he now thought his ranking was in C. I could see the look of torment on his face, like he still wanted to stick with his original answer. “5 or 6, perhaps?”, he reluctantly admitted. Based on his claimed level of experience and the level job he was applying for in Malaysia, I had no further questions. Although I did not set a timer off, I would be surprised if the whole thing lasted 15 minutes.

I now never start an interview without asking similar questions to the above in the opening 15-30 minutes, no matter what the level of software engineer I am interviewing for. Candidates do not proceed to other stages without first getting past this stage. The level of role will merely determine how much leeway I give for incorrect answers. For example, for a very junior position, what I will look for is not necessarily the right answer, but how the candidate thinks about the solution. At the very least, they should be able to describe to me how their algorithm could solve the problem. In my view, even for such a junior candidate, if somebody has been through university, done a Computer Science degree, and cannot even explain how to reverse a string or does not know what a prime number is, they probably shouldn’t work for me. Likewise, if somebody has been working for 10 years and cannot reverse a string in the language of their choice, they definitely shouldn’t be working for me. Importantly, very importantly, no matter what the level of the candidate is, I ensure that they never guess the solution to my problems and try to bluff their way to an answer, talking about it as if it’s the right answer to impress me. Anybody that has worked for me will know that I hate guessing in software engineering. A candidate who is willing to guess and try to bluff their way through an interview is likely to do the same when they are working on a task for me or someone else. For example, they may, not understanding a problem thoroughly enough and hence guessing, go off and write reams of code that they are equally unsure of. I always tell my staff that if they are unsure of the work they are doing, to stop what they are doing and come and see the team leader or me to discuss; never guess. So, I always jump onto any evidence of guessing during this stage and find out why the candidate is doing it.

One other point worth mentioning about the questioning techniques I describe above is that that are easy to conduct with candidates that are remote, as long as they have a computer and Internet connection. For example, I have interviewed candidates in completely different countries by setting up a shared whiteboard session (many Internet communications tools offer such a facility) or a shared Google Doc and asking them to type the solution to the problem while we talk over the phone. Arguably, given that we are not in the same room they could cheat by looking up solutions on the Internet, but since I do not allow much time for the questions and I am also on the phone at the time, this is unlikely. Furthermore, I take steps to search for any solutions to the problems I ask online and ensure they did not merely type out one of those. That said, even if I am suspicious that they copied a certain solution, it is trivial for me to build upon their solution and ask them to modify it to solve a related problem. Use of this technique has allowed me to screen many remote candidates before inviting them to travel to my place of work for an interview.

To summarise, my advice when interviewing offshore candidates is to get a quick handle on their Logic and Problem Solving ability before deciding whether or not to move on to talk about their experience and the role. Spend up to 30 minutes doing this and give them a fair chance to answer a range of questions, not just a single question. Make sure the questions involve actually writing code, but ensure the questions allow flexibility in the languages used unless the role you are recruiting for is a senior role that uses primarily mandates use of a specific language. By all means ask further Logic and Problem Solving questions in later stages, but the key of this stage is to provide a quick “Go” or “No Go” on a given candidate.

  1. Computing Knowledge

Although I know of a number examples of colleagues that neither studied Computer Science at degree level nor had any knowledge of computers who went on to become exceptional software engineers during their career, when I interview offshore candidates I do look for general Computing Knowledge; so many aspects of the work, at least in my experience, that software engineers do every day depends upon a having a solid foundation in the principles of computing. Perhaps more obviously to me, I believe it to be of great advantage if a candidate has a genuine interest in computers and understands how they are work. More often than not, such candidates will have interacted with computers regularly as they were growing up, perhaps taking them apart, making modifications, playing games, configuring networks and suchlike. I always keep a lookout for these candidates and they certainly exist in offshore locations such as Malaysia.

A simple way to determine how much a candidate knows about computers is ask them to draw a diagram of a computer on a whiteboard, asking them to label the various components of the system. Then ask them to describe the function of these components. It’s a simple question and how well they perform at this question will give me an idea of how much they know about computing. If they do well at the question, perhaps I’ll throw in some more challenging questions about the hardware or maybe we’ll move onto software such as talking about how a compiler works, or perhaps we’ll talk about fundamental algorithms. The level of questions I ask depends on the seniority of the role being applied for, but I nearly always begin with a question about a computer. This exercise, since it is mainly on the whiteboard, also gives me a further opportunity, following the Logic and Problem Solving stage, to assess the candidate’s communication skills.

When I was at Nottingham University in the UK reading for my degree in Computer Science, I was surrounded by people like me, people who loved computers and who “messed around” with them on a regular basis, just for the fun of it. In my view, people like this need to be looked out for, so I nearly always ask offshore candidates why they are pursuing a career in software engineering and try to find out how interested they are in computers.

My advice, therefore, when looking for offshore candidates is to look for those that have a genuine interest in computers, who possess a good understanding of their inner workings and who can answer typical computer science type questions with ease. Try to establish how good they are in this area before you move on to specific skills, as that stage will most likely require significantly more time and involve people other than yourself if you are the hiring manager.

  1. Specific Skills

By this stage, following the previous two stages, which just involved me and the candidate, I will now have a pretty good “gut feel” on the candidate’s suitability for the role. After a little more talk about their experience and profile (including talk about software development processes etc), as well as some more talk from me about the role and company, now is the time to get other people involved and start assessing specific skills. I normally involve at least two of my software engineering subordinates in the skills assessment stage, as well as at least one other people manager. If the candidate will have any dealings with the core team (most likely), I will also include engineers and managers from the core team offices e.g. in the UK or US. All are free to ask any questions they like and their views hold considerable weight in my decision-making process. After all, software development is very much a team sport and it is important to me that my team buys into the idea of a given candidate joining their team; they are the ones that will be working with them day-to-day. I therefore allow to several hours of talks with these various stakeholders, either on the same day or on alternative days if time does not permit. Some of these talks, if with overseas colleagues, take place via telephone, Skype, or suchlike.

I then usually finish off the skills assessment stage by giving them one or more online tests on relevant topics. I use a reputable supplier of such tests. Although these tests do help me form a view of a given candidate’s skills, I normally give them far less weight than the opinions of my subordinates and other colleagues. In most cases, their ability to establish if a candidate can do the job far outweighs the results of these online tests, but it’s all about forming a total picture of a candidate.

To summarise this stage, my advice about specific skills is to get as many technical and managerial people involved in the interview process as you can, including those from core teams if applicable. Meet up /discuss after all interviews are finished and come to a conclusion as a team, each giving a “thumbs up” or “thumbs down”. Also use online testing tools to further assess specific skills, but use their results with caution.

  1. Spoken and Written English Ability

For pretty much any native English-speaking business that is to interact with an offshore software development team that, most likely, speaks English as a second language, proficiency in spoken and written English is paramount. A given offshore software engineer may be a good programmer, but if they cannot communicate with colleagues in the main country where the business operates it will cause a new set of problems focused around communication. I remember back to around 2003 when one of my friends in the UK, who at the time was dealing with a computer equipment supplier in Taiwan, wrote them a technical question about their firmware code. Although I do not remember the precise question he asked, which was in an email, it was very open-ended, something to the effect of “Could you please describe the function of this firmware module in more detail”. The answer he received, much to the amusement of all of the colleagues that were within his proximity at the time, was “Yes.”. In Malaysia, where I currently run my business, English is spoken and written rather well as a second language. However, not all candidates that I have interviewed have had a strong command of the English language, largely down to the area in which they grew up and the schools and colleges that they attended. Conference calls with such candidates, or email exchanges, or document write-ups, would be very difficult indeed. I always, therefore, assess spoken and written English skills during an interview. The spoken part is trivial as the candidate, based on the previous three stages, will have talked to a number of my colleagues in addition to myself, so we can form an opinion on their working knowledge of English. For the written part, I did not used to spend much time investigating this if they spoke English well. However, one of my subordinates at the time once suggested to me that we have candidates write a short document on a non-technical subject that pretty much any candidate would be able to write about. For example, the topic to write about in English could be “Describe the person you most admire in the world and why”. This is the kind of topic anybody should be able to write about, no matter what their career experience and technical background is. Some people may write about a great leader or scientist that they admire. Some may write about one of their parents or relatives. That is the beauty of such an open-ended question. I therefore now include this type of exercise wherever possible when interviewing an offshore candidate to assess their written English skills.

In summary, my advice for this stage is to realise the importance that spoken and written English ability play in offshore development scenarios This may sound obvious but it is something that can be overlooked in all the drama of assessing specific programming skills etc. In particular, written English ability can be easily overlooked if the candidate sounds like they can speak reasonably good English. Ultimately, failing to properly assess the written, as well as spoken,English skills of offshore candidates may place unnecessary burdens on the core team, who will end up losing time and getting frustrated in the process. To assess English skills, first of all ensure that all interviewers involved in the process take note the candidate’s spoken English ability, particularly those conducting in-depth assessments of skills (for example, how well does the candidate articulate about a certain technical topic?). To assess written English skills, one trivial technique is to give the candidates a simple written English exercise that is open-ended and non-technical. Any native English speaker will be able to read their answer and quickly determine how good their written English skills are.

  1. Communication Skills and Personality

In software development, given that it can be thought of in the context of a team sport, communication skills and personality traits naturally come into play. Assessing communication skills and personality traits is not something I leave until the end. In fact, it is something that is done in almost all of the stages prior to this. By this stage, I certainly have a good handle on a candidate’s communication skills; this stage merely completes the process and considers Communication and Personality separately from the other stages. One of the things I like do in this stage, which I feel is quite important, is invite the candidate out to lunch with my team. This provides a relaxed atmosphere in which to talk about both work and non-work related topics, and is an opportunity for the team to further gain confidence in and acceptance of the candidate. It certainly gives a good picture of how a potential candidate will fit into the team. Likewise, it allows the candidate to chat with many members of the team and ask questions about life in the company, the type of work being done, and suchlike, so it is a beneficial process for them too.

On our return to the office after lunch, I have a final session with the candidate to ask them more communication and personality related questions. I am not a fan of psychometric assessments or suchlike, so I keep it verbal and rather informal, but the types of questions I ask are all about ascertaining if the candidate could fit into the offshore team as well as work with the core team. In addition to further discussing the role, I would perhaps ask fairly open questions like “What would you do if somebody modified your code and broke an area of functionality that you had implemented?” Or, “How would you react if the team leader insisted that you used their approach instead of yours?” Or, “What’s your view on coding standards?” The answers to these types of questions can indicate personality traits that may be disruptive in a team environment and may need further investigation before making an offer. In some cases, for more senior positions, I give them a piece of code and ask them to review it, observing how they go about the process and what kind of issues they find. This is not really about the skill in conducting a review (we’ve already assessed skills), but more about how they communicate with me. I also like to ask questions about testing. A good software engineer knows how to test code that they write, and explaining this is an exercise in communication.

One final exercise I give them to demonstrate their communication skills is another whiteboard exercise. For example, I may ask the candidate to map out their career plans onto the whiteboard. This not only allows me to see how driven the candidate is with respect to their own career, but also shows me how good they are at presenting information to an audience. Another similar question I could do on the whiteboard is to ask them to describe a software development process that they claim to know about.

With the notes I make in this stage, together with the notes from all of the stakeholder that interviewed the candidate, I am now able to conclude if the candidate has the necessary Communication Skills and Personality traits that would make them a likely fit for the role they are applying for.

Agile Or Incremental Software Development

Introduction.

First of all, “which is appropriate?” would be a better question. The truth is that each software development method is appropriate in different circumstances. This article discusses my personal experiences with these approaches within Axios, and I welcome any comments or different perspectives. It’s fair to say that we use our own flavours of both of these methodologies so if you’re a purist you might want to look away now.

General considerations.

The first consideration when choosing a project management methodology is to recognize that software development has technical, creative and people management elements to it – each of these must be considered.

Whichever methodology is chosen must facilitate communication. This means recognising that the customer has the clearest vision for their business but will generally lack understanding of what is possible or what each requirement may cost. The software development firm will understand the technologies but need to keep this closely aligned with valuable business outcomes. This balance requires a meeting of the minds and a degree of trust.

Another key consideration to remember is that it is not cost-effective to eliminate all uncertainty and risk.

Instead, we need to plan what can be reasonably planned and have agreed processes for managing any other challenges along the way. A classic example of this is the customer wanting to change scope mid-way through the project. We all know it’s going to happen so it’s important to discuss up-front how this would be handled under each project management methodology. If it’s going to happen a lot, such as when the requirements are not well understood up-front, then this may actually be a primary deciding factor in which project management methodology is appropriate.

Creatively speaking, the more precise requirements are, the closer any developer will be able to reproduce them for a given number of iterations. This can be both a good and a bad thing – if the customer has specific requirements but doesn’t communicate them (or makes assumptions about what the developer understands about their business) then this will likely result in the customer being unhappy with the result because it didn’t accord to what they saw in their minds-eye. At that point remediation work needs to be carried out and there is the potential for a dispute about who pays for that to be done. Conversely, there are instances where getting too bogged down in precise requirements stifles the creativity of the developers or limits the potential for interesting feedback from end-users. Again, this may form an important factor in selecting the project management methodology.

The last major factor comes about through an almost paradoxical customer need for both certainty of cost and development time-frames, and the need to be able to flexibly change requirements on the basis of user feedback. Clearly, these requirements work against each other to a degree and the manner in which scope is controlled and changes are costed is crucial in determining which project management methodology will deliver a satisfactory project outcome. As I discuss in my software asset whitepaper (see link to our other articles below), the key to a successful custom software project is a return on investment. This cannot occur if costs are unbounded.

How we manage projects.

An overview of this approach.

Incremental

  • Work is divided up into milestones (1-4 months of work)
  • Detailed planning, design and risk elimination up-front
  • Project is controlled against the plan, less reliance on ongoing management of opportunities and issues
  • Outcomes are only as good as the detail in the design and the customer’s willingness to accept the developers professional judgement on everything else
  • Possible to achieve these in a fixed cost/time-frame

Agile

  • Work is divided up in to small sprints (2-3 weeks work)
  • Focus is on visual prototyping and collaboration, project is controlled through feedback
  • Keep iterating until desired outcome is achieved
  • Outcomes can be as close to “perfect” as the customer desires if they are willing to keep paying for iterations, risk here is disappearing down an endless trail of redevelopment
  • As number of iterations cannot be known up-front, fixed cost and timeframes are not possible

When does it make sense to use this approach?

Incremental

  • Clear understanding of requirements up-front
  • Customer priorities include fixed cost/timeframe, lower risk, higher quality
  • Works under a diverse range of customer/supplier relationship “modes” (purely transactional or a long-term strategic/partnership style engagement)
  • Examples include developing custom business systems, post-R&D product development

Agile

  • Requirements are vague initially and are expected to evolve throughout the project
  • Customer priorities include the ability to rapidly produce prototypes (for R&D or funding purposes), flexibility and responsiveness to market feedback
  • Only works where the customer and developers dedicate resources, work closely together and do so as equals
  • Examples include initial product R&D and development, highly creative projects or where many ideas must be considered/tried

What are the risks of using this approach?

Incremental

  • Flexibility and responsiveness to changing requirements or ideas can be difficult to accommodate as they require extensive re-planning. It is often preferable to finish a milestone and complete changes afterwards
  • Interpretation of vague requirements or designs can cause some friction if systems for dealing with these potential issues are not agreed upon in advance. It is also advisable for the customer to have a small contingency budget available to polish, refine or re-mediate any small areas of the system that don’t meet their expectations due to vague requirements
  • There is a risk of disengagement between the customer and the developers during project work because less ongoing communications are required after planning. Processes are needed to ensure communication is frequent and not issue focussed

Agile

  • Customers can labour “perfection” too much and end up with too many iterations and not enough functionality for their spend – there is a need for restraint here
  • As every hour is billable and exposed to the customer there is a danger that the customer will resent “paying for bugs”, that is any work touching up something that wasn’t delivered exactly as they imagined it the first time every time. It is necessary to understand that iterations are not bugs but an essential part of this style of development. Even where testing and debugging time is required this is no different to this being costed in to an incremental/quoted project

What is the rough process we follow and how is the customer involved?

Incremental

  • Possible consulting up-front to ascertain business requirements
  • Functional requirements, screen designs and program workflows for a stage of the project are extensively workshopped with the customer, documented, costed and signed off
  • Development begins against the plan, progress/issues/opportunities are communicated with the customer
  • Test builds are published to a server for the customer to look at and all job progress and feedback is coordinated through a customer portal
  • Feature-complete builds are published for user acceptance testing and final changes
  • Final builds are deployed to the customer’s environment and any ancillary support activities such as data migration, training and documentation updates are completed

Agile

  • The customer will come to Axios with high-level requirements and/or mock-ups of the software required
  • Axios may build a rapid-prototype to help everyone get on the same page around visual style, workflows etc – this would be the first sprint
  • Frequent customer meetings to demonstrate progress and gather new ideas
  • Development is always completed against feedback gathered rather than an overarching plan
  • The final build isn’t so much planned as it is simply when the customer has no new changes that warrant paid work to be completed

How are resources allocated? Are there any timing considerations?

Incremental

  • Resources required to complete a project are known up-front which allows them to be booked in and a delivery time-frame accurately planned
  • Where scope changes would require more or less time (or different resources) than originally planned, this can affect resource allocations for other projects and Axios may be reluctant to do this unless it has under-utilised staff at that time

Agile

  • Some customers are happy to lock in a monthly budget of hours in which case resources are assured
  • Customers who are not comfortable locking in a monthly budget (and want to work entirely casually) may find that there are months where resources are not available and project timing is affected
  • In either case, the key to using available resources effectively is good task prioritisation. Use the weekly/fortnightly meetings to ensure that work that has the greatest impact to the business is completed first, this may be work towards large strategic elements of functionality or simply responding to important user feedback or business opportunities

How is project success measured?

Incremental

  • The planned functionality is delivered on time and on budget
  • The functionality delivered meets business objectives
  • The product quality is high
  • Customer satisfaction is high
  • Axios achieves these outcomes at a reasonable profit margin, enjoys the project, receives positive referrals etc

Agile

  • The customer has benefited from the evolutionary approach and ended up with a product that is superior to what they could have based on forward planning alone
  • Costs, timeframes and other commercial imperatives have been managed within acceptable boundaries
  • The end product quality is high
  • Customer satisfaction is high
  • Axios achieves these outcomes at a reasonable profit margin, enjoys the project, receives positive referrals etc

How are these projects billed?

Incremental

  • Up-front requirements and design consulting may be quoted or time and materials
  • The project quoted cost is divided between a commencement payment and monthly progress payments during development and finalisation
  • Variations, if agreed to be completed alongside as opposed to after the milestone, are billed time and materials
  • There may or may not be subsequent milestones that were initially planned or agreed upon along the way that would also be quoted and billed in a similar manner
  • Typically there would be a support and maintenance agreement commencing once the project is completed

Agile

  • Monthly time and materials invoices for all time spent by Axios (note this includes project management, customer communication, testing, debugging etc)

Is the work guaranteed?

Incremental

  • Where milestones are quoted and completed without variation, Axios warrants that it will fix defects without additional cost for 3 months after deployment
  • Warranties do not cover enhancements, i.e. where the implementation of a vague requirement works but does not meet the customer’s expectations
  • Support and maintenance plans can be used to extend these warranties

Agile

  • All work on agile projects is on a “best endeavours” basis, that is we will change or fix anything requested but the time is billable

Who assumes what risks?

Incremental

  • Risk-share model
  • The customer assumes the risk that the specifications and designs agreed upon will meet their end requirements and are detailed enough so that the end product matches their expectations
  • Axios assumes the risk that the implementation of those requirements into a technical solution can be achieved for the price specified – if we run over time delivering against the design we cover these costs

Agile

  • The customer assumes all risks

How are variations managed?

Incremental

  • Ideally variations are not entertained until after the current quoted milestone is completed and has passed user acceptance
  • In urgent circumstances re-planning, design and quoting can be completed however this time is billable on a time and materials basis. Also, given the difficulty in tracing the root cause of bugs back to either being from quoted or variation work, we would typically insist the customer waived their warranty before entertaining this option

Agile

  • Agile projects are ideally suited to dealing with variations as we are effectively working at all times under the customer’s direction and feedback
  • Typically the customer would observe something they wanted changed, either as a result of a new idea, focus group feedback or a clarification of a design element, notify Axios, Axios then mocks up the changes, the customer approves them and they become part of the current or next development sprint

How are vague or unclear requirements managed?

Incremental

  • We work under the assumption that where the customer has very specific requirements they will describe these and ensure they are represented in the design before signoff
  • Where the customer is looking for our professional judgement and experience, the requirements may be less detailed and the customer should accept our implementation of these requirements as fulfilling our obligations under the quote
  • If, during the warranty period, it becomes clear that our implementation of a requirement is inconsistent with the design, we will fix it without additional charge. Where our implementation works and is consistent, but does not accord with the customer’s unstated expectations, we consider this a variation
  • As this is a creative process, and nobody can read minds, this will happen to a small degree in every project. We allow around ~5% of the quoted project budget to deal with very minor remediation work. We encourage customers to also allocate a small contingency budget to complete any additional polishing or refinement after the milestone is completed
  • Remediation budgets can be minimised by making initial planning more detailed. This in itself is an overhead so striking the right balance is essential to avoid a false-economy

Agile

  • Vague requirements are essentially variations in the agile context and are handled the same way

How are project issues worked through?

Incremental

  • The most common issues with incremental projects are variations and how vague requirements are handled, these are described above
  • All other issues are handled by discussing the matter and considering a win-win, or at least a proportionate outcome based on initially stated expectations
  • Issue management is initially handled by the team leader but can be escalated to the production or account manager (depending on who is most suitable to assist) and finally the managing director
  • Failing these approaches (which has never happened to date in Axios’ history) there are contracted mediation and arbitration processes

Agile

  • All issues are handled by discussing the matter and considering a win-win, or at least a proportionate outcome based on initially stated expectations
  • Issue management is initially handled by the team leader but can be escalated to the production or account manager (depending on who is most suitable to assist) and finally the managing director
  • Failing these approaches (which has never happened to date in Axios’ history) there are contracted mediation and arbitration processes

How is collaboration and communication managed?

Incremental

  • Collaboration and communication is intense in the early planning stages of each milestone/build
  • Subsequent communication tends to be status reports, milestone demonstrations and raising any issues
  • There can be an intense burst of Axios/customer contact at the end when the customer is performing user-acceptance
  • Need to make sure the project team communicate successes and not just issues along the way or this can create the wrong customer perception – it is OK to report that there is nothing to report!

Agile

  • Collaboration and communication is constant and typically done in regular demonstration/feedback meetings

Key take-away points.

There are trade-offs in choosing either the agile or incremental project management methodology. It is helpful when a software development company is capable in both, discusses them up-front with customers and works with the customer to select the best approach for their project. Without this discussion up-front it can be difficult to manage expectations and it is unlikely that the project would be seen as successful by all stakeholders.

Custom software, done well.

Looking for an innovative and experienced custom application development firm?

Axios is an Adelaide-based .Net/SQL house with the technical and commercial capabilities to deliver on time and on budget. We understand that custom software is an asset and should improve your bottom line.

We call this bottom line innovation.