DEV Community ๐Ÿ‘ฉโ€๐Ÿ’ป๐Ÿ‘จโ€๐Ÿ’ป

Cover image for The Completion of 30 Days of Functional Programming
Daniel Lemay
Daniel Lemay

Posted on • Originally published at dslemay.com

The Completion of 30 Days of Functional Programming

This past week I completed my challenge of spending 30 days diving into functional programming. It was a valuable experience filled to the brim with new or fledgling concepts. Apart from my experience with 100 Days of Code, this was one of my first forays into the increasingly popular concept of #LearnInPublic as well. In this post, I break down some of the structures that were beneficial or not to my learning process, as well as a 50,000 foot overview of the concepts learned along the way.

Approach as a medium of learning

The process of committing to spend 30 minutes a day for 30 days on one given topic was a beneficial learning tactic. It provided enough structure to catalyze and focus my learning efforts, without being overly prescriptive. Investigating functional programming had long been an item on the to learn list, but had not yet been prioritized. I definitely will be following this model for other focused learning ventures in the future.

The concept of learning in public was also beneficial to this experiment. Several tweets on the day's progress were short overview posts. However, there were also many tweets covering concepts in greater detail. Reducing a concept down to a tweet or two requires revisiting content and synthesizing lessons learned. This is a valuable part of the learning process. Additionally, I found the process of writing a blog post on roughly the lessons learned in a given week helpful for my understanding. In addition to revisiting concepts, the blog post format allowed integration of multiple concepts to achieve a wider vantage point. Seeing and writing about how it all came together reinforced the importance of earlier concepts.

Learning in Public also enables community collaboration. By completing this exercise in public, multiple people were able to step in and clarify concepts that I had difficulty with, challenge me to break down topics into a tweet, and overall push and support my learning. Overall, I found this part of the process to be highly rewarding.

There were a few things that could have gone better or are good to know for next time. First, there were several break days where I did not complete any meaningful learning time for this goal. This was caused by factors such as family outings, a mini vacation, and some times mental exhaustion. I think that this is normal, expected, and acceptable. The purpose of the experiment was focused mental learning which was achieved. In the future, I am wondering if it may be beneficial to provide built in rest days, or continue with a mindset of grace. The other item of future focus is identifying practical application ahead of time or in the process. While I completed a few code experiments and mini quizzes on what I had learned, there was less writing code than I expected. Maybe this expectation is off base given the time spent, and I expect to spend more time applying these concepts in the future.

Concepts learned

During the past 30 days, I gained a working knowledge of the following concepts and more:

What's next

Now that the 30 day challenge is over, I'm focusing on what's next on the horizon. I plan to review some existing codebases for opportunities to apply functional programming principles. Notably, I have several areas in mind that seem perfect use for currying. I also want to examine which concepts are most transferrable in team environments. In talking with other developers I anticipate concepts such as compose, functors, or monads may be a harder sell or provide less value in those contexts. However, I do want to continue to explore them further in personal projects.

I appreciated the 30 day challenge as a learning medium and anticipate doing something similar on a different topic in the future. Conversations with several developers as a which enhanced my learning experience. I fully support the Learning in Public process. More to come on that in the future.

Top comments (0)

Let's team up together ๐Ÿค

We're Hiring

We're hiring for a Senior Full Stack Engineer to join the DEV team. Want the deets? Head here to learn more about who we're looking for.