Career Advice for Beginner Programmers

A 20-year veteran C/C++/Python/Go/TypeScript developer shares blunt, practical career advice for new programmers covering money, employer relations, professionalism, side projects, and dealing with critics.

I have been a professional developer (meaning "for a salary, and not getting fired for long stretches") in C/C++/Python/Go/TypeScript/PHP for about 20 years. I'm not a career superstar, but I love what I do. I need to share some thoughts about this field — simple, but valuable because they are surprisingly often overlooked.

1. Capitalism and Money

We live under capitalism — remember this under the weight of corporate or government propaganda. It follows that money is fundamental. There is nothing shameful about operating with it in your goals, speech, and thoughts, just like anything else. Capitalism is simply a format of relationships, a format of agreements. Since it's officially established, use it. Questions about salary, money, bonuses, and overtime are not "embarrassing" — they are basic and primitive, like sleeping.

2. The Nature of the Employer-Employee Relationship

Your employer usually doesn't "love" or "respect" you — they need you to make money. Gyms, fancy offices, and cookies exist so they can pay you less while you look around less often. Don't believe stories about professional growth, "we're a family" culture, support, and development. Believe only two things: (A) how interesting the field is to you, and (B) your salary (excluding bonuses). And obviously, there are unpleasant people you might not get along with — you can't know in advance, you'll just leave for people you do work well with.

3. Don't Believe Promises About Growth

Salary reviews, performance reviews, help with professional growth, salary indexation — don't take any of this seriously. It usually won't happen, even if they said it out loud. Talking is free. The goal is to get you in the door, and then the office cookies will stop you from leaving. It has never been scientifically proven that in most cases income grows faster from staying than from changing jobs. Don't think of your employer as a liar if they don't index your salary, promote you to boss, or give you 700k/sec bonuses. This was never intended, even if they said otherwise. Words don't work — only the employment contract does. Read it: there are letters on paper and signatures.

4. Corporations Aren't Evil — They Follow Their Nature

Everything above doesn't mean corporations are bad. What's wrong with following their primary goal of making money? In the entire history of programming, increasing a programmer's pay has never once made them smarter, more disciplined, or more productive. Paying money is unprofitable — it only makes the money pile smaller, which directly contradicts the goals of a commercial enterprise. Employers and corporations are good because they are money-making machines and they took you in, which is already cool. And if you understand how this machine makes money and help it do so better, they might even share with you. But here you need to decide that you want to go into management, get an MBA, deal with finance, and ride a Bentley — but you'll have to forget C++, because sometimes making money means firing 500 people, not writing code.

5. Professionalism Means Delivering on Time

Professionalism at work means delivering the product on time. The most valuable thing is time. You were hired not for research, but to deliver results by the deadline your boss agreed on with the client. Sometimes for research, but they'll tell you that separately three times. The client doesn't need the result later, because later the client loses to whoever they wanted to use your result against. A professional can deliver a working result on time — all other professional qualities are SECONDARY. Yes, it's even secondary that the result is rough. If a worker delivers results late but with excellent quality, that's an "artisan," an artist and creator whose place is under a fence with a bottle of vodka, where bohemians usually lie around. A professional "knows versions" — they can gather all improvement ideas into a pile for the next iteration rather than jumping to implement those improvements right now, derailing the on-time delivery. The ability to do what was agreed upon, recognizing all the shortcomings of what was agreed versus what "could have been, if only" — that's the main thing.

6. The Value of Speed in Programming

Programming is psychologically rewarding because of the short distance between concept and result. You don't have time to get bored like waiting from a reinforced concrete building project to the finished facade three years later. Even electronics guys have it worse — you can't quickly redo a circuit board. But here — boom, recompiled. The only question is whether you know touch typing, and considering that most people already do because they've been arguing in comment sections for years, it comes down to thinking speed and whether you got enough sleep. So value this speed — not everywhere else do such opportunities exist!

