I need some advice.

Started by
12 comments, last by jesot 11 years, 11 months ago
This is a mult-part inquiry/post. Just a warning.

I want to move from hardware/network to programming/database in my IT career. The latter is just a better fit for my personality, tendencies, and overall life goals. I just haven't developed the skill-set to break in to that end of the field. At my current place of employment, they really like to hire from within. So if there was an opening on the software side, I'd have a decent shot at it if I build the skill-set needed.

I've tossed the idea around of setting up a Linux box (though the KVM I'd need is effing expensive) since I'm about to upgrade my gaming rig in the next month or so, and will have the spare parts to do so cheaply (again, other than the $250 KVM - anyone know cheaper for dual monitor dvi/usb?).

Here's my current skill level for software:
Basic C/C++ (though it's been quite some time)
Java (Good foundation of the fundementals, but I failed a staffing firm's test pretty miserably)
I like the little bit of Oracle from a class I had to drop out of after a month (I got hired to a job that conflicted with the time of the class)
I'm pretty sure, for a career, I want to work with databases.

Part One. What do I need to learn and what should I learn?
Should I just stick with Java (I do like Java)?
What else should I play with/learn on the side?
What should I use to learn how to work with databases?
Which database(s) should I start with?
What else?

Part Two. Is learning these things through game programming viable?
Things are easier for me when they're fun. Such as exercise (I can't run a mile on the sidewalk, but I'll run 20 playing basketball all day)
Is it realistic/viable to gain the requisite skills for potential jobs by making games?
What are some good guides/resources for doing so with Java (or should I move to C/C++ or something else)?

I really appreciate your time and advice. I'm not looking to get into game programming for a career (though maybe eventually?) I just want a standard drone programming job. But I would like to have the potential to put together some 3-D isometric games (favorite game ever is Shining Force and would love to make a strategy RPG of my own as an homage one day).
Advertisement
I think you should start with whatever programming skills are most relevant to the job you're looking for. Take a look at the programming positions your company has. What technologies do they use? From what I've seen, there are many different "camps." (e.g., one company is in the "Microsoft camp" and makes web apps with ASP.Net and MS SQL, while another may use PHP and MySQL).

Once you've figured out what technologies/languages/databases your company uses, get your home machine set up to do that type of development. (eg., if they use MS technologies, download Visual Studio Express, MS SQL Server Express, setup IIS). Then try and make some app using those technologies. Make an app that mimics whatever type of work your company does. (i.e., if they make business apps, think up some dummy company and make an app that does whatever that company would need - track inventory, keep lists of customers/employees, etc.)

As for game programming, it will definitely make you a good programmer because it is much harder than applications programming. But you also have to consider the fact that most hiring managers don't know that. Most likely the people who review your resume will be looking for similar experience to what they do. If they make business apps in PHP, they are going to be more impressed by somebody who has PHP experience rather than someone with game dev experience (even if game programming is much harder).

even if game programming is much harder

That's not true. Game programming is just like any other programming -- you have a problem (or set of problems) to solve, and a set of constraints (target hardware, performance requirements, etc.) your solution must fall within. Some games are relatively trivial to program and have easy requirements to meet, whilst others can be extremely tricky for any of a number of reasons (hardware limitations being a common one). The same is equally true of non-game programs. Consider medical-imaging software, training simulators for pilots, the software that helps control modern aircraft, and operating systems amongst many others -- none of these things are games, but they're all very complex pieces of software, and in some cases have some unusual or particularly strict requirements.

Otherwise your advice is pretty sound -- given the goal of moving into a different job it would likely be a good course of action to set about learning the technologies that are actually used for the position. Depending what they are it may or may not be possible (or a good idea) to learn those technologies hand-in-hand with games development, and as hinted at above, games development may not necessarily be a more "fun" experience than any other approach; games are just software like any other program, and just because the end result is (hopefully) a fun product doesn't mean the development process will be.


So, what technologies do your workplace actually use, and what sort of tasks do they use them for?

- Jason Astle-Adams


I want to move from hardware/network to programming/database in my IT career.
Nice, I just made that exact transition. Though I did that through a 4-year degree while working, so... your mileage may vary.

I've tossed the idea around of setting up a Linux box (though the KVM I'd need is effing expensive) since I'm about to upgrade my gaming rig in the next month or so, and will have the spare parts to do so cheaply (again, other than the $250 KVM - anyone know cheaper for dual monitor dvi/usb?).[/quote]
Why invest in the KVM? What's the Linux box for? I use VirtualBox to set up a multi-system, multi-os virtual environment within my laptop, and that was free smile.png

I really appreciate your time and advice. I'm not looking to get into game programming for a career (though maybe eventually?) I just want a standard drone programming job. But I would like to have the potential to put together some 3-D isometric games (favorite game ever is Shining Force and would love to make a strategy RPG of my own as an homage one day).
[/quote]
Game programming is application programming is 'app' (mobile) programming - it's all problem-solving through discrete machine commands. If you put together the skills to be a 'drone' (though that terminology begs the question of how passionate you'd really be about programming ;) ) you'll be able to build a strategy RPG, the only differences are primarily domain-specific (like how most application programmers don't need to learn a graphics API outside of common GUI libraries). Programming skills are widely translateable if they're worth anything to an employer.

