Let's say I have 10 extra hours per week which I literally waste and feel bad afterwards. How could I use them productively to improve as software engineer? I know there are some blogs, or books (i.e. Designing Data-Intensive Applications). Just feels like I forget most what I've read afterwards. Another approach is side projects, but it's also hard to come up with any decent idea. Please just share what works for you. Thanks.
Not sure If relevant, but I'm Web Engineer with experience in C#, Java, Javascript.
Also, I find it is helpful not to tell people anything about a project I'm working on in the early stages. Something about keeping it a secret makes it a little sacred to me and keeps me from taking satisfaction from work I haven't yet done.
Examples would be dabbling in metaprogramming, functional pure/not (Haskell/F#/OCaml), lisps (Racket/Clojure), capability-based (Pony/Clean/Rust), supervised-tree actors Erlang/Elixir, simple Go, VM ecosystem jvm/.net, cross-platform Dart+Flutter, etc. Oh and if you use js, definitely invest in TypeScript.
I typically have a toy db+web app that I keep rebuilding in various incarnations. I also mix in different datastores (MySQL, PostgreSQL, CockroachDB) and frameworks both server-side and client.
Also, improvement can come at an accelerated rate if you have a short feedback loop e.g. a mentor or another person to work on a project with you, as opposed to going solo. It also helps with motivation.