When you become good at something, you can hit a wall in your development. No matter how hard you try, you feel like you can't break through it. Pushing harder doesn't pay off as much as before.
In this case, the solution might be not to add something but actually to remove something.
“It’s only by saying NO that you can concentrate on the things that are really important.”
— Steve Jobs
Our habits and what we believe in determine 90% of our actions. To be a successful developer, we must become successful first in thoughts and then in actions.
By giving up certain habits and beliefs, you create space and time for the better.
Stop thinking that there is no other way that you know.
Be open to new ideas. If you are a rigid fanatic of your beliefs, then you voluntarily put yourself in a prison closed to new and exciting ideas and knowledge.
Stop thinking that you were not born to be good at something. Your brain is flexible and it’s designed to adapt. So you can change.
You can become great at math, algorithm complexity, system architecture, dev ops, focusing, communications, discipline, and anything else you can imagine. But you have to put in enough effort to make it happen.
“To keep the body in good health is a duty... otherwise we shall not be able to keep our mind strong and clear.”
Our body needs good input to produce good output.
Exercise—whether that’s jogging, biking, going to the gym, cross-country walking, doing pull-ups, or yoga. All of this improves memory and thinking skills and also reduces stress.
Avoid health issues. Very few people can enjoy their day and produce great results when they have the flu, not to mention more serious diseases.
Your thoughts affect your health, and your health affects your thoughts. Because they are so connected, you should take care of your health and protect this precious asset.
Exercising regularly, getting proper nutrition, sleeping for 7-9 hours a night, and taking time for meditation will help you uncover your true potential as a person and a developer.
“An arrogant person considers himself perfect. This is the chief harm of arrogance. It interferes with a person's main task in life – becoming a better person.”
— Leo Tolstoy
It’s easy to criticize someone else’s code. It gives you nothing and can only harm your relationships with your team.
It’s difficult to understand someone else’s code, but the benefits will exceed your efforts.
Understanding why the code was written a certain way and not in any other way is more important than the feeling of "I'm smart." Arrogance interferes with learning, teaching, and the ability to be a team player.
“Life begins at the end of your comfort zone.”
— Neale Donald Walsch
Have a mindset of acting to win, not to avoid loss.
Take risks. Take on hard challenges. Get out of your comfort zone. When you play safe, you lose the opportunity to win.
The world is constantly changing, and you cannot succeed if you protect the status quo.
In an attempt to preserve what you have, you put yourself under pressure that slowly grows over time. If pressure is unavoidable, wouldn’t it be wiser to put the pressure toward improving and producing something bigger than you were capable of before?
It is much more fun and rewarding to achieve new results than to protect what you already have. So don’t act because you’re scared to lose—act to win.
“Most people do not really want freedom, because freedom involves responsibility, and most people are frightened of responsibility.”
— Sigmund Freud
Everythings that’s happening to you is the result of your actions or lack of them.
By thinking, “I am responsible for everythings that happens to me,” you gain the power to change it all. If you refuse to take responsibility for the past, you lose your ability to affect the future.
No more complaints—complaints rob you of believing that you can change the situation.
No more blaming others—blaming robs you of the ability to affect the situation.
Next time when things go wrong because of your actions or inaction, be the first person to admit this. Say to yourself and everyone, “This happened because of me, and I will fix it.”
Take full responsibility for outcomes and results. Your peers will respect that, and you will empower yourself. You only can be successful if you take full ownership for your results.
"I fear not the man who has practiced 10,000 kicks once, but I fear the man who has practiced one kick 10,000 times.”
— Bruce Lee
Everything that truly matters doesn’t happen immediately.
It may seem like success comes to someone after they make some magic move— one action that immediately makes them successful.
Indeed, one action can change everything overnight. But it’s extremely rare for this single action to be the only one. Instead, many actions precede the successful one. Even for you, it might not be obvious what chain of events and actions led you to where you are, but it is always like this.
That is why it’s important to do something that makes you happy and that’s important to you—so the process itself will be a reward. And in the meantime, don’t give up—all of your diligent actions right now are surely leading you to success in the future.
"The noblest pleasure is the joy of understanding.”
— Leonardo da Vinci
Understand what you are doing—don't blindly copy-and-paste solutions to get stuff done and fix things quickly.
Not only will you hurt your reputation by doing this, but you will cause more problems than you fix.
Search for understanding, not for a solution. Understanding is much more valuable in the long run than a completed task. This is because your understanding will then lead you to many more solutions in the future.
Some programmers approach problems that they don’t understand by spontaneously trying to find a combination that results in “workable” code. Those who do this learn nothing, and code that is produced this way contains more bugs than before.
Strive to understand the problem and to solve its root cause. Read the source code, dive deeper, and learn what you don’t know. This is the path of craftsmanship that leads to true understanding and mastery.
“Done is better than perfect.”
—A popular idea in Silicon Valley
Which is better—make one perfect app, program, library, or piece of code in the next several years, or be prolific and make hundreds of imperfect results this year? Not to mention that the perfect program will be at just one particular point in time and for a small set of people, and it’s often done only for you.
Thus, done is better than perfect.
Write “good enough” code for your fellow developers, not perfect code for yourself. You will always have the time and opportunity to improve code that needs to be improved. In other cases, you will save time by shipping code faster.
“Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.”
— Brian Kernighan
Smart code is an attempt to show the world how smart the author is. In the vast majority of cases, people do not appreciate this. Rather, people appreciate when you think about them and try to make their lives easier.
So write good, clean, and simple code that is easy to read and understand. No one will benefit from the smart code, including you three months later.
“I have only made this letter longer because I have not had the time to make it shorter.”
— Blaise Pascal
Readability first, then everything else.
A couple decades ago, someone decided that coders can be measured by lines of code they wrote during the time period. That was not a wise idea.
Now we can see how developers think they are writing good code if they are using the fewest possible lines or the fewest characters on a line. This is not wise either.
Code written once will be read dozens or hundreds of times, so strive to write readable code regardless of its length.
"Those who have knowledge, don't predict. Those who predict, don't have knowledge."
– Lao Tzu
Less code means fewers bugs and less time to read, lint, compile, review, ship, maintain, and debug.
Don’t spend time writing code that is not needed right now.
"A man who has committed a mistake and doesn't correct it is committing another mistake."
There are so many of us who can’t stand the idea of being wrong and want to always be right. This is even at the risk of hurting relationships or causing a great deal of stress and pain, for us and for others.
What will you gain by proving to someone else that you are right? You will spend tons of effort and will exhaust yourself or your opponent. The cost of feeling right is making everyone else feel wrong. It’s just not worth it.
You lose more by winning an argument. Instead of winning arguments, strive to solve problems and help people.
“The secret of change is to focus all of your energy, not on fighting the old, but on building the new.”
There is no way to change what already happened.
Sure, you can change what people think about the past, but it will cost you a lot and you’ll end up with unreliable benefits.
So don’t argue about the past. Concentrate on what to do now and how to use what already happened to change the future.
“When I look back on all these worries, I remember the story of the old man who said on his deathbed that he had had a lot of trouble in his life, most of which had never happened.”
– Winston Churchill
We’re really bad at remembering our achievements, and at the same time we’re really good at thinking that we need something else to start being who we want to be.
Look back and see how much you’ve already accomplished. I’m sure you’ve already done amazing things—you just rarely think about it.
If you want to take a role, don’t wait for permission—start doing what is expected from a person in that role. If you need a title, eventually you will get it this way. If you really want to do something, you don’t need titles or permission to do it.
If you’re not sure how to do this, that isn’t a problem either—you will figure it out while you do it. Do not underestimate your ability to figure out the way to achieve your goals.
“Talent wins games, but teamwork and intelligence wins championships.”
— Michael Jordan
At the beginning of their career, Michael Jordan and Kobe Bryan were amazingly talented but selfish individuals. Both thought that only they could win a game because others often drop the ball.
Phil Jackson, who won a remarkable 11 out of 20 NBA seasons as a head coach of the Chicago Bulls and the Los Angeles Lakers, trusts in the idea that a group of the best individuals can’t achieve success—only teams can do that.
He was a coach for both players and nurtured this idea in Jordan and Kobe, transforming them into the greatest players who bonded with their teams and relied on their teams to win games.
A team is more than a sum of individuals— teams are much stronger than groups of strong individuals.
We should trust our peers to make their own decisions and their own mistakes. We should allow them to do more important and complex tasks and offer a hand when they need it.
“Essentialism is not about how to get more things done; it’s about how to get the right things done. It doesn’t mean just doing less for the sake of less either. It is about making the wisest possible investment of your time and energy in order to operate at our highest point of contribution by doing only what is essential.”
― Greg Mckeown, Essentialism: The Disciplined Pursuit of Less
Ideas like “I can do both,” “I can control everything,” and “Everything should be like I want” will harm you at best and harm everyone around you at worst.
It is easy to lose the ability to determine what is really important in this contemporary, fast-paced world. But by knowing what is important, we can leverage the Pareto principle. We can achieve 80% of results by applying 20% of effort and omit 20% of results that require the remaining 80% of the effort.
It’s important to stop trying to do everything. The key is not to get more things done—it is about getting the right things done.
It doesn’t matter how high you climb a ladder if that ladder is leaning against the wrong building.
Strive to find your highest point of contribution and put all your effort into it.
“No one can create negativity or stress within you. Only you can do that by virtue of how you process your world.”
— Wayne W. Dyer
Negative emotions attract more negative emotions. Emotions are how we feel, and how we feel is our life. Thus, radiating negativity makes our life unhappier. You will be surrounded by similar negative people who won't be interested to contribute to your success. It turns into a vicious cycle.
Just think about when you’re involved in something that brings you great joy—you can do it all day long without feeling tired. You feel happiness, not exhaustion. It’s not hard work that takes up our energy—it’s what we feel and think.
Use gratitude as an antidote to negative thoughts and emotions.
To be a successful developer, you need to feel that you are a successful developer. Be positive and attract happiness in your life. Happy people become successful people, not vice versa.
“Our fatigue is often caused not by work, but by worry, frustration and resentment.”
— Dale Carnegie
Being responsible is a great thing, but please avoid feeling guilty about results that do not satisfy you. Feeling guilty doesn't add anything good. On the contrary, this feeling prevents you from becoming a better version of yourself.
Resentment is another emotion that sucks your energy. Reach out to the people who you’re frustrated with and explain to them your problem. Solve the issue and free up your energy to achieve great results.
Be emotionally intelligent, find the issues that are preventing you from using all your effort for creativity, and resolve them proactively.
It’s not egoism to want something—egoism is expecting that everyone else wants the same thing as you.
Diversity is a strong tool in achieving great success. A healthy diversity in opinions must be part of products and teams in order for them to be successful.
It is unhealthy to expect that everyone should think in your “right” way. It is unhealthy to surround yourself with people who only think like you. And it is also unhealthy to struggle because people think differently than you and do not accept your ideas.
To be successful, embrace diversity and think about what you can learn from every other opinion.
I have so much that I want to do. I hate wasting time.
— Stephen Hawking
It requires time to hone your skills, practice a new language, learn new technology, and give 110% at your workplace. To gain that time, you need to stop wasting it on things that do not move the needle for you and your goals.
Stop spending time on relationships that do not make you happy. Stop wasting time on TV shows that do not help you become better. Stop wasting time on activities that do not make you stronger.
Without time-wasters that do not add anything to your life, you will free up your time for things that really matter to you and your success.
Givers advance the world. Takers advance themselves and hold the world back.
— Simon Sinek
Life gives to givers and takes from takers. This is an axiom of the universe.
Those who seek for immediate selfish results will be content only with short-term results. Those who sincerely endeavor for others’ success will experience a compound effect many times greater than their own contribution. This is the rule of success.
To achieve great things, you need to leverage the power of giving.
Every day, you have the chance to free yourself from things that do not serve you.
By giving up activities and emotions that are holding you back, you create space for the better. By creating space for good habits, activities, and emotions, we become a better version of ourselves.
The desire to be better lies in all of us, and we feel amazing when we fulfill this desire. This is the path to be successful—and it’s available to everyone.