Advice to My Younger Self and You After 20 Years in Programming by Alexey Inkin Dev Publicity Medium (1)
Advice to my younger self and you after 20 years in programming | by Alexey Inkin | Dev Publicity | Medium #
Excerpt #
Still, I have missed a lot more, and it took too long. I think I could have speedrun this career to get most of those attributes of success in 5 years if I applied early the attitude, the principles…
[
]( https://medium.com/@alexey.inkin?source=post_page-----a3a2ccc7a942--------------------------------)[
]( https://medium.com/dev-publicity?source=post_page-----a3a2ccc7a942--------------------------------)
Today is exactly 20 years that I started coding professionally. In those years, I have:
- Been approved a green card petition for extraordinary ability in science.
- Become a Google Developer Expert.
- Become a Senior Member of IEEE.
- Been a Chief Operating Officer in a company with 100 employees.
- Authored a piece of code downloaded 135 million times.
- Spoken to an audience of 2000 people twice.
- Become the most honest person in Russia according to national TV.
Still, I have missed a lot more, and it took too long. I think I could have speedrun this career to get most of those attributes of success in 5 years if I applied early the attitude, the principles, and the priorities that I’ve learned. If you are starting your career, this text can save 15 years of your life. Imagine having all of that list (except IEEE, which takes 10 years) at the age of 23 and not 38 that I am now.
In the first part, I will briefly describe my career for the context. In the second part, I will go through each separate piece of advice that I think would have the strongest impact.
Part 1. How I spent the years 2003–2023 #
On December 22, 2003, I could not sleep and decided to look for available domain names. I checked some that came to my mind and found GetSoft.ru among others. I have purchased it.
“What should I do with it?” — I thought. — “I guess, I will have to make a software marketplace”.
By then, I was a hobbyist developer for 7 years (since the age of 11). I was making clones of Tetris, Bomberman, Tanks, etc. I would upload them to my website and then put the links to a lot of infant marketplaces of the time. They were really inconvenient, and I knew how to make a better one.
I learned PHP just because most URLs on the Internet ended with “.php”
On March 4, 2004, I launched GetSoft.ru.
A Google-translated version of my first business website.
Then I wrote a script that parsed one of the competitors’ websites and sent some personalized spam like
Hello, (Name). We are launching a new software marketplace. Please add your programs (Title1, Title2, Title3…) to it!
This worked and got some initial content, that attracted search traffic and in turn more vendors:
This website earned me an intern position at Telma (now Harman Connected Services) in my city of Nizhny Novgorod. They were most famous for making all firmware for Motorola phones. I quit after a year because I thought I was smarter, and I was making more from selling ads.
The revenue made me lazy. By 2010, when the markets changed and the revenue went down, I missed the golden age of early social networks. I did not form a community and was only living on search traffic.
I could not come up with a plan to save the website and just started making corporate websites for others as a freelancer. I had an idea to establish an agency at some point.
In 2011, I detoured from programming. I met a friend who was an extraordinary teacher. He helped me start teaching my hobbies effectively. I ran courses on photography and videography until 2013. Then he inspired me to start a business by putting ads for apartment renovation and selling the leads to actual renovators. I had some limited success. Then he hired me to teach others to get orders and to sell them, which I did until mid-2014.
Then he hired me as a Head of Learning Materials Production for another iteration of his educational business and then made me CTO and COO. I set up all the IT infrastructure he needed and made a learning management system from scratch.
At the peak, we had over 100 teachers, over 2500 students, and over 100 active affiliate marketing partners. The revenue grew fourfold during that time, and the profit was $274k for 2015, which was 600 times the average salary in Russia.
In 2016, he was restructuring the management and the pay, and then I quit and wrote a book on what I learned about good work and on how to be promoted (so far in Russian only).
I was then freelancing again because I had this permanent dream of running my own thing, which was stealing years from me again. By that time, the market for corporate websites shrank, and simple no-code services were ruling. I made my own CRM but had a hard time selling it, it was a poor fit for the market. I could not take a regular job because of my ego.
By 2019, I finally realized how much I missed by not working in large companies. I moved to Moscow and found a job at Calltouch, a leading call-tracking and marketing analytics platform in Russia. In the fall of 2020, I quit in order to make my own thing again.
For my startup, I needed the cheapest possible frontend for mobile and web and decided to learn Flutter for this. I was not comfortable wasting my savings and soon took a side job from my friend who was using Flutter. Soon I paused my startup and worked for him. At the same time, I started this blog. Then the war put our customer out of business in February 2022.
I fled to Georgia (a European country) and found a job at Akvelon, an outsourced software vendor, which was the turning point for me. They were making prominent open-source projects for Apache, and through them, I got acquainted with some Google engineers.
Apache Beam Playground and Tour of Beam, two apps for which I was leading the frontend development, all donated to Apache and supervised by Google engineers.
I worked for Akvelon for a year, and what I did there together with my writing was sufficient for me to be assigned the title of Google Developer Expert.
That was a good time to move to a developed country. I was sick of living somewhere as a permanent tourist without a residence permit, always treated as a loser because of that. I had multiple visa denials with officers just abusing me for being Russian.
The United States was my number-one goal for a long time. I had a background dream to earn the money for an investment-based green card, but now I learned of the EB-1A program of extraordinary ability and how approachable it was. I decided to improve my profile even further to fit.
So I joined IEEE and was elevated to Senior Membership quickly.
IEEE Senior Membership card.
I applied to judge the CODiE award and was approved. Things really snowball fast after some critical mass of recognition.
This is how I feel my credibility was changing over time as I perceive it in hindsight:
The changes in my professional credibility as I perceive them now.
This chart shows a lot of wasted time. And here is what I would do differently with my current mindset to optimize that.
Part 2. My advice #
1. Be in the best place and network in the world #
I graduated from the nearest university to my home, 15-minute walk. That was the mindset in Russia of 2002: a small closed world. Only one of my classmates went to study in Moscow, let alone anything international. There was just no example that one could go farther, and I had no Internet to learn other paths.
Nizhny Novgorod State Technical University, main building, photo by Alexey Trefilov, license.
On the other hand, my supervisor from Google was 4 years younger than me. He is from Mexico, studied in South Korea, got into Google there, then moved to the United States. Imagine all of that for yourself in just 6 years from high school.
You are most wanted at this age by everyone. You can join any university to study anything you want with a fair preparation. Every next year will make it harder.
My whole life I had the idea that there is a better place, and I will get to be there somehow at some point. In the past 20 years, a life-load of things happened there, without me.
Know a better place? Move there now.
A friend of mine, 4 years younger, was accepted to a United States university when I just finished my 4th year in my home city. That was shocking and revealed the bitter truth: that opportunity was there for me too all the time.
Ties to a single country also bear tremendous risks. What if your country starts a war or is attacked? I learned it the hard way. Second citizenship is a hedge against that. Go get it while it’s cheap. I believe the idea of second citizenship should be a social standard just as education is, so people get it even before they develop consciousness by their mid-20s. It should also reduce wars all by itself because people of two nations oppose those nations fighting.
Even before moving physically, get to the global network of professionals. Most people from my country live in closed bubbles. They do have their LinkedIn profile and posts in English, but still, only Russia-based HRs text them. This is because changing the language is not enough. International associations and conferences are what many local communities completely miss. Do you know a more successful community? Join it, write and speak for them. GDE and IEEE are just the examples I found, there are thousands of Global communities that can benefit you.
The problem was that in Russia people do not believe in associations. In the USSR, all unions were the government’s proxies, they were only distributing small perks like sanatorium accommodations. If it’s the same with you, try to see beyond that.
Staying in a bubble is risky. As of late 2023, the Russian government is pressing private businesses to fire those who relocated and continue their work remotely. Many of my friends who moved in haste in 2022 but did not develop a global network were forced back to Russia with all the personal risks that followed.
How many days would it take for you to find a remote job in the United States? Europe? Get yourself some memberships if you are not sure.
2. It’s business #
My very first commercial project was a software marketplace that I mentioned before. That was a promising start, but then I faced problems because I did not view it as a business.
The first problem was I wanted the project to be “fair”, so I refused any monetization except ads. I refused any paid promotions because my idea was that student programmers and established vendors must be equal on the platform. That left me with insufficient resources for any development, while competition was improving steadily. Now I suggest actively taking business opportunities. All “free” things in this world rely on the foundation of someone’s prospering and growing business. Every single thing you give away for free must be a side effect of some reliable business process with a bright future foreseen far enough. Otherwise, your charity at the expense of your resources will destroy you and harm the world around you and those you try to help.
The second problem was the resource curse. The money allowed me to do nothing, so I did not. I made some minor improvements to the website that appealed to my aesthetics, but I never floored the pedal as in the first months. That was the thinking of someone on a payroll and not of a businessman. I do not know the remedy for a resource curse. The best I can tell you is that whatever you rely on will crumble. Think of what you will be left with by then.
3. Get exposure to profit #
The greatest problem for most programmers is that their ideas are not based on the economy.
Programming is a highly creative activity, which requires total security and can be practically stopped by personal uncertainty and fear. That’s why programmers mostly have fixed salaries, unlike many other positions in marketing, sales, delivery, service, etc. which have high incentive parts in their pay.
Programmers don’t worry not only whether the product sells well, but even if they do their tasks on time. The common thinking here is that the risk of a programmer becoming lazy on a fixed salary is less than the risk of a team slowing down from the fear of taking insufficient money home.
Yes, deadlines are stressful in programming, but that’s imaginary, I have never seen anyone being fired or even fined for failing to meet a deadline in a country where firing is non-trivial. Even failing programmers can often be used economically for boring tasks, they just don’t get a raise and soon quit for mutual benefit.
There are two more reasons programmers get fixed salaries. One, in large projects it’s hard to come up with any meaningful function of profit that would be fair and give feedback fast enough to influence your behavior. A typical natural feedback loop of profit takes at least months in IT.
Another reason is that it’s risky to teach programmers the economy of a software company because that’s the only thing separating them from quitting and launching a competing business. If they want to do that and are extroverted, they have the highest chance of doing so, above all supporting staff like marketing, sales, support, etc., because they have the most rare and valuable skills and expertise to separate.
While a fixed salary is good for your mental health, you do not develop a gut feeling of what is right for the business. The management may give every verbal explanation of the priorities to you, but it’s never as effective as commission. That causes tons of problems.
Programmers complain that they want to spend more time refactoring and less time on new features. Or they don’t see the reason to launch a beta quickly and want a few more months to make things “properly”. Or they press the management to stretch an MVP to add the features they like to work on. Or they promote sub-optimal technologies of their personal preference. I spent years doing all of that.
The consequences are:
- It’s hard for you to start a business because you don’t have the right prioritization in your blood and need to learn as you go and lose tons of money.
- It’s hard to find startup-oriented programmers who don’t need an eye on them to focus on business.
You can get an edge if you integrate the business thinking. No education can help here, but I know two ways to do that.
Get commission #
If your salary is a function of profit, you drastically change what you do.
As a programmer, you can get that in short projects for small businesses. For instance, make a chat bot as an additional sales channel to someone and agree to a share of the revenue for some time.
Any non-programming job on commission is also helpful. Salesmen typically have a good sense of business, and if they turn into programmers, they keep that sense.
Freelancing may seem helpful to get the feeling for profit because you get rapid feedback on your actions. The faster you complete a fixed-price order, the faster you get a new one. However, this rarely has anything to do with business needs, because you learn to do each task in a simple way but not prioritizing tasks strategically for a business.
Hire someone #
The moment you need to spend your own money on a startup, a third eye opens. A small feature that was moderately useful in someone else’s project now may cost $500 or $5000 to you, and you shelf it in cold blood until you get to the market and have revenue to fund it.
When you get the revenue, there are hundreds of those shelved things, and you need to implement the ones that boost the revenue the most right now. Your favorite features may not be on the top list. You have to learn to deal with that and also to explain to your employees why you can’t afford to let them spend two hours on what they want to do.
Managing and adjusting a project in a way that it funds itself and optimizing its growth under that constraint is the highest craft in the universe.
Learn it as early as you can. This will save you decades of life.
4. Go into a technology at an early stage, get out of a dying one #
Artificial Intelligence #
I knew of neural networks for decades. I had a class on them 18 years ago and made a trivial network. There was no TensorFlow or anything, I had to create a C++ class for a perceptron by hand, and everything from that level up. At the end of the year, I just shelved that knowledge: OK, one can make text editors, calculators, email clients, and now also some neural networks. To me, that thing was “one of”, not standing out.
At the same time, it was common knowledge that AI would dominate the industry sometime in the future. However, I did not link that knowledge and my new skill to things to put my hands on when the class was over.
I had another chance 3 years later when I was offered to work on a system that detects stealing of groceries from a video stream, and that was in 2008! I refused because I wanted my own “business”.
Now at my current startup, I need AI that detects what algorithms a piece of code uses. It’s much simpler than the cutting edge of the industry, but it’s hard for me to wrap my head around, and I procrastinate.
Mobile apps #
Another shot was with mobile apps. I had a class on mobile development 17 years ago. It was Java Mobile Edition back then, and no OS-specific coding, but it was astonishing that you could run stuff on this small thing in your pocket. So alright, I made a Tetris in JavaME, put it online, and have forgotten about it.
Fast-forward 14 years, and everything is mobile. I started to learn Flutter without any prior knowledge of Android and iOS development. Most job postings for Flutter require native mobile experience and see Flutter as a fancy toy on top of that, so I don’t fit well.
A friend of mine is a tech lead at a studio that is “12 years in mobile development”. Their customers include KFC, Burger King, SAP, and Mars. I could have started such a studio. But I have not.
PHP #
Instead of that, I went into PHP 20 years ago. It was just the right thing to get a startup running in 3 months, but I stayed in that for too long.
I realized that 4 years ago when I decided to get “a real job” instead of free-lancing. PHP jobs were boring. For some reason, large companies were using just about everything else for the backend on new projects.
This is when the truth hit me. I saw it on the horizon before when other promising things were emerging: Node.js, Go, etc. But I was secure, I had my customers to which PHP was the best solution for many reasons. Yet the spotlight has moved away, and the PHP market was shrinking.
If you don’t read early signs of a technology dying, you will have to read harder signs and pay higher costs. The market for small corporate websites was killed by no-code website services. Then larger companies turned away.
A technology does not get abandoned for no reason. The reason is a poor fit. If you say that popularity does not matter if the technology fits your purpose, look closer. Something else better fits the industry requirements, so it most likely better fits yours as well.
With PHP, the problem was the standard library being an inconsistent mix of all styles you can imagine, poor typing, and hard configuration. I spent weeks fixing and configuring the linter for my last PHP job, something that comes out of the box with a typed compiled language like Go, Dart, or TypeScript.
Telling the life stage #
It’s hard to tell if an emerging technology is a brief trend or if it will dominate the field. However, at some point it becomes clear. Soon not seeing it becomes a lie to yourself. The same is with an old thing dying.
Ideally, switch when the perspective is sure. At least switch when you notice you are lying to yourself.
Actively question #
You must be proactive. Actively question “Is this still the thing?”
People around you are not interested in you leaving the technology.
Employers need you to maintain the legacy they have. Colleagues need your approval in their own fear to switch their stack. If you let things go naturally, you will end up doing a dead thing that desperately pretends to be alive, and you will have a terrible time switching if you will still be able to.
Look at the salary chart by StackOverflow:
They pay more for Objective-C to keep you from switching to Swift. The same is with keeping you from switching from Perl to Python.
A note #
You cannot just do trendy tech because it’s trendy, you will have no passion for it. There is a higher reason behind choosing your path. I like designing a system as a whole. It has a backend, a frontend, an infrastructure, and a lot of things in between. I maintain a set of skills to fully architect that.
I would miss those skills if I fully went into AI in 2005 or into mobile apps in 2006. What I miss is the flavors of those things in my work. I was choosing the flavors based on my habits and not the vision of the future. And that I regret.
5. Think of the next elimination #
This advice is similar to dying technologies, but it concerns the bigger picture. Not only the technologies come and go, but also the “models” of what you do with them. This idea is not straightforward, so I wrote a separate article on it. Please take time to read it and then continue here.
I believe that
The whole history of technology is not a history of creation but a history of elimination.
- Websites emerged not because they were cool but because they had to eliminate paper catalogs.
- Marketplaces like GetSoft.ru emerged not because we liked looking up screensavers and chat on early forums, but to eliminate the need to go and buy CDs.
- Platform stores put custom marketplaces out of business because remembering and typing “getsoft.ru” was a redundant step in getting apps that people wanted.
- Everything turned mobile not because phones are fancy, but because a larger computer was physically a burden.
- No-code websites emerged because the path from the idea to the website was too long.
Flutter is popular now, and it’s my main business. The current model of using it is that a company hires programmers or an outsource vendor, and they create, release, and maintain an app. Is this the model to invest in?
More and more often we hear about low-code and no-code solutions like FlutterFlow and AppSheet. Just by chance, I learned two of my friends were independently working on a “WordPress in Flutter” to both kill the regular small websites and generate Flutter apps more easily.
Even if the technology is not dying yet, you may be on a dead branch of its usage. It does not mean you will drown in the red ocean of Flutter agencies as I did in the red ocean of website agencies. Some achieved great success with websites then, and some will achieve great success by coding Flutter apps manually in the coming years.
It’s just that you may no longer be riding the wave but struggling to swim forward. And you may be wasting the time you could use to meet the next wave prepared.
Think of the burden your customers and users face. Know that something is out there to eliminate it. It better be your offer.
6. Do business higher in the chain #
When I was making hobby computer games in 2002, the competition was high. I had about 10 visitors per day on my website from marketplaces, and turning that into a business would be hard. Instead, I made my own marketplace for software and got 1100 visitors per day in the first year.
That was a step higher in the chain. I no longer had to compete with others but turned their competition to my advantage. I could offer all the software to choose from.
Soon I learned there was an even higher position. One guy made SoftSearch.ru, a search engine over software marketplaces. There were hundreds of marketplaces by 2004, and he leveraged them to truly have every piece of software. I was not aware of his income, but as the markets were changing and marketplaces were putting each other out of business, he would still benefit. I shut GetSoft.ru down in 2014, while he killed SoftSearch.ru only in 2019.
So it’s a pattern. Two overused examples of the pattern are Google and Uber. Instead of competing with other websites in their content, Google just took a step higher, they search over websites and benefit from their competition. Instead of just making apps for Windows Phone and iPhone, Google made their own phone. Uber took advantage of drivers’ competition instead of competing with them on the same field.
You don’t necessarily have to become a Google or an Uber in your business. Most often, the business and its aggregation require radically different skills. A marketplace is relatively simple software, while it contains true gems that may be orders of magnitude harder to make. When a piece of software sells, its authors get more revenue and recognition than the marketplace owner. You may very well be better at the business rather than trying to organize the field. Just be aware of the pattern.
Another example of a higher position is in the chain becoming an educator. There is a smart way of finding a good freelancer when you don’t have time for trial-and-error with them. Just find someone who teaches that profession with many successful students and hire that teacher for the job. That is more expensive than an average freelancer, but the success rate is higher. That’s why
In a dying market, teachers are the ones who lose their jobs last.
One of my employers was teaching how to do business in common goods and services. After that, he switched to how to teach people to teach in their favorite niches. In that second business, he made almost 4 times the revenue, because he took a step higher in the education chain.
Yet another example of an activity higher in the chain is establishing standards for your field, codes of conduct, or awards. This immediately puts you above others. I don’t think you can force that until you are excellent in your job, but be aware that at some point those steps can be the best possible developments for both you and the industry.
7. Choose science over application #
I am a guy of industry, not academia. I do things that work, based on science and common sense, but I don’t research new algorithms, theories, or principles. I don’t do studies. I do my own business until those smart guys drop me a new API to use the new goodies. And I wish I was more in their position.
This is actually a formal choice you make after a Bachelor’s degree. If you study to become a Master, that’s scientific. You cannot just code a useful thing to get a Master’s degree, you need to do your own research or make an invention that gives new ideas to the world.
I didn’t go for my Master’s degree. In my country, there was an option of an “engineer degree”, 1.5 years of applied stuff after a Bachelor’s degree, instead of 2 years of research. So I chose that, and I regret it.
My engineer diploma I chose instead of pursuing a Master’s degree.
15 years ago, going to market was easy. One could just do things right to get to the top. Think of Facebook. They did nothing new over what others were doing, except that they applied it to the domain that exploded.
Now is the age of science. The advantages of great architecture and clean code have diminished because more people do that by default. Those things are important tactically, but you can no longer rise to the top with them alone.
Instead, anyone with a grain of “magic” is immediately successful. A hundred existing services for some goal vanish when one stands out with some AI prediction or generation.
The rise of Python is a great indicator of that. It is popular primarily because it has extensive libraries for math.
Source: PYPL (PopularitY of Programming Language)
The praise of science is nothing new. 40 years ago scientists were busy with database indexing and search algorithms. A jealous programmer could be wishing they invented a good algorithm and had the best DBMS on the market. But time has passed, and those systems became merely a foundation for that programmer to build on top and do their miraculous applications. The same will happen to neural models. If you missed their development, you will just be using ready-made models to simplify your work on a higher level.
The difference is that 40 years ago science was threatening the jobs of librarians and phone operators. Now it’s cutting jobs of analytics, interpreters, designers, and assistants. Programmers are next in the line. They will not all go unemployed, but
The number of programmers required per scientist is steadily going down.
And this will continue. Science is closer to the market than ever. Soon consumers will be buying pure science. They will be using a thin client, and no one will credit its author, an applied programmer. Have you ever heard the names of the people who made the frontend for ChatGPT? No, because they are totally replaceable and likely paid the least.
No one knows who made the frontend of ChatGPT.
Also, if you are thinking of the next elimination (which you should), it’s scientists who know of it first. The search for the next elimination alone dictates choosing a career in science and then using your fruits to start revolutionary businesses.
Some eliminations originated from practice, like social networks. They were just an old technology applied to the new domain. But it’s getting progressively harder to reduce human’s burden without science.
I strongly feel like an applied guy, but that was never my factory setting. I wish I went for a Master’s degree, did a few years of research, and then decided which I liked better. From science, you can always downgrade to craftsmanship if you want. The other way around is harder.
8. Invest money not only in yourself #
My whole life it was taken for granted that programmers are in high demand and make a lot of money. So I never felt like I needed to save. As a result, at the age of 38, I only have $20'000 in banks, a 12-year-old car, and a quarter of an apartment in the country I left.
At the same time, my younger friends who barely make a living have already paid a better part of their mortgage.
This is striking to realize that 20 years have passed while I had been living “in the future” never converting it into a reality.
Put your mind on money. Take a good course in investing. Start investing. Buy a residence.
I did a good job scoring the Google Developer Experts certification, which puts me in high demand and in the realm of team leaders and CTOs. Without this single thing, most employers would prefer a 25-year-old over a 38-year-old, let alone a 48-year-old I will be in 10 years.
I was fired from my last job because they had no more contracts for my skills. They gave me a 29 days notice. Of the entire team, they kept only one youngest guy to support the existing software. I do not know their reasoning. Part of that must be that a senior is bored with support and would probably quit anyway. But it’s still a fact that only the youngest guy kept his job.
Most of the developers of my age don’t have such competitive advantages, so you must prepare for a worse scenario. With the advance of AI, no one is secure. So never treat yourself as someone special. Anything you rely on can be depleted any day. You want more than 20 grants in your pocket right now and not in your dreams.
Even worse is that after your mid-30s, the world starts to treat you as a bum without property and money. A year ago, I was refused an Australian visa on the grounds that I do not demonstrate a habit of earning and saving and have no ties to any country (no estate), so they feared I was not coming back. Then the UK visa.
That was striking because in my 20s I was easily scoring visas for the USA, France, The Netherlands, and others, with less money and property.
When you are young, you are promising to them, all doors are open for you, and this euphoria obscures the flip side of the world:
If there are doors, it’s for them to be closed to someone.
And that someone is anyone approaching their 40s who does not meet the social standard. Meet it even if just for that alone.
9. Seek a job at the IT industry leaders #
I spent about 8 years freelancing, and it gave me nothing to tell about. I made a website for one of the most reputable dentistry clinics in my city. So what?
I can’t even show it to anyone because two years later they got a yet newer one from somebody else. I have about 40 cases like that.
When you start working for an industry leader, they usually don’t pay you much, but you can grow fast there. I know folks who started from the country’s average salary and in six years got a raise to 10 times that. And they have tons of things to tell you that can secure any job for them.
No freelance job is hard enough or interesting enough for any worthy company. It’s just to sell your best years for money, nothing more.
Wish I had known that early. Instead, the early articles on the phenomenon of freelancing that I read were praising the freedom that it brings, so I never questioned the idea. In reality, the only thing that brings freedom and does not make you a wasted hobo is your own business, but that’s a whole different story.
A job in a small business is a bit more interesting than freelancing because you get some management and marketing experience, but technically it still is a monkey’s job. For instance, I was a CTO at an education company. I made a CRM and an LMS for them using technology that was mainstream for a decade. The company flourished. So what? No matter the nature of your business, to anyone else it’s just PHP + MySQL with CRUD.
Just one of the CRUD systems that made $274k in profit.
Large companies require the following skills:
- Architecture of distributed systems.
- High load.
- Transactions, managing race conditions, parallel computing.
- Request optimization, profiling.
- Auto-testing and CI/CD.
- The right ratio of refactoring and coping with some legacy.
- Being extremely careful with changes and deployment.
You get none of that in the IT department of a typical small business. But you can easily degrade from a large company’s specialist to a job in a small business if you want to.
This sole asymmetry in the requirements dictates that you should seek a job at industry leaders while you still can. And then you also get tons of things to boast about.
Another crucial reason is that in freelance and small business you typically are the most skilled programmer, so you can only learn from the internet. But learning from your colleagues is way more efficient than what you can get from reading and watching videos.
It’s just in the air. While you work, you get tons of signals you don’t pay attention to but still consume, and they become a part of you. If you are freelancing from your home, your background is dogs barking outside, which gives you nothing. But if you are in an office with skilled professionals, your background is someone discussing awesome solutions to problems you never thought existed, and it becomes part of you for free without you even asking.
Run from the places where you are the most skilled one.
The good news is that large companies often hire interns to grow them. For instance, my brother worked for Intel for two years while being a student. It’s nice to have that on your CV by the age of 24, isn’t it? After your student years, it’s harder to get that.
10. Do critical things #
A job at a large company by itself is not good enough. You can choose tons of things to work on, and they feel more or less equal, but not for your record in the long term.
For example, a criterion in the EB-1A green card program requires you to perform a critical role, which is defined as something like having a significant impact on the organization’s metrics. Even if you do cutting-edge work that requires all the skills in the world, it may not be seen as critical by an observer, because its impact can be indirect, or there could be too many people like you so your personal contribution is hard to estimate.
On the other hand, you can do critical things without touching any modern technology at all. For instance, I was lucky enough to be in charge of an authentication system in one of the companies I worked for. It was just some PHP code, but I found and fixed some critical vulnerabilities. I also helped them introduce static analysis in the CI, which reduced unexpected downtime. Those things together likely have secured an EB-1A program criterion for me (I say “likely” because when a petition is approved on the first attempt, they don’t tell you which merits they counted, but I think this one was strong).
Sure enough, you do not need to choose between “critical” and “cutting edge”, you can do both. Choose your company and duty and spend your time so that it counts towards both metrics.
When considering a position, think of how easy it would be to prove to a layperson that you were central to the success of the project even if not being any formal leader. It’s a whole different dimension of your profile than just technical excellence.
I only spent 4 years doing things I consider critical. It means 16 wasted years that did not really improve my profile, which could be 5 times more impressive.
Most of the time, the critical role opportunities just find you if you are ready. A CEO or a CTO will just call you out as happened to me multiple times. But before that, you can still actively seek them.
If I was a junior seeking a critical role, I would become an assistant to someone in authentication, or encryption, or high-load system DevOps, or query optimization. These positions rely on meticulousness more than on high experience. Generally, anything with a high cost of error will do if it can be easily explained.
11. Understand “A Message to Garcia” right #
The most important business text that I know of is A Message to Garcia by Elbert Hubbard. Take a few minutes to read it now, it’s short.
Elbert Hubbard and his most famous story. He is not the Hubbard most think of.
In just about any task I require from anyone, they ask way more questions than they should have. For a week’s job, I normally give ~2 hours of explanations of what I think should be clear from a 5-minute talk.
If you made it this far, I believe I should not expand on this, and the text will set you up right.
On the flip side, there are fanatics who do things wrong but are proud of not asking questions. This is less common though and less problematic.
I was one too. I needed to make an endpoint so the frontend could show whether some records were in the database. I anticipated that at some point they would also need the count, so I returned the count. If they ever need it, they can show it without my help. It was as simple as
<span id="088b" data-selectable-paragraph=""><span>SELECT</span> <span>COUNT</span>(<span>*</span>) <span>FROM</span> t <span>WHERE</span> something;</span>
A CTO got angry when he learned about my solution. He asked me to time that. It was under a millisecond, and I saw no problem. Then he asked me to time the following:
<span id="8164" data-selectable-paragraph=""><span>SELECT</span> <span>1</span> <span>FROM</span> t <span>WHERE</span> something LIMIT <span>1</span>;</span>
And it was 20 times faster.
Was I wrong? Not in the realm of low-load apps for small businesses where I came from and where provisioning for fast future improvements is one of the top skills, that’s why I did not even ask how to do that. What I lacked was experience in high-load systems and the context.
If you have a question, you need to be able to tell if the question is compulsory out of the habit to be told what to do, or necessary. Then you either drop it or ask it. That only comes with a deep understanding of context, which is a mixture of business needs, budget, goals, roadmaps, architecture and its limitations, backlog, external dependencies, the entire history of the code base, etc.
If you really are unsure how to do the job,
The least bothering and the most productive question you can ask is what the priorities are.
Then you derive your solutions from that. An answer could potentially save me from scanning the whole table.
The second best thing I can tell you is to be aware of the balance and to learn all of those factors listed above specifically for your project to get better at asking and at not asking.
Given that you are basically worthy and proactive,
That balance of asking and not disturbing is one of the key factors in your promotion.
12. Contribute to important open-source projects #
Open-source contributions are important for your resume, interviews, membership programs, awards, and even talent immigration programs, which all give you score for that.
My most popular open-source contribution is a feature in PHPStan, the most popular static code analyzer for PHP. This code of mine has been downloaded over 135 million times.
Download statistics for PHPStan. When my PR landed, it had about 15 million downloads.
It likely secured a criterion of the EB-1A program for me, “scientific contribution of major significance to the field”, which is ⅓ of what you need to get a green card.
To make that contribution, I had to switch to part-time work because it’s hard to spend weekends coding when you are 34. If you are in your 20s, your time is basically free and unlimited, so use it.
My most impressive but less popular contributions were the frontend for two apps for Apache ( Beam Playground, Tour of Beam) and a code editor in Flutter.
Together with some writing and speaking, they gave me the title of Google Developer Expert. From the interviews for the program, I feel like my open-source stuff was more important than my writing and speaking, but I can never be sure.
If you choose the project right, an open-source contribution is like buying the right stock early. You then just do nothing and watch millions (of downloads) counting. Like with stocks, if you miss out, at a certain age you will not meet a social standard and will be discriminated against. Unlike stocks, open-source contributions cannot go down even if the project does, because you are judged by the peak popularity of whatever you did.
As with anything else, a contribution for the sake of contribution is boring. All my open-source stuff I did because I needed it for my work. So you should pick a job with ample open-source contributions as a side effect, that’s the secret of balance that gives you a good record without extra effort.
We always aspire our packages to become hits so we are the owners of top open-source repositories (quit the project if you do not). This does not happen to most of us. My own top Flutter package is only in the top 16%, which is heartbreaking.
Do not put all your eggs into your stuff, go and help someone who is already famous. This will hedge your record against your own stuff not booming.
I only worked professionally in open-source for less than 7% of my career, and wish I did more. I know GDEs with 80% of their careers in open-source. Those opportunities exist, look for them.
13. Go insanely public #
20 years ago, it was a personal choice to become public or not. There were no social networks, no video on the Internet, and one had to write for professional magazines to get publicity. It took a lot of effort, so it was OK for a professional to stay in a shadow and not do that. To get a job, you would just write your resume in a .doc file and send it to companies. They had no other choice but to believe you and invite you for an interview.
It is no longer OK. Being public takes nearly zero effort, so if you lie low, it shows your fear, incapacity, or questionable life priorities. Even introverts must at least write articles to not cause suspicion. If you show up out of nowhere having 50 friends on Facebook, no writing, and no public records of things you did, you will have a hard time getting any decent job.
Now that everyone is public, you should be insanely public to stand out. It should be an integral part of you to write about everything you achieve, every discovery you make, and every reusable piece you release.
It should be harder for you to shut up than to speak to the world.
Write more #
I published my first technical article on September 29, 2004. It was viewed 5000 times. I felt elated. I was a 3rd year student, and already many were learning from my experience.
For some reason, I published my next article only 17 years later.
I have been writing for this blog for only two years, and I have over a hundred thousand views and hundreds of followers. Following grows exponentially because an impressive figure attracts even more. If I did not pause for 17 years, I would be a rock star by now.
I will write a dedicated story when I hit a thousand followers on Medium (UPDATE: here it is). Meanwhile, a few short tips:
- Never repeat yourself in code reviews and mentoring sessions. If you are saying anything twice, take your time and write it down and publish, then only give them links. This is the easiest way to start writing if it does not go naturally.
- Publish on all popular platforms. If you only use one, it can change the recommendation engine. You spend years building up your following, and then suddenly they are not guaranteed to see your new posts. Many platforms did that and are now mostly used has hosting for texts. Hedge against that by being everywhere.
- Follow the “author-first” principle. When choosing a job, check if the company agrees with this vision and promotes your Medium account. Some companies actually allow you to write as part of your work time and even pay extra for articles, all of that while allowing you to use your personal Medium, although they will likely not allow you to end articles with a call to subscribe to your personal Telegram or Twitter.
- Turn everything important into a text, even a visa denial. This way, there is no loss ever in your life because at worst you will have +1 text.
- Write your private diary. I learned that tip from Stephen Covey. First, your thoughts are blunt like “I went there. I did that.” In a year, you evolve to writing long philosophical stuff without noticing.
Make videos #
The top video blogs typically have 10 times more followers than top text blogs. This means we miss out greatly and virtually do not exist if we only write.
I am not good at videos. I hate rehearsing, and it normally takes at least one full test run before a decent recording. I hate the feeling that I must perform well or start a video over if I stumble. I hate pre-arranging things like opening folders and tabs for a screen recording. I hate editing because of the time it takes and because I constantly think of improvements when it’s too late to make them. Wish I could teach myself to love that and do it long ago.
Videos are way easier to make when you are younger. That’s because your time feels unlimited, and so the things I hate about video don’t apply. So don’t listen to my complaints.
I started my YouTube channel in 2011, pretty early, but then I did not do much about it. I have over 100 thousand views there, which is not bad. It is not about programming though but just about anything else.
I took courses on video and actually was not bad at videography and made 3 shorts ( one, two, three).
I even made a video course on how to shoot yourself well that covers 15 subjects from not fearing to stream to setting up camera grips, lighting, and microphone, to professional editing, and I am officially making it free starting today (but it’s in Russian).
The great advantage of text is that you can edit it at any time to perfection, unlike video. I am writing all of this before knowing the result of my green card application, then I will just update all mentions of it when I learn it. You cannot do that with video yet, but AI will soon enable us to script a video and then render it so it feels as if you recorded it. Your face, the screen, and all the actions will be perfectly timed, so all my complaints will stop applying, again. Anyway, those with a natural habit of recording and publishing will have an edge over those scripters, because of quicker thinking and experience in promoting their videos, so start soon.
I am going to make videos accompanying my future articles and catch up with the old ones.
Speak at events #
I stuttered badly when I was a kid and a teenager, so I used every opportunity to not speak. I also seem to have Asperger syndrome, which makes it harder for me to formulate things clearly in real-time. By the age when people generally have the ability to speak their minds and are more or less captivating, I was dull (that’s one of the reasons I am good at writing, it is a compensatory skill).
Then I realized I missed out on life and decided to change that. I had to work hard to get what others were enjoying from the start and take for granted.
I went from desperate fear to speaking to crowds of 2000 people twice in my life, although it was politics and not programming ( a clumsy one, a better one, both in Russian).
Me speaking at protest rallies on June 12, 2017, and May 5, 2018, both on Lenin Square in Nizhny Novgorod.
This experience is mind-blowing and liberates you in a great way.
Talking live is a whole new dimension of your life and work. You meet people in positions you would never meet otherwise. Also, the live audience forms a way sharper image of you than they would from your videos, you build stronger bonds and get more credit before they unfollow you (if they will). You are more real, and people listen to those who are real.
Speaking at conferences also gives you credit towards tons of things: membership in organizations (GDE, IEEE), score for immigration programs, and more. Also, speaking snowballs over time. Who is invited to speak? Those who did before. So get into it.
The easiest way to start speaking is to become a part-time teacher at your university where they know you. I did just that after I realized I needed a change. I asked my teacher friend to substitute her informally for a semester, and she agreed after confirming with her professor. This gave me a forgiving way to find my feet. If you ever need to feel better about yourself, just watch my first lectures ( class 1, class 2, all in Russian).
One of my first lectures ever, a class on Visual Basic 6 in Nizhny Novgorod State Technical University for the 06-ST group on March 17, 2008.
If you have a leading position or a strong technical one, it’s easy to become a speaker at some meetup. Just ask your superior how and where you can speak. I did that, he was surprised and scheduled a meetup with 2 other speakers from larger companies he had friends in, and we had 40 people in the audience.
Many managers assume programmers do not like speaking, so they do not even suggest that. It’s not something that will be bestowed upon you when they consider you ready, go and ask for it.
I regret missing out on speaking. Now that I am a GDE and get weekly invitations to international conferences and finally have free time, I will start accepting them.
14. Store everything #
Your work #
As a kid, you don’t care for the results of your work. If it was not for your parents, you would not have any of your childish drawings left. Luckily, I have this:
Then you begin to care and try to store your past work, in case you need it later or just to show off.
As an adult, you will notice you fear losing that archive as if it was a part of who you are. You question why it’s important to you. You may work through that fear and find a source of security in yourself and not in what you pile up. Then you may start caring for your archive less. You would not bother to store some bulky files or something that is hard to sort. You may even delete something on purpose to liberate yourself.
While this attitude may indicate better mental health, you later realize that it still would be fun to have things from the past preserved.
My hard disk died around the year 2000, so I can’t show you the games I made before the age of 15. My Pong clone of 1998 in QuickBASIC 4.5 is of little use to you now, but I wish I could put a screenshot here. Still, I have the next best thing, the Digger clone of 2001 in Visual Basic 5, with all gems rendered in 3DS Max:
“You have 2 rubles. You have 3 lives left. You are on the level 1. 3 monsters left” in Russian.
When you are writing your own 20-years-milestone article, try to show your early stuff, it’s cute.
Feedback #
An even more important thing to store is the feedback from your customers, colleagues, superiors, etc. If you ever need that later, it may be harder to get. A person can:
- Quit their job and lose the capacity to sign letters.
- Forget the value of your work for them.
- Become too famous and busy.
- Change all contacts.
- Die.
For instance, I made an improvement in PHPStan. It was popular and important even back then in 2020. I thought that if I ever needed to prove my work to anyone, the PR was there, so I didn’t need to bother to get more proof.
Then for my green card petition, I had to prove my contribution not to a programmer, but to an immigration officer who probably could not easily read the meaning of the PR and could not understand its impact. Not all officers make an effort to understand if you explain to them why they should arrive at a specific conclusion. Some are only satisfied with plain facts on a paper signed by someone in authority. Some are just seeking an excuse to dump you, as I have seen with the UK.
So I asked the author of PHPStan for a supporting letter to put the meaning of my job in simple words, but he said he was too busy to print and send me a paper (which was the preferred format according to my lawyer). I was devastated to hear that after tens of hours of work on this feature. But it has been 3 years. People do forget what they were feeling towards your work earlier, and they don’t owe you anything.
If you put a lot of effort and did a good job, ask for some letter on it. This request is natural if done soon after the job.
For the petition, I had to write to many public figures around PHP with two of them agreeing to confirm in writing that the feature was important and had an impact.
My request was really odd. The essence was “Hi, I am a non-primary contributor to a project you know of but not necessarily use. Its author has refused to confirm my contribution, but can you look at it and confirm it was important?”
I put it in better words but still felt miserable. Less than 10% responded, and most of them refused to even look into this. I even learned that my last letters went into spam, so some of the recipients were proactively reporting spam when seeing my emails. Things get crazy hard if someone you depend on fails you.
Don’t wait until you are forgotten. You will be.
15. Take care of your body #
This one should really go first, but then this text would feel like a cheesy new-age piece.
I am 38 now, and I have health problems.
I have scoliosis, an S-shaped curved spine. When I was a teenager, a doctor told me that my back would be aching if I didn’t correct that, but everyone feels invincible at the age of 17, so I ignored the advice.
It was still not hard to correct up until my mid-20s. But I started to care only around the age of 30. By then, it was hard. I managed to improve it from 25º to 21º in two years with yoga and massage, but the progress was so slow that I dumped it. And I wish I didn’t because by the age of 38 it’s even harder. My back hurts nearly permanently for many years now.
I can’t run because my knee hurts. It started with one-leg squatting during physical training at university. The system did not care for the health of the 17-year-olds in Russia in 2002, I was not inspected and was required to do that exercise, which resulted in aching. Later I learned that because of my muscle weakness my knees took load improperly and my knee ligaments were under increased tension.
It got worse after running. No one in my life ever showed me how to run properly. From school to university, no one cared. The teachers would just say: “Run”. I learned that my way of running was transferring hits directly to my knees. There are sports doctors who study running. They record you on a treadmill, then show you it in slow motion and explain everything you do wrong. They guide you in changing your habits so you don’t hurt yourself. If you run and even if you’re sure you’re doing it right, go see such a doctor anyway. And never trust coaches.
Ligaments never recover completely after a sprain. Each incident lowers the tolerance for the next one and hurts stronger and longer.
Now every hike is a gamble to me. The next day, my knee may start hurting, which can last for a month. It’s a miracle that I summited Elbrus without having that pain. You don’t want that.
Me on the top of Mount Elbrus on September 25, 2020.
Diet is another concern. I tried to be a vegetarian without caring if my meals contained everything the body needed to substitute meat. The first year was great. I felt pure and energized, just like the vegetarians tell you about when trying to convert you. After 2.5 years, I felt something was wrong. The elation was gone. I could easily sprain my leg or wrist with a trivial load (remember that ligaments don’t fully recover). And I had this vague feeling I lacked something but could not tell what, a sort of biological call. Then I started eating meat again. Now I wish I did not have those 2.5 years or cut them down to 6 months.
Too many of those who promote diets are imposters. They tried a diet, felt better, and then spread it as universal. The catch is that the uplift of not eating meat is a body’s defense reaction to stress and deficiency and means the opposite of what the New Age fanatics tell you. Also, there are way more things to substitute besides all 20 amino acids, but common people don’t bother studying that.
I have heard many stories of people hurt by their diet with some tissues never recovered. They became prone to specific traumas and developed chronic conditions.
I don’t have the statistics, maybe it works well for most people. Never trust those who tell you about specific cases and generalize them. However, if there are damaged lives, seek guidance from doctors with proven reputations who don’t make things up and only trust double-blind randomized controlled trials.
Vegetarianism will not save you from hell. In the best-case scenario, it will make some aspects better, while the worst cases are terrible. If in doubt, I suggest eating meat for your safety.
Things to remember:
- For each activity, there is a proper technique. If you do it improperly, you may hurt yourself in a way that can’t be recovered and will be causing permanent pain.
- Most of the people who supervise your training or say they can heal you can’t be trusted. They don’t care or don’t even know right from wrong. See the top-grade sports doctors.
- Heal what bothers you before your mid-20s. A lot of doors close after that.
- Never trust your ability to heal when you are young. This superpower will vanish. Every wrong thing you do to your body will be coming back to you after you are 30.
16. This is not holding you back #
With most of the changes described here, I knew I had to make them long before I did.
My country was always suppressing freedoms, but it turned especially bad in 2011. If I had moved then, I would long be in a better professional environment, and I would have second citizenship by now, and not in 2029. Also, Russians were much more accepted then.
But I have a strong attachment to the past. I was helping those I made websites for, even when I quit programming for 4 years. They were using my engine, so I felt I was obliged to support them. It would be rude not to.
I didn’t know then that nothing terrible happens if you shut down your business. They can replace you in days, they just don’t bother if you are available. Your words “Please find someone else for the future” do not work until say “No more” to their urgent task.
Don’t be an asshole like GoDaddy who is dumping all Russians on 19 days’ notice falling on Christmas, just when we relaxed and thought that those who wanted to collectively punish the innocent did so already in the past 22 months:
And don’t lie to your customers:
…but don’t let people exploit your attachment to your products beyond what you truly want to do for them.
Personal things are harder. For most of the past relationships in my life, I either think we can get back together if she changes, or I just want to be around to help if she gets in trouble. So I stay in the city and then naturally find someone else there, and it goes over again.
Then also I had a favorite masseur. And an amazing yoga teacher I still can’t replace after 9 years.
That’s only the things I realize, and there must be tons of subconscious micro-attachments to food, parks, streets, approvals, etc.
When I went to the university which is not even in the world’s Top-1500 but was 15 minutes walk from my home, it probably was the most impactful mistake in my life given the butterfly effect. It’s true that in 2002 it was hard to get any information or a role model I knew personally, but it’s also true that some did move.
That’s the worst thing. It’s not “Oh, I wish I could, but it’s holding me back”. It’s a subconscious block to look around and to even recognize that something is sub-optimal.
That’s why people suggest exercising changes just for the sake of changes, like going to another town for the weekend once a month, trying new dishes, etc. It may make larger changes simpler, or it may be just another trick instead of making important changes right away.
When you say you are working through some attachments, it is the attachment to the idea of the need to prepare that’s talking.
For every change, I was always in the state of preparing for it. I needed to get a few more things done before making it, which was a lie.
I was never more prepared than on the day before. Every year I realized that the last year’s attachments were just lame excuses compared to what I have now. And then the next year I would develop even stronger ones and had even more reasons to not change things.
It took the war to move me on. And now that my world did not collapse I understand how pitiful and miserable those excuses were.
If you had a similar shock in your life and you still did not change what you were planning to, chances are, you will never do it when the stress is lower if you don’t confront the lies.
I suggest you confront the lies and do what you want now.
The shot I consider the best in my life, Lisbon, January 2015.
That’s it, 16 pieces of advice and not 20, I don’t like the number magic.
Is speedrun really possible? #
OK, how do you make in 5 years what took 20?
I planned to write that the youngest GDE I know was awarded at the age of 23, and that is the ground for my estimate. But then something mind-blowing happened.
On a Flutter call, I met Aila McPhail. She and her sister Sumay launched an online school for kids two years ago when they were 9 and 12 years old. They have over 1500 followers on Twitter now (I have 41), and their school has served over 500 students. They live in Falls Church, a town with a population of under 15 thousand.
Photo: McPhail Family
Sumay has 4 years to go until she is old enough to apply for the Google Developer Expert title, but she already talks to top managers of the Flutter team in virtual meetings. Aila has 7 years to go to GDE, but she expresses her thoughts like an adult, and only her pitch and the video give out her age.
I started coding at the age of 11, too. And I started wasting my time long before 18. Those girls did better. And you can, too!
The Green Card #
If you are here for the information on the green card through the extraordinary ability program, I can’t tell you much now. My petition was approved just 8 days ago, and it’s still a few months of paperwork and waiting until I get the actual green card.
Subscribe here and follow my Telegram channel: ainkin_com
I will post almost the entire petition text there in a few months when this is complete. Also, you will never miss a story of mine.