The True Cost of Bugs

software bugs

I’ve always known that there is a general rule that the sooner you find bugs the cheaper they are to expose and fix, with the converse being naturally true. But I had not really experienced it first-hand until now.

The experience has left me with some interesting “what-if” scenarios bouncing around my mind and none of them seem good when thought about as an avoided future possibility. So often we hear the dreaded turn of phrase “we are where we are”, so to be on the other side of that is a very nice feeling. A feeling which I will strive to replicate, which of course has led me to sharing this experience with you, the reader.

A quick search will quickly show a plethora of people showing graphics with exponential costs of finding bugs early compared to late so the following graphic will probably not be a surprise; costofbugs

So why do we allow ourselves to develop without any formal design or requirements? Why do we let ourselves release code into any environment without automated tests? Why do we allow ourselves to release code out of QA without confidence?

When you say those questions out loud it seems ridiculous to blame it on time (which is often the case), especially with the graph directly above it. You can quite clearly see that spending the time upfront will save you time later down the line even if you have to incur a smaller upfront cost. The problem here is that the time saved upfront is often forgotten about.

This is my call to every developer to at the very least highlight the cost next time the suggestion is made to shorten or circumvent one stage. This is also my call to every developer to make automated testing part of the development process and not some add-in extra that you do “if there is time”.

 Matt Bird, Developer

How to Use Your Restaurant Data to Engage Customers

Analysing what is going on in your restaurant is the first step to truly engaging your customers. You’re likely to already collect a wealth of data about your transactions, staff and customers. Collating this data is important but unless you utilise it, this can be a little fruitless. A good EPOS system will collect data automatically and store it safely in the cloud so it’s there to review when you need it. Good Business Intelligence systems can then take this data and transform it into something you can act upon.

However, it can be difficult to know where to start. Here’s some ideas on how you can utilise data in order to engage with customers on a much deeper level:

Listen to your customers’ voice

The first step in pleasing your customers is to listen to what they really want. Online reviews are becoming ever more important and can provide valuable insights as to where you could improve. More often than not however, customers tend to write reviews when they’ve had a negative experience than when they repeatedly get good customer service and the products they want. While valuable and useful, these don’t help you determine what you’re already getting right.

Sales data can indicate exactly which products sell most, what times of day, week or year they’re most popular, and what combinations of products are preferred. This means you can alter your menu to reflect your customers’ desires. Customers are unlikely to tell you directly that they’ll generally purchase a drink with a main meal for example. Your data does tell you this information, allowing you to create certain deals or options that the customer will engage with. Seeing trends in product sales ensures that your restaurant always offers the customer something they really desire, increasing the likelihood of repeat custom.

Spot emerging trends

While you’re constantly looking at your successful products to ensure your menu is desirable, it’s also good to see the journey of your products or ones that may be gaining or losing popularity. This is most prevalent in seasonal products. A good example includes the Pumpkin Spice Latte from Starbucks. Presumably it sold well in its first year, demand was high and many customers now wait in anticipation of its return to the menu each autumn.

If Starbucks were to have this item on their menu all year round, it may appear to look like an average selling item as its sales are likely to drop in the summer. Keeping it as a seasonal item builds the buzz around it and makes customers excited for its return. If you’re able to spot similar emerging trends, you can jump on them early on to maximise sales opportunities and excite customers with something they really enjoy. Restaurant trends come and go so it’s good to be able to review what works, what doesn’t and what you can implement for the future. This means your restaurant will never be behind the curve and will keep you in line with your competitors.

Personalise the dining experience

With the use of apps, memberships and loyalty schemes on the rise, you are now receiving more information about your customers than ever before. As you make the effort to collect all of this information, it makes sense to be able to do something with it.

Embracing technology within your restaurant through things such as digital signage or interactive menus and ordering systems means you can make the dining experience much more personal to the customer. If you don’t wish to directly implement technology on the tables, letting them order through an app to which they have an account means you can offer them tailored promotions and show what items they order most and may like to order again (i.e. “Want to order the same as last time?”).

Some restaurants are even going as far as to have live social media walls so that customers can take pictures, tweet or share their food across social media and it can appear immediately on the wall in the restaurant. Incorporating this with gamification and competitions (such as whomever gets the most ‘likes’ gets their meal for free) is a sure way to help your restaurant further its reach online, establish a recognised brand name and see what items are trending.

