I’ve been thinking about learning a lot lately - why and how we do it, and pitfalls along the way. I wanted to start this post by noting down a few things I’ve been trying to learn recently and some of the reasoning behind them:
- How do I make my mark-up more semantic?
- How do I make mark-up as accessible as possible?
- How can I understand CSS animations better?
- How can I write my CSS cleaner to keep it more structured?
Okay, that’s me started with some of the day-to-day stuff, like what I might be doing at work, but let me add in some of the extra things sitting in my head that I feel I should also be learning:
- Learn React - experience for this pops up in so many roles.
- Delve Deeper into UX - takes me back to my designer roots and I feel it improves my front-end development.
- Understand tools like git, gulp and webpack better - they are part of the modern workflow and old or new - used in most jobs.
That’s not even the full list of things I want to learn or ideas I have spinning around my head, most of which are huge topics in their own right. Not something you’re going to pick up easily.
I don’t know about you, but even typing all that out makes me exhausted and feel deflated. Like it’s an uphill battle I’m never going to win. Trying honestly to look at myself as a front-end developer and assess where I am now and where I wish to be. There isn’t enough thought about the journey or the process - only that I’ve not reached that destination yet and always have more things to add to the list.
You’ll have your personal drive; what interests you, what’s new and what you want to improve. Then there will be the have to’s - work tasks and day-to-day things. Maybe an old technology stack you’ve not touched in ages or a project that’s outside your expertise.
I have a desire for many reasons both professionally and personally to get better at my craft. Web development has so many areas you could feel like a kid in a sweet shop with so much choice and variety, but that also makes it very easy to feel overwhelmed or spread too thin. I find that can have an effect on you mentally, stealing your motivation and drive. I’ve felt it - feel it quite regularly in fact. It’s a tough balance to get right. Learning for pleasure, learning for work, learning for progress.
Learning is hard - and that’s okay.
How would you expect yourself to learn everything listed at the beginning of this post in a way to feel like you’re making progress or improving? How much time would you give yourself? What are you measuring your progress against? Rarely do I ever compare my progress with myself, my own goals or what I knew last week, last month or last year. More often than not I’m comparing myself to external factors - peers, mentors, work colleagues and also what I see in the online community. It can all be a bit of a double edged sword for both motivation and spiraling doubt.
Let me go into a couple of personal examples I’ve had myself with learning:
Working through an online tutorial video I found that I really enjoyed the pace, rhythm and level of content. I got to a certain point where I just couldn’t follow along with the instructions.
No matter how many times I went back and re-watched the section, re-read my code, re-typed my code, I just couldn't follow along. Frustration set in and I was impatient for the lightbulb moment. The content creator tells me I could check with their source files provided, but should really do this myself otherwise what’s the point of the exercise - you won't learn or improve.
That’s what stuck in my mind as I tried to brute force my way through to some understanding, while my brain adds in really helpful thoughts like maybe you're just not smart enough, maybe this is beyond you, maybe you should just stick to colouring in pixels.
Close to giving-up, disheartened and questioning why I bother, I happened to look at the comments attached to the tutorial and read a question about the section I was stuck on. Then another. Then another. I read the replies to these questions and pieced together over a handful of them as well as going back to the video where I was going wrong and what I was having difficulty understanding. The lightbulb moment.
I wanted to incorporate a big API with great documentation, tutorials and examples into a side project. I discovered Postmaster as a tool to work with APIs at this time too, which means not only am I learning more about API’s I’m also learning a new programme. Funny how that can happen - looking at one thing becomes three! Makes that first thing seem so much harder.
I read and re-read the documentation, got some of the examples running but nothing close to using the API as I pictured it in my head. Trying to take the tutorial information like a square peg, and fit it into the round hole of my project was something I banged my head against but never made any headway.
Time jumps forward and I find myself looking at some other more basic APIs - working through these smaller APIs still brings up some questions that I need to learn my way through, but tackling something more manageable brought some success. That success picked up my confidence and fuelled me to keep going.
Back to that side project API I’d been banging my head against. This time around some of the ideas and terminology wasn't as lost on me as it was before. I still hit some brick walls and the learning curve was still steep, but I started to share my problems and ideas with a developer friend who has more experience in the area. This was a bit of a revelation as it also started to pique their interest in what I was trying to achieve and we passed back and forth what I’d tried, what did work and what didn't as well as some suggestions to try - eventually getting some results that I was looking for. The lightbulb moment.
Neither of these scenarios revolutionised my learning journey - they didn’t miraculously make me realise I’d been learning wrong all this time. They did however highlight the fact that I was human and trying to learn something new or different is hard and takes time, effort and patience.
With the online tutorial, I felt relieved I’d figured out the section I was stuck on with help from the comments, but a little embarrassed I let myself get so worked up and frustrated in the process. Realising it wasn’t just me having the same problem stopped me from feeling alone and that there is no one “right” way of explaining something.
For the side project, I started too big. Going back to some basics helped build the foundations for my original goal and then talking through things with another person was refreshing as it got me outside my own head and made the learning process more enjoyable.
It has taken me some time to have come to this realisation, even more to feel comfortable saying it out loud, but there are some basic principles I think we all need to hear once in while to put our learning back into perspective: Time, Focus, Patience and Resources.
Give yourself some time to build your developer toolbox. You’ll be upgrading and adding to that for a long time to come, so try to enjoy the journey more - not just chasing the end goal. On saying that though, remember that nothing will be achieved if time isn’t invested. So make sure to dedicate the time and focus to whatever you’re wanting to learn or improve.
This one goes hand-in-hand with time - you need to make yourself focus to get the most out of the time you’re putting in. Trying to concentrate and learn something from your to-do list while second screening a show on Netflix (I’m terrible for this) for example isn't going to do you any favours. Being a little more strict and making yourself focus on the task, tutorial or side project will help the learning process and ultimately reach your goals.
Allow yourself some headspace to understand and appreciate how far you’ve come as much as looking forward to where you want to go. You’re not going to be able to learn everything overnight no matter how much you might want to, but a little patience while you spend the time and focus on what you’re looking to learn will only help keep things a little more grounded as you progress.
Where you go to learn can be just as much a decision as what you’re trying to learn. With so much content available, keep trying lots of different resources to find what suits best for what you are working on. Free, paid, written, spoken, video, books, blogs and websites - but don’t forget about connecting with other people as well - friends, work colleagues, people from meet-ups or online groups.
Find the delivery method, style or format that clicks for you. It’s also probably going to change depending on what you’re trying to learn. We are all different and what works for one, might not work for another, but also what works for learning one thing might not be as effective when you try something else. Don’t hesitate to mix it up and jumble it about to keep it working for you.
I’ve tried to write this post in an honest fashion, with an awful lot of the comments and thoughts reflecting on myself and how I’ve started to look at my learning and progress as a front-end developer. I hope maybe others can take something away from this as well - maybe see some similarities with themselves and their own journey.
I (we) need to remember learning is not easy - it shouldn’t be, things that are worth it usually aren’t. The overarching theme of this post is to cut ourselves some slack. Enjoy the journey a little more. Step back from the brick wall moments and the frustrations. You can’t easily force the lightbulb moment to come - so take a step back, look at the whole picture and give yourself some headspace. Understand there are others going through or trying the same things and you’re not alone.
To my future self when I re-read this post and probably cringe. You’re better now than you were when you wrote this, but you’ve always got more you can do. Keep at it though: you’re doing great!
Thanks for reading.