The Only Way to Do Something Well is to Do It Badly 1000 Times!

Tue, April 29, 2025 - 4 min read
practice makes perfect

🎯 The Only Way to Do Something Well is to Do It Badly 1000 Times

We live in a world where everyone wants results immediately. But the truth is that mastery comes only through thousands of failures.

Every mistake is not a failure, but a step towards perfection.


🏓 My Tennis Experience: 3 Months of Pain

Three months ago I picked up a racket. The first weeks were a disaster:

  • The ball flew anywhere but where it needed to go
  • Serves hit the net in 8 out of 10 cases
  • Coordination was at the level of a newborn giraffe

But what happened after 3 months?

Today I can:

  • Control the direction of the shot
  • Make a stable serve
  • Play short rallies

The secret? Thousands of bad shots. Every miss taught my muscles the right movement.

// Formula for mastery
const mastery = {
  attempts: 1000,
  failures: 950,
  learning: failures * experience,
  result: "excellence"
};

👔 Management: Learning from Your Own Mistakes

A good manager is someone who has stepped on all possible rakes and survived.

Typical “1000 mistakes” of a manager:

Task Setting:

  • Vague formulations → team does the wrong thing
  • Unrealistic deadlines → burnout and breakdowns
  • Lack of context → demotivation

People Management:

  • Micromanagement → loss of trust
  • Ignoring conflicts → toxic atmosphere
  • Wrong motivation → staff turnover

Planning:

  • Resource overestimation → project failures
  • Risk ignorance → crises
  • Lack of buffers → constant stress

Every mistake makes a manager stronger. The main thing is not to repeat the same mistake twice.


💻 Development: From “Hello World” to Architect

A developer’s path is a marathon through thousands of bugs, crutches, and refactorings.

Evolution through mistakes:

Junior (0-500 mistakes):

// Classic junior code
function calculateTotal(items) {
  var total = 0;
  for (var i = 0; i < items.length; i++) {
    total = total + items[i].price;
  }
  return total;
}

Middle (500-2000 mistakes):

// Better, but not ideal yet
const calculateTotal = (items) => {
  return items.reduce((total, item) => total + item.price, 0);
};

Senior (2000+ mistakes):

// Accounting for all edge cases
const calculateTotal = (items: CartItem[]): number => {
  if (!Array.isArray(items) || items.length === 0) {
    return 0;
  }
  
  return items
    .filter(item => item.price && typeof item.price === 'number')
    .reduce((total, item) => total + item.price, 0);
};

What developer mistakes teach:

  • Production crashes → importance of testing
  • Code is unreadable → value of clean code
  • Performance is terrible → algorithm optimization
  • Bugs in production → importance of code review

📊 Analytics: From Excel to Data Science

An analyst becomes an expert by going through thousands of wrong conclusions and crooked dashboards.

Typical growth mistakes:

Working with data:

  • Wrong sampling → false conclusions
  • Ignoring outliers → distorted picture
  • Correlation ≠ causation → wrong decisions

Building reports:

  • Overloaded dashboards → information noise
  • Wrong visualization → wrong interpretation
  • Lack of context → useless metrics

Business logic:

  • Metrics for metrics’ sake → loss of focus
  • Ignoring business context → irrelevant insights
  • Complex models without explanations → stakeholder distrust
-- Evolution of analyst SQL queries
-- Junior:
SELECT * FROM users;
 
-- Middle:
SELECT user_id, COUNT(*) as orders
FROM orders 
WHERE created_at >= '2024-01-01'
GROUP BY user_id;
 
-- Senior:
WITH user_cohorts AS (
  SELECT 
    user_id,
    DATE_TRUNC('month', first_order_date) as cohort_month
  FROM user_first_orders
),
monthly_activity AS (
  SELECT 
    uc.cohort_month,
    DATE_TRUNC('month', o.created_at) as activity_month,
    COUNT(DISTINCT uc.user_id) as active_users
  FROM user_cohorts uc
  JOIN orders o ON uc.user_id = o.user_id
  GROUP BY 1, 2
)
SELECT 
  cohort_month,
  activity_month,
  active_users,
  ROUND(100.0 * active_users / FIRST_VALUE(active_users) 
    OVER (PARTITION BY cohort_month ORDER BY activity_month), 2) as retention_rate
FROM monthly_activity
ORDER BY cohort_month, activity_month;

🏀 Wisdom from a Legend

Michael Jordan:
“I’ve missed more than 9000 shots in my career. I’ve lost almost 300 games. 26 times, I’ve been trusted to take the game winning shot and missed. I’ve failed over and over and over again in my life. And that is why I succeed.”

These words from a man considered the greatest basketball player of all time.

The lesson is simple: failures are not an obstacle on the path to success. They ARE the path to success.


🎯 Practical Conclusions

How to properly “do badly”:

  1. Don’t be afraid of mistakes — be afraid of doing nothing
  2. Analyze every failure — what went wrong?
  3. Don’t repeat the same mistake twice — that’s no longer learning
  4. Keep a mistake journal — your personal knowledge base
  5. Share your experience — help others learn from your mistakes

Growth through mistakes checklist:

  • I’m not afraid to try new things
  • I analyze my failures
  • I don’t repeat the same mistakes
  • I document lessons
  • I help others avoid my mistakes

💡 Conclusion

Mastery is not talent. It’s the result of thousands of conscious mistakes and working on them.

Whether it’s tennis, management, development, or analytics — the principle is the same:

The only way to do something well is to do it badly a thousand times.

So don’t be afraid to make mistakes. Be afraid of not starting.


Want more articles about development and career? Subscribe to EasyAdvice, bookmark the site and improve yourself every day 💪