Engaging your customers can be a difficult process so deploying as much help as you can get from your data is a good idea. Big Data isn’t there just to be digitally shelved and never utilised. Analysing and creating actions from data is the next step to increasing customer engagement on a deeper level, sometimes without them even having to step foot in one of your restaurants.

If you would like to know more about how data analysis can help you make reactive decisions about your business, contact PXtech on or 01332 921 300.

Engagement Hype

Is it feasible to expect every single worker to be engaged?

It feels likes employee engagement is the new buzz in hospitality, with promises of increased productivity and profitability being thrown about.

What I can’t decide is, could there be a big underlying problem with the whole engagement hype? Does it create unrealistic expectations for employees? Does it set unachievable goals for companies?


When I got my first job at 16 working for a well-known fast food brand, I’m not sure I was engaged.  In fact I didn’t want a job. It was my dad that had frog marched me down there saying “you’re old enough to work now, it’s an important life lesson to learn how to support yourself.” Thanks Dad :).  During my time there I worked loads of overtime not because I couldn’t get enough of work but because I loved having loads of money, more than my pocket money, to spend on all the things I wanted…and there was a lot I wanted! Clothes, shoes, video games, going out on the razzle!

Did I care about the company goals? Did I care if we took more money than the other shop down the road? No I don’t think I did.  I did care that customers left happy, enjoyed their meal and would go out of my way to help if something had gone wrong.  Does that mean I was engaged and was that a result of something my manager did to make me feel this way? I don’t know.

In contrast, I feel completely engaged in my current role. I understand the impact I have and I know my opinion is respected, even if it’s not right.  I feel valued, in control of my own destiny, being supported without it being overbearing.  Here we are all about engagement. We want all our employees to have a voice, to be able to challenge and push us forward with innovative thinking.  We use a number of engagement tools like Hipchat, Mailchimp and Sharepoint.  It feels great, I get up in the morning and I’m thinking right what’s my plan for today – I feel driven and ready to succeed.

Now when I think back to my first job, I question what would have motivated me in the same way I am now back then.  Would it have been the same that engages me now? Is it the technology that helps engage me? I didn’t go skipping to work back then. I do feel I worked to my best ability but I certainly didn’t feel like I feel now.

Questions I want to understand are;  does every job/role have the potential to offer a meaningful, exciting, and self-actualising experience?  Does a job need to engage you to ensure you are at your most productive at all times? Can technology play a part in employee engagement? Let me know what you think!

 Kerry Townsend, Director of Hospitality Business

Why You Should Invest in Your Volunteers

We can be guilty of assuming that volunteers don’t want all the responsibilities that come with looking after a retail store. Many charities are hesitant to offload tasks seen as boring or complicated onto their volunteers in fear of scaring them away. However, not giving volunteers any responsibilities can deter them too.

When surveyed, only 31% of people said that their charity makes them feel valued. There are seven in ten people who do not feel like their importance is recognised by the organisation to which they choose to donate their time. When we talk so frequently about how volunteers are fundamental to a functioning charity shop, it is surprising to hear that they feel so disconnected.

When speaking with volunteers, we found that their most common needs are to feel valued, trusted and listened to. Ensuring your volunteers know they are highly important and are contributing to the wider mission of your organisation is key to recruiting and retaining the volunteers you need for success.

Enhanced communication with your volunteers can help boost motivation. Telling them they are important, what their hard work goes on to achieve, and how they impact the end mission is a positive way to reinforce hard work. In order to make them feel listened to, there must be a two-way line of open communication. Volunteers offer a wealth of experience and knowledge and can deliver an abundance of good ideas to help increase funds, improve the charity and better the organisation as a whole.

There needs to be this communication for them to feel trusted too. To further develop trust, it’s a good idea to offer them the more difficult or important tasks. It’s easy to assume that they don’t want the responsibility or are not up to the job but by not asking them if so, you are making them feel like they’re not trusted enough to fully contribute to the cause.

While being listened to and trusted will contribute to making them feel valued, there are also other things you can do for your volunteers. Demonstrating that you are ready to invest in volunteers where you cannot offer wages can be an excellent motivator. Sending them on training courses means they have the chance to develop their own personal skills while also making them better at the job they do in-store.

