Why Suffering Is Necessary For Growth

And why you can't escape it

A few months back, I encountered a situation that reminded me of the struggle of building a career in software development. 

Constantly hearing stories about layoffs, interviews with no follow-ups and rejection letters citing ‘lack of experience’ made me realize that many developers often fail to progress in their careers because they outsource the demand for their skills to others.

This is not surprising, given that we have been conditioned to escape unemployment gaps as quickly as possible without second thought. 

What many of us don’t realize is that these gaps also present us with an opportunity if we are willing to suffer through them.

I don’t mean suffering like dealing with an annoying boss or an unreliable co-worker. I mean the kind of suffering we feel when trying something for the first time, with no idea how anything works or, even worse, no idea of what we don’t know. 

That suffering associated with starting something new and different can be a ticket out of the state of unemployment we have learned to despise so much.

Although we are biologically wired to avoid pain, this is the strongest driver of growth and development throughout our careers. 

More so, in the era of AI and tech market saturation, the amount of suffering a developer has gone through becomes the key differentiator from other new developers flooding the market.

The truth is, if you haven’t suffered, you won’t stand out. Let me explain.

Storytime

Back to the situation- I was leading a team that was hiring developers for a full-stack developer position.

One of our candidates, an ex-McKinsey employee, left a great impression with us during the interview. She came across as smart, sounded sharp and was very well-spoken.

After 15 minutes of her describing all the massive and complex projects she tackled in her previous job, I felt it was time for my favourite interview question.

‘What about personal projects? What do you like building in your free time?’

Silence.

Her reaction was complete surprise, as if nobody had ever asked her something so personal. After thinking for a few seconds, she answered that she had been too busy with work ever to get started on a personal project and then laughed nervously.

It seemed like she was realizing for the first time that as a developer, you are allowed to work on projects outside of work.

As an 8-year software professional, I was in complete shock with her reaction. I couldn’t understand how someone could have gone years and years developing software for others but never for themselves.

Imagine a photographer who studied photography but never took a single picture outside of work. Or a musician who, after years of studying in the conservatory, would only pick up their instrument if they were getting paid for it. You would likely find it strange, even sad, that their passion was confined to professional obligations.

It is almost unthinkable not to spend some of your free time perfecting your craft in these professions. Yet for programmers this seems to have become the norm.

Many write code only when required — when there’s a task, a deadline, or a paycheck involved. But isn’t programming a craft like any other? One that invites curiosity, experimentation, and the joy of simply making things work?

My early days

I thought back to my early days in software.

One week, I was spending close to 10 hours a day trying to get a silly Flappy Bird AI bot to work. At some point it was achieving some decently high scores, but the project ended up going nowhere since I couldn’t get it to consistently beat the game.

Later that year, I tried building an accounting software for my parents who were still using Microsoft Word to manage their taxes (talk about an opportunity). It was the first time I properly used object-oriented programming (OOP) in a project. I also built a Graphical User Interface (GUI) that you could interact with, my first experience with frontend development. But after weeks of struggle I concluded that teaching my parents how to use Excel would be much easier for everyone (especially for me).

Years later, already as a professional, I felt stuck in my Software Engineer position where I was working for 2 years. I started getting curious about Blockchain and NFTs and that led me to spending my mornings and afternoons learning Solidity, the blockchain programming language. 3 months later I was able to quit my 9–5 and become a freelancer after landing my first freelancing blockchain developer gig.

When remembering each one of those moments there is one pervasive feeling that I can consistently recall: the constant pain of being a beginner.

I felt like a failure for not getting my Flappy Bird AI to beat the game perfectly. I felt frustration when building out a GUI, only to realize Microsoft Excel was the better tool. And I hated waking up at 6am to study blockchain development before work, only to do the same thing later that day.

But the hardest part of all these projects was actually getting started. Having an idea to work on came naturally to me, but allocating time to pursue these small projects was simply not easy. 

There was no guaranteed payoff, I did not know whether I would be able to complete them, how long they were going to take and whether they will be ‘worth my time’.

From beginning to end, each of these projects was a continuous struggle of motivation, consistency and discipline. And all the uncertainty around the outcomes made the inertia of getting started that much stronger.

Sadly the projects I’m telling you about now are a minuscule part of all the ideas I’ve wanted to work on across the years.

Yet looking back, even with the constant pain, my only true regret was that I didn’t overcome this inertia more often. I live with the reality that every time I decided not to pursue my curiosity, a potential opportunity was missed. But along the way, I also learned a powerful lesson.

Self-motivation

The following was an epiphany that completely changed the outlook on my career: 99% of my career progression had been self-motivated.

I did not need a boss assigning me to a ‘cool new project’, or a mentor to guide me through code reviews. 

What made me grow as an engineer and developer was the continuous strive for building things that I had no idea how to build and powering through the pain of getting started.

More importantly, I realized that unemployment wasn’t the black hole of desperation I had been taught to see it as. I no longer believed that I need to be employed to make progress in my career.

I could forge my own path, work on the projects that interested me, and as long as I kept learning and building my career was advancing. 

Your CV and portfolio grow independently of who assigns you the projects. So why wouldn’t you be the one deciding what to spend your time on?

Understanding this point gave me a deep sense of confidence that no matter what happens, I will continue to grow. This allowed me to stay true to my passions and maintain my freedom, rather than locking myself in a stable job working on someone else’s dreams. 

My years of suffering gave me the thing that today I value the most: the ability to be free.

Current times

The current reality of the tech job market looks grim, there is no denying it. Long gone are the days of high-paying salaries for 20-hour weeks with great benefits. The competition is fierce and you need to put in extra effort (suffering) to make it in this industry.

Does this mean that you are condemned to spend all your free time programming just to find a job?

No, as the candidate earlier showed, it is possible to get hired by major companies without a single project of your own.

But as someone that has been on the other side of the hiring process, I do need to make you aware of the message you transmit about yourself as a developer when you don’t try to build anything on your own. 

No interest in personal projects means one of two things: lack of curiosity or fear of suffering.

You either have no interest in applying your development and engineering skills outside of work (no curiosity) or you are curious but so concerned with failure of any kind that you never take the first step (fear of suffering).

If you are simply not curious that is fine, it just means you are interested in other things. 

If you do fear suffering, you need to decide whether staying comfortable is more important than living life in your own terms. I can assure that the pain of complacency will eventually be greater.

But regardless, be aware that both these traits limit the type of employers willing to hire you. And you can expect their environment to be the same: stagnant and uninspiring.

The only thing you can expect from working at a company that pays for your predictability and obedience is a permanent glass ceiling on your freedom and creativity.

So take some time off of practicing LeetCode and writing motivation letters. Think of all the ideas that crossed your mind and that you never executed on. Allow yourself to be creative rather than following the path laid in front of you.

Build something that represents you as a person and an engineer. Something that when asked about your free time in an interview, you can proudly talk about all the struggles that went into it.

Once you do that, not only will you have grown as a developer, but you will catch the eyes of companies that are more similar to you, the ones that ‘get you’. 

But most importantly you will have spent time being yourself, rather than what someone else wants you to be. And you might just discover that that’s what matters the most.

A quote I heard somewhere:

There is nothing more tragic then having all the potential in the world, but being too afraid to fulfill it.

Unknown

Don’t let the fear of getting started decide the rest of your life. Embrace the suffering.