I've written a tangent to the topic of flow before, but this week's excercise in DYL focuses on analyzing a flow experience and trying to recall and describe what that was like:
First, just to list different flow experiences that I can recall:
- First two assignments in CS106L as a freshman in spring quarter.
- Completing CS42 assignments (particularly Piazza + Yelp)
- Several interview experiences this year - one in particular featuring implementing a trie structure to build a Lexicon.
- Improvising on several occasions to a beat/chord pattern
- Emailing? in a way has sort of a flow component to me when different parts of my life and different circumstances force me to come up with varying answers with a diverse range of tones, complexity, and care.
- Summer hackathon experience with fellow interns creating this project
For the purposes of this exercise I'm going to choose the last experience because of its depth and more variant storyline.
Coming into this internal hackathon, I had some experience with prior hackathons but this was honestly my first real experience where I had enough background in the language + skillset to contribute in a substantial way to the project. Two particular characteristics of the experience presented itself as challenges to overcome during the experience:
1. The open-endedness nature in deciding what to build.
2. The unique combination of technical and non-technical demands that I had not taken on before as a developer or in a team setting.
In response to these challenges, I believe that my skills were in direct proportion as I learned to adapt myself to the occasion. There were enough interesting technical challenges throughout the project that kept the project interesting - building modules for searching and matching different objects, and the use of unknown APIs made for a lot of learning and design opportunities. Tasking out and responding dynamically to the team demands also helped me grow in my more non-technical skills to improve effective communication and efficient tasking of new items.
I remember being particularly in the zone implementing some of the APIs we used to grab pictures off of the web to supplement existing photos in our database. Learning collaboratively with my teammates allowed me to absorb a wealth of information about web applications in general and helped sharpen my attitude towards learning the relevant things necessary for building a product.
Project pivots were also a crucial part of the experience as we had come into the project with an idea of what we wanted to build but not come to a consensus on what features to extend and how exactly to design the application. I would say that a lot of early discussion and care into the design of the application pre-empted a lot of potential complexities later by streamlining the process and making sure the team was in alignment towards a common vision and goal.