Our most recent project at $DAYJOB has been in Rust. New programming language always presents an opportunity for learning, obviously, but what Rust does in particular, is that it asks you to be very explicit.
Which isn’t to say, it demands it, as you can just slap the same semi-correct boilerplate onto most things. For example, for the longest time, I told it to make data types both serializable and deserializable, as soon as they needed to be either of those.
But well, it gives you an opportunity to think about it. At some point, I realized that I was only using a data type for deserializing data from a REST API. I never serialized that type. And that was crucial information, I was missing when looking at that code snippet. So, rather than writing some comment which future-me won’t read either, I could just nix the serialization path.
And since then, I’m being very intentional with whether I’m making types serializable, deserializable or both. It feels like I’ve graduated from just slapping on boilerplate to actually knowing what I’m doing.
What I didn’t tell you is that I’ve actually been programming in Rust for 5 years. Certainly feels like it’s about time, I started knowing what I’m doing. At the same time, I can also tell you for free that there’s still loads of topics where I don’t yet actually know what I’m doing. And these lessons are rarely actually Rust-specific…
As someone who is only a few months into learning to program, I find this perspective very grounding. If I set my expectations appropriately, then I can enjoy the process and not get frustrated with myself that it’s taking “too long.”
You’ll teach yourself basic programming in waaaaaaaaaaaaaay less than 10 years, obviously.
You’ll teach yourself to be a much better programmer in 10 years.
More specifically, I think it’s learning to do maintainable programming.
What I like to tell people is that I am as good a programmer as I am for the simple reason that I began when I was about 8, which gave me a very early start on making all of the mistakes one can possibly make when learning how to code.
(It has been funny watching some of my coworkers learn a new coding technique and finding it to be so cool that they apply it everywhere regardless of whether it fits or not while I think to myself, “Ah, I remember when I went through that phase as a teenager!”)
(It has been funny watching some of my coworkers learn a new coding technique and finding it to be so cool that they apply it everywhere regardless of whether it fits or not while I think to myself, “Ah, I remember when I went through that phase as a teenager!”)
I’m not a programmer (although suggestions on a language to start learning with - with no project in mind - would be welcome!), but I’ve found similar things with my old musical projects. I look back some old project files and see that I used various techniques all the time that I don’t necessarily use nowadays. Sometimes, I think I probably should use them more than I do now, but I definitely overused them back then when I first discovered them.
I guess it’s just exciting when you learn something and it opens up a bunch of possibilities for you!