I recently discovered a pattern for how I learn and absorb information from the world.

Whenever I’m picking something up for the first time, be it a programming language, new song lyrics, or a different route to drive to work, I never memorize or “get” the whole thing at once. One small thing sticks, and everything else builds around it.

Consider my Lana del Rey obsession. I know almost all of her songs by heart — not only the lyrics, but also the production and the stories behind them. I know a lot about her history and how her fans will react to her music. I didn’t start out with the intention of being a walking Lana encyclopedia; I’d simply been looking around on Spotify my freshman year of college, became captivated by the way her song “Video Games” sounded, looked up the song meaning, replayed that song until I got sick of it, got curious about her other songs, fell in love with those too, looked up how she entered the music industry … and now, four years later, I can creep out the casual “Summertime Sadness” remix listener with my in-depth knowledge.

This pattern is important to keep in mind, because for my first three years as a computer science student, I was obsessed with learning absolutely everything there was to know about a certain language, convinced that if I took a top-down approach to coding, I’d be better off when it actually came time to put fingers to keyboard. I’d pore over books and articles and hop down multiple rabbit holes, only to realize upon opening the text editor that I didn’t actually know how to declare a function.

Nowadays, I don’t worry about knowing all the keywords in a language, or learning all the fancy shortcuts in a new framework. I start out with the smallest thing possible and go from there. I write ugly code the hard way first and then refactor it to create a more elegant solution, rather than spending an extra hour trying to “get it perfect” the first time around.

It’s like going to a department store and trying to remember where everything is. Maybe you’re a dress fan like me, and you seek out those specific racks during your first visit. Your second time, you notice that the accessories are right next to the fitting rooms, and your third, you check out the shoe department next to the accessories. Eventually, you’ll have built up an entire mental map of the store without using any real effort. It’s much easier to approach things this way than obsessively try to memorize an actual map.

I’ve heard the saying about how Rome wasn’t built in a day — but it took me until now to truly internalize what that saying meant.

The next time you’re faced with a challenging problem, coding-related or not, don’t be frustrated or discouraged if you think of “dumb” solutions first — implement your idea, and then come up with ways to make it better. Rough drafts are a thing! You’ll think about your solution more deeply, and reinforce your fundamental understanding of the problem domain. Embrace doing things the “dumb way” first and you’ll really appreciate the elegant solutions.