This work week has been entirely focussed on supporting the digital services delivery for the organisation's annual event. As part of the digital experience, we have subcontracted out the work to the Hubilo platform who have provided us with a Mobile App for testing our organisation's online event. It was in my opinion, a clean and well laid out app which didn't take long to work out where most of the features are. There were some discrepancies I noticed and this is likely local to my smartphone as the desktop version and other colleagues' phones could not replicate the bugs. Our main issue is ensuring that the user with a particular role has access to the permissions granted to them and not access to anything else. I helped to prepare a short presentation on the user journey and we will be delivering it to the wider organisation next week.
Aside from the app, we are also cross-referencing with the desktop version and backend familiarisation with the event platform. Again, the problems we are seeing is that a limited user appears to have permissions to carry out tasks that they shouldn't have or access to private content that they shouldn't have access to. We hope to iron out these problems before the app goes live.
On the training and apprenticeship side of things, I've been following up on some of the actions that came out of the review meeting and prepared some examples in the documentation portfolio that showcases examples of myself exercising effective technical support to other developers and non-technical staff. I provided some small case studies where I problem solved on an issue by researching and trial and error method, to come to a reasonable solution for a visual defect on a webpage.
Today, I had an apprenticeship session on data structures and algorithms. I haven't touched on this concept at all since starting my career so it was great to learn something new and the introduction was at the right pace and complexity so it didn't feel overwhelming.
As I understand it, an algorithm is a finite, clear set of instructions for carrying out a process repeatedly, to solve a problem. We exercise the concept of algorithms in our daily lives sub-consciously and base the decisions or steps/ instructions on common-sense. Algorithms in computer science follow a similar logic: think about what the user or client is trying to achieve and provide the set of instructions for just that. In essence, use the simplest approach to achieve the job and don't overcomplicate things ('KISS' principle). Understanding the problem and making connections with your experience is the hard part, this will help to determine what data structures are best suited for helping you solve the problem. Some data structures lend themselves well to manipulation with specific algorithms than others, but no one data structure trumps all so weigh up the pros and cons. Depending on the complexity of the problem, we may have to think outside the box and consider extra steps through the algorithm such as data type checks before processing the data type; regex checks, mathematical operations to be performed.
Algorithms and data structures are important for a developer to at least have a basic understanding because if we are aware of how we write our code with respect to the time and memory burden especially with scale, we begin to appreciate the need to refactor or rethink our code to improve the app performance. We need to be conscious that the steps in our algorithm could cause the process to slow down unnecessarily. I'm thinking nested loops, exceptionally long list of items in an array for linear searching, perhaps could be rewritten to avoid executing these time-costly processes.
I've only scratched the surface for the topic but it's definitely an interesting one. I hope it will give me some fresh ideas on how to improve the efficiency of the code that I write.