Transitioning from game development to business development with C#

Started by
8 comments, last by Brain 7 years, 8 months ago

I've recently started programming with C# in Unity (on an amateur level) and have wondered how difficult the transition would be to programming in C# in a non-gaming business environment.

I've seen some questions on these forums being asked by programmers who want to move to games development from a non-gaming background, but never in the other direction.

Would having an intermediate, or even advanced, knowledge of C# programming in Unity be deemed useful in a business environment, or would even an experienced C# Unity developer be required to start at some entry-level C# position if they ever decided to transition away from games. I guess, ultimately, what I'd like to know is what the exit opportunities are like for C# game developers, because I see that burn-out is quite a widespread symptom in game development.

Advertisement

If you only know C# then you aren't very diverse as a programmer, nor as a game programmer.

C# is used in some business environments. Java is much more common.

Transitioning from C# to Java is not particularly difficult, in many features C# is considered as 'Java done right'.

I'd suggest learning more languages than just C#. Not just as an exit strategy, but to make you more versatile as a developer. These days my recommendation for core languages are C++, C#, Java, JavaScript, PHP, and Python. Learn them all.

You are almost certainly going to need to know html/js/css or SQL in a business role. Depending on where you want to put yourself on the front-end/back-end spectrum, you might need more in-depth knowledge of a JS framework, like Angular or React. In any case, understanding how databases work and how to efficiently query and get data out of them is huge.

Eric Richards

SlimDX tutorials - http://www.richardssoftware.net/

Twitter - @EricRichards22

Java and Database knowledge are keys to the kingdom of Business software.

Developer with a bit of Kickstarter and business experience.

YouTube Channel: Hostile Viking Studio
Twitter: @Precursors_Dawn

Going into non-gaming jobs have its pros and cons. An advanced knowledge of C# in Unity carries almost no value whatsoever in non-gaming tech industry.

Let me tell you how these people think.

1. Your worth as an engineer has nothing to do with how smart you are in solving a problem. You have an O(log N) solution? Not relevant.

2. What about your wealth of portfolio of sweet and fun games you have made with zero bugs! You know, the work that you spent countless hours and days and weeks and months to finish? Not relevant.

3. What about your passion in fine tuning the animations, timing, and pacing of the games that you create? You even created your own mathematical formula for that enemy movement!! Nope, not relevant.

4. What about your C/C++ knowledge of low level pointer manipulation? You know your bits very well. Not relevant.

Yup, all that thrown out the window. Pfft. Nobody cares about that in the tech industry.

Here's what they care about.

1. Language/framework skills. Ever seen those job ads for "Software Engineer"? What are the things they ask for? Language and/or frameworks. Do you know Java? Do you know Rails? Do you know SQL? Do you know XYZ Big Big Data FizzBuzz Enterprise for Deep Learning Solutions? Yes? You are hired!

2. ....Nothing else

This is why there is soo much hype around new frameworks. "ZOMG React is da best". These guys rely heavily on the language and frameworks that they use to get the job done. If you are a smart programmer using C/C++/Python, and I mean really smart like some members here, you are going to have a hard time landing a job on a company that's using Javascript/NodeJS. I have been denied a job for stating "Rails sucks" (obviously they were using Rails) during the interview even though I aced all questions. I know Ruby very well and even presented them an alternative solution in Ruby that's not Rails. Nope nope nope.

Really. That's how these people think and operate. The term "tech stack" is popular for a reason, and zealotry over a particular language or framework is rampant. It's like going back to gamedev when people were asking about DirectX vs OpenGL, except this is continuously happening on the global scale, and for every new language out there, new zealots are born.

That's why there are accelerated coding schools popping out all over the country like General Assembly, which BTW produce really really crappy engineers. The scary thing is, companies actually hire them. Get some no-clue-joe with zero programming background to spend 3 months learning Rails, oh you get yourself a Ruby on Rails Software Engineer. I used to think all tech engineers are smart. I was wrong. They are engineers with a very specific domain knowledge, sometimes with an audacity to claim that Coding is Over(1)

You are most likely to land a job as a C# developer doing some websites in C#. Even though C# and Java is very close, you'd be very lucky to find an employer that wants to hire you as a Java Developer, which means they might also be desperate and perhaps have an old ugly yucky Java code lying around that nobody wants to look at but you.

Don't get me wrong, there are exceptional engineers out there working in tech space. After 6 years, I can still count them with my fingers, and there are still less than 5 so far.

Edit: Where's the formatting buttons?

(1) https://medium.com/@loorinm/coding-is-over-6d653abe8da8#.vhfpy1gqi

I work in the business world. Game programming is just a hobby for me and a passion. Database Administration pays the bills. And I do a fair amount of C# coding at work. SQL Server uses C# for CLR Stored Procedures. Java's useless for that.

I earn 6 figures a year, for whatever that's worth. And I've worked for several Fortune 100 companies at the top of the telecom and software industries.

Not that Java is a bad choice. I do believe that Java is more prevalent than C# in the business world. But it's like 60%/40% with Java on top. You could easily make a career out of C# programming. Knowing Java and C# would make you worth even more.

Now, keep in mind that Unity is actually more like C# scripting. It's not quite the same as coding applications in C#. It's a good start, but it's a long way from what you would be doing in the business world.