7. A Programmer's Career Doesn't Have to Lead to Management

It's a mistake to think that a programmer's career means growing into management. Being a team lead means endless calls and degradation, parades and drinking parties. Most often, a promotion to team lead at your company will be less profitable salary-wise than simply moving to another company at your current role. The world doesn't remember the names of great team leads, but the world remembers the names of great developers — Torvalds, who tinkers with code into old age; FFmpeg creator Fabrice Bellard, who besides FFmpeg built a mountain of other cool things; or the recently mentioned on Habr Georgi Gerganov. Yes, the world remembers Steve Jobs and Bill Gates, but those aren't team leads — that's a somewhat more powerful and tougher breed.

8. Create Personal Projects If You Find Programming Interesting

If you didn't go into management, didn't enroll in the Higher School of Economics to learn to make big money, it means you find programming interesting. Then unlock the full potential of that interest. Build something that interests you rather than just warming a chair in the office as a senior/mid to pay your mortgage. Make pet projects without paying attention to what's trending. Projects should help you understand something better. Important — bring them to a working state (with closed source) — for example a working website with a game, or a working repo on GitHub (open source). A pet project must end with a working result (of any quality), just like work, otherwise you're not a professional and you don't respect the project or your labor. Use the semantics of the word "project" as "projection onto a timeline" — a project must have a goal in the form of "it works." And if your pet project started as an attempt to understand how something works, but in the end nothing works, you missed your own goal, which is embarrassing.

9. There Are No Quick Results

There are no quick results like "boom" — drank a lot of coffee and coded a genius creation overnight. Being able to break a task into a huge number of stages and methodically complete them — that's superb.

10. Criticism and "Reinventing the Wheel"

You shouldn't take seriously the whiners who say "you're reinventing the wheel, it's unnecessary." First, you never offered it to them; second, they couldn't even manage that much themselves. You absolutely must be able to throw stinking filth, crudely mocking anyone who tries to do that to you — balancing stupid criticism is important. You need to actively sling mud at the authors of bad criticism, which is the majority. You need to value the authors of good criticism, who are few. Distinguishing good criticism from bad is essential. Good criticism isn't the kind you like — it comes from authors of several working pet projects. "First achieve something yourself" wasn't trolling — this phrase is hated by armchair warriors fighting bicycles and wannabe innovators. Someone who has made their own working thing will never climb on an armored car with such stupid criticism.

A terrible secret: most successful businesses, projects, and startups are "reinvented wheels." But made better than the competitor, and that's what makes them valuable. Every new successful business is some old one where the customer's resources were saved. Moreover, making something that's NOT a reinvention is very stupid! Because if there are no competitors in some field (after so many years of trial and error from various businesses), it means that field is definitely useless to anyone — there's no demand. Reinvented wheels rule! Make your own programming languages, your own encryption algorithms, your own messengers, your own social networks, your own games, your own 3D engines, and keep a shovel in a barrel of manure ready to skillfully scatter the substance at momma's-boy critics.

If you invented your own encryption algorithm and someone suffered because of it — not your problem; don't try to save the world. You're not the first person someone suffered from; life is cruel, let them cry. Don't hold back in your expressions: troll and humiliate stupid critics, drive them to psychosis and depression, because they cause enormous harm to the motivation of inquisitive minds and people who are trying, with all their faults, to build at least something. Those who want to talk are many; those trying to build are very few; those who build something that at least sort of starts up are rare individuals. What's really needed and what isn't will be shown by the market, not by screams from couches by those who never even made it to the market with their own product.

11. Pet Projects Are Necessary for Everyone

Even if you went into management and graduated from the Higher School of Economics and already ride to the office in a Bentley in a suit, you still need to do pet projects! They'll just be business pet projects where the goal is revenue. You can't live and not undertake anything. Taking initiative is vitally necessary because your employer most likely won't get around to proactively serving you something on a silver platter that will develop you. You'll have to respect yourself enough to find it on your own.