I'm currently in a phase in my career where I find myself constantly reading technical documentation. I generally enjoy reading and non-fiction specifically, but I found myself in a place this past Fall where I felt I wasn't absorbing the material I was reading. I was being distracted easily, only being able to focus for a few minutes at a time before jumping to something else. While all modern work requires some amount of context switching, being forced to context switch often leaves me feeling scrambled. As the number of days with lots of context switching stack, my ability to stay focus degrades in an unfortunate positive feedback loop.
In November, a former manager and always mentor of mine, Paul Osman wrote about his experience ramping up on some new technologies as he started a new position at LinkedIn. Paul is a great person with wisdom that always keeps me grounded when I start to feel overwhelmed by the absurdity of software development. Simultaneously, I signed up for the The Growth Equation newsletter despite my usual skepticism around the self-help complex. The authors of The Growth Equation encourage slowing down and paying deeper attention to the world around us as a way to combat feelings of isolation and confusion that can arise from spending too much time online. One particular article about developing a deep reading habit has been impactful on my approach to my time spent reading.
I've already written at length about accepting slowing down in the workplace, especially in a virtual environment, but this current winter has been a good time to return to these thoughts. With Paul's recent experience in mind, I decided to refocus a bit and try to set some smart goals around ramping up with the technology I use and have to teach others about most often. Though I let my experience guide my teaching, it has been helpful to shore up my knowledge around GraphQL and AWS Dynamo specifically by taking Paul's chronological approach. Understanding the history and initial requirements helps drive home the benefits and trade offs of using the technology.
For example, to improve my understanding of federation in GraphQL, I consumed the following media in order:
- Martin Fowler on the Richardson Maturity Model, 2010. Not specific to GraphQL but a necessary primer on API design.
- Lee Byron (Facebook) on GraphQL Core Principles / Exploring GraphQL, conference talk at react-europe 2015. I like watching conference talks at 1.25x or 1.5x speed.
- Apollo GraphQL reaches 1.0 in 2017, AppSync released. Skim 2017 in GraphQL on the Apollo Blog, not a ton of useful info but 2017 was a landmark year for GraphQL adoption
- Apollo introduces Federation, allowing data to be stitched together from subgraphs
- Read about Federation core concepts. This documentation is specific to Apollo but nonetheless speaks to the same core concepts of the federated Global Graph at Guild.
When ramping up on Dynamo, I started with the white paper. There is plenty of praise about this paper online, but as someone with a Master's Degree in CS and a bit more experience reading papers, I found this one quite approachable start-to-finish. It's really enlightening to read why the original contributors chose the architecture they did and how performance in production played the biggest role in choosing trade-offs. I used the Dynamo paper in a serverless book club to illustrate the process of choosing a database based on a problem. From the white paper, reading Alex DeBrie's aptly named textbook The DynamoDB Book has been my next step. DeBrie has also given several talks on Dynamo that I've found very approachable.
Outside of technology, I've been applying deep reading to what is shaping up to be an enjoyable read on early anarchist thinkers. The book Anarchism by George Woodcock conveniently presents the prominant anarchist thinkers chronologically, beginning with William Godwin (father of Mary Shelly, I've been watching Wednesday on Netflix as well) and proceeding through summaries of works of Max Stirner, Proudhon, Bakunin, and Kropotkin. The book's second part segways into documenting anarchist movements by location. My purpose in this effort is to eventually work my way to the works of Murray Bookchin, to achieve a stronger literacy in the beliefs of social ecology. I first encountered social ecology through the wonderful podcast of Srsly Wrong but found myself needing to refresh my memory of key concepts often. Social ecology deserves its own blog post but I highly encourage anyone still reading this to queue it up in your podcast player. I've been reading Woodcock's book with a pen, frequently underlining and marking sentences to summarize what anarchism is (and is not) so I can hold an educated conversation with folks unfamiliar. So far, this habit forming has had its bumps but is going pretty well.
The role of writing
A self-test I've been using for my understanding of the material I've been reading is to take notes. Harkening back to my college days, if I can summarize what I've just read without checking back on the text by writing, I solidify my knowledge even further. I find the tactile experience of writing or typing is helpful. Marking up texts, especially white papers or a book like Woodcock's, helps me revisit and quickly pick out key points. This practice also helps me slow down. If I catch myself on another page and think "what did I just read?" I have not been focused enough. The meditation of reading sometimes lulls me to doze off. If I'm doing intentional deep-reading, I force myself to return and try again. Writing notes or summaries are even slower. The act of writing, with pen, on a physical page is much slower than typing. That slow down is necessary for us to resist the tide of content online and sharpens our ability to focus on the task at hand.
A final tip on improving deep reading habits
A big tip I could give to others feeling inspired to improve their deep reading habits is to use an article saving, offline reader like Instapaper. In a blog post such as this one, there are many links away from the page. Using something like Instapaper has helped me save additional interesting articles without leaving the current article I'm reading. This can reduce a bit of context switching.
Happy reading and writing!