Making it work for me
Some thoughts on my “secure communications” course that I had Claude create for me. I haven’t really started the distributed systems course, and may remove it, since two intensive courses may simply be more than I can handle.
- Great information. The technologies covered are fundamental and important. It was important to me that I learn something that is foundational and (because it’s foundational) slow to change, because I find that such knowledge helps the greatest in understanding higher-level constructs.
- Too hard?: Some of the challenges are out of reach based on 2-3 hours per day. Obviously, I had to get a lot of help with parsing a raw ClientHello (day 8) for example. I wish I had the time to just slog through it, because I think that yields the deepest understanding, but I still got a lot out of having Claude talk me through it. And since we have the aid of AI, maybe these sorts challenges are actually appropriate. There is always of course the danger of getting it done without learning, so it’s important to keep yourself honest when learning with AI help.
- Interesting activities. Looking at TCP packets with WireShark is really fun and interesting.
- Rabbit holes. Following up on my previous musings about whether it was sustainable to go down every rabbit hole, I’ve modified my rule a bit. I’ll take a look down every rabbit hole, and if it’s not too crazy, I’ll consider going down it! My previous rule was somewhat tempered when I ran into deep cryptography stuff. Honestly, I haven’t even attempted yet to understand what “Elliptic Curve” math is all about because a) it just sounds really intimidating, and b) I think that’s somewhat beyond my role anyway, and I’m not sure how immediately useful that knowledge will be. And while we’re at it, the “key schedule” is a tad bit confusing. I decided to be satisfied with knowing that it’s for creating keys from the shared secret. I had to take a deep breath when I learned that the shared secret is not used directly in encryption.
This course is kind of a new experience for me. My previous self-teaching was all project-based. I would learn what I needed to learn in order to build what I wanted to build. But now my goal isn’t building something, so the choices I have to make are very different in nature. I really prefer project-based learning when it can be done. But projects are most motivating when it’s a tool that you’ll use every day, like my “course manager” project that I built for using as a teacher. And while I could have started any number of additional “personal tool” projects, it was difficult for me to think of one that targeted the sort of knowledge I wanted to gain – foundational systems knowledge.
The closest experience I’ve had to this one is my graduate school courses, and those were not always the best for learning purposes, because:
the quality of materials and
the pace was not conducive for deep learning.
Like everyone else in software nowadays, I have a lot of anxiety over whether I’m using my time wisely, especially since I’m on military leave for a big chunk of time and losing valuable experience. It’s really hard to know what will be important to know in a year or two, let alone 5 or 10 years. Should I focus on machine learning? Should I focus on “AI engineering”? I have had those thoughts many times each day. Maybe it’s true that the only discerning traits between future workers will be those hard-to-prove, hard-to-know-if-you-have, things like “taste” and “judgement” and of course (not so hard) the ability to harness the power of AI. But for now I’m betting on the idea that deep systems knowledge will still be important for the forseeable future.
You have to laugh when you think that this is even a serious question, but it is, nonetheless! 🤷🏻♂️