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.
1. Give Up The Fixed Mindset
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.
2. Give Up The Unhealthy Lifestyle
“To keep the body in good health is a duty... otherwise we shall not be able to keep our mind strong and clear.”
— Buddha
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.
3. Give Up The Desire To Assert Yourself At The Expense Of Others
“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.
4. Give Up Playing It Safe
“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.
5. Give Up Being A Victim
“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.
6. Give Up The Idea Of Overnight Success
"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.
7. Give Up The Blind Copy-And-Paste Habit
"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.
8. Give Up Hacking Problems
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.
9. Give Up Perfectionism
“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.
10. Give Up Writing Smart Code
“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.
11. Give Up Writing The Shortest Possible Code
“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.
12. Give Up Writing Code That Will Be Helpful “Someday”
"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.
13. Give Up Your Need To Always Be Right
"A man who has committed a mistake and doesn't correct it is committing another mistake."
– Confucius
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.
14. Give Up Fighting For The Past
“The secret of change is to focus all of your energy, not on fighting the old, but on building the new.”
— Socrates
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.
15. Give Up Not Believing In Yourself
“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.
16. Give Up Trusting Only Yourself
“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.
17. Give Up Trying to Do Everything
“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.
18. Give Up Negativity
“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.
19. Give Up Holding Onto Guilt and Resentment
“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.
20. Give Up On Believing That Everyone Should Think Like You
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.
21. Give Up Wasting Time
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.
22. Give Up Being A Taker
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.
Call To Action
Follow me on Twitter where I post more frequently about life as a software engineer and how to get better and enjoy the process.
Originally published on dmitryshvetsov.com on June 9, 2020.
Top comments (14)
I'm sorry, but I find many points of this post toxic and the primary reason that our field is bathed in burnout. The "ditch everything that doesn't make you better" mentality along with the "eat, exercise and think positive" leads to the propagation of the "lean mean machine" developer who codes all day long, striving for success only stopping to do a couple of pushups and eat some avocado toast.
Many points here can be helpful, especially the ones on code and teamwork, however, I find that they all point in the same direction I mentioned above. In my opinion, it creates an overly competitive playing field where you are looked down upon if you are not spending all your free time coding, reading and doing side projects. This can and will negatively impact many groups and individuals, from minorities, parents, casual workers and all the way to insecure or depressed people, young and old, who start measuring their value as human beings solely on their professional development.
Furthermore, this kind of thinking incentivises companies (especially big ones) to ask their developers for more and more. More working hours, no education on company time ("just read about the new technology we need for our project while you are at home, you have to work now") and ever higher expectations. Just think about the concept of an "always improving developer" and ask yourself of how many professions we expect something similar? Everybody except developers, medical personel and CEOs gets a 9 to 5 and a chance to not think about their work once they walk out the door.
So, if you are a workaholic or someone who has minimal hobbies, responsibilities or relationships, someone who has the time and aspiration to turn oneself into a coding machine and be happy living that way, all the more power to you - that's great. But before you go preaching about it as the only right approach, remember that this is not necessarily a "path available to everyone" and that a wide adoption of such an approach leads to managers increasing working hours, not enabling education on company time and generally putting a lot of people at risk of burnout.
Finally, I'm not saying that we shouldn't all strive to do our best and improve as much as we can. I'm just saying that we should be careful about setting standards which a lot of people cannot reach for one reason or another.
This is a very, very complementary point of view! ❤️
I am very sorry that the article left the impression that we should give all our energy and time to become successful programmers. On the contrary, my point is that we should rest a lot, sleep well, and have a meaningful relationship with friends and family. It is a healthy and happy life that is the key to success, and not only in the field of programming.
I emphasize once again that I do not promote careerism and the idea of workaholism. I am definitely against what employers would demand to work overtime. A tired programmer is a bad programmer. I am for passion and desire to become better in what you do and tried to convey these ideas in these 22 tips.
Yeah, I also have mixed feelings about this post. Everyone learns differently and is able to become successful differently. There isn't a single path set in stone. For example, I find that if I code , when learning new technologies, more than 3 hours straight and push too hard it becomes counter productive, and thats my 110% ,which could look very different than someone else's 110%.
Also, when coding and hitting a wall, I often forget about it , go watch TV, listen music or do something else and when I come back to it later , I am able to tackle the problem and often solve it. So classifying watching TV as a waste of time is kind of judgy and condescending.
Overall, number #6 was my favorite one. Success is not an overnight event. LITTLE BY LITTLE , A LITTLE BECOMES A LOT.
It's great that you recommended Jocko Willink's talk! I watched it immediately. And it reminded me that his book "Extreme Ownership" is in my reading list. It should be a great read.
About 21. I think having time when you detached from what you are doing is very important. It helps to get back to your project and ideas refreshed and with more energy.
Thank you for sharing your thoughts. This makes me see my articles through other people's eyes. It broadens my worldview. Extremely helpful!
Hi @iamdi , I really like the post and I think this is what is required for me to do right now.
I need some helpful suggestions from you.
I have around 6 years of exp. but I on't think I have enough knowledge respectively, I work with a service based company here in India and I have been trying to move out of the company but I see that my skills and my knowledge are only helpful to current company and not to market needs from a 6 year exp Software Engineer. I work here as a Data Engineer for some projects and backend engineer for some , Scrum master and Project manager for some projects. I have been trying to give interviews but get shot down getting feedback "not enough expertise".
I know now that I should invest my time in honing my skills but I just don't get past the comfort of the current job my lack of ability to take action.
:(
Guide me pls
Hi Gogi.
I'm sorry for your situation. You absolutely can turn your situation around.
I believe that contributing to open-source can open broad possibilities to you. You can pick a project that is under the company where you dream to work for. I did that in the past and eventually get an offer from that company. But keep in mind this approach can take months but it's fun!
Another way is to apply each week/day and improve over time. It is a number game! You can read about the second approach here (or the same article on dev.to)
Good luck, Gogi!
Thank you for sharing! Point no. 6 is definitely true! No success can happen overnight. I used to struggle to get out of my comfort zone but ended up in the wrong place. I started slowly changing myself and writing all my goals as clearly as possible. I was able to get myself up and started doing as I planned. It was actually getting more effective when I used task management software. I can save a lot of time when planning my plan and easily track my progress. Love it!
I've never tried many tools, but I really like Todoist and Quire.
Really awesome.. I will for sure be sharing this with few people I know, who generally make mistakes as listed in this writing! ❤️
I glad you find it useful!
In my opinion, the dissemination of these ideas will make our profession more mature.
But first of all, we must be aware and see these flaws in ourselves. If you want to change the world, start with yourself.
Awesome writing and the quotes are 🔥🔥🔥
I love quotes and I'm glad you liked them and the article! 🙌
Fantastic. !!!
Thank you, Ajay! ❤️
Some comments may only be visible to logged-in visitors. Sign in to view all comments. Some comments have been hidden by the post's author - find out more