2026-03-27 22:00:07
諏訪子
rant
gamedev
embedded

【Programming】Why I Love Graphics and Embedded Programming

I had been thinking about writing this article many times, but I struggled with choosing my words carefully so as not to give an overly biased or negative impression toward web development or smartphone application development.
This is yet another attempt at writing it, and I hope I can finally publish it this time.

After working as a full-time web developer for 19 years, last month became my final day as a web developer.
I had already quit as a free agent last year, but since I had no income yet as a business owner, I had no choice but to continue doing web development work to cover living expenses.
As a business owner, I still have no independent income because the game is still under development.

However, due to the company's organizational restructuring and resulting dismissal, this event has accelerated my goal of working in a field that I truly enjoy.
Because of this, I have decided to temporarily pause the ongoing Space Invaders tutorial series, lock my Microsoft GitHub repository, slow down blog article writing, and make job hunting my top priority.
And I have made up my mind that I will never do web development work again.
The only occasion I will do web development from now on is for maintenance of Little Beast.

Job hunting throughout March was truly hell.
No matter how good my portfolio was, no matter how well-written my articles were, and no matter how much provable experience I had, I kept getting rejected everywhere.
I started to think that none of these things were being valued at all, and I almost went back to web development.
But starting this week, the number of companies that suddenly wanted to interview me increased dramatically.
That's when I realized that there was nothing wrong with my experience or portfolio.
The problem was simply that it was the time of year when companies prioritize new graduates, so job changers like me were completely put on the back burner.
It's quite rude, but that's just how the world works.

In this article, I will talk about the areas of programming that I love working in and the reasons why.

Areas of Programming

Not all engineers are made equal.
Each programming domain has its own unique position within the industry.
The areas I have covered a lot so far include web development, game development, and desktop development.
There are also mobile development and embedded development, which I haven't covered enough, OS development and compiler development that are often overlooked, and brand new fields like AI development.

Each domain has many sub-domains as well.
For example, game developers include gameplay programmers, engine programmers, graphics programmers, AI programmers (here meaning NPCs, not LLMs), and so on.
In web development, there are backend programmers, frontend programmers, security programmers, and so on.
In embedded systems, there are microcontroller programmers, application programmers, robot programmers, vehicle programmers, and so on.
For other areas, I won't touch on them because I don't want to judge fields where I don't have sufficient experience myself.

Low-Level Understanding

Those who have been reading this blog for a while probably already know this, but I love low-level engineering and really dislike heavy abstraction.
Web development, especially modern web development, is full of extremely high-level abstractions.
I genuinely want to understand what the computer is actually doing and how it is working.
In my 19 years of programming life, I have tried almost every area except AI development.
I have built games, websites, electronic projects, operating systems, kernels, mobile applications, server daemons, desktop programs and tools, game engines, web frameworks, libraries, and more.
The only things I haven't touched are LLMs and blockchain.
Through all this, I was able to evaluate what I enjoy the most.

The answer is: graphics, physics simulation, and electronics/embedded systems.
They share the following common points:

  1. All of them require mathematics
  2. All of them require low-level understanding
  3. They are knowledge that many new-generation developers will never touch in their lifetime
  4. All of them are extremely rewarding and make you feel like a genius
  5. They are more customer-oriented than business-oriented
  6. These are the areas where you can do the coolest things among the three sub-domains

This is an ironic story.
Because during my school days I hated mathematics, and that aversion continued for more than 10 years even after I dropped out.
But now that I have actually experienced graphics, physics, and electronics, I have come to love mathematics.

In the end, every programming domain and sub-domain gives a certain sense of accomplishment when you achieve something.
However, there is nothing that makes me feel like a real winner quite like accomplishing something cool in these three fields.

I have explained the reasons why I love these fields through the common points above.
Now, let's dive a little deeper into each individual field.

Graphics

To be honest, computer graphics (CG) is extremely difficult and is usually the hardest part of game development.
But once you become able to draw something on the screen, you can do incredibly cool things, you immediately want to share it with everyone, and you can't stop talking about it for weeks.
Graphics programming is what truly turned my hatred of mathematics into genuine love.
Also, if graphics can make mathematics this much fun, I wondered why schools don't connect math classes with graphics programming.

Especially now that modern graphics APIs like Vulkan and DirectX 12 are available, learning how the GPU works has become easier than ever before.

Physics Simulation

Physics simulation is, unfortunately, one of the fields that has been pushed aside the most in recent years.
Major game engines like Unreal Engine and Unity come with physics engines built-in from the start, and even when making your own game engine, many developers end up using existing libraries such as Bullet Physics SDK or PhysX.
This is unfortunate.
Because creating a physics simulation myself was incredibly enjoyable for me.
Especially, watching the graphics and physics interact through code I wrote myself was the most fun.

It was so enjoyable that it made me want to learn calculus, which most people avoid.
When creating a physics engine, that is the only time you truly need to understand calculus.

Electronics / Embedded Systems

Electronics is the most recent field I have experienced.
In January, I started self-studying with an STM32 Nucleo board for the first time.
After that, I attended Win School, where I first used the STM32 Discovery and Arduino, and graduated after one month.
Currently, I am taking a CAN communication course, using the same boards to make multiple boards work together to simulate a functioning vehicle.
At first I was controlling robots, but now I'm working on vehicles.
Just reading about it sounds cool, but actually experiencing it yourself is incredibly fun!

Roadmap

The next two years are going to be very busy.
I am in the middle of job hunting again, but I also have many certifications planned.
Since I love graphics, physics, and embedded systems, I decided to obtain certifications in these fields.
This is something I never even considered during my web development days.

These certifications are a mix of domestic and international ones.
The international ones include C++ Institute (CLA, CPA, CLP, CPP) and ARM Embedded Systems Essentials.
The domestic ones include Win School's embedded development (already completed), CAN communication (currently in progress), GC-ARTS (GC Engineer and Image Processing Engineer), and ETEC (Level 2 and Level 1).
I plan to acquire them gradually throughout 2026 and 2027.
I also hope to use these certifications to further increase the credibility when providing tutorial series on this blog.
Therefore, my motivation to obtain these certifications is high, regardless of whether I actually use them in a full-time job.
Even if I don't use them in a regular employee position, I will use them at 076 Studio.

That's all