I learn the most when I am digging into a subject I don’t know much about. I read one thing, and am not sure what I read or if what I read will work in my use case, so find other references that relate to the topic at hand. After having dozens of tabs open in my browser on the subject at hand, I’m able to piece together the puzzle and do something I wasn’t able to do before after a lot of trial and error. When I’m trying new code or configurations, I experiment to see if what I want is really working. If it’s not working as it should, I make changes until I figure out what’s going on. This sounds pretty basic, and it is, but I think a lot of people don’t go through the pains/frustrations to learn this way. As other programming bloggers say, learning new things is what makes you better and more valuable.
This is how I arrived at a caching solution for specific APIs in our app at the nginx level, which increases concurrency limits in our app from ~100 to ~1000 req/s (using ab -c 10 -n 1000). This isn’t implemented in production, but at least we have it handy when we need to scale.