Hi, It’s me again Yusof, I have completed the second week of my internship at DigitalLabs, take a read below about how my week went.
I found this week a lot more challenging than last week. The first week focused on design and system flow, even though I wasn’t used to designing, it was relatively easy to learn and pick up. Furthermore, last week relied heavily on the client, it was an extremely iterative constantly tweaking the design. It’s interesting in software development how each week changes drastically, it keeps me excited for each day.
Week 2 consisted of investigating the core features especially the way authentication will work. I learned how to pick apart the designs from last week and figure the most likely points of failure. It was hard to adjust this quickly but taught me a lot. Working at DigitalLabs I learned about being agile trying to be efficient and thorough, by next week I need to propose how exactly the system will work. Additionally, I learned to expect the unexpected, parts of the system I thought I fully understood and would be easy to implement turned out to be the hardest, OneDrive authentication is one example.
Authentication
The goal for this week was to fully understand how authentication will work and how to implement it. The system relies on two authentication flow, the first logging into our system and the second logging into OneDrive. The second system was the first unexpected problem to show, initially I expected to only have one flow, logging into our system and OneDrive authentication to be handled by our server. When investigating how OneDrive authentication works I discovered OneDrive’s authentication needs a user to login into their system, it cannot be done by the server.
Discovering this problem changed how the whole system would work thus I went back to whiteboarding. On the whiteboard I described how each authentication flow would work step by step, it was only then I could see how each one would interact with each other. It was greatly satisfying whiteboarding again, I took the techniques I learned from last week and used to solve the issues I was facing this week, it definitely gave me a sense of progression. Discovering the problem was only half the work, now I had to implement both.
Implementation
Implementing our authentication was relatively easy, for now, the user can click a login button who is prompted to enter login details, once the user was logged in we could use an authentication token to authenticate user requests to our server. On the other hand, the OneDrive implementation did not go as smoothly. Instead of trying to implement OneDrive authentication myself I used a Javascript library, (take a look) I implemented the library and it worked perfectly. It felt great getting both authentications flows working 100% until I realized that the library I used needed tweaking. To fix the library problem, I had to dig through the lines of code debugging so I could pinpoint the problem and fix accordingly. Even though this wasn’t easy it was enjoyable, being faced with a problem and figuring out a solution.
Similar to last week this was my first time doing any kind of authentication for a system. Previous projects either did not rely on authentication or I would use systems such as Firebase to handle it for me. This week I learned a lot about the technicalities of authentication, how each method works and the pros and cos, for future projects I can now easily implement authentication. Due to this week being more technical it was a lot tougher, I relied more on my work colleagues to help me solve some of the issues I was facing.
Usually, I don’t like to ask for help, normally I would try to solve the problem by my self but I was important I didn’t do this week. As I mentioned last week I don’t have a huge amount of time, trying to solve all my problems this week would have taken too much time. It was important once I realized that I was having issues solving a problem I would ask for help, this not only solved the problem quickly but informed the team about my progress.
Conclusion
Overall this week was an increased challenge, working with new software and paradigms but no less enjoyable. I gained an understanding of how easy implementing systems can fail and the importance of investigating, additionally, I improved how I communicate complex problems to other work colleagues. The reminder of “6 weeks” continued through the week encouraging me to be flexible when an implementation isn’t working, being in a constant agile state. The hardest part of the system, authentication, is complete I can now start to focus on the other features of the system.