what is most in-demand programmer discipline in industry?

Started by
10 comments, last by frob 8 years, 2 months ago
  1. Gameplay programmer
  2. A.I programmer
  3. Network programmer
  4. UI programmer
  5. Graphics programmer
  6. Physics programmer
Advertisement
7. Programmer who can adapt to any of these as needed

A good programmer.

Why does this matter to you?

I am in a starting position where I could choose one of these fields to study deeper because as it turns out each these has a vast subject to explore.

I know that being generalist is standard but "expert at anything is like being expert at nothing at all" and I am pretty sure someone who can adapt to any of these as needed doesn't exist or a rare specie. even if it could the results are not as good as the experts on that particular field

Do what you are most interested in.

Speaking as an interviewer and potential employer, I could give a rat's ass how skilled you are in a field if you aren't passionate about it. Games are made by passionate people, not grunts that show up to put in the minimum effort required to get a paycheck.

Games are incredibly diverse and complicated. There's so many areas to specialize in after you get the general stuff down. Want to know which one you like the most? Try them all; you're going to have to in order to learn the basics anyway.

Yes, there are _many_ game developers that can suitably adapt to any field. They might not be able to fill the roll of the core/lead engineer for the system in question but they 100% absolutely should be able to work on said system. Even our junior engineers are expected to jump between tools, networking, graphics, physics, and gameplay with ease. Again, they're not expected to be world-class experts in the field, but they are expected to at least be passably competent. True experts are rare and a company can't fill up a whole team with nothing but pure experts. Even if they could, a game doesn't need the same number of resources devoted to each system throughout the whole project, so hiring a whole team of experts to work on a system that only needs one person working on it most of the time would be a ginormous waste of money and talent.

Sean Middleditch – Game Systems Engineer – Join my team!


I am pretty sure someone who can adapt to any of these as needed doesn't exist or a rare specie

That is not the case. I'd expect to be able to throw a junior engineer at any of those fields, and that they would be able to ramp up on a team in that role within a few weeks. Engineers (at least those with < 5 years experience) are treated as fungible resources, and better be able to adapt to changing project demands.

Senior engineers may be more or less specialised, but would all be expected to be able to ramp up on a different field very quickly if needed.

Tristam MacDonald. Ex-BigTech Software Engineer. Future farmer. [https://trist.am]

I am pretty sure someone who can adapt to any of these as needed doesn't exist or a rare specie.


Most of the veterans on these forums can do everything you listed. I've done everything there, and I'm not an expert of any of those. I'm an expert of adapting as needed. When a specific requirement is presented to the development team, we either know how to do it already (for the common stuff) or do research on the fly to figure out how to do it right then and there.

Everyone has to adapt, because markets change and demand for skills move to different skills. I started off working on PC games in C++. Six years ago I worked on console games. Three years ago I worked on web games in AS3. Today I work on mobile games in C#. Who knows where I'll be in three years. Maybe VR? I have no idea. But I'll adapt when the time comes.

The core concepts are the most important to be good at, because those are the ones that stay relevant the longest. Expert-level gritty details become outdated very rapidly as they are frequently replaced with new technology and techniques.

It's good to know as much as you can, of course, because this gives you insight into as many situations as possible to identify problems and come up with plans faster. But there is diminishing returns for expert-level knowledge in that the need for that knowledge doesn't present itself as frequently. If you need to learn that one specific thing to solve a specific problem, it's easy to learn that one thing rapidly if you have a solid foundation of general knowledge about everything.


As a concrete example, let's take graphics. The team decides what engine we're using and learn how the shaders/materials/textures/meshes/etc work in that engine. The engine handles all graphics work, but you have to set up some custom shaders. You're the guy that knows the most about shaders, so you set them up as needed. But shaders don't need tweaked that often once you get them set up the way the art team wants. They may occasionally need to be tweaked if they don't run on a specific Adreno chip or something, but that'll be like a one or two day task. When you're not using that expert knowledge about shaders, you had better be able to pull your weight with other non-shader stuff, otherwise the producer will be a little uncomfortable explaining their slipping schedule to upper management when one guy is obviously just sitting around with nothing to do.
Look at the recruitment page for any companies you are considering joining, see what they want, and consider if that is what you want to do.
If so, make a demo, learn the specialization, and apply.


L. Spiro

I restore Nintendo 64 video-game OST’s into HD! https://www.youtube.com/channel/UCCtX_wedtZ5BoyQBXEhnVZw/playlists?view=1&sort=lad&flow=grid

I think this question seems to make a fairly alarming assumption. You need to acknowledge that graduating from a university program in "Physics programming" in no way qualifies you as a specialist in Physics programming. In fact, it probably puts you on par with absolutely any engineer who's been in the video games industry for less than a year... but only in Physics programming! Those people who have been in the industry probably still have an edge on you in virtually every other discipline :(. You need to understand that once you enter the marketplace, you are competing with people who literally spend 8-10 hours a day, 5 days a week, 50 weeks a year writing code and solving the exact problems games need solved. If you want to become a specialist in some area of video game development, you need to think about your education as only one notch in your belt; the only way you're going to catch up to the actual industry specialists is by actually *making some games!*

I'm going to guess that maybe you've heard that breaking into the video games industry is hard, and you're trying to increase your odds of success. That's a worthy goal, but I'd like to make sure you understand that breaking into the industry isn't actually that hard. Breaking into the video games industry is no harder than breaking into any other industry which requires some skillset. If you want to work at McDonald's... okay, if they have a job opening you're hired. But if you want to work at Cisco, you probably need to know something about routers, embedded chipsets, firewalls, and the network protocol stack... and you probably need to have applied that knowledge to some practical purpose in the past. If you want to work at USA Swimming, you probably better know something about the butterfly, breastroke, backstroke, and freestyle... and you probably need to have applied that knowledge to some practical purpose in the past :).

