For new and aspiring programmers, solving a personal problem accelerates learning. Building software systems is an arduous process and will power alone will let you down. You need a constant stream of motivation and inspiration to keep going, the small wins as you solve a problem you care about sustains your curiosity and inspiration. In this article I define a problem I care about.
I love ToDo apps, so much that I have two of them. I like the convenience they provide and not having to keep notes about tasks I should do. However, I get frustrated with the context switching — leave my editor, open the ToDo app — whenever I need to view or create tasks. This is a major mojo killer. I wonder how I can create and view tasks without leaving my editor.
My text editor has an integrated terminal. So if I can have a CLI program that I can use to manage my tasks that will be a win. I won’t have to leave my editor. One small problem, I also need to access my tasks list from other devices like my phone or another computer.
To be able to access my tasks from my mobile phone I will need a mobile client and a backend to sync the tasks. That’s too much work to just avoid switching contexts and I am lazy. How can I have a CLI app and a mobile client with data synchronization without building the mobile client or backend?
I will need to stand on the shoulder of some giant with an existing ToDo mobile app that has a public api I can use. So that the CLI app will just be a client to the app’s server. As it turns out, Microsoft is that giant. The Microsoft ToDo app has mobile, desktop and web clients and provides an api through Microsoft Graph.
The other good thing is that Microsoft Graph has a number of SDKs in various programming languages, this means we can pick the language with the best CLI tooling and we don’t have to fit squares into circles. Home run!
In conclusion, the problem was managing my tasks and not switching contexts by leaving my editor. With the problem defined, in the next article I break down the user stories. Subscribe to not miss the next article!
From Requirements To Components
For new and aspiring programmers, solving a personal problem accelerates ...