This is a story about one of my programming students, TM, and how I ended up teaching her about feelings (while programming) this week.
TM is currently working on a app that retrieves data from an API and then creates various plots and charts from that data to display to the user. This is a her first independent project for her 'portfolio', where she isn't following along a tutorial or a course. She is working with climate data. This is something she cares about and wants to see exist (I gathered).
I have been guiding her with the high level approach to building. Break things down. Get one piece working at a time, isolate the things. For example, get the charts displayed with hardcoded data first (without worrying about the API). Fetch data from the API, using Postman to parse the JSON response and pluck out the fields you want and log them to the console (don't worry about plotting that data). Last time we met, we ended with getting the above two things working. This week she seemed sort of down/discouraged.
She tried to integrate the two pieces and display the API data on the chart and now 'nothing is working'. She mentioned a couple times that 'it used to work and now it's not working' and that fact seemed to be the cause of her feeling down.
So we debugged together and a little while later got 'it' working again. Got the chart to display with REAL data from the API. I noticed a huge smile on her face after she refreshed the page. A feeling of relief, happiness, satisfaction?
(Which is surprising as she rarely if ever smiles. She is serious/intense. She shows up, follows through, works diligently. She doesn't give up easily. She takes it seriously (at first I thought she was unfriendly as she doesn't ever smile or engage in any pleasantries. She gets right down to questions within 30 seconds of getting on the call. It's still a bit strange, but I now know she is just focused.))
So after giving her my run down of debugging tips, I also added in a lesson on feelings.
When programming you will experience a roller coaster of feelings and thoughts and emotions. You will feel good if you get something tricky working in less time than expected. You will feel irritated if a library you're relying on in introduces breaking changes that blocks you.
And you will feel discouraged if something you got working stops working. And as an aside, I told TM that when you integrate pieces together issues are to be expected.
I saw this railsconf talk from justin searls few years ago and it's about programming feelings (among other things). The idea of paying attention to the 'meta' parts while programming (no not metaprogramming) – your actions, thoughts, and feelings – has stuck with me.
That's why really introspective developers, they might look like they are talking at the whiteboard all day...but they can really have a multiplicative impact on each other as they grow...If we, as an industry, normalize the concept of metacognition and self improvement so we can explain how to program, this whole place might start making a lot more sense.
[Describe my other bad idea for 'dev feelings' app. Almost forgot about this one.]