If you really want to practice C# in order to develop a job skill, do MonoGame (formerly known as XNA). I used to be very into XNA (I used to run a website with XNA tutorials) and have gone on to DirectX11, OpenGL 4.5, and now I'm working on learning Vulkan. I might mention that XNA prepared me for DX11 and OGL 4.5. So, MonoGame/XNA is a great way to get into the deepest levels of game programming with "training wheels on". It's not going to do as much for you as Unity; and you may never release a commercial game, but as a learning tool I personally don't think it can be beat combined with the XNA 3 and XNA 4 books. (XNA 3 is not actually compatible with XNA 4 and MonoGame. So, be aware of that.)

I would absolutely love to find someone who would pay me 6 figures for my knowledge of low level APIs, 3D math and physics, and game programming. But I'm afraid that isn't going to happen until I'm on the same level as John Carmack, own the company, or both, and I have quite a ways yet to go to catch up with Carmack - so there is that. So, I go to my day job and do game programming on the weekends.

One of several reasons I do game programming is to improve my programming skills so that they stay sharp for my resume (I'm mostly doing C++ now days even though I never do C++ at work and do C# when I code at work 99 times out of 100). But I don't ever intend to work in the game industry.

I talked to a guy the other day who is a professional game programmer and he told me that he doesn't make near what he would make at a big name corporation, but he enjoys what he does. There's something to be said for that. But the programmers at the companies I work for make about $40,000 a year less than me. So, I can't even imagine how little he's making if it's a fraction of $40,000 less than what I make. He's looking at the guys that make $40,000 less than me and saying he doesn't make near what they make, but he's doing what he enjoys. Again, there is a lot to be said for doing what you enjoy. But, I do what I enjoy on the weekends (mostly game programming actually) and can afford to do what I enjoy on the weekends.

Anyway, C# is a viable job skill. Unity is a decent way to get introduced to it, but you need to go way beyond that if you hope to even get an entry level job with C#. MonoGame would probably get you about 80% of the way there if you make complete games with MonoGame/XNA. I think you'll go twice as far with C# in MonoGame as opposed to doing C# in Unity. And then you'll need to learn a fair bit beyond that with Forms and such and doing more standard programming in C#.

If you want to easily make games, Unity is more productive than MonoGame. If you want to get good at C#, MonoGame runs circles around Unity.

If you want to have even more opportunities, you could do Java. (I don't really do Java. So, I can't really tell you the best way to learn or practice Java.) No doubt there are more Java jobs out there than C# jobs. But there are still a lot of C# jobs out there that pay decently well. And then if you want to make the big bucks, go into database administration.

I would really love to find a job where someone will pay me 6 figures for my knowledge of low level APIs, 3D math and physics, and game programming knowledge, but that probably isn't going to happen until I'm at the level of John Carmack, own the company, or both. And I'm a long ways from Carmack's level. One advantage of working in the game industry is you build your skills and get paid for it. I have to build my skills on my own time and don't get paid for it. Still, I'll probably spend $20,000 this year on tools and classes to get better at game programming. So there is that.

I guess the bottom line is you have to do what you believe is right for you. If that's getting a job in the business world and doing game programming for fun then great. If it's getting a not so great starting job in the game industry where you will get paid (not so much) to hone your skills and move up, then that's great too. But you have to decide for yourself what's right for you.

Oh and since we're on the subject of learning C# as a job skill and MonoGame, RB Whitaker's C# book is the place to learn C#. His website used to teach XNA and now teaches MonoGame and C# coding. If you want to learn C# as a job skill, his website, book, and MonoGame would probably be the way to go.

Thanks alnite and BBeck for those detailed responses.

I was actually planning on picking up Monogame after I had gotten a fair bit of experience down with Unity, but looking over those links to RB Whitaker's resources, I'll probably speed up my transition to Monogame if only to make myself a better C# developer.

I guess it was as I had suspected from the beginning, that even an advanced C# Unity developer would still need to pick up some basic SQL and deepen their non-gaming related C# knowledge before being considered for C# jobs in non-gaming tech.

One thing I would like to add: Learn how to write unit tests and how to write software that it is properly unit testable.

This is valuable for two reasons: Firstly, "Test Driven Design" is one of those buzzwords that look good on a CV.

But more importantly, thinking about the testability of the code you write almost automatically nudges you in the direction of the SOLID principles and can be a good place to start thinking about software architecture.

From my experience in the "big business" world, having unit tests is the first step towards avoiding spaghetti code.

current project: Roa

I have worked on some small business accounting software. Data bases for inventory, sales, vendor and customer record keeping. I have seen allot of off the shelf, boxed software designed with Visual C++ and Visual Basic. With the Target market for the small, single store or home based business market.

Your Brain contains the Best Program Ever Written : Manage Your Data Wisely !!

I work as a programmer in a business non-games environment and am happy to impart some advice.

Definitely learn SQL and learn it deeply. It's essential for all business programs.

Most business applications these days are Web apps so learning java might get you somewhere but php will get you further.

Generally businesses want apps developed quickly so something like java which involves tons of boiler plate code will be bypassed in favour of something supporting fast prototyping unless you're working in big enterprise with huge budgets to waste.

You'll encounter development methodologies such as agile and maybe SCRUM (personally I don't like scrum for several reasons but this is outside the scope of this thread - in my IT department we avoid it).

Also make sure your knowledge of windows and Linux server platforms is current as you'll be expected to configure and maintain the servers you deploy to in a small business environment.

On that note small businesses give more freedom as there's less red tape, less middle management and more chance to innovate.

Hope this helps!

This topic is closed to new replies.

Advertisement