It's no different in video games. If you want to work in video games, you probably need to know something about artificial intelligence, physics, networking, and graphics... and you probably need to have applied that knowledge to some practical purpose in the past. The reason the video games industry gets a bad reputation for being hard to break into is because very few under-qualified people actually *want* to work at a company like Cisco; the number of people who get excited about router technology is much smaller than the number of people who get excited about video games. Video game companies get a large number of applicants for engineering positions who know absolutely nothing about software engineering. I've interviewed a guy in the past who, in response to a very general question about describing debugging practices, failed to even mention a debugger.

I've actually reached the point where I hate it when people ask what I do. I tell them I work in games, and their eyes light up; they think it's the coolest thing ever! ... Then they want to talk about it more, and it never takes long before their eyes gloss over and they no longer have any clue what I'm talking about. There's the disconnect; most people don't understand that having a passion for video games and having a passion for making video games is not the same thing. If you want to land a job as a software engineer in the video game industry, you only need to do two things:

1) Develop a strong understanding of software engineering fundamentals. Realize that what you learned in the classroom does not encompass the entirety of what it means to develop a strong understanding of software engineering fundamentals, and you will need to spend time on your own applying the things you've learned at school to projects that pique your interest.

2) Be flexible. Interview with employers in other cities, counties, or states. Be wiling to relocate.

If you can do both of those things, it really isn't difficult to break into this industry :). In the process, if things that pique your interest actually are video games... you'll find that you learn enough about Networking, AI, Graphics, and Physics to figure out whatever else you need to know!

You need to acknowledge that graduating from a university program in "Physics programming" in no way qualifies you as a specialist in Physics programming.

+1!

This pretty much spans all industries way beyond just the games industry, and does not only affect technical positions.

Graduating from university just means one thing... that you have learned the barest of bones basics to be able to LEARN working in a field. Not that you actually bring much usable knowledge with you to work in that particular field, or that you are a specialist...

I wouldn't even call someone with a PhD a specialist yet... maybe a postdoc would deserve that title. Failing going through more academic studies than just a simple masters or bachelor degree, you are expected to look for a junior position and actually learn on the job.

And, to get one of these sometimes hard to get "Junior positions", to put in some additional work in your free time and create your portfolio (though that isn't necessarily true for other industries than the games industry).

5+ years, maybe 10 years working in a field will make you a specialist. Not some university project. Or some fancy name on your degree. That is why working expierence usually is much more important than your degree, especially once you have amassed quite a lot of years of working expierience.

As an example, my degree says "Bachelor in Software engineering"... yet every employer will treat it as a general CS degree. I don't think the HR will treat someone with a "Bachelor in Networking Technology" any different, as long as its a comparable CS degree. Because either they cannot tell the difference, or they can but know that the difference is actually minimal, and they rather look at your work expierience to see what you have done.

If I had spent my last 8 years working in networking, how would my "software engineering" degree be any relevant anymore? Most probably I would have forgotten most of the stuff I learned in university in 8 years, and technology moves on fast... on the other hand, the guy with the "networking" degree might have worked as an embedded programmers first, then C++, then some years in Java. He might be the much better choice for a programmer position by now because of his work expierience.

TL;DR: Use your current "Freedom" (Because you are not working yet) to test as many different things as you can. Find out what interests you. And see that you train your skills beyond what university teaches you. University or even a PhD is never enough!

Most of all, don't get too attached to a technology or field. As much as people hyped specialists as the new "Masters of the universe" in the 80's, that time is coming to an end. Rapidly evolving technologies and shifting priorities are the norm today. Maybe you will find a lot of work in AI today because people finally want to see all that new available horsepower be put into good use on some convincing AI... maybe this AI hype is over in 3 years when all the horsepower is needed for some other thing. Suddenly all the people hired 3 years ago are not needed any longer.

This topic is closed to new replies.

Advertisement