Sooner or later, every coder gets stuck in a rut.
Whether it’s losing focus and enthusiasm or feeling like you’ve hit a ceiling in your career, getting out of those ruts can be a real challenge. In this special guest post, Leah Brunetto shares her advice on learning to love coding again and the steps you can take to reignite your desire to learn and make progress.
Take it away, Leah!
What does it take to learn coding skills consistently? For the last few months, I’ve been investigating that question and the nuances of the difference between first learning to code and progressing after years of experience.
My research began about three years into my career in web design/development. My skills weren’t growing, and I wondered if I had hit my ceiling—if it was time to switch careers. On a conceptual level, I knew it'd take practice to make progress. There was something in the way of getting started again.
The following 10 ideas helped me push through my rut, resume actively learning, and get passionate about my work again.
These ideas are geared towards those already in coding careers, but even if you’re new, keep on reading :)
1) Realize That Slow And Steady Still Wins The Race
After I gained a certain level of skills, my patience became paper-thin. When I didn’t “get” something right away, I gave up and stayed with things I already knew how to do.
Now, I slow down instead of giving up. It seems like an obvious thing to do, yet it’s so easy to get frustrated when something you build doesn’t work.
A couple learning platforms I’ve found supportive for slow, effective learning are:
- Women's Coding Collective: This platform features checkpoints with concepts broken down into manageable pieces (3 units per week), plus a board where students explain their solutions and ask questions.
- Khan Academy: Their platform forbids the copying/pasting of code: something I am guilty of when trying to build/understand something very fast.
I love StackOverflow, CodePen and JSFiddle, where you can quickly look at code samples. However, I’m mindful that I fly through these. It’s good to slow down whenever you notice you’re rushing or being hard on yourself.
2) Make It As Easy As Possible To Fit In Project/Study Time
Web/software development is one of the most flexible fields for self-paced learning. Why not take advantage of the options?
Being honest about what works, rather than dwelling on what I should be able to do, was a huge step in the right direction. For example, I dread the idea of being in night classes while working full-time. I even tried a six-week class, and dropped out because being out late was a poor fit for my early-rising household. I go to in-person classes/events from time to time, but I no longer feel guilty that I’m not going to enough.
I recommend watching/listening to tutorials while eating dinner, knitting, folding laundry, etc. Working with code hands-on is, in my opinion, the only way to truly understand something, yet so much knowledge has seeped in passively for me via media. Queue up a list of videos in advance, so you don’t need to plan what to watch when time frees up.
3) Don’t Worry About Finding The ‘Perfect' Tutorial
Getting moving on something is energizing! Procrastinating is dulling and demotivating. I used to be perpetually unsure of my direction, which led to inaction. I was afraid to invest my time in the wrong thing, so I didn't invest my time in anything.
Unless a certain learning resource is high-cost or a high time investment, don’t hesitate to jump into something that interests you. If your concern is you should be learning multiple things, the fastest way to do that is to get one done first.
Don't be afraid to switch gears if your first choice isn't working for you, either. I find that if a tutorial is going to be too boring, or too convoluted, it’s evident pretty soon. Move onto something different if it isn’t serving you.
If you’re deciding between two or more things, I recommend choosing something as general as possible. Earlier this year, I took a two-week online Python class. As it covered a lot of basic programming principles, it would be useful for a number of directions (an idea I got from LTCWM podcast S1E3: Why You Should Focus on Fundamentals First with Chris Lee). I did end up using what I learned to make a couple useful calculators :)
4) Seek & Provide Help In An Open Learning Setting
When you're working on projects in a professional setting, there is not always the space or time to ask questions when you need to. Getting involved in the coding learning community is an awesome step to get active asking questions and gain experience explaining/debugging for others. This is something I wish I did sooner!
Coding learning/open project work events are usually free or low in cost. At a meetup I go to, people go around and introduce themselves, and often will describe what they’re learning and need help on so they can connect with someone who can help them.
There are many, many virtual options! For example, in the Newbie Coder Warehouse group, people of different levels share links to their work and ask questions. Even if you aren’t sharing something, passively engaging by reading others’ questions and looking at their projects/questions can be very helpful. I’ve also heard of ongoing virtual meetups where attendees go through a coding book together, and use Slack to post and answer questions.
5) FORTIFY YOUR EXISTING STRENGTHS
Even if you consider a specific skill or area to be your strength, it’s worth taking another look. Fortifying your existing strengths is often less intimidating than branching out into a new area, and can be equally productive.
As a design/front-end person, this involved teaching myself two new UI/UX prototyping tools: Sketch and Adobe Experience Design. I had a feeling I wasn't using the best tools for wireframing (Photoshop and Illustrator). Once I learned new tools, I felt on top of my game. I was able to build mockups and UI prototypes more quickly and efficiently. Another set of topics I reviewed recently was CSS pseudo-selectors and specificity, which I sort of understood from years of working, but hadn’t ever sat down to learn specifically.
It’s good to go through this process every so often to re-emphasize your niche and remind yourself what you love working on most.
6) Fill In A Gap For Your Team
Is there something your organization doesn’t have that you have the perfect set of skills to build? This is a great way to gain confidence, stretch your skills, and position yourself as an expert.
I discovered a gap when I learned about dynamic style guides at the 2016 Design 4 Drupal conference talk The Handoff: Communication Between Designers and Developers (see 30:11 – 37:2). Style guides seemed like a standard for development teams, yet they are something the web team I work with doesn’t have yet. Building a style guide from the ground up is something I’m excited about working on, as it spans front-end development, UI design, and branding—all skills I want to hone in the coming years.
7) Keep A Running List Of Your Soft Skills
Whereas tackling a new technical area can often highlight weaknesses, I’ve found that reflecting on soft skills helps give me more perspective on what I’m doing well in my day-to-day. Some “soft skill” activities I consider successes, in the context of technology careers, are:
- Explaining something to a non-technical client in a clear, approachable manner
- Taking initiative on side projects outside the main agenda
- Communicating what you need in order to grow professionally
- Developing empathy to best communicate with your team and connect with your product's users
- Organizing the work day into project planning, coding, and communications tasks most efficiently
It's great to keep a list like this going, in addition to your list of coding languages and software proficiencies!
8) Get A Sense Of What Something Is And What Is Doable
SSo often after a conference talk, I’ll look up whatever tools were discussed and get this feeling of “Oh, I need to sit down and learn this!” However, if you keep jotting down things to learn, you’ll likely abandon some. Topics I got really psyched about but burned out on quickly (due to lack of time, not interest!) include Unity, D3, and Arduino—all amazing but not applicable to my immediate work, and a little far out of my current skillset.
A more sustainable approach is to stay in the know, and maintain an awareness of what kind of things are doable with certain technologies. Keep your “to-do list” of programming topics as streamlined as possible. (Credit to one of my colleagues for sharing this idea!)
9) Identify Role Models Online Or In Person
Another colleague mentioned the topic of role models when I brought up the challenge of career ruts and sustaining motivation. A lot of his inspiration comes from work shared online (in this case, built using the OpenFrameworks toolkit).
I tend to identify role models more based on how they communicate. For example, I recently met a UX designer with several more years of experience than me through a women’s mentorship program. What struck me wasn’t a particular project she shared, but her way of talking about her work and career goals so freely and enthusiastically. She encouraged me to keep on my path and value my strengths.
It may be that your role model is online—perhaps someone you haven’t even met before—or you need to find that inspiration via one-to-one relationships. Consider both and investigate what your ideas of excellence are!
10) FOCUS ON YOUR OTHERS SKILLS & PASSIONS
Today’s cultural emphasis on the value of computational skills is a double-edged sword. During the same time I felt stuck in my career, I also spent less time on my artistic passions—I truly stopped believing they were as valuable. I felt pressure to focus more on gaining tech skills and experience (which, ironically, I wasn’t developing strongly or consistently, due to the above-mentioned distractions).
I now place a bigger emphasis than ever on my other skills and passions. Dedicating time to the arts—as well as totally random subjects like food science and rocks/minerals—helps open my imagination to projects I can build on the web. I also feel more motivated to keep learning coding: I feel more rested, more myself, and more ready to approach a challenge.
If you’re pressed for time, and are wondering whether to prioritize your coding career or other passions, I say go for your other passions. Dive into what fills you with energy, and return to coding challenges when your mental stamina is high.
Putting these ideas into practice, I feel confident I can grow consistently in this field. What I’m working towards isn’t technical mastery. Rather, I’m sustaining motivation, giving myself the freedom to work at my own pace, and re-aligning my values and expectations. It’s far from a steady climb up, but I’m feeling the road start to open up. What's helped you recharge and make leaps in your coding learning journey?
About the Author:
Leah Brunetto is an artist + web designer/developer based in Cambridge, MA. She has worked on interactive media in the museum industry for 5 years. Leah's body of work focuses on communicating beauty, energy, and complexity in ideas and creating technology that is fun and easy to use. Visit her portfolio at leahbrunetto.com.