A long introduction
This is the first "opinion blog post" on my page. I made up this self reflection after a string of interviews for some senior positions, and also after reading this awesome blog Advice From a Software Engineer With 8 Years of Experience | by Benoit Ruiz | Better Programming
I think software engineers in Vietnam have a unique challenge with salary, which demands some dramatic career paths. Now, if you disagree on how expensive the cost of living in Vietnam is, I provide some evidence to give some insight into this issue:
- House prices average nearly 24 times annual household income - VnExpress International
- The Consumer Price Index in Việt Nam, within the last 12 months rises to 4.13% according to the Department of Statistics, Vietnamese government. For the same period, it is 2.9% in the States.
- Current average monthly salary of a C++ developer in Vietnam stands at around $1400 by this report, while Numbeo reports cost of livings in Vietnam as per month is 41 mil VND, or $1600. Crazy isn't it?
Of course, there are other aspects of achieving career goals one should not forgo such as time with family, work environment, social contributions, character growth, benefit packages, etc. But let's just say my career path goal is only about getting the highest income as fast as possible. And I think many of my colleagues share the same rush like me as well — it is a race to get into a competitive career and get enough salary before things could get too expensive.
This blog is my reflection on the choices and whether I could have done something better to achieve the financial target. There is one spoiler ahead: the reward only comes after genuine effort.
Rapid switching companies is ok, but only after learning rapidly...
Bosses definitely want commitment. Companies often expect people to stay for at least three more years, and they usually say the first six months are just for training. It’s widely accepted that learning on the job takes time—but “taking time” can be the problem.
Unfortunately, I’ve had several setbacks in my career that cut my learning short. My first company shut down its 5G project one year after I joined. At my second company, a mix of unhappy events and a laid-back environment led me to leave after nearly two years.
Here’s the take-home lesson: even if you plan to stay long at a company and enjoy a slow-paced learning curve, the unexpected can still happen. Whether you choose to switch jobs for a 2x salary boost or have to leave for other reasons, learn and gain experience as if tomorrow is your next interview.
Know your core...
There are basically two types of questions in an interview: “What did you do in your last job?” and “Can you code this problem?” The first focuses on experience, while the second tests core knowledge. In this section, I’ll talk about core knowledge.
The median salary for a C++ developer with four years of experience is around $1,400 per month. For that salary range in Vietnam, interviewers asked questions about basic core programming concepts such as memory alignment, memory leaks, lvalues, the Rule of Five, and threading.
They started with very basic questions and only moved to more advanced ones after I answered the basics clearly. To their credit, they were professional and didn’t turn the interview into a battle or a marathon designed to block me from a higher pay grade.
That said, I’ve also failed other interviews miserably on similar questions. Interviewers often consider these topics critical—so having only superficial knowledge is almost the same as knowing nothing.
My lesson: never neglect the fundamentals. Master clean, lean code before diving into fancy algorithms or new tech stacks. Every salary level comes with an expectation of core knowledge. And here’s the deal-breaker: knowing a little is the same as knowing nothing.
Experience is no substitute for extra learning
I must admit, I’ve had very limited experience with multi-threaded programming and have never troubleshot multi-process issues. The products I worked on were so well-designed that race conditions were almost nonexistent. New features could be implemented on a well-structured system without requiring developers like me to understand every detail. Being confident after four years of experience—without extra learning—hit hard during interviews for the reasons above.
That’s why reading a few good books is critical for a developer’s career. They help fill the knowledge gaps left by day-to-day work. Here are some of my favorite picks for strengthening my C++ development skills.
- C++ Concurrency In Actions Practical Multithreading by Anthony Williams
- Effective Modern C++ by Scott Meyers
- The Linux Programming Interface by Micheal Kerrisk.
From the last interview experience, I think some solid knowledge earned from the book could possibly break salary above $1600. Again, this is Vietnam, 2024.
Choosing C++ for a start
I can’t express how lucky I am to have started my career as a C++ developer. Having a solid foundation in C++ made learning other programming languages much easier. C++ often feels cumbersome because it requires developers to manage memory and handle many low-level details, while other languages simplify these steps with convenient syntax. But that convenience comes with a trade-off: you risk losing a strong foundation in programming.
Choosing suitable techs to learn
There’s a fine line between what counts as core knowledge and what qualifies as advanced knowledge.
For some employers, familiarity with framework XYZ, version n, is a must. For others, it barely matters. I once interviewed for an automotive project where they didn’t ask a single question about AUTOSAR or the Android Framework. But in another interview for a 5G developer role, they focused entirely on 3GPP specifications.
Choosing whether to learn AUTOSAR, 5G, security, or framework XYZ is a big decision. It could shape your career. It might become your unique selling point—or simply the ticket that gets you an interview.
Here’s the reality: for everything you learn, there’s a syllabus—but in this case, you design it yourself. Stay focused on your assigned tasks and figure out the knowledge required to get the job done. Or better yet, talk to your team lead and colleagues for guidance.
Algorithm should be a favorite snack
Very few companies in Vietnam ask about algorithms—and when they do, the questions are usually easy. But the ones that ask medium or hard questions tend to pay very well. Most of these companies, from what I know, develop trading tools.
Practicing algorithms is like physical exercise: there’s no shortcut or bootcamp that can replace consistent effort. It takes perseverance. Start early and stay committed to your goals. The reward is real—after solving 300 problems, or 1,000, or more, you’ll feel the difference. The only frustrating part is realizing you need double your current income now, but mastering algorithms might take another four years.
Start early, talk often.
Talk often
I ended the last section with the phrase “talk often,” and I want to use it as the conclusion for this blog.
A career in tech is challenging. The money is hard-earned. The journey can feel tedious. But you’re not alone—you have friends.
Honestly, I don’t think I could follow all the suggestions I’ve written here over the next four years. That’s why connections matter. They can become your mentors, your learning partners, or even your future bosses. They can also help relieve stress—sometimes by simply telling you not to waste time on a certain book.
One thing is certain: others have already learned what you’re trying to learn. You can tap into that knowledge.