By chance, I managed at my 15 to get a job where I did some HTML pages and later some PHP programming. Making websites wasn't as fun as making games in C++. Overall PHP didn't seem as fun as C++. I made all of my lab projects at the university in C++ with Qt, or wxWidgets or bare WinAPI. In fact, I improved the university the internal testing system on our Math/Physics faculty. I got a privilege to do labs in C++ & Qt even when they were supposed to be C#. Also, in the university I came across Linux and never came back.
Nevertheless, I couldn't get a position as C++ programmer and stuck in web development for 15 years. I focused on backend and took care the systems reliability where I could apply my passion about systems programming. I took all of the possible challenges related to the performance and reliability. In fact, it was awesome making graphs with Graphviz or plots/heatmaps in Grafana to troubleshoot the system. Lucky me, the industry turned to compiling languages. I switched from PHP/Python to Go/Rust and even C++. This brought me to AWS in Ireland, where I was working on the video streaming protocol.
However, during my spare time I always worked on some graphical apps. Even now, I create a GUI app without a GUI toolkit. It's particularly fun working on the text rendering and interactions.
I lost the job 1.5 years ago. I reflected that I want to try graphics programming or regret in the end of the life. I took my time to improve my knowledge in the area. Initially, I had a goal to make a clone of Space Invaders without any library. It took me to learn a fair bit of theory about the graphics stack on Linux. In addition, I had to improve my debugging skills (script-driven debugging in GDB is awesome) and data-oriented design. As a result, I missed my deadline and switched to SDL. That helped me complete the game. Of cause I wanted to share the game with my friends who are either on Windows or MacOSX. I learned how to port an SDL app from Linux to Windows. Wine helped a lot with testing. As MacOSX is closed platform, I decided to make a web version of the game based Emscripten.
Based on the requirements from a few positions, I realized that having a few small projects including that clone of Space Invaders, experience in programming high-loaded distributed systems with a track of performance wins doesn't seem good enough for a Junior position from the graphics programming field. In addition, most of the positions implies that you work on Windows.
Given all of the that, the question "How does a backend developer switch to a graphics programmer?" converts into three questions.
1. What are the possible roles which involve graphics programming? I'm aware only of the following: game engine programmer and technical artist. However, I assume there are programmers who work on GUI app like CAD systems, GIS, video processing tools, tools developers. What are the titles I can lookup? Nowadays, a GUI programmer is the programmer who makes dynamic HTML pages in JavaScript.
2. What kind of project I need complete to be able to contribute to graphics software? To be precise, I created a plugin for UE4 for inverse kinematics, an app to visualize a Flamegraph based on Xlib, that clone of Space Invaders, currently working on a calendar GUI app based on SDL. I watched some interviews of game engine programmers who said that a ray tracer is a must-have. However, I assume that different roles in graphics programming require different staff. Also, I know about Handmade Hero. The author says that he would give enough material to make you to contribute to a game engine code.
3. The question is perhaps for an HR. Nevertheless, there is no crime in hope. What should be in the CV given that I'm an experienced backend developer? Do I include the projects I worked on my spare time to show my competence?