Home About Me

Coding Career Switches: The Non-Technical Questions People Keep Asking

Before anything else: people get to choose their own lives. If someone wants to do something brilliant, reckless, lucrative, or completely questionable, that is still their choice—as long as they are willing to live with the consequences.

So this is not a manifesto telling people whether they should switch into tech. The decision is personal. What this does try to do is clear up some bad assumptions that keep circulating, because a lot of people end up making big decisions based on repeated myths.

“Am I suited for computer science?”

Honestly, this question is annoying mostly because people rarely ask it about other jobs. Nobody keeps agonizing over whether they are “suited” to accounting, mining, or pig farming. But the moment computer science comes up, suddenly everyone wants a personality test.

If you like it, you can learn it. If you do not like it but need a better job, you can still learn it. If you truly cannot get through it, then maybe stop. It is a line of work, not a sacred calling.

Treat it like any other trade. You can learn enough basics to get started, just like someone can learn enough to feed pigs. If you want to become an expert, that takes far more time and effort.

The practical reality is simple: right now, the entry-level pay for this particular pig is still relatively high, and higher than in many other industries.

“What if my math is bad?”

Outside of university math-heavy coursework, it is hard to say that computer science broadly requires much math for most people. In years of work, I have rarely run into problems that needed mathematical problem-solving on the job, unless we are talking specifically about data science.

If your middle or high school math scores were consistently below passing, then yes, it is worth being cautious—but not because weak math automatically means you cannot learn CS. It may mean your general study habits, learning strategy, or test-taking ability need work. That matters, because getting into the field often still involves grinding through technical exercises and interview questions.

There is also the very common case where someone thinks they are “bad at math” when the real problem was bad teaching. I once saw a large undergraduate math class of roughly 200 students split in half after the first semester. About 100 students got reassigned to a different teacher. By the end of the next term, the reassigned group scored fairly evenly 10–20 points lower than the students who stayed with the original teacher—but still did better than the new teacher’s other classes. That was very obviously a teaching problem.

So unless you struggle with basic arithmetic or extremely elementary math, there is usually no reason to panic about switching into tech because of math. And if someone insists on arguing that poor math must mean poor logic and therefore no future in CS, then frankly the logical thinking problem may be theirs.

Search skills matter more than you think

Bad math does not necessarily block you from learning CS. Bad search skills absolutely can.

A huge chunk of programming work is still some variation of searching for a solution, reading discussions, and adapting examples. A lot of people joke that programmers live on Stack Overflow and copy-paste. That joke exists for a reason.

The problem is that internet habits have changed. Some people grew up during the expansion of search engines: if something happened in the wider world, you searched Google; if it was local, you searched Baidu; if it was personal drama, you dug through forums. A lot of newer internet users seem to default to social platforms for everything.

Even if you prefer social platforms—which, in my opinion, are a much less efficient way to gather information—you should still read existing posts before asking basic questions. People have already written detailed accounts of their backgrounds, whether they started from zero, how long they studied, which courses they took, how they found projects or internships, and how they job hunted. Read a few of those and you should at least get a rough sense of the difficulty and the learning path.

Yet people still show up asking, “How exactly should I switch into tech?” How would a stranger know that for you? The same thing happens with immigration or relocation paths: someone writes thousands of words summarizing routes and requirements, and another person ignores all of it just to ask, “Do I need English?”

If you cannot or will not search, learning CS is going to be much harder.

“Can I still switch if I studied something else?”

Yes. Students who major in CS at university are just people who happened to choose it right after high school.

That is all.

“I failed C in college. Is that a bad sign?”

Maybe not.

  1. Try Python.
  2. C is not a beginner-friendly language.
  3. Programming ability and exam scores are not tightly correlated.

A bad grade in one class does not automatically predict your ceiling.

“I can’t compete with people who studied CS formally”

This fear shows up constantly, and it is understandable. But it helps to look at it from two angles.

First, people do not all start from the same place. The most useful comparison is often your past self, not someone with an entirely different background. If your current field has poor job prospects or poor pay, then even an imperfect switch can still be a major upgrade.

There are people who came from vocational backgrounds, self-studied or joined training programs, and were perfectly happy getting 5–6k RMB for a first job because their original field barely offered employment. After gaining some experience and switching jobs, it might take them one to three years to reach the compensation level of a decent CS graduate from a stronger university. Even so, their career outlook may already be far better than that of their former classmates in their original major.

Second, formal CS students do have an advantage—but usually not as much as people imagine. Many people picture the best-case version: the student who understood the field early, worked hard, built depth, and caught the industry during a growth phase.

In reality, even graduates from elite CS programs can become surprisingly uncompetitive after three to five years if they have no sense of career direction and no real interest in improving technically. I have seen resumes from well-known schools where the person did not even understand basic resume conventions, and nothing in their work history suggested what path they wanted to pursue. In one case, that person had five years of experience and still performed worse in interviews than another candidate from a far less prestigious school.

Of course, if someone graduates from a top CS program and also keeps working hard, then yes, they will have an edge over most career-switchers. That is normal.

But most people do not switch into tech because they expect to become the absolute best in the field overnight. They just want a better job. It makes no sense to decide, after barely learning the basics, that because you are not going to beat the strongest professionals in the country, you might as well quit.

When you need motivation, look at people stronger than you. When you need confidence, compare yourself to people making worse decisions. Just do not confuse inspiration with a realistic benchmark for your own life.