In our blog post on the importance of collaboration, we outline many ways you can raise extra funds to pay for something like this. Partnering with businesses who will pay for training bursaries in return for a short ad in a monthly newsletter or a feature on your website is a fantastic way of sourcing funds. Alternatively, join hands with another charity and improve volunteering skills across the sector while sharing the costs!

Giving volunteers different skills than they already have is a great motivator for many and investing in them is a sure way to make them feel worthwhile. Young people just beginning their careers will likely want extra experience to boost their CV, while older people or those trying to get back into the working world will also be looking to learn something new.

Knowing you’re taking the time to invest in them and develop their skills beyond the charity will boost motivation and will allow volunteers to invest back into your organisation. Interacting and engaging with volunteers is a two-way street, so treating them as valued members of your team will result in reciprocal respect and hard work. Investing in your volunteers will allow them to invest in you and create a more skilled, friendlier and more profitable retail store.

A GitFlow Model Without Dev Branch


Our team has decided to break away from the norm of having a Dev branch in our GitFlow branching model. Why you may ask. Well we found that the Dev branch just didn’t quite work for the way the team worked.

A branching model without Dev allows the team two vital things; we won’t be releasing features that we don’t want or aren’t ready, and as a team we understand what a release will contain, what features will be going out together. Consider the fact that in a branching model with a Dev branch, all development work is carried out on Dev or rather feature branches from Dev and merged back in. When these features are ready for release you can create a release branch from Dev with them and then start the process of releasing to production.

However with a team like ours that is much more release focused, we need to know that no features have made it into the Dev branch that we don’t wish to release and the team will have the knowledge to know what features will be going out in which release. Working with release branches and cutting out Dev working as some kind of middle ground means that our team can branch from either the last release or master, and merge in when required.

Removing the Dev branch has led to simplicity from a developer point of view, a developer will know their source of truth much better. A developer knows that in order to develop for the next feature all they need to do is branch from the latest release branch or the master branch. Whereas before the Dev branch can be quite far ahead, and it wouldn’t be a good idea to branch from there if the release needs to go out sooner than the features in Dev. And as mentioned before, developers have much more clear knowledge of what is going out with what, since nothing can be accidently brought in from Dev and future development.

Of course this model works for our team because of the way our team works, this isn’t a model that will be preferable all of the time. If we were to get to the position of releasing features when they are complete and have a continuous deployment process in place, suddenly there becomes a purpose for having a Dev branch and it would be desirable to have one.

Here’s an example of how we used GitFlow for our branching model before removing the Dev branch.


An example of how our branching model works without a Dev branch.



3 Ways Technology Can Optimise Labour Costs

Calculation Costs

With mobile ordering and apps such as Deliveroo, JustEat etc. restaurants are no longer only having to deal with the customers that wish to dine in the restaurant. Predicting how many members of staff you need on a given night can be impossible and staff scheduling can become a challenge. With labour costs being one of your largest expenses, it’s crucial that you stay on top of what you’re spending on employee wages. Successful restaurants are likely to have a good back-office system to help them analyse labour costs in order to ensure they are fully optimising their workforce.

Here’s three ways you can use technology to reduce and maximise on labour costs.

Verify attendance and punctuality

It’s not unheard of for employees to get their friends to clock in for them when they’re running a little late or are unable to make a shift. Before the emergence of Business Intelligence, business owners had to manually add up employee timecards meaning discrepancies often went unnoticed. Having a digital system in place, CCTV drilldown and automatic alerts when something unusual is happening will allow you to be more vigilant, saving on fraudulent or unnecessary labour costs.

Utilise predictive scheduling

A good Business Intelligence system can analyse previous sales data and tell you what your busiest and most profitable times are. It can also show which nights with which teams are most productive. This means you can plan future staff scheduling to ensure you always have the best team working at the best time. Having staff work within a team on a night that will increase their productivity means you can optimise labour costs by ensuring you get the most out of your employees on a given night. It will also mean that you are never under or overstaffed, providing your customers with the best and smoothest dining experience possible. 

Prevent unnecessary overtime

