The theme of last issue's editorial “Reigniting Creativity Daily” was originally going to be titled: “Keeping the Creative Fires Lit,” but like most of my creative endeavors, the theme changed as I wrote. Last issue's editorial was more or less about awakening the creator that lives within us all. For this issue, I'll return to the original idea and talk about how creative endeavors are like creating and managing campfires.
Many of my editorials are inspired by real-life events. Be it work or home life, these editorials spring forth from my reality. The event that inspired this theme was the discovery of GraphQL and how it could really help with one of my new entrepreneurial endeavors. For the astute reader, you'll realize that there have been several GraphQL articles in CODE Magazine's pages, so the discovery wasn't all that new. This time was different. I had an application for this technology and was yearning to learn more about it. It's this yearning that provided the seed for this editorial.
When I started to learn about GraphQL I realized that I had a method to my learning process. This method isn't a formal process, but rather an intuitive process built over many years of exploring technology. As I delved deeper and deeper into this technology, I felt my excitement grow: A creative fire had been lit. This is where my silly but, in my opinion, poignant theme comes from. Learning new technology is akin to building a campfire. So let's explore the steps and how they applied to my learning of GraphQL.
The Need for a Fire
Before you work on building a fire, you need to determine whether you need it. In this case, the need came from the fact that this new application would be a mobile application. I didn't like the idea of constructing a complex REST API. There had to be a better way. This better way was GraphQL.
Gathering Material
In order to build a fire, you need fuel. For this project, the material we gathered was basic research. We consulted the GraphQL spec online, we Googled, we looked for sample code and papers, we looked for tools to help us learn. This phase is sometimes known as the “ideating” phase for those playing buzzword bingo at home.
Adding Kindling
After gathering material, we started constructing our fire pit by adding kindling. A better explanation of this part is the concept of MVP: Minimal Viable Project. Put another way, do the simplest thing that could work. Our kindling would be an ASP/MVC application built with .NET Core 5.0 and using the HotChocolate (GraphQL tools) NuGet packages.
After building a project, we built out our first query service that would return a simple set of objects fabricated in memory. We then used the tools built into HotChocolate to test the API. Once we had our proof of concept built, we pushed it to a private GitHub repo and set off on the next step in building our fire.
Adding Wood
Once the fire has been lit, you can start adding wood to that fire so that it has something solid to burn. We added wood of various varieties including more data entities (types), more queries, more relations, and a pseudo data persistence layer. We focused on the query aspect of the project at first, as this seemed to be the most common use case.
Stoking the Fire
It's not enough to just get the fire burning. You need to keep the fire going. This is where the excitement keeps propelling you to continue. To stoke the fire, we added new features that an API needs. We started adding simple Mutations. Mutations are the data update portions of GraphQL. Like in the original example, we started simply. We also continued gathering more material - doing more research. Our goal was to not let the fire go out.
S'mores Time
After working on the API for a bit, I soon learned that my senior developer had taken it upon himself to start building an MVP version of the mobile application. When we saw that mobile application talking to the API, it was time to have some S'mores.
You need to take time to celebrate your wins. Take a pause to reflect where you are. After a quick celebration, it was back to work.
Maintaining the Fire
Keeping the fire going can be the challenging part. Learning new technology is not without its pitfalls. You might get stuck, you might get frustrated, you might be flummoxed, or you might just need a break. You need to keep that fire going by any means necessary. What I find is that when the fire seems to be waning, I return to the Gathering Material phase. Sometimes I need to step away, take a pause, and gather my thoughts to explore the new ideas that I wasn't ready for when I started the original fire.
If you've made it this far, I thank you. I know the example felt a bit marshmallowy (insert eyeroll here LOL). I know you, as a reader, probably rolled your eyes once or twice when reading it. Heck I rolled my eyes a few times while writing it. In any case, there's a process for learning and this process is yet another reason why what we do is so fun. Now, go build your own fire!