In general, it's certainly doable with your previous background, but what will seal the deal will be the level of effort and time you put into embellishing your skills to match the needs of the position you're gunning for. It might not all be learnable via game programming, but any programming you do on a moderately sized, moderately ambitious project will improve your skills overall.

Hazard Pay :: FPS/RTS in SharpDX (gathering dust, retained for... historical purposes)
DeviantArt :: Because right-brain needs love too (also pretty neglected these days)

Merely to help with that KVM issue, why not just do a remote desktop connection? Use your new gaming rig, log into the Linux box off the gaming rig, then you can switch between whatever Distro your Linux box has and the gaming rig. Another question, why a Linux box? Are you under the assumption that Linux is needed to program?
I think you can learn a lot of programming this way. I agree that focussing on the right tech is the way to go. Okay, you can't do a Call of Duty clone using Java and Oracle, but you could do a text MMO, or maybe HTML 5 with graphics etc, but focus on using the server-side to hold and check state. Find that compromise point between relevance and fun.

A game *may* not count much portfolio-wise, but if you have the skills to pass the test it's got to be a good start. Also the ability to define a problem, find solutions, find those edge cases where things can go wrong, etc are good for dealing with client specifications.
@jbadams: you are correct that any kind of app could be harder than game programming. I guess I was just thinking of my personal experience. The game programming I've attempted to do involved 3D vector math and a good understanding of data structures. Unfortunately most of the professional work I've done has been fairly simple business apps.

But of course it is possible to create an extremely simple game, or an extremely complex business app. And of course something like writing an OS would most likely be harder than game development since it is lower level.
'Which database should I pick'. I've worked with Oracle, MS SQL Server and MySQL and they are all good. Any actual performance difference will likely be totally swamped by how well the database is designed. I find MS the easiest to get on with, but maybe that's because I've only really used Windows. Finally, try not to use cursors! (but you will...)

Merely to help with that KVM issue, why not just do a remote desktop connection? Use your new gaming rig, log into the Linux box off the gaming rig, then you can switch between whatever Distro your Linux box has and the gaming rig. Another question, why a Linux box? Are you under the assumption that Linux is needed to program?


That's a nice alternative and should work. Can you virtualize dual monitors that way? Not completely necessary, but could be handy.

I want a Linux box because I want a clean environment to work in, I need experience working in the Linux/Unix environment, and (correct me if I'm wrong) from what I know, there's just a lot less overhead and you get more out of your hardware with Linux.
I honestly don't remember if you can virtualize the dual monitors. I think you can. It's something to research. Worse case is you can't and are back to needing your other solution. I am curious now, though. I need to steal my girlfriend's monitor and try that out.

Linux isn't as bulky as Windows seems to be, at least to me. You get more control over the OS, but as one person said (I can't remember who) "If Linux crashes it's your fault". As for the programming side of things, you don't need a lot of the Microsoft overhead that some Windows programs require.

This topic is closed to new replies.

Advertisement