DEV Community

Cover image for Secret of Great Programmers Revealed
Somnath Singh
Somnath Singh

Posted on • Originally published at

Secret of Great Programmers Revealed

A human being is always longing to be something more than what he is right now. This desire to be something more pushes humans to greatness.

One sure way you can achieve greatness in any field is through deliberate practice.

If you don’t practice deliberately, you’re wasting your time.

As to popular notion, deliberate practice is not performing a task again and again.

For example, if you ask yourself, “Why am I performing this task?” and your answer is, “to complete the task,” then you’re not doing deliberate practice.

You need to do the right things — if you want the right things to happen to you

Yes, deliberate practice means repetition, but repetition doesn’t mean doing the same thing mindlessly. It means performing the task to increase your mastery of one or more aspects of the task.

You do deliberate practice to improve your ability to perform a task. It’s about acquiring the skill with the correct technique.

It means doing the repetition while giving all your attention . Doing the task over and over again, until you achieve your desired level of mastery.

The only one who devotes himself to a cause with his whole strength and soul can be a true master.

For this reason, mastery demands all of a person.

— Albert Einstein

You do deliberate practice to master the task, not to complete the task.

The main aim of professional development is to finish a product. Where as the main aim of deliberate practice is to improve your performance — both are not the same.

Ask yourself:

How much of your time do you spend developing someone else’s product? And how much developing yourself?

Let me know your answers in the comments section.

If you show me the HOW — I will find the WHY

Peter Norvig has written the most popular book ever on Artificial Intelligence.

In his famous post, Teach Yourself Programming in Ten Years, he says that “it may be that 10,000 hours…is the magic number.”

I remember reading this article by Peter Norvig in my teens and thinking this must be a joke! After all, who can spend that much time? No, this isn’t a joke.

There is no substitute for personal experience — once you have it, you know it.

Peter Norvig explains:

The key to developing expertise is deliberate practice: not just doing it again and again, but challenging yourself with a task that is just beyond your current ability, trying it, analyzing your performance while and after doing it, and correcting any mistakes.

There is little point in practicing something you are already good at. Deliberate practice means practicing something you are not good at.

Quantity Leads To Quality

As David Bayles and Ted Orland write in Art and Fear:

The ceramics teacher announced on opening day that he was dividing the class into two groups. Students on the left side of the studio would be rated on quantity, while students on the right would be graded on quality.

His procedure was simple:

On the final day of class, he would bring in his bathroom scales and weigh the work of the “quantity” group: fifty pounds of pots rated an “A”, forty pounds a “B”, and so on.

However, those graded on “quality” needed to produce only one pot — albeit a perfect one — to get an “A”.

Well, came grading time and a curious fact emerged: the group graded for quantity produced the highest quality works.

It seems that while the “quantity” group was busily churning out piles of work — and learning from their mistakes.

The “quality” group had sat theorizing about perfection, and in the end, had little more to show for their efforts than grandiose theories and a pile of dead clay.


  • Don’t get too hung up initially on polishing your work to perfection. Instead, focus on cranking out as much as you can.
  • Doing something will lead to doing it well.

Never give up — great things take time

When you first learn to program, you are forced to practice purposefully. Since everything is new and challenging — you put in the hard work.

But this phase fades and motivation to study tough new topics also fades away.

Once we achieve a certain skill level (like getting a good job), it’s easy to stop pushing ourselves, settle for the daily grind, and shun all challenges.

Take Shinji for example, he is considered the “most graceful” swimmer in the world.

He started frequently swimming in his late 30s, and now his swimming video on YouTube is more popular than Michael Phelps’.

How did an average guy with a job and a family get so good?

He practiced a lot.

“I made it my goal to become the ‘most graceful swimmer in the world.’

Whenever I was in Japan, I spent 3 to 4 hours in the endless pool, usually from 10PM to 2AM, four days a week, recording my swim, analyzing it frame by frame, finding and fixing small flaws, one by one.” -Shinji

This is an excellent example of deliberate practice. You work hard, push yourself to your limits, and keep going until you progress and move up a level.

If something feels uncomfortable it means you are pushing your limits — Do it until you get comfortable — Embrace it.

Mile by mile one hits the milestone

No matter how great the talent or efforts, some things just take time. You can’t produce a baby in one month by getting nine women pregnant.

— Warren Buffet

Mary Poppendieck has co-created lean software.

