Trial and Error

I’m currently working on an app to help my dad manage customer details and payments for his Window Cleaning business. My dad has managed his admin on paper for the last 20 years, and he has a process that works well for him. So whilst I’ve chosen to develop this app, I certainly don’t expect him to use it, because although I personally think it’ll be easier, when I eventually hand it over he might have a different view. My dad will be handling the day-to-day operations after all.

Nevertheless, I thought it’d be an interesting project to work on, partly because I’ve been looking for an avenue into C#/.Net development for some time now, and whilst I could have started as soon as the idea came to mind, I’ve found that I can’t maintain focus on something unless I have a clear objective and purpose in mind. Before now, learning a new programming language has merely been an interesting skill, to me at least. Imagine the ability to have an idea, and build it in almost the exact way you want. It’s the skill a building architect has in drawing and geometry; what a surgeon has in their vast understanding of the human anatomy to perform complex operations; and it’s what an app developer can do when they understand programming languages.

So, I have my clear objective, developing a free and easy-to-use app for my dad’s business, and the hope is that this goal in addition to the ability to build something new and useful, is exactly the motivation I need to learn the concepts. I’m currently relying on this idea of setting the destination before I’ve learned how to walk, as it’s something that’s worked for me in the past. My current work requires that I administer the configuration of a few thousand devices, such as Desktop Computers, Laptops and Mobile Phones. It’s not complex by any means, but learning how to automate many of these tasks has made the job far less tedious than it otherwise might be. I think it’s the act of repeating a menial task tens, if not hundreds of times that in part, gave me the motivation to try something better.

Going back to one of my first jobs, I supported the use of IT equipment for staff and students at a local College. On one particular occasion I was asked by a colleague to help update some software in an office block. This office was a dreary place. I respect the idea that not everything in life is centered around being fun, and at times to achieve something useful, it can often involve tasks/work that are by their nature, dull. But why is it that office spaces so often seem to suck the soul out of anything that makes life worth living? There were around 30 machines that we’d need to work through. Each one would take around 10 minutes to complete. What made matters worse is that we couldn’t do more than one at a time. It was a busy office, so each machine we worked on required that we ask the user to take a break for a few minutes. I remember sitting at one particular desk littered with paperwork. I started the software update process and waited for the progress bar to reach completion. There was a persistent background hum that I can only presume to come from the heating/ventilation system, and whilst the office had relatively warm florescent lighting, I looked outside to a very grey, wet and dark winters afternoon. Then I remembered I’d need to carry out this task atleast 15 more times before the end of the day. I felt something close to an existential crisis in that moment…

It would be disingenuous for me to say it was this very moment that kicked in the drive to work in a better way, but I do think this experience along with many others did prompt that desire many of us have to do something purposeful and to make better use of our time.

Purposeful being the key word here, because whilst I do believe my task in updating that software was useful (albeit in a very small way), if it’s possible to accomplish the same task, to the same quality, at a fraction of the time and with far less long-term effort, then why wouldn’t we if we have the ability? So, by the time I left that role, I can’t say I often needed to do tangible work for any more than 2 hours per day. It’s not to say I learned any particularly impressive skills that allowed me to do this, most people might have done the same thing if they were in my position. To offer another example, I have a good friend who works in finance. Part of that job involves calculating company expenditures. He could use a calculator to add together the costs for each item, but instead, he uses a template with formulas in Excel to remove much of the leg work of what otherwise would be a very tedious task.

One of the ways I did this in my position was by getting to grips with the concept of PowerShell – a scripting language. I won’t go into detail, but I think the lockdown period during the Covid-19 outbreak helped with this in a big way. That period of time belongs in the past, but spending much of it working from home meant I had a lot of time to focus, and just like the work I’m doing now to develop an app for my dad’s business, I needed a problem to solve if I were to learn PowerShell to any meaningful degree. This came in the form of various projects at work, and the results are most notably found from the “PowerShell Solutions” page on this blog.

I didn’t buy a “dummies guide”, or start from the basics and work my way upwards like a well-disciplined learner might do. Instead, I went into the process almost as if I already knew what I was doing. Setting myself a goal, and working towards it without understand the concept of what I was doing. This inevitably led to many errors and frustrations. Building scripts that I thought might do what they need to do based mostly on the work published by others from internet forums and blog posts. I’d grab a snippet of code and simply see what happens. 99 times out of 100, the result wasn’t what I had in mind. However, I observed a slightly different outcome each time, and in my persistence to complete the task, I learned something. By the time I reached the “100th” attempt which proved a success, I could look back at the other 99 and have a relative understanding of why those snippets didn’t work.

Perhaps this “Trial and Error” approach isn’t for everyone. Some days almost led to ripping my hair out. But an alternative methodical approach hasn’t worked for me. I can’t maintain motivation to learn something when it doesn’t have a clear and useful purpose. I’d imagine many of us might feel the same way. It’s often said that a learning technique that works for one person, doesn’t work for another. I also think much of this goes back to the idea that’s it’s important to understand your own mind. We receive advice and guidance from all sorts of people, and from all angles. Much of it can be useful to take on board, but “when it comes to the crunch” perhaps it’s useful to be realistic in how we can carry out something to completion ourselves.