Yesterday, Sarat and I were doing some pair programming on our new but shockingly large 37" LCD TV that's on the wall in our fancy meeting space in the lab.
Pair programming is fun and you learn a hell of a lot! If you want to know more about why this is the case, I suggest you read this great article by Obie Fernandez.
We were ironing out some bugs for the fixx 1.7 release, and I had a filter set-up to give me all the issues that had to be resolved for that particular release. As a result I was jumping back and forth from the filtered list of issues, to the full view of the issue we were currently working on.
It was in this process that Sarat made, what seemed to be an odd observation at the time; that I was doing things wrong. I couldn't understand how, as fixx is made to be simple. I went back to the Dashboard and proceeded to click on my "fixx 1.7" filter to go back to the list of issues we were working on.
Sarat then noted "You do realise you could have got back to that list by pressing the Issues tab, rather than navigating back to the Dashboard and invoking your filter...right?".
Obviously I was not aware of this, and feverishly tried it out to find out he was right. Of course he's right; he wrote it!
fixx remembers your last used filter no matter where you go in fixx, and when you return back to the Issues tab presents the list of issues from the last filter. Even if you apply a temporary filter without saving it, the results of that filter are remembered in your session, and can be viewed once again when you return to the Issues tab.
It's evident that I was in need of this piece of functionality, as issue tracking should not by obtrusive by any means, and it turned out to be there all along but I just wasn't aware of it being the new guy in the lab HQ. You can tell that a lot of thought gone into the design and functionality in fixx, and the more I think about it, the more it makes complete sense. As a result this is one gem I want to share.
You're either going to read this and think, how on earth did he not know that, or you're going to go away and try it out for yourself and increase your productivity. Either way I'm happier that I am now aware of this, and hope that it manages to have an impact on the way a few of you use fixx.
A recent conversation on a local community forum about a software vendor who required the filling in of a 2 page form just to get in touch raised my irk and reminded me of key marketing errors that ISVs seem to make. I wanted to share these in the hope that budding entrepreneurs avoid these mistakes that can be very frustrating for customers.
Not publishing your contact details
Yes, you can have a Contact form that tries to collect structured data to allow you to respond to queries but not publishing your e-mail, telephone number, or address is a big no when it comes to selling products online.
Other than building trust in the customer that you are not a doubt-able business, it encourages customers to start a dialogue in a manner that they choose and at a time they choose.
Requiring sign-up to download your free/trial product.
To be clear, there are niche sectors and products where it might well be required to capture a lot of customer information before you let them download a product (no examples I am afraid).
However, for most software products and especially in crowded marketplaces, it just doesn't make sense to force customers to go through a lengthy sign-up process and gather their auto-biography to let them download the product.
If the trial does not convince the customer to purchase a product, then I doubt any direct marketing gimmicks will.
Having a blog / news section that doesn't say much.
A blog is a powerful marketing tool, but I see this so often that I had to mention it. They usually fall into 1 of 2 categories,
Press Releases These blogs and news sections are nothing but press releases with a fancy picture added to make it look more personal. They usually talk about how awesome the company is, or how a new client has decided to choose their awesomeness, or how they are doing awesome things.
Don't get me wrong. There is nothing wrong with keeping readers up-to-date with your successes and promoting the good work you are doing. The problem is people will get frustrated with all the self promotion if you have nothing useful to say eventually.
Journal I know of a few companies (whose names I shall not mention), who excruciatingly detail every mundane activity from buying new desks to an employee being off sick. How is this useful to a customer, fan, or prospective employee? All it tells them is that you are dull and have nothing useful to say.
Having a blog but not allowing comments
Note that I am not saying that you should not moderate comments (we moderate all our comments). Moderation is fine as long as you allow some form of feedback and a way for people to engage with you and react to your blog post. Rejecting criticism and allowing only nice comments might sound prudent but people are bound to take their criticism elsewhere, where you have no control over the medium.
Lack of spam prevention on the blog
As a professional company, it reflects very badly if you do not moderate your blog or have spam prevention tools on it. This is a no-brainer given most popular blogging platforms allow this or it is fairly easy to implement in a custom blogging solution.
Our solution to this problem is to moderate all comments, whether it be for spam or inappropriate content. Even regular comments are not approved until someone manually approves it. This means that the quality of the comments and dialogue is fairly good.
Competitive comparisons
The biggest purchasing activity that a customer performs is to compare competing products to help make a decision on which one to purchase. It just seems obvious then that it is a great idea to include a matrix comparing your competitors to your product.
The practical flaw with comparisons is that they are never objective (unless they are on Wikipedia). Do you know anyone that actively lists factual weaknesses against their competitors? Most people I have spoken to say they immediately dismiss comparisons with competing products as they never trust them.
Your effort is better spent in highlighting the benefits of your product and why a customer should consider purchasing your product on it's own merits.
Putting valuable content in inaccessible documents
Lots of companies have excellent case studies and valuable marketing material but in a moment of uninspired genius, they decide to make them available in either PDF format, or worse, as Microsoft Word or Powerpoint files.
There is nothing wrong with a well-designed concise PDF that people can take away to read in their own time. We use them ourselves. The problem is that most of these PDFs were made for print (large sizes and unnecessary graphics) and just dumped in a download-able folder making it tedious for the customer to get information.
We at hedgehog lab love testing, infact our flagship bug tracking product, is geared toward tracking those bugs and delivering better software.
Well now there is an awesome test management suite on the block called testuff, which executes manual software tests and reports the flaws found in these tests. To boot testuff can output these results directly into fixx and other bug trackers!
From their site,
Testuff is an on-demand service for managing and executing manual software tests and for reporting defects. It is a test management suite that includes management for various test stuff: cases, runs, defects and more.
What's unique about testuff is the ability to attach video footage of each test and attach it to bug reports in order to quickly replicate and highlight the problem within your software to developers. Isn't that cool!
Yay! It's finally here. I am excited to report that we have just released fixx 1.6, which has some exciting features that you have been requesting.
The highlights of this release are,
The REST API is finally here. It is limited but a great start. You can access the documentation for the API by upgrading to 1.6 and going to /api.jsp in your fixx installation. If you would like to see specific functionality in the API please request it.
So you are a small company or ISV that develops software products. Your company is doing great and sales are increasing but you find that you are spending more and more time doing support and dealing with irate customers. You are developer(s) at heart and find it frustrating to deal with customer service and support. After all, why should you? It is not your core competency. You feel you should focus on what you are best at, coding.
In a moment of genius, it strikes you that if you can outsource accounting/book-keeping and your legal issues, why not outsource your sales and support to a company that specialises in sales & marketing. This would free up all your time to work on some beautiful code. Tip : Do not do it!
Outsourcing your sales and support is one of the worst ideas you can conceive of. Forget about cost-cutting, efficiency and all the apparent benefits you can see. Just don't do it!
Customer service is a competitive advantage
Whether you are a small business or large, customer service is one of your biggest competitive advantages. All the bells and whistles, features and innovation in your product combined are still worth less than delivering exceptional customer service.
Very few companies can get away with poor service and a great product (I would love to hear if you know any). On the other hand, a lot of companies do great with exceptional customer service and mundane products. Zappos sells shoes. But try convincing their customers they are the average shoestore and they will probably disagree.
Customer service is marketing
This is not rocket science. Great customer service generates word of mouth and creates fans. This directly leads to increased sales and recognition. Do you spend lots on PR and advertising? Try cutting that spend and investing in great customer service.
Customer service is employee retention
Great customer service is not just about selling and marketing. It also generates motivation in your team, helps your employees spread the word about how good you are and creates an environment where everybody wants to work.
Customer service is about knowledge
At hedgehog lab, we encourage and sometimes require that our developers deal with support and sales queries. This is because no amount of documentation/manuals/training can give anyone else the deep knowledge of a product that you as the developer have. Someone who is not involved with the company on an intrinsic and daily basis will just not have the knowledge and answers required, resulting in canned responses and delayed support.
Customer service is not rocket science
Despite customer service being a great skill to have, it is not a complicated science and comes naturally to most people. It is about being polite, responsive, giving the right answers, and being emphatic in dealing with problems. Yes, you might need some experience to become good, but there is absolutely no obstacle (other than attitude) to prevent delivering great support.
All of these principles apply whether you are a small or large company. Whether you have specialised support staff or do support yourself depends on your size and business, but for God's sake, do not outsource customer service and support.
I recently got asked by a customer about whether we eat our own dog food in using fixx (which we do) and the conversation veered towards what I think are bug tracking best practices.
A lot of the so-called best practice is just common sense (as it always is) but it is surprising how little they are used. Therefore, I thought I would share what we feel are bug tracking best practices from the view-point of 3 different roles.
For end users
When you report a software bug, it is imperative that you detail how the bug was caused in the first place. This will help the developers in finding the root cause and fixing it.
Never provide a solution unless you are a developer in-charge of the functionality. Leave it to the developer to implement the best solution.
For Developers
Be patient! We all know how frustrating bug reports can be. Try to re-assign the issue back to the reporter and ask for clarification rather than dismissing it.
Don't be defensive. I have certainly been guilty of this. No developer likes being told their code is buggy, but try to verify whether something is a bug or not before you dismiss it.
Try to use filtering, reporting and organisation features in the bug tracker to keep your focus on a specific set of issues.
Do not close issues unless you raised them. The only person who should close an issue is the person who raised the issue and can verify if it is resolved or not.
Try to provide estimates that accurately reflect the effort required for a task.
Added by David in comments - If you are working on an open source project, try to provide a suggested solution (in the form of source code patches) along with the bug report.
For Project Managers
Resist the temptation to keep adding new "fields" and meta data. Remember that the focus of the bug tracking system is not to store boat loads of information but to enable you to get things done and fix issues.
Try to keep the workflow simple. The key is to get an issue from open to closed in the fastest time possible. Complex workflows only serve bureaucracy and encourage procrastination in the process.
Trust your developers and testers to make the right decisions. Do not enforce too much control with complicated permissions and umpteen approval/review processes to get a bug resolved.
Try to keep tasks or issues that are small and achievable. "Develop a visitor management system" is not a feature/task, it is a project (as ludicrous as it may seem, this is a real world example).
Don't go overboard with reports. Project Managers love nothing more than constantly generating reports that all say the same thing with a different presentation.
I would love to hear if any of you have any other tips or best practices that you use in your organisation.