It is me again Yusof, take a read how the last week of design went.
Time Constraints
This was the last week of designing and I felt the pressure of time. Within this week I had to figure out each feature and how each one will be designed and implemented, additionally I had to estimate how long each task would take. Unlike the previous weeks, this week felt like I was constantly behind, I predicted that working out the features would take two days, instead it took 2 and a half this, was a recurring theme for the design and implementation process. It wasn’t easy to deal with a large amount of work in a short amount of time, I had to be persistent splitting each phase into smaller tasks. Once a phase was complete I could move on to the next at the end of the week all phases were complete.
Similar to last week this week relied heavily on my technical knowledge. Before even starting this week, I needed to know about AngularJS and Angular Materials, as well as Implicit Grants and the Swagger Editor. It was only when I fully understood all these technologies I could document how each feature could be implemented and how long it would take to do so.
Features Design and Implementation
Since I have been working on the whole system for over 2 weeks I thought working out each feature would be relatively simple, I was horribly wrong. Figuring out each feature didn’t just rely on my understanding of the system but also my knowledge of AngularJS. AngularJS is a front-end web application framework used to build Single Page Web Applications(SPA), without any understanding of Angular I wouldn’t be able to differentiate features. Luckily I have used Angular and Ionic on previous projects, using Trello I documented each feature describing their behaviour, parameters, and styling, whilst communicating this with the client. As mentioned earlier this process took longer than expected, reflecting back, a sizeable amount of time was spent detailing each feature, next time I would spend less time on the microscopic level of detail.
Alike the features, both the design and implementation required an understanding of Angular in addition to authentication and Swagger. For every feature described I had to illustrate how each one will be implemented using code examples, it was only then I could appreciate how long each feature would take to program. Because I had a high-quality understanding of the technologies the system uses, I quickly provided code examples and explained the implementation process for each feature, gaining back some of the time lost. Finally, I could document exactly how long each task would take, summing the times gave me an understanding of how long the whole system would take to implement.
Reflection
Reflecting back on my first 3 weeks I realized how quickly I had to learn to work with clients for the first time to whole new technologies, specifically Authentication and Swagger. Authentication is one of the pillars of the system it was imperative that I grasp the concept fully. To understand authentication, I first learned about implicit grant by reading various articles. Implicit grant works by requesting a JSON Web Token (JWT), once received the JWT can be sent within the authorization header, where it can be checked and validated. Once the implicit grant was understood I good easily implement authentication using Auth0.
Swagger is an ecosystem that aids the development of an API, quickly you can build and test a REST API. To understand Swagger I took a different approach, instead, I dived straight into the code. Using a combination of the debugger and my understanding of Node, I slowly built an understanding how Swagger works, from authenticating to responding with specific error messages. When learning about Swagger I gained an understanding of YAML, YAML is a human-friendly data serialisation standard. I used YAML to write the specification for each API.
Learning complex technologies in a relatively short time was hard but fun. The knowledge I gained working on previous projects that required me to use Node and Javascript, underpinned everything I have done throughout the 3 weeks, without it, things could have taken a lot longer.
Conclusion
Overall the first 3 weeks at DigitalLabs has been hard but still rewarding. I continue to learn about new technologies and how small startup work, additionally, I’m still learning things about myself.
Finally having the design of the whole system fully documented is immensely fulfilling. Furthermore, both my Node and Javascript skills have improved I have grasped the ideas of authentication and deciphered how to build a REST API in swagger. The design phase is over now, the next 6 weeks will focus on the development of each individual feature.