# 16 Don'ts of Career Growth

Source: https://www.yegor256.com/2017/01/24/career-advice.html

I get questions like this all the time: How does one become a senior
software developer or an architect? How does one grow from a junior just
starting to write Java code to the leader of a software team that is
driving a BMW and making $150K+ per year? What are the exact steps that
won't waste time and will get you there faster? Let me share what I think might
be helpful.


{% jb_picture_body %}

Before writing this, I [Googled](https://www.google.com/webhp?q=career%20advice%20software%20developer)
a bit and found a lot of interesting suggestions, like to
be helpful, make friends, be language agnostic, code a lot,
try to prove your bosses wrong, avoid conflicts, exercise, etc.
Some of them are good, while others are very wrong, but most of them are just too far
away from the main point.

I want to share what I believe will look more or less like explicit instructions
of what to do tomorrow to become a $100-per-hour software architect
in a few years. Well, they worked and keep working for me.

**Don't Be Loyal**.
The company you are working for at the moment is just a training
ground, nothing else. Don't invest an ~~extra~~ minute of your time into it.
Be selfish; think only about yourself and your personal skills,
knowledge, and experience. They pay you to be dedicated and loyal?
Well, that's their fault. Use them to learn new technologies, experiment
with new ideas, train and educate yourself, get new certificates,
meet new people, etc. They must work _for you_, not the other way around.

{% quote They pay you to be dedicated and loyal? Well, that's their fault %}

**Don't Work**.
Make sure programming is your _hobby_, not your job. Everything else
must be secondary, including your family, friends, and WoW.
Software engineering is your family, your passion, your friend, and your life.
Without that attitude, you will always be a slave to those who think like
that. You must not work; you must have fun in front of the laptop. More
fun than you're having anywhere else. Never do anything that is not fun.
If you notice you're writing some code because you "have to" instead of
because "you want to," stop immediately. Something is going wrong and
you're shooting yourself in the foot; your career is in trouble.

**Don't Make Friends**.
I'm talking about professional relationships in the office, within your projects,
at the company you're working for. Remember that 99 percent of people will not
become experts. They will remain who they are---regular
programmers with no passion or ambition. What's really bad for you is that they will
want you to stay _with them_. Nobody will enjoy seeing your growth, and your
closest friends will become your enemies. Not explicitly, but subconsciously they
will do everything they can to prevent you from getting better and leaving
them. And you will have to leave them if you grow up. To avoid all that,
stay professional and don't make friends at work.

{% quote Nobody will enjoy seeing your growth, and your closest friends will become your enemies %}

**Don't Be Helpful**.
There are more than 10 million programmers in the world. They all need help. Why
do you need to help that dude sitting next to you in the office? You won't
save the world by helping people around you---forget that religious
nonsense. If you really want to do good for the software industry, focus
on bigger things: make an open source product, write a book, or improve
the documentation of the project you are working on. By
[helping]({% pst 2015/feb/2015-02-16-it-is-not-a-school %})
people around you and solving _their_ problems, you just cripple them,
nothing else.

**Don't Ask for Help**.
Expect the same attitude from programmers around you. Again, the same argument applies:
There are millions of accounts
registered on the StackExchange platform; if you need help, ask them. Don't ask
your friends or colleagues. Train yourself to get help from public sources
or from your project documentation. By asking people around you, you're making
your life easier in the short term only. In the long run, you will lack that
important skill of knowing how to find information. You will become
a hostage to those friends who help you. Also, don't learn from people around you;
learn from books, Stack Overflow, and open source software.

{% quote You must be prepared to say "No" to your friends, your family, your habits, your wishes, your projects, colleagues, classes, methods, and lines of code %}

**Don't Waste Time**.
This is probably the most important advice, which I have to give myself
first of all---unfortunately, I waste a lot of time. Any growth is always
about saying "No." You must be prepared to say it to your friends, your
family, your habits, your wishes, your projects, colleagues, classes,
methods, and lines of code. Stop the projects that are taking time and giving
nothing back. Don't call back those whom you don't need. Yes, they need you,
but you don't need them. This may sound harsh and selfish, but that's the
only way to get where you want to be. Time is your main resource; be
very greedy.

**Don't Skimp on Growth**.
You must invest into yourself. First of all, you have to buy books. Don't steal
them, even though
[you can]({% pst 2016/nov/2016-11-09-why-no-ebooks %}).
Buy them, spending your _own_ money. You will take
them way more serious. You will respect yourself for owning the library.
You will feel that software engineering is forever with you; it's not temporary,
it's not just a job, it's your life. Two books per month is your
absolute minimum. Second, pay for certificates for the
same reasons. Third, purchase software; don't steal it. Finally, don't be
cheap on your laptop. It is much more important than your car or a birthday
gift for your spouse. Your laptop is your instrument; it must be
~~good and expensive~~
[made by Apple]({% pst 2017/jun/2017-06-27-my-environment %}).
You must go "all in" if you want to win.

**Don't Work Full-Time**.
As much as possible, try to stay away from full-time, 9-to-5 jobs---they
pause your professional growth. Permanent or long-term employment gives you
a stable income, a comfortable office environment, a predictable set of
technical problems to solve, and the ability to become an expert over a small
territory. At the same time, it takes away _fear_. That's right, fear. You
are not afraid anymore, and that's why you stop growing. To grow and grow fast,
you must always be challenged by new tasks, new teams, new projects, and new job
interviews. You must always prove that you are worth something. Ideally,
you must work on two to three projects part-time and change them every 6 to 12 months.

**Don't Be Cheap**.
Forget the stories that teach "money is not everything, and an interesting project
is much more important"---they are for losers. Money
[is everything]({% pst 2014/sep/2014-09-24-why-monetary-awards-dont-work %}).
An interesting project will be _properly_ funded. If it's not funded, the market
doesn't need it. What are you doing there then? The only answer is that you're
not as good as [others]({% pst 2014/oct/2014-10-29-how-much-do-you-cost %});
that's how they managed to buy you. My advice is to
never pay attention to those cheap stories;
[demand cash]({% pst 2016/jan/2016-01-12-good-programmers-dont-work-for-equity %}), up front, as
much as possible.

**Don't Be Skeptical About Certifications**.
Many programmers think certifications are not important now because
they don't really validate anything and are issued simply for money by
big companies. Don't think like that. Certifications help you formalize
your knowledge, put borders around it, and remove gaps. And they demonstrate
to most of your potential employers that you're truly _serious_ about software
engineering.

**Don't Ignore Management**.
Being a good programmer is not the same as being a good architect or
a team leader. To move higher in that hierarchy, you must understand
[project management]({% pst 2016/may/2016-05-24-who-is-project-manager %}).
And it's not just being nice to people and wearing
a suit. It's a science, with a lot of rules, principles, methods,
and best practices. You must study them and become very good at them. Just
as good as you are in Java or C++. Start with
[PMBOK](https://en.wikipedia.org/wiki/Project_Management_Body_of_Knowledge) and earn your
[PMP](https://en.wikipedia.org/wiki/Project_Management_Professional) certification.

**Don't Underestimate English**.
Most of my readers are not native English speakers, just like myself.
I'm addressing this paragraph to you: You must improve your speaking and
writing skills; it's very important. You will never become an
[expensive]({% pst 2014/oct/2014-10-29-how-much-do-you-cost %})
software architect if you can't speak and write well. And it can't be
Russian in English words. It must be as the English people talk in San Francisco,
not in Moscow. The best advice to learn it: Watch English movies with subtitles.
You must speak like Matt Damon or Al Pacino, but not like
[Mutko](https://www.youtube.com/watch?v=_0uM_xh7WOg&t=29s).

**Don't Ignore Open Source**.
You must be active in the open source community. It's
[a must]({% pst 2015/dec/2015-12-22-why-dont-you-contribute-to-open-source %}). You either
have your own open source project or you actively contribute to an existing
one. Either way, it's crucial. Working in a closed
[office environment]({% pst 2015/oct/2015-10-06-how-to-be-good-office-slave %}) is
one thing, while writing code that is visible to the entire world is a totally
different thing. Most programmers are simply afraid of that, and they make
up many excuses for why they are not there. Don't be one of them. Yes, it's
difficult, it's stressful, it will consume a lot of your private time, and
nobody will pay you for it. Do it anyway---this is the fastest way
to grow. Moreover, I would recommend you try to open as much source code
as possible, even if you write it for private and commercial projects.
Some companies won't be against that.

{% quote I should be able to Google your name and find a lot of professional links, not just your Tinder profile %}

**Don't Be Invisible**.
Make sure you have Facebook, Twitter, LinkedIn, and Instagram accounts, along
with a blog. You must be present on the Internet. You're a serious software
architect? I should be able to Google your name and find a lot of professional
links, not just your Tinder profile. And they will Google your name; don't
ever doubt that. My book [256 Bloghacks](/256-bloghacks.html) may
help you understand how to do it right.

**Don't Stay Home**.
Attend seminars, meetups, and software conferences. At least once a month,
you must go somewhere where other programmers are hanging out. You don't
need to be super active and make a lot of friends---just be
there and watch. Eventually you will realize that it's time to become
a speaker. Remember that it doesn't really matter how much your
coworkers respect you. What matters is what the _market_ thinks about you.

{% quote Playing GTA 'til 3 a.m. is not what successful and happy software architects do %}

**Don't Forget to Relax**.
Nobody likes those smelly dorks who only get one haircut per year. They will
hire you and respect you as a coder, but they will never take you
seriously as a candidate for a role with a lot of ~~money~~ responsibility. You will
always look like a mentally unstable person. Instead, you must look "like business," even
though you are a geek. That's why it's very important to pay attention to
how you spend your free time---how you relax. Playing GTA 'til 3 a.m. is not
what successful and happy software architects do. Instead, here is your
short list of activities: sports, tourism, and night clubs.
Be a normal person---that's the point.

Did I miss anything important?

<blockquote class="twitter-tweet"><p lang="en" dir="ltr">Who do you work for?</p>&mdash; Yegor Bugayenko (@yegor256) <a href="https://twitter.com/yegor256/status/1381130741749256192?ref_src=twsrc%5Etfw">April 11, 2021</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
