Some Thoughts

Is it already the beginning of August? That’s what my calender says, I’m not sure if I can believe it though. The last weeks have been filled with coding, exchanging ideas with my team and organizing our calenders. So far, our blog has not been able to keep up with the flood of knowledge that is accumulating in our heads. It’s time to change that! Here are some thoughts on our current state and my intention for this space.

Writing is fun. But writing is also time consuming. I know it’s a matter of practice, so let’s make it a goal for this week! There are so many ways of filling this blog with life. Personal status updates, code walk-throughs or my latest decision of learning yet another

(nth ["language" "dance style" "instrument" "random skill"] (rand-int 4))

I see writing as my break from coding. The empty page will be there patiently waiting for me to fill it with letters when my brain is unable to understand why my browser console won’t spare me with these beautiful red glowing stacktraces.

I thought a lot about what a good outcome of this project would look like for me. After gathering all of the thoughts that have been running through my mind, I found my personal goals for this summer:

Goal of Improving my programming skills

(->> (repeat "coding! ") (take (rand-int 10000)) (reduce str) str/trim)

Big Picture. I realized that I often fall into the trap of focusing too strongly on the code details. I easily understand what’s happening inside of a function, but seeing the bigger picture takes more time. I want to bring more awareness to zooming out every once in a while to understand which part of the system is being affected by what I’m working on. This also helps to realize early on if something is worth following through. Keep in mind to avoid bikeshedding and identify challenges and blockers early on!

Sense for Taste. A conversation with one of our coaches highlighted the importance of reflecting on one’s own practices and figuring out how things are done ideally. Look at how other people approach problems and identify which patterns they use. Try out different solutions and write down what worked well and what didn’t. Make reading code a habit, there are so many amazing publicly available projects out there!

Simplicity. Learn how to find simple solutions. Be aware when writing entangled code that is difficult to grasp for others and yourself and start to refactor. Identify the next step and reflect on its importance. Thinking of simplicity in the Clojure world is inevitably linked to Rich Hickey’s talk Simple Made Easy).

Experience. Writing code can be the most fun and also the most painful part of being a programmer. I love the feeling of getting in the flow and every time I get to write code on a regular basis, I’m able to see my progress within short periods of time. It’s thrilling to see new ways of thinking developing that gradually help me to improve my code quality. On top of that, understanding how and why the tooling works the way it does is of tremendous value. Nobody likes to be blocked by things that are related with tooling.

Goal of Creating a Knowledge Base

For me, there’s something exciting about organizing knowledge. I literally safe everything of importance that I hear or read about. Which usually leads to a bunch of markdown files full of good stuff sitting on my hard drive. Not having to remember all the little details has helped me in many situations, especially in my work life. I want to work on the presentation and access of this knowledge so it can be of use not only for myself, but also for others. Looking at this project, I have two different ideas in mind:

Guides. Writing guides containing a comprehensive summary of information needed in order to understand a certain technology or pattern.

Resources. There is so much good learning material out there, which makes it challenging to get an overview. Especially for beginners, it often is not evident where to start and how to set priorities. I like the idea of creating overviews. A great example is the collection of Clojure resources that has been quite useful for me in the past. At the moment, we get to learn about so many things on a daily basis, which gives me the opportunity to create my own overview of gathered resources and personal reflections. At some point, I intend to make a post about all the resources we used during the project pointing people to the ones that might be most useful for them based on their level of experience.

Goal of Making Writing a Habit

I will use this opportunity to learn how to break things down and continually write a bit every day. Instead of gathering tons of information over weeks, it’s better to get my thoughts out on more specific chunks and in real time. One of my intentions is to learn how to collect the most basic information needed in order to understand how to do something. For example: What are the most important things I need to know so that I can build my own application with reagent? Remember: more writing, less perfectionism.

Goal of Good Communication

Communication has such a big influence on my productivity and mood. I’m becoming more and more aware of my use of language and seeing its impact . It actually started with the Clojure community in Berlin. After attending ClojureBridge, I was bursting with energy and motivation. I wanted to understand what made this workshop experience so special for me and realized next to many other things like being welcoming, dedicated and supportive, it was the positive language of the ClojureBridge organizers and coaches that left me with a feeling of excitement.