As an independent engineer, I know that a big amount of my time is used in communication with my customers. But we developers, really love to spend our time working on new features. So it's a good thing to try to optimise the amount of time we spend in communicating, so we keep more time to do the stuff that we enjoy more 😎...
One of the key is to build trust with customers, and it's almost impossible to build this trust without a good Continuous Integration system. What I enjoy telling to my customers is that there will always be bugs and problems, but a good engineer will not only efficiently fix the problem but will also take care it won't happen again.
The other part is to have good monitoring tools to be proactive when some issues happen. There is nothing worst than to be contacted by your customers telling you that the site or some page has crashed.
Some common issues when developing web apps are : the site being unreachable, some pages taking too much time to load, an exception raised on production on some page or even the whole site.
To deal with those issues, I enjoy using Sentry.io, to help me deal with exceptions on production, both backend side and frontend side.
I sometimes use bigger tools like New Relic to monitor performance issues.
An interesting feature is to plug the reports of those tools into the communication channel that I use with my customers. For example, I use a Slack plugin to plug both my CI system and exception monitoring system to a Slack channel.
What other tools do you personally like to use to monitor your apps and exceptions? Share them in the comments 👌🏼.
All developers I think have already faced the terrible "It does not work!" bug report 🤣. What does it mean? Is the page blank, is there an error message, is there nothing happening?
To avoid all those useless back and forth in communication, it's always a good idea to set with the customer the good rules of reporting issues from the start.
I also like to emphasise with him the fact that in order to resolve a bug or issue, the developer likely needs to first reproduce it. So any kind of information leading us to reproduce the bug more quickly is likely to save time and money.
Depending on the project, one of the trick that I've already used is to encourage the customer to reproduce the problem while recording his screen with a small screen-recording software.
This way the customer does not have to share a lot more information.
Sometimes the issue is only triggering with a certain set of production data. I usually have tasks to capture, download and restore the production data on my local environment. But this kind of procedure is not possible on all projects, it may also pose a problem with data security and data privacy if the production data contains users personal information. There's not really a solution working for all possible cases.
How many times have you heard your customers ask you to make small texts or labels changes in your application? Making small text changes takes time and it is time lost for the developer who is not working on a real feature.
There are a lot of ways to allow non-developers people to make modifications of the text displayed in an application. Depending on the language or framework used, it’s also possible to use some Content Management System, localisation library or software, translation keys, etc.
But those ways are sometimes complex and take time (and money) to setup and maintain.
To handle this, I created a very minimalist Web interface. It allows non-developers to perform searches in a Git repository, changes in multiple files and creates Pull Requests. This way developers can review and merge the changes without being disturbed!
This project's code-name is QuickFastChange (QFC) and it's currently free to use 🔥.
Give it a try... and share with me in the comments the other productivity tricks you use with your customers to save time and money.