A blog for musings about what good code looks like and the lives of the people who produce it.
Sunday, 23 July 2017
The Forgotten Features
Those of us that work in the technology industry can very easily demonstrate the traits of magpies, becoming distracted by the new and shiny, always wanting to break new ground and be first.
Sometimes this can be at the expense of taking care of what may appear to be the mundane but what it is actually the life blood that is paying the bills.
This is not an argument against innovation, it is instead an acknowledgement that the right to embark on such escapades must be earned by making your core offering bullet proof.
To forget about these features will taint any advances you may make in other areas with the anger and frustration of your users.
Performance
Users are generally very impatient people, the move towards a more mobile world has only increased this tendency.
While it may seem obvious that your site or app should be performant, our excitement at the unveiling of our latest and greatest sometimes blinds us to the fact that the users patience is unaffected by this anticipation.
Set minimum requirements around the performance of certain key aspects of your system, this should especially concentrate on aspects affecting access, the time taken to login or the time taken to checkout.
Also don't become to complacent when your code runs like a rocket during development when it only has to service you as a single user, a lack of performance at scale is unfortunately all to common.
Available at Scale
Even the coolest of new features carries very little impact when users can't access it.
Scale is a consequence of success, to not have an effective strategy for scaleability is to have no plan on how to deal with success.
Scale also costs, even in a cloud computing world throwing more tin at the problem will become very expensive very quickly.
We have never had so many tools for dealing with scale, creating an elastic infrastructure to have multiple nines of up time is within everyones reach. Being down should be considered a sin with the penance being disgruntled users who may never come back into the fold.
Pay attention to errors and understand the workload your system is under by unwavering analysis of how and when your users are most active.
Deployability
If you question your users on what features they would like to see its unlikely any of them would mention deployability.
They may not know it but they want this.
If software isn't easily deployable then it is slow and ineffective at delivering value, no user benefits from code being in source control, effective continuous integration is the mechanism for implementing continuous delivery of value.
This leads to continuous bug fixes, continuous security patches and new features being available the instant they are ready.
Being continuous isn't about cadence no matter how regularly you deploy, its about there being no barriers to deployment and having the ability to deploy whenever you want to.
Even though they may not have asked for it your users will thank you for it.
If you ask users if they would like to see this or that feature they will invariably say yes, don't take this to mean that they want your system to resemble a Swiss army knife.
If you ask them what is bugging them about using your site or app, some may mention a potential new feature but most will talk about problems that can be linked back to performance, scaleability or availability.
Put simply, users aren't asking for the world they just want things to work. Satisfy this ambition by concentrating on what your core offering to them is and make your system the most effective delivery mechanism for that offering the world has ever seen.
Once your able to make this claim the time for innovation will come but never at the expense of any of these to often forgotten features.
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment