Not a week goes by where a colleague doesn't complain to me about how slow or sluggish some system or piece of software is. More often than not it's the corporate-mandated tools that are being derided for their sub-optimal use of time and resources, but various websites are also starting to get mentioned more often. Sometimes people ask me how they could make these systems faster, whether it's a problem of not enough memory or CPU power, or why managers consistently choose the slowest software while demanding the fastest employees. There's no answer for the last one. The other two, however, share the same response: it depends.
There's no simple solution to improve the performance of software and any attempt to write about possible things to look for and check would be woefully incomplete1. Instead what I tend to do is nod in agreement and ask a couple of probing questions.
What are you trying to do?
This is always the first question, as most of my colleagues are generally trying to accomplish a relatively common task. My employer isn't trying to launch objects into orbit of far-away planets, cure cancer, or model climate change. We're an education company that has for decades subsisted on a combination of Excel sheets and sheer luck2.
How are you trying to solve this problem?
A lot of times when a person has a software problem, it's because they're doing something "the hard way" and can be taught an alternative method of performing the task3. So by better understanding how a person is approaching the problem, the myriad of options that might be available to solve a problem can be whittled down until there are just one or two good options to consider.
Is this a common task?
Common tasks should be programmatically solved. The role of a person is to be the brain and/or heart of an organisation. The role of a computer is to support that person so they can be as awesome as they want to be4.
Have you considered using ________?
This is the question that I generally try to get to if it's possible because I've found that a lot of the more common software tools that people use on a day-to-day basis are big, bloated, and don't always solve the problems a person might have. Some examples of this would be colleagues who have complained about how sluggish Evernote or OneNote has become after their 10,000th note. I can remember two instances where people did not want to use Word anymore because their computers would crash if both Outlook and Word were open at the same time5. Most people have probably had conversations like this at least once in the last year and it's a great opportunity to recommend tools from small and independent software developers who make a living by providing "boutique solutions".
I enjoy recommending tools like Sublime Text, Typora, Coda 2, Sequel Pro, and Mars Edit to people who need to scratch a specific itch6. It's even better when someone tells me they've bought a license for the software, meaning that the small developer -- be they a studio or an independent -- earned a little bit for their efforts. This is how software should be made.
There are a lot of reasons for why software might be written by a large team of people. Yet as the world becomes ever more complex, I find it's the smaller software shops that put out the better tools that can help us navigate this complexity with relative ease. Sublime and Typora have both saved me an incredible amount of time by being able to handle large files, or crazy-long line lengths, or just running with such a tiny memory footprint that the commercial memory hogs that run alongside these tools are not at all impacted. One of the many things that I hope to see in the future is a little bit of a return to software practices of old, where the goals are not just about completing the task at hand, but doing so with the most responsible use of resources possible. Applications that make genuine use of multiple CPU cores, reasonable amounts of memory, and simple UI language will always be in demand. So long as the people who make that software can get paid for doing so, there will always be a healthy number of creative problem solvers.
When it comes to tracking down performance issues, sometimes an entire day (or more) needs to be invested to determine exactly what the problem is and what options exist going forward. A person can't simply blame a single component in the hardware or the software as applications are rarely "simple".
This is a slight exaggeration, of course. There are a number of mission-critical systems that use SQL Server and Oracle databases, and our online infrastructure is staggeringly complex to support online lessons across the globe.
The number of lives I've changed over the years after teaching someone how to use a pivot table or VLOOKUP or just
Din Excel is by no means inconsequential.
Some people don't want to be awesome at their job, and that's fine. There is still no reason for why someone wouldn't want a computer to do a repetitive task on their behalf (so long as it does not put them out of work).
This turned out to be the result of a domain policy change pushed out by the IT department without anyone's knowledge. Yay, IT!
Yes, I understand that most of these are for macOS. I talk to a lot of people who use Macs. I don't know many people personally who live in the Linux world like I do. Mind you, I will suggest switching to Ubuntu from time to time if someone is complaining about Windows or macOS.