top of page

The secret to growing your skills as a developer

How the psychology of problem-solving and learning can make you a better, more effective professional.

Profile picture of Emmy Cao

9.27.2024

6 min read

If you’ve ever experienced a euphoric rush after solving a difficult problem with code, only for your joy to be stifled by an overflowing stack trace, you would understand why solving novel problems can be both the most rewarding and most painstaking part of a developer’s job. It can instill you with confidence and an impassioned drive to code for hours on end, yet it can also make you feel stuck and not good enough.


It's a problem for developers who want to grow their skills.


Like many others, when I first started coding, I was drawn to the creative possibilities and the thrill of solving new problems. I would learn anything and everything the internet told me I needed just to bring a game or website to life the way I had imagined it. A career in software development sounded almost too good to be true. (Spoiler alert: I eventually joined the Studio developer team.)


But when I first started working, I dreaded writing code. At some point, I started feeling like I was working hard to learn not for the joy of solving new problems, but to compensate for my own feelings of inadequacy just so I could stay afloat. The joy which programming sparked for me had disappeared.


The endless possibilities of programming mean that there will always be more to learn, but the more you learn, the more you must be prepared to fail. So, how can we take advantage of our passions for problem-solving while doing our best to curb those inevitable moments of defeat and grow as a developer?


The first step: tune into the psychology of problem-solving and learning. 





Learn how to learn


There are veteran developers who have, in the same lifetime, solved programming problems on punch cards and with generative AI. 


Because of the rapidly changing developer landscape, the most important skill for developers is not any one language or framework, but rather the ability to solve problems in new environments. Without the right approach to learning effectively and efficiently, this can quickly become exhausting. 


Gauging your ability to learn can be difficult. There's a common belief in the developer community that coding more frequently will inevitably yield better results. The notorious GitHub contribution chart is an indicator of how obsessive repetition has become glorified in the industry, to the point where people have created bots to automatically make contributions for them in order to impress potential employers.


While visible indicators of consistency are great for accountability, they fail to provide any guidelines for improvement aside from how often you can push code.


How much you grow as a developer varies based on what you code and how you approach your coding process. If you're consistently pushing trivial code for the sake of it, it's easy for your skills to plateau. 

Educational psychology recommends tactics like spaced repetition and interleaving as the best approaches to learning. In the context of programming, this can mean revisiting older projects to refresh your skills, integrating new knowledge in the context of different problems, or learning how to do something in a new programming language. (Related: 7 ways to become a better programmer)


Often when we need to learn a completely new framework or language, we can feel demotivated at the thought of starting over with the basics. But this process can help you simultaneously learn a new concept and also strengthen your existing knowledge. This is known as the transfer of learning, which is a way to apply existing knowledge to a new context in order to reinforce comprehension in that domain as a whole. 


Recognizing your own patterns and preferences for learning is also important. Personally, I love learning through teaching because it’s very engaging and fulfilling for me. Even when teaching a subject I thought I was very familiar with, I always discover gaps in my understanding and learn something new. Teaching is a great application of transfer of learning because it allows you to reinforce your knowledge by presenting it in a way you’re not used to.



Find the right amount of difficult


By learning how to learn, we know that simply repeating a task is not enough; we need to constantly challenge ourselves in order to see improvements. This means we must be able to recognize the difficulties of our work and adjust them according to our goals. 


Developers in stable careers might be reluctant to adjust the difficulty of their work. Why would we want to make work harder when we can coast along on easy tasks while watching TV on a second monitor?


Contrary to our intuition, work that is challenging is not always hard, and work that is not challenging is not always easy. We can demonstrate this by thinking about times when we’ve focused intensely on a challenging task. The hours seem to fly by and we are driven by our internal curiosity and desire. In contrast, when dealing with easy tasks that don’t engage us, time feels painfully slow and we're tempted to search for distractions to relieve the boredom.


Challenging work is not only beneficial for learning, but is also vital for our long-term fulfillment and preventing burnout. Psychologist Mihaly Csikszentmihalyi devoted his life to studying the concept of “flow,” a mental state in which we find ourselves most satisfied and productive. 


The conditions for flow require a task to be adequately challenging, but not to a point where it’s overwhelming. The challenge needs to be only slightly out of reach in relation to a person’s level of experience. When these conditions are met, we're able to harness our full attention while simultaneously feeling enjoyment from the task.


It’s much easier for me to spend several hours solving a hard problem that I feel like I’m making progress on, compared to a long list of trivial bug tickets. Of course, there are unenjoyable moments when I feel genuinely stuck and become frustrated with a problem. These would fall under the anxiety-inducing low-skill, high-challenge category. I’ve learned the hard way that it’s a better use of everyone’s time to admit you’re stuck and ask for help from a teammate. An outside perspective or missing piece of context can bump you back into flow.


If you're managing a team of developers, ensure that everyone’s workload is tailored to their strengths and find the right balance of challenge for each individual.



Enable your creativity


At a certain level of complexity, we can no longer solve problems through rote application and will need to be creative. But despite having all the right tools to solve a problem, sometimes it feels like we still can’t come up with any solutions. During these times we might feel uncreative, as if we’re simply missing the “spark” that would help us conjure the right ideas. Other times, creative solutions come naturally to us as if by magic. 


Though creativity is often attributed to artists, it's defined as the ability to form something novel and valuable, which can apply to developers as well.

It’s unsurprising that artists often find their inspiration outside of the confines of their studio. Whether it’s a walk outside, a vacation, or an insightful conversation with someone, humans feel most creative when they are not doing work.


We can find inspiration to solve programming problems in the same ways. Developers can dwell on solving a problem for hours during the work day, only to miraculously realize the solution while trying to fall asleep.


In A Mind for Numbers, professor Barbara Oakley attributes this phenomenon to the brain’s two states of diffused and focused thinking.


When our brains are in focused thinking mode, neural pathways are generally predictable and focused in one domain. This can help us zone into the minute details of a complex problem, but its narrow field of view can make us tunnel-visioned.


Unlike focused thinking, diffused thinking is more subconscious and occurs when we’re doing tasks that don’t require intense focus. These thoughts are less predictable and can bounce around from topic to topic. The randomness of diffused thinking allows for unexpected ideas and “eureka” moments. Even though we're not actively focused on solving a particular problem, our brains are still working through them subconsciously.


As a serial procrastinator, I was devastated to learn that it’s much better to work in multiple sessions rather than to cram everything in one long sitting. I’ve always been skeptical of this advice, insisting that I work better this way. 


But looking back, I can admit that multiple sessions probably would have produced better work. Our best ideas come in unexpected moments, such as during a shower, while driving or taking a walk—and I bet most of us could use a break from time to time.




RELATED ARTICLES

10 jobs AI won’t replace in the next decade, according to experts

LIZ DOUPNIK

4 common web app development challenges and how to overcome them

STEVE KIRK

5 Wix Studio developer workflows that help you go bigger, faster

STEVE KIRK

Find new ways FWD

Thanks for submitting!

By subscribing, you agree to receive the Wix Studio newsletter and other related content and acknowledge that Wix will treat your personal information in accordance with Wix's Privacy Policy.

Do brilliant work—together

Collaborate and share inspiration with other pros in the Wix Studio community.

Image showing a photo of a young group of professionals on the left and a photo highlighting one professional in a conference setting on the right
bottom of page