You can’t possibly keep an eye on all your restaurants and all your staff at any one time. Having real-time data available 24/7 allows you to keep track of unexpected busy periods or periods that may require employees to work over their scheduled hours.  If necessary, your Business Intelligence system can be programmed to send you an alert whenever a member of staff hasn’t signed out on time, leaving you to check why and be on top of what is happening in your restaurant. Preventing any unnecessary over-scheduled work will help keep your labour costs to a minimum.

Staff scheduling can be one of the hardest tasks you face as a restaurant owner. Luckily, there are now systems and technologies that can help. Making sure you are optimising labour costs will surely create a smoother working environment, better customer service and higher profits as a result.

To learn more about how technology can help minimise your labour costs, contact us on or 01332 921 300.

Joining a new team – Where to start?

It is always difficult when you start working with a new team; you come from somewhere where you know everyone, what they do, the products, customers and processes and have to learn all about the new team, products, processes, customers, suppliers and resist the initial temptation to try and change things. I joined the team here at PXtech as the QA and Release manager, a new role for the company, and I’ve spent a few months on a journey of discovery consisting of lots of questions, usually repeated, as my head tries to fill with all of this new information.

Joining the team at PXtech was like a breath of fresh air to me; the team is successful, dynamic and has a desire to improve. My previous experience working in large corporations felt like wading uphill through treacle in comparison when you wanted to do anything which could not be isolated to your own direct team, but it did help me understand how to sell and achieve improvement.

Everyone can improve and even when I have spent many years working with a team I’ve always found that I’ve had to resist trying too much at once. Sometimes trying to introduce change in a well-established team can be hard because it’s scary moving away from what is known and what has always worked (well or not so well) in the past. In these situations I have found that it is always best to get sponsorship for the change at a senior / influential level. The book “Our Iceberg is Melting” by John Kotter which was recommended to me by a previous manager is very insightful and I recommend it as a good read for anyone struggling to implement any kind of change. This is why we started with a vision for quality.

We’ve now created our vision; we’ve obtained approval and we’re going to start breaking it down into small manageable tasks. We will trial each small improvement and evaluate its effectiveness. For the improvements which turn out well, we will then aim to embed them into normal daily process. We have also started promoting the vision throughout the company to ensure that team members beyond the QA and development team are engaged.



  • Pro-actively seek feedback from our Customers, Partners, Users and each other to drive continuous improvement
  • Collaborative business wide approach that fosters an environment within the workplace that encourages quality
  • Building on customer understanding to create high quality products and solutions


  • Customer at the heart of our business. We get it right first time
  • Expand on our teams skills to ensure the best possible delivery
  • Discover issues sooner in the quality lifecycle to reduce the cost of delivery


  • Clear measures of progress to easily identify our successes and failures
  • Delivery of our Products and Solutions on budget and on time
  • Ensure best practice is used for release, environment and test data management

Steve Playford
QA and Release Manager

5 Ways Charities Can Work Together

Many businesses have already adopted collaboration as a way of working, teaming up with other organisations to innovate and optimise one another’s skills. More often than not however, we are encouraged to be continually working against our competitors in order to get ahead. When it comes to charities, the competitive field is different and amazing things can happen if you work together. Why not team up with your neighbouring charities and reap the benefits, boosting your cause and others in the process?

Here are some ways you can collaborate with other charities to get better results: 

1.     Share a van for home collections

Home collections encourage people to give more because it is easy and convenient for them and allows you to take larger items such as furniture. It is also much easier for donors to sign up for Gift Aid as you already have their address. Home collections are wholly worthwhile but can be a little pricey to carry out. The cost of running a large van and all the collateral expenses can build up, as well as the need for one or two volunteers to collect the goods.

Sharing a van with a neighbouring charity means that costs can be halved and labour shared so you can do more home collections and collect more donations for both causes. Access to a van also allows you to offer home clearance, a service some charities have already found to be very lucrative. 

2.    Host events together for greater impact

Holding local events such as fun runs, coffee mornings and other fundraisers are proven ways to increase donations and bring the community together. Combining budgets, volunteers and contacts is likely to increase reach to the community and allow for a bigger and better event. Raising more donations and sharing them is still likely to get more funds for your cause than going at it alone. Putting on more impressive fundraisers together also puts you in good stead for future events. 

3.    Share an investment on products or services

