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.
Before writing this, I Googled 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.
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.
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 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 more than 6 million 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.
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. 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. 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. 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; thatâs how they managed to buy you. My advice is to never pay attention to those cheap stories; demand cash, 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. 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 and earn your PMP 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 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.
Donât Ignore Open Source. You must be active in the open source community. Itâs a must. 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 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.
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 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.
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?
Who do you work for?
— Yegor Bugayenko (@yegor256) April 11, 2021