She’s also co-authored award-winning books.

In the book Leading Lean Software Developmen_t, Mary Poppendieck notes that _it takes elite performers a minimum of 10,000 hours of deliberate, focused practice to become experts.”

The expertise arrives gradually over time — not all at once in the 10,000th hour!

How to do it:

Nevertheless, 10,000 hours is a lot: about 20 hours per week for 10 years.

Given this level of commitment, you might be worrying that you’re just not expert material.

You are.

Greatness is essentially a matter of conscious choice — y_our choice._

Every artist was first an amateur.

— Ralph Waldo Emerson

You don’t have to see the whole staircase — just take the first step

Over the last two decades, research has proven that deliberate practice is most critical factor in building a skill — not ones innate talent.

There is broad consensus among researchers of expert performance that inborn talent does not account for much more than a threshold. You have to have a minimum amount of natural ability to get started in a sport or profession. After that, the people who excel are the ones who work the hardest.

Deliberate practice does not mean doing what you are good at. It means challenging yourself, doing what you are not good at. So it’s not necessarily fun.

A kid may move his body a lot, but that does not make him a martial artist.

This is just like this: you have to do it consciously and increase your difficulty every time.

That doesn’t mean programming has to feel uncomfortable all the time, but it should regularly confront you with some difficulties.

Deliberate practice is about learning — learning that changes you, learning that changes who you are.

Also, it is essential to remember that learning is never created equally. There is a world of difference in what you learn by working alone and working among a group of people.

It is a rough road that leads to the path of greatness.

— Seneca

How to do it:

When you are building something, don’t do it just for the sake of doing it.

  • Before you begin your coding session, have a clear goal in your mind what you want to achieve through your coding session.
  • Don’t get stuck trying to get it right the first time. Instead, start making one or two things everyday.
  • Check where are you before doing something and where are you after doing it — is there an improvement? If not, then why — if yes, then what?
  • Make an account of your progress.[Important]

In any reasonable application, you probably have a lot of really easy stuff. Things like variable assignments, function definitions, or setting up the databases.

Maybe for you, the edge of your abilities is on more complex algorithms, data structures or mathematical equations.

However, if you approach practice blindly, you’ll probably spend 90% of your time on the basics with only 10% of your time on the really difficult stuff that pushes you.

So for every hour you spend practicing, you’re only really improving for six minutes of that time.

The solution here is to craft projects, problems, or practice sessions which deliberately eliminate the easy stuff.

Deliberate Practice your programming problem in such a way that it deliberately forces you to learn the new data structure or algorithm.

10,000 Rule Is a Myth

There are a lot of people who say that the 10,000 rule is a myth.

Some people spend thousands of hours learning and executing a craft and stay mediocre, while others become experts in their field with the same time investment

As we already discussed, Deliberate practice is not how much time you spend doing something — It is about how you do it.

When you are on the path of mastery:

Conscious Repetition > Inattentive Repetition.

10,000 figure is a close number where one achieves mastery over something, but it isn’t absolute.

If one has a razor-sharp focus, what others do in 10 years; he can do it in 4–5 years or even less.

Note of Gratitude

I wanted to take this last opportunity to say thank you.

Thank you for being here! I would not be able to do what I do without people like you who follow along and take that leap of faith to read my post.

I hope you’ll join me in my future blog post and stick around because I think we have something great here. And I hope that I will be able to help you along in your career for many more years to come!

See you next time. Bye!

Top comments (4)

ekeijl profile image

I always laugh when I see questions like "How can I become a programmer in the next 2 weeks???" or "what books do I read to become a senior?" - as if there are cheat codes for mastering it. I mean, doing a full time bootcamp might work if you are a natural talent, but it might also burn you out.

If you ever attended a programming course in college you'll know that learning is different for everyone, some people struggle more than others. It took me 2 full courses until the concepts "clicked".

I'm not gatekeeping here. Like you said, some things just take time and I really believe in "learning by doing". So people should not be afraid to just start a side-project to learn something new, however small the project.

It's totally fine to build something silly just for yourself. Just build!

polymathsomnath profile image
Somnath Singh

Namaste @ekeijl

I completely agree with all you said.

Thank you so much for taking the time to respond. 😊

lepinekong profile image

excellent post Deming and I agree ;)

polymathsomnath profile image
Somnath Singh

Namaste @lepinekong

Thank you so much for taking the time to respond. 😊