Perhaps not directly related to raising funds and donations, sharing investments on certain services or products can be a fantastic way to cut costs. The most obvious example is paying for a day’s training for volunteers – if the training cost is the same whether you send 10 or 30 people along to the course, why not share the cost and all get the benefits?

Many products, ranging from consumables like receipt rolls to advanced technology solutions such as Gift Aid software or EPOS systems, are cheaper when purchased in quantity. Teaming up with other charities for a joint procurement exercise means you can achieve all the benefits at a reduced cost. 

4.   Define who specialises in which goods

Many charities look to increase donations and income by having shops which focus on specific goods. On a competitive high street, having two shops nearby that also sell books, DVDs or games is likely to mean fewer donations for all. Taking a collaborative approach – you have all the books, we’ll take the clothing – means that you’re reducing competition, increasing the chances for your volunteers to specialise and helping produce better results for everyone. 

5.    Share volunteers

Gaining and retaining volunteers is one of the largest concerns within the charity retail sector. Getting the right numbers of volunteers, with the right mix of skills and available at the right times, is a challenge for almost every charity organisation we speak with. Teaming up with other charity shops in the area to share volunteers could mean that busy periods for each shop are covered and your volunteers have a more flexible working environment. Although controversial, it could help to begin to solve the difficult problem of not having enough volunteers on specific days while also encouraging volunteers to help lots of different charities. This could work particularly well for smaller charities, who could ‘borrow’ volunteers from more well known names.

Charity shops have an edge that most high street retailers can’t match – it’s not a zero sum game. Increasing your income doesn’t have to be at the expense of your fellow charities. Collaboration is fast becoming the new way to work– and no wonder. Working with other local charities can bring many benefits to your organisation; you can be happy in the knowledge that this is good for everyone and you’ve helped another cause alongside your own.

Indexes and Partitioning

Who is this article for?

This article is designed for people that are already familiar with SQL Server partitioning that want a deeper understanding of how indexing in partitioned tables works.

There are a lot of good articles regarding partitioning, how to create partition schemes and functions. One of my favourites is Brent Ozar that gives an easy introduction and contains links to more deep down resources.


Indexes in partitioned tables can be divided into two subgroups:

  • Aligned
  • Unaligned

An aligned index, it’s an index that uses the same partition scheme and column as its table. SQL Server will align indexes for you unless you specify something different, like another partition scheme or filegroup.

The reasoning behind this feature, it’s that in general it’s better to have all the indexes aligned to be able to benefit from partition switching. A good starting point is as always msdn.

Let’s jump into code

First of all, let’s create a simple partitioned table in the heap with some records.



       ID INT IDENTITY(1,1),
       PartitionKey INT NOT NULL
)ON PS_T1(PartitionKey)

INSERT INTO T1(PartitionKey) VALUES (0),(4),(5),(7),(8),(11),(12),(13)

Now, let’s see where our data is to start with.

EXEC dbo.SeePartitions 'T1'


No surprises here, we are in the heap using the Partition Scheme. Now that we know where we are let’s play with some clustered indexes. Let’s start by something simple, a clustered non unique index on the partitioned column.

   ON T1 (PartitionKey)

EXEC dbo.SeePartitions 'T1'


If we take a look to the index, no surprises either, it’s aligned using the Partition Scheme.

EXEC dbo.SeeIndex 'T1_clustered'






Let’s drop the previous index and check the results.

DROP INDEX T1_clustered ON T1

EXEC dbo.SeePartitions 'T1'



So we are back on the heap.

   ON T1 (ID)

EXEC dbo.SeePartitions 'T1'

EXEC dbo.SeeIndex 'T1_clustered'


What has happened there? Why does my index have two columns when I specified only one? If you take a closer look to the statement, we are creating the index on column “ID” not on the “PartitionKey”, that is not the column our table is partitioned on. As mentioned before, SQL Server will try to keep our indexes aligned unless we are very explicit about it and we tell it not to. Microsoft documentation states:

“When partitioning a nonunique clustered index, and the partitioning column is not explicitly specified in the clustering key, SQL Server adds the partitioning column by default to the list of clustered index keys.”

Now, if you look at that index in SSMS you will see that that column is not in the General tab, but it is specified in the Storage tab.


If you click “Script”, you will see what SQL Server has done behind the scenes.