The mindset shift many career-switchers struggle with

There is a pattern I have seen repeatedly. Some people make a mistake while coding and become deeply upset: they think they failed, wasted time, and proved they are not cut out for this.

That mindset often comes from exam-oriented learning. In a test-driven system, you practice a type of problem several times and expect to get it right next time. Coding work does not function like that. A lot of software development is debugging, fixing, testing, and validating over and over until the output becomes stable.

So if you spent several hours solving one problem and then look back thinking, “This was so simple—how did I not understand it? What a waste of time,” that is the wrong conclusion.

You did not waste several hours. You spent several hours learning a concept and, more importantly, learning a way to approach that kind of problem.

From what I have seen among people who successfully switched into programming, the biggest requirements are:

  • learn a lot,
  • ask questions,
  • talk to other people,
  • and keep adjusting your study methods.

The people most likely to fail are often the ones who stay stuck in indecision, or the ones who grind in isolation without shifting their mindset toward problem-solving. Those people hit setbacks and immediately turn them into evidence against themselves.

A practical way to learn without psyching yourself out

A lot of people see advanced math or theory and immediately shut down, then conclude: “I’m just bad at this.”

Sometimes the problem is not the theory itself, but the fact that you have no idea what it is for. Trying to force yourself to understand abstract ideas without any application in mind can make them feel needlessly impossible.

For example, if someone dropped a CNN algorithm in front of me cold, I would probably feel overwhelmed too. But if I first know that it can be used for facial recognition, then I at least have a rough idea of what the thing is meant to do. From there, I can start asking how facial recognition works: maybe you break down a large image, compare patterns, and move step by step from the practical task toward the underlying logic. That makes the core idea of the algorithm much easier to grasp.

And if I do not work in AI, I may not even need to go much deeper than that.

For a non-specialist trying to understand a technology quickly, this top-down route can be much easier psychologically. That does not mean bottom-up learning—from fundamentals toward application—is wrong. It is not. But top-down learning can sometimes help break through a mental block. And when one direction stops working, switching directions can suddenly make the theory click.

That sounds easy in theory and is not always easy in practice. I do not always manage it either. Still, it helps to remember that changing your approach is often more useful than immediately deciding you are the problem.

About the social environment for women

I strongly disagree with the claim that women should switch into coding because the environment abroad is friendly, while the domestic environment is not.

The problem is not that this one industry is unfriendly to women. The problem is that almost every industry is.

If you follow the logic that women should avoid fields with gender bias, then women should be cautious about architecture because construction is unfriendly; cautious about teaching because some employers say they want more male teachers; cautious about finance because finance is unfriendly; and so on. At that point, what exactly is left that women do not need to think twice about?

In the world as it currently exists, an industry with no discrimination against women is very likely an industry that gets looked down on as a whole.

And the idea that workplaces abroad are “friendly” to women is only true in a relative sense. Gender discrimination may move from open to hidden rather than disappear. One example often cited is research showing that women’s code was rated more favorably than men’s code—until reviewers knew the coder was a woman: https://www.sciencealert.com/women-s-code-found-to-be-better-than-men-s-but-is-rejected-unless-they-hide-their-gender

The degree varies, but the problem is still there.

So if women are going to face structural nonsense in all sorts of industries anyway, why not choose one that at least pays well? Becoming an outstanding engineer is not easy, but plenty of people in this field are simply making a living. More women should feel free to come make a living here too. Whether you become exceptional can be dealt with later. First, get food into your own bowl.

DA/DS or SDE?

If you are trying to decide between data roles and software engineering, one rough way to think about it is this:

If you already have some experience in a particular industry and want to keep working in that area but in a more technical capacity, then DA/DS can make sense. In my view, it is hard to be good at data analysis or data science if you do not understand the actual business context.

If you do not have that kind of domain experience, or you want to escape a terrible industry entirely, SDE is probably the better bet.

Data analyst and data scientist roles were incredibly hot for several years, so many people trying to enter tech targeted DA as the easiest entry point. At the same time, math and statistics pipelines have also produced a large pool of PhDs aiming for DS roles. But DS output is often harder to measure, and not that many organizations can afford to hire and sustain those teams.

Software engineering demand, on the other hand, has grown more steadily. You may see plenty of “humanities-to-tech” stories, but the broader trend has been tech integrating with traditional industries. The total market has expanded.

And even if DS continues to thrive, DS still needs SDE support.

When everyone else is running to the gold rush, sometimes the better business is selling jeans to the miners.

One last reality check about difficulty

Some people hear encouraging stories about career switches and jump straight to, “Are you saying switching into tech is easy?” That is just poor reading comprehension.

No new discipline is easy. Plenty of other credentials and professions demand long, intense study: CFA exams can easily take a year and a half or more, and other major professional exams also require concentrated effort. So why do people assume tech should be different—that three months of training ought to guarantee a job?

Yes, there are cases where people self-studied obsessively for three months and managed to land a role. They do exist. But they are not the majority. From what I have seen, most people should prepare themselves for six months to a year of learning plus interview preparation.

That does not mean you should give up. It means you should make decisions with a clear sense of tradeoffs, priorities, and the logic behind what you are seeing. Do not believe every rumor immediately, but do not stay trapped in endless hesitation either.

And if you are still looking for a simple, universal answer to whether you personally should switch into tech, there probably is not one.