I've been a Software Engineer at a medium sized Canadian company for almost 4 years now. It was my first job out of university. The work is backend application development for the company's platform. While the work can be interesting at times, I feel like I don't enjoy it anymore. I want to switch into a new software engineering domain that isn't as high-level. I'm fine with switching to any other field, I'm just don't know how to properly make that transition in a way that would allow me to get a job.
Currently, I've been doing some personal projects in computer graphics, and I've always enjoyed C programming (I was a TA for my systems programming course in undergrad). I also just completed my Masters in Computer Science.
Despite this, I'm having trouble applying for jobs. I usually don't meet any of the requirements, as I don't have actual work experience that the job description expects. And when I do apply, I get rejected before an interview.
For those who have switched domains, any advice on how to go about this transition?
Many Canadian companies are not doing "interesting" things so I can understand the perspective of being at the long end of the funnel on sprint tasks for a product that might not be getting huge marketing wins. You've already taken the first step at figuring out what's interesting to you. As others have said, start learning about some topic areas find the meetups over those topics and start networking and getting to know people in the field.
Lastly, interviewing is a skill.
* Were you actually good at your previous domain? (Be Good)
* Does this person know they actually like working in this new domain? Or do they just think it might be "interesting"? (Show some proof that you are already investing yourself in this new domain)
* Do they have a track record of successfully learning new things in the past? (Any other non-domain skills you've picked up that show me you can be successful doing that?)
* Are they at a natural career inflection point and a good time for a transition? (You just got a Masters, so this is covered)
Trying for a totally cold start is tough though. I would try to get a foot in the door via career fair or university contacts. Use whatever coursework you have completed in the area to show aptitude/interest. Good luck.
The key is to have a strong portfolio. Every successful switch was based on that. Even in areas where you can't really show a portfolio, like pentesting, I was good at it and was able to demonstrate it.
It's really that simple. Be good, and show that you're good. Don't wait for someone to show you what to do.
Oh, as for the mechanics of getting the job, it's the same as any other: Forget the resume process. Find someone in the industry you want to work at, flatter them (everyone likes to be flattered, and you should lean on this tool as much as possible) and show them you can be useful.
The key is really just to apply to these jobs, even if you don't have direct work experience. I had a blog on my website that had a lot of C/C++ stuff which I think helped a bit, but in the end I just applied to a bunch of jobs and eventually got a technical phone screen. I described some of the C/C++ projects I had worked on in the past (mostly personal projects). I got grilled fairly hard on C++ stuff in that interview because the company knew that I wasn't coming from a professional C++ background, but I knew my stuff so it ended up not being a problem.
The other way to do this would be to try to get a job at a company like Google or Facebook. Typically you're just another person in their recruiting funnel and whether or not you know C++ doesn't actually affect how their hiring pipeline works. At both companies you're typically not applying for a spot on a specific team at the time of your interview, so you don't even necessarily have to write C++ in your interview to end up getting matched to a C++ team.
I applied as a intern and a tool developer once at two pretty famous AAA studios (due to friends, both actually didnt work out) and trust me when I say the bar is MUCH higher than a average backend job.
I do not want to discourage you, but if you have zero credits on MobyGames expect that they DO want to see proof that you can develop something like a fully working game engine from scratch (which means you understand the base concepts of game system development). Also, any proof of handson experience optimizing code for modern consoles which nowadays amount to Playstation 4, Playstation 5, Xbox One and Xbox Series S/X will probably be a huge plus.
If you can't show any of those things I am afraid most, if not all, studios will not be interested.
It tends to be much easier changing around what you work on within a company. I started doing embedded and server software in my first job by just helping out on bug fixes without asking.
That's just how it is. Keep applying. I doubt anyone is getting a job these days without making dozens of applications, or having serious connections. It's brutal and discouraging, but you just have to stick with it.
For some more actionable advice, focus on your framing. Interviewers don't care at all about what interests you, or what things you're most excited about getting to work on. They care about what you can do for their company right now, especially for a mid-level role. Think less in terms of "I'd love to join your company because I'm excited for the opportunity to learn more about XYZ" and more "I'd love to join your company because I have a good working knowledge of XYZ, and believe it would be a huge contribution to your development efforts in that area."
If you are trying to get into something specific like graphics, I imagine the formula is the same, but probably with much lower likelihood of success.
See if there's other projects you can hop on or sit in on in your current job.
Failing that, software development is something that you can sometimes create your own experience instead of getting it from a job. Join meetups, demonstrate what you are learning and present it, and let your network organically grow and you will by pass much of the application process or have it be a bit smoother.
Domain switching can be greatly helped by cultivating relationships that don't just help you, but you also add value.
This cycle may repeat it self for a while. Work is called work for a reason.
- Apply “lower level algorithms” to tasks where it fits (if you find good use cases you will be seen as a genius by the other “high-level” programmers)
- Implement “lower level programming approaches” to solve problems. For example, there may be good use cases for emitting MSIL-code in parts of projects (for example where interfaces are injected, you could inject emitted classes on the fly for example in some instances). Again, you will be seen as a genius if you find the right use cases.
- Implement “lower level” communication protocols where suited, for example a home made UDP protocol where you benefit from not having a stream and some packets are not needed.
You might get some more targeted responses here if you could give us an example of the types of roles you're applying for. As noted some fields are tougher too so I think general advice is only going to get you so far and specifics may help in so far as you are able to share.
I got really into options trading and built a paper trading site that eventually got acquired (for actual money!), and that’s been the talking point of every interview since I sold it.
If you decide you like robotics and you build a library that does fast matrix multiplication leveraging webgl or something, I think a lot of people would be very interested in at least having a conversation with you at that point. People who can “get things done” are always valuable.
This is normal, keep going you're on the right track. Apply everywhere, don't stop if you don't meet the requirements. But, do some research into the role and company. Show in your cover letter that you've put in lots of effort and try to convince them you're a good fit for the role.
Alternatively, what I did last time was start my own company and then use the most appropriate technology (Elixir in my case) despite not having it on my resume.
The downside though, was financial turbulence and ultimately a bit slower learning on the tech side than if I’d been a FT employee using it instead of also being busy talking to customers, doing support, marketing, etc.