CREATE CLUSTERED INDEX [T1_clustered] ON [dbo].[T1]
       [ID] ASC
) ON [PS_T1]([PartitionKey])

Ok, let’s drop the previous index and create a new one.

DROP INDEX T1_clustered ON T1

   ON T1 (ID)


We get a really good error, it means that the “PartitionKey” needs to be explicitly in the index because our index is unique. Ok, so let’s add it.

   ON T1 (ID, PartitionKey)

EXEC dbo.SeePartitions 'T1'

EXEC dbo.SeeIndex 'T1_clustered'


The above behaviour is the same for nonclustered indexes so, what if I do know what I’m doing and I really don’t want to have my indexes aligned. In that case you need to be explicit about the filegroup you want the index to live in.

   ON T1 (ID)



SQL server tries really hard to keep your indexes aligned for a very good reason, unaligned indexes will have a very painful consequence: switching partitions won’t be possible.

There are very few scenarios where performance can be improved by having unaligned indexes, like calculating a MAX without filtering by the partition key, a really good article can be found here, but rarely the benefits outweighs the cost.

Is technology the key for engaging Generation Z?

By 2020, it is thought that 70% of the world will be using smartphones and 90% of the globe will be covered by mobile broadband networks.

Technology is no longer ‘nice to have’ but is an essential tool for reaching business goals. While this isn’t news to any hospitality organisation owner, a dangerous situation they may find themselves in is thinking that ‘adequate’ technology will suffice.

A lot of hospitality organisations are susceptible to the risk of settling for sufficient restaurant technology. While rational – updating software and hardware nationwide can be a frightening thought – stagnant tech could be the cause for the lack of engagement with your staff and your customers.

The hospitality industry is fickle; customers change their minds and the staff turnover is high. An organisation within the sector has to be at the top of its game when innovating how to utilise its tech to its full advantage in a bid keep employees and customers loyal to their brand. Lagging behind on the technological spectrum not only creates a less engaging environment for your customers to dine but also a less convenient one. Not to mention obsolete tech will cause problems for your employees and potentially create a much more difficult and hostile working environment.

With Millennials and Gen Zers being the future of your business custom and workforce, it’s important to ensure that their need for tech is satisfied. Born into a world of digital, visual and interactivity, their use of technology in everyday practices is innate. They don’t just desire digital ways of working and living; they expect it. For a restaurant to continue to grow with its employees and customers, and to have a future in the 21st century and beyond, it must constantly be implementing new technological practices into the everyday.

This can be difficult if you don’t regularly update your software and hardware or even if you’re not mindful of the risks of outdated technology. This isn’t to say that you should introduce robotic waiters just yet but you should be applying innovative ways of working into the monotony of your prosaic tasks.

Processes like staff scheduling, menu or price changes and stock management can all be administered much easier if your data is hosted in a centralised database and directly linked to a good EPOS system and other Business Intelligence solutions.

Not only will a congruent log of data make life easier for your board of leaders, your management and your floor workers but will give valuable insights into your customers as well. Knowledge really is power – having clear visibility of your organisation, staff productivity and consumer buying habits will allow you the capability of being able to see what areas of your business affect one another and how you can make changes in order to improve said areas.

Implementing digital process behind the scenes, making life easier and more engaging for your employees, means you’ll be prepared to introduce cutting edge technology front-of-house too. You’ll always be ready for the next tech trends and you’ll know what your customers want and expect so that you can always provide them with a fulfilling dining experience.

Engagement is a hot topic in the hospitality industry and a subjective one at that. No doubt it has its rewards but knowing where to start can be difficult. A good place would be to make sure employees are engaged first which in turn will generate positive and meaningful encounters with customers. There are many proven ways to engage staff including practices such as gamification, which can be easily managed through your EPOS to encourage friendly competition and increase productivity. Other examples include employee apps (hosted on a device they pick up every hour of the day) which allows them to select availability, swap shifts with colleagues and view task lists, making their working life as easy and convenient as possible.

Engaged and content employees leads to better customer experiences in-store, increased productivity and increased profitability. People learn better when they’re comfortable with the delivery environment so speaking their language and using technology as a tool to engage will likely see better results.

If you would like to more about how technology can encourage engagement within the hospitality industry, you can contact PXtech on 01332 921 300 or