K. Sabbak

Code Princess

The Five Stages of Grief as Applied to Learning

January 23, 2018

If you’re anything like me, and I know I am (who did I steal that from? It’s awful), change is hard. There are probably studies done that make a case for why this is, but regardless of the why, change is just really hard.

For me, learning design principles in writing code is basically on par with changing how I believe the world works. It’s hard and uncomfortable and this is how it goes:

  1. Denial. “There’s no way this is better” I mumble as I read something. Sandi Metz can’t be right this time. She’s finally wrong about something. It just doesn’t make any sense to do it that way, how does that help anything? It may be theoretically nice, but it’s practically impossible and there’s no way it will work in actual real world applications. If this principle were so good, why am I not already using it?
  2. Anger. Why did it take me so long to even learn about this? I can’t believe someone would want me to change my PERFECTLY WORKING CODE (that yeah, okay is a little ugly) to use this nonsense academic impractical idea. Do I even have time to refactor? No!
  3. Bargaining. Okay, maybe I’ll try it in this one new spot just to prove the idea wrong. Once I’ve done it, I’ll know how to do it if someone demands it or if I can find some REALLY good justification for it, but really this is just to try it out and not at all because there’s any practical use that I can see.
  4. Depression. Oh no. This does work better. Of course Sandi Metz was right. She’s always right. I’ll never be that good. I’ll never be any good at all. I’m just stuck writing terrible code and slowly going back and spending my whole life refactoring with these new ideas I RALLIED AGAINST as if I knew anything. Why did anyone ever think I could do this whole coding thing at all?
  5. Acceptance. Actually, knowing this and using it makes me better than I was just earlier this week when I learned the concept. I don’t know why I was so stubborn. I’ll totally never do that again*. I’m producing better code and setting a good example. I’m so glad this came into my life and I’m going to look for places to improve with it!

It’s also worth noting that like with real grief, these steps aren’t always linear and sometimes I loop back around or skip a few. Regardless of how long I spend looping through anger and bargaining, this just isn’t a fun process.

Here’s how I’ve made it better:

I like reasoning. So often design patterns are just presented as “This is the pattern, this is how you implement the pattern, here’s some places you may want to use it.” That’s plenty useful for some people, but for me, it just starts this process at step one. Explanations of why the alternatives don’t stack up, what is gained in time or efficiency or clarity. Yes, I could learn these things on my own by using the pattern, but if I take 15 minutes to understand the why of the situation, Denial and Anger turn into “mild annoyance” at worst, genuine excitement at best.

Becoming aware of how you approach learning in different contexts is also really worth it. Normally I’m the kind of person who loves learning new things, but with design patterns, not so much. I think I’ve decided that it’s because it’s not really a new thing, it’s an addition to an old thing, and not just an addition, sometimes it’s a total inversion of what I thought I knew. I don’t love this attitude of mine, but I don’t try to deny that it’s there. Instead I approach the process with self awareness and try to make it go as quickly as possible, and instead of rallying against change for a week, I can get past that part in an afternoon. One day I hope to refactor my drama to just “bargaining” and “acceptance”, after all, everything needs a trial run, but no one needs my negativity, especially not me.

Struggling with some weird learning outlier is probably more common than people think, or I just tell myself that to make me feel better. Regardless, whether it's design patterns or a language you hate or new keyboard shortcuts or whatever, it's worth figuring out where your typical learning pattern breaks. It's also worth figuring out how to, if not fix, at least mitigate the drama. That's what I'm doing, and I think I'm better for it.

*I will definitely do this again.

Tags: learning general