What skills is more important for a Junior programmer to master

Started by
9 comments, last by Melkon 8 years, 9 months ago

As a junior programmer about to get my first job, is it more important to show them I can learn one thing in depth or learn a few things on a broader scale?

For example: Should I learn Unity or Unreal to the point that I can create a Pong Game and a Retro Game and then learn one of them more in depth? Or, should I learn Unity to the point where I can create any type of game such as a Shooting Game, and a Multiplayer Game and after I have mastered these, then learn the Unreal engine?

Advertisement

Good programmers tend to have both breadth and depth: they tend to know a lot of things on a basic-to-intermediate level and at the same time know quite a lot about a few more-specific things.

How "about to get your first job" are you, exactly? You're not likely to do something in the next two weeks, for example, that really demonstrates either of those.

You also shouldn't be learning things with the idea of simply learning them to "do well" on an interview. Learn what you want to learn; if Unity interests you more than Unreal, focus on that. If you don't like FPS games, don't spend a whole lot of time and energy making them. You tend to do better at, and internalize more of, the things you are interested in.

You tend to do better at, and internalize more of, the things you are interested in.


Also, to quote our company's Tech Director (regarding the hiring of junior programmers):

"We can teach them technical skills, but we can't teach them passion."

Sean Middleditch – Game Systems Engineer – Join my team!

As a junior programmer about to get my first job, is it more important to show them I can learn one thing in depth or learn a few things on a broader scale?

For example: Should I learn Unity or Unreal to the point that I can create a Pong Game and a Retro Game and then learn one of them more in depth? Or, should I learn Unity to the point where I can create any type of game such as a Shooting Game, and a Multiplayer Game and after I have mastered these, then learn the Unreal engine?

When you say about to get your first job do you mean start or apply?? As I feel like that would change the answer significantly. I'm just not sure from your wording of the first sentence. If you have the job and you are about to start, then you learn what will be useful on the job. No point in learning Unity if they are using Unreal etc...

If it is in general then I would think about where you would like to work and learn the things that are relevant for those companies/positions. Learn as much as you can until you get the job, then learn on the job.

Valve describes their ideal employee as being "T" shaped, that is, comfortable and capable with many things, but with deep knowledge of 1 or more things. Even as a beginner, I think this shape is ideal, its just at a smaller scale.

However, there are other important things that a beginner must demonstrate that are taken for granted in more experienced folks.

Firstly, the ability to finish hard things. Most people can finish easy things, and most people can do 90% of a hard thing -- but you need to demonstrate that you're part of the 10% that can finish hard things, even when they're unfamiliar, confounding, obtuse, and just-plain-boring. Passion to solve problems plays a part here.

Secondly, the ability to learn and adapt. No self-study will prepare you for the unique environment and landscape of the teams you'll be joining. They'll all have historic cruft and unreproachable practices that just seem weird to outsiders, you need to be willing and able to fit in. You'll be learning knew things all the time. Passion to learn plays a part here.

Thirdly, the ability to communicate effectively. Its probably the single-most important soft-skill that we have. If you cannot understand other people, recognize and ask pertinent questions, or communicate your ideas effectively (usually, thoroughly and briefly) then you cannot be part of a team. Period. Full stop. Passion to share knowledge plays a part here.

Demonstrate that you can be counted on to do those three things well and consistently, learn at least a little about as many things as you come across (and learn how to leverage seemingly-unrelated skills/knowlege to perform better in each), and learn deeply about at least a few things that interest you.

Also, keep in mind that doing something very basic in one particular fashion (say, making asteroids in Unity and UE4), doesn't necessarily demonstrate much. It demonstrates a certain amount of adaptability and passion, and some level of learning. But it doesn't really say much about how much or well you know either Unity or UE4 -- to say you know either, you really have to put something together that exercises all of the moving parts at least, and preferably you've pushed yourself far enough that you've had to overcome real challenges in doing so. Then you can say that you're baseline-competent in one of them. You don't distinguish yourself or even learn all that much from doing what's easy, that only comes through doing what's hard.

throw table_exception("(? ???)? ? ???");


Should I learn Unity or Unreal to the point that I can create a Pong Game and a Retro Game and then learn one of them more in depth? Or, should I learn Unity to the point where I can create any type of game such as a Shooting Game, and a Multiplayer Game and after I have mastered these, then learn the Unreal engine?

Either one of these would work. The employer will assume that you do everything wrong in your games. The reason why is that the employer has its own development process and methodologies that there is no way a junior programmer would immediately fit in or understand their process. Even if you have created a FPS, you won't create the same FPS in the company.

It's a good resume to show that you created multiple simple games. If you create one complex game, it's also a good thing. It shows that you have passion and that's a good thing to have. Don't sweat over what games to show off. Pong, pacman, tetris, failed attempts at MMORPG work just as effective.

Also, keep in mind that doing something very basic in one particular fashion (say, making asteroids in Unity and UE4), doesn't necessarily demonstrate much. It demonstrates a certain amount of adaptability and passion, and some level of learning. But it doesn't really say much about how much or well you know either Unity or UE4 -- to say you know either, you really have to put something together that exercises all of the moving parts at least, and preferably you've pushed yourself far enough that you've had to overcome real challenges in doing so. Then you can say that you're baseline-competent in one of them. You don't distinguish yourself or even learn all that much from doing what's easy, that only comes through doing what's hard.


On the other hand, being able to show a semi-polished complete game (even one as simple as asteroids) usually will show an employer you can stick with and, more importantly, finish a project. If you do have a complete game, be prepared to share what things you had to go learn to make it, and maybe give a couple of examples of bugs you fixed. Knowing that you went out of your way to research, say, XAudio, so you could play sound effects in your game, and then a story about how you had to debug a case where audio went out of sync with the visuals is a great way to show your dedication and learning ability (not to mention debugging ability, which seems to be a skill no one ever teaches in school).
Totally -- that example is a good showing for dealing with all the moving parts and overcoming the challenges in doing so. Your samples have to not just be 'done' to some arbitrary degree -- they really should be polished. They don't need to be dressed like a million bucks, but a sample needs to carry itself like a million bucks -- have terrible graphics and even worse sounds if needs be, but the sample needs to be put together in a way that's polished and complete.

That said, don't let perfect be the enemy of good, and don't be intimidated. This is something to always strive for, and its not unattainable, but neither is it something that should prevent you from pursuing opportunities for lack of living up 100% to this gold standard.

throw table_exception("(? ???)? ? ???");

I think people without working experience overestimate programmers in the industry.

I am a C++ programmer and i think most programmer in the industry have just a really basic knowledge about the language (however, they ended up with alot of experience in different territories, which are really useful)

I think you shouldn't overthink this, just apply for a job, try yourself and you will see what you should improve. :)
At my country, with a stable basic knowledge about your territory you can easily get a junior job, the interviewers will know that you don't have much experience...

Also: If you can show something, like ANY free time project which is not a homework like stuff it's matter alot. It says alot about you if you do these kind of stuffs in your spare time. :)

I think people without working experience overestimate programmers in the industry.

That's so true. These days game companies need a lot more people and teams are orders of magnitude larger than in the old days. Only a small group of those will be true experts, but a lot of them can just be good. It has been my experience too that you can get a junior job these days without much expert experience. To give an example, none of my junior colleagues had even heard of template meta-programming :P

This topic is closed to new replies.

Advertisement