It seems like everyone’s learning to code these days — it’s now the cool thing to do, with good reason: being a developer often pays well, offers great opportunities and interesting work.

The problem is, thousands of people are shown ‘learn to code’ courses and excellent marketing, which makes them believe that coding is something you just suddenly know.

It’s easy to perceive coding that way, as a point where ‘knowing’ Ruby on Rails, JavaScript or PHP is the goal, but you quickly learn that it’s not so much a place you arrive at. Instead, it’s a never-ending journey that leads you down side alleys along the way.

Learning to code is easier than ever before, which is fantastic, but I wish someone had told me at the beginning years ago how hard it was to stick with it, and that it’s an uphill battle towards feeling ‘good enough.’

Nobody tells you when you join a course that at the end you’ll have a steep learning curve to keep on track, and that the course won’t teach you everything. Anyone who’s done a coding bootcamp can tell you that you come out the other end thinking “now what?”

Coding is something you have to refine and keep up with constantly. It’s a constantly evolving landscape, where new standards, ideas and strategies emerge. It isn’t like math, or learning to ride a bike where you kind of learn it and it rarely changes — this is something that changes every day.

The trick is biting it off into smaller chunks — learning the bits that become the whole. Instead of trying to learn a front-end framework, instead picking CSS, HTML and then JavaScript, one at a time, making the front-end framework the ultimate goal.

In 2015, learning to code felt like a constant barrage of new things for people coming in from no background. PHP or Ruby? React or Angular? Plain old JavaScript or JSX? It’s hard to know where to start, so breaking it down into manageable tasks helps.

Set yourself a goal to practice each week. Build 180 crazy ideas. Make fun stuff. Just build something even if you don’t know what to build — otherwise you won’t learn.

This is one of the reasons my favorite tutorial for learning to code is Michael Hartl’s excellentRuby on Rails guide. It takes the time to break down how to use Git properly for version tracking, why CSS is important and how to use automated tests. It doesn’t rush into teaching you the code part of Rails or Ruby, but rather why they all hang together, then how to use each piece.

There’s likely a day, sometime in your developing career, where you wake up and think “I’m a JavaScript/React/HTML/whatever guru,” but until then it’s constantly feeling like there’s too much more to know, and too many more things to learn.

I understand that feeling and know it well. I’ve often been crippled in the past by too much choice, and feeling like I never really knew anything. But I’ve learnt over the years that this is how everyone who’s learnt to code feels at times, regularly and that it’s all part of the journey.

Eventually, if you stick with it, you’ll know more than nothing. With enough patience and time it’ll all start piecing together in front of you, making sense rather than just being confusing and overwhelming — and you’ll realize that you’re on the way to learning the next thing.