46

I am a recent graduate who moved across the country to get his dream job in game programming. I worked at a indie company for a year and then was hired by one of the largest companies. This is a dream come true for me as it was the whole reason I went to school. I am fairly new to the industry and am struggling to feel competent.

Anyway, I have been working at this job for almost a year now as a generalist programmer. We are a fairly small team in the company. My job has been mainly refactoring code, features and bug fixes. I worked with one other person who is much more experienced. They were promoted and no longer program. I have been given their work.

The problem is that they are a graphics programmer. A lot of my job is now 3D math. I dropped out of math in grade 10, I did it again in college and barely passed. I am terrible at math, and do not enjoy it. My new job is in a subject I know absolutely nothing about. While this is not a bad thing as I learned many things and languages when starting this job, I am now the main line of support for many large teams. I am tasked with solving bugs in a graphics pipeline meanwhile I can barely do matrix multiplication. I know none of terminology and none of the math.

How do I go about telling my boss that I am unsuited for this job. I was asked my math skills in the interview and I told them that they were not good. At the time they said it did not matter.

Part of the problem is also that there is no longer anyone to do these tasks. I am well aware the answer to the problem may just be suck it up and deal with it.

If it matters this is very large company and transferring to a new team may be possible. But I would like to avoid it at all costs as I did enjoy the team and the work.

  • Do you have anyone who can serve as a mentor for the math 3D topics – Brandin Jul 29 '15 at 5:46
  • 3
    Obviously, you've mastered significant and difficult topics. You can do the same thing with math skills. The problem is it will take a lot of time and attention and it is much harder if you're doing it yourself (or even with an informal mentor) outside of the structure of a course with serious homework and exams. There's no shortcuts with that stuff. – teego1967 Jul 29 '15 at 11:14
  • 1
    Could you add whether you are interested in trying to learn to do the 3d path, or if you would prefer not to. The best answer if you want to plow into it with the "I don't know what I'm doing, but I'll dang well try!" is very different than the best answer if you want to say "I actually don't derive enjoyment from that kind of work." – Cort Ammon Jul 29 '15 at 18:05
  • 1
    I do not enjoy it, but I feel it is because I do not enjoy things I am bad at. I do not want this to be my career choice. But I do not hate it. – marsh Jul 29 '15 at 18:19
  • Comments are not for extended discussion; this conversation has been moved to chat. – Monica Cellio Jul 30 '15 at 16:08
63

Something I have learned from both personal experience and observation (mostly observing my children) is that if you are convinced you can't do something, then you will struggle with it. You just don't seem to apply the brain power to it because you just know you will fail.

So I will give you the same advice I give my children :) Rather than look at the whole problem of "I can't do maths", break it down into smaller chunks. Choose something that you almost understand and then try to apply it to the practical problems you are using it for. Remember, maths is a process, an algorithm, just like programming. Take one step, then the next, apply the rules and you'll get to the answer :)

Now, how to manage this with your boss? Well, have you raised it with your manager that you are struggling? If he or she doesn't know, then they can't help you. You could say that you will try to learn, but it's going to take time and perhaps some training that could help. Then the manager can manage the risk of keeping you there, or finding someone else to take over that role.

I would talk to your boss, tell them where you are having difficulty and that you may take longer on these tasks while you try to understand the complexity of the mathematics behind it. Then, if you really, really can't do it, you have done all you can and made sure that the people who need to know do :)

  • 5
    If you have notified them of your concerns and they are prepared to give you some time, then they own the risk of delays while you learn, not you. Keep your manager up to date on your progress, concentrate on learning, and the speed with come as you get more familiar with everything. – Jane S Jul 29 '15 at 0:57
  • 22
    If the boss assigned you to it, knowing that you're still learning this code and the assumptions behind it, then the boss can't expect you to handle the bug reports as efficiently as those who have been staring at this code for years, And the boss, if at all competent, knows that, and knows that a deliberate decision was made to reassign the other folks and not to spend the money to hire someone new. So a lot of the pressure you're feeling is -- at least in the good case -- self-generated. Set realistic goals for yourself, take it step by step, and accept that slower fixes are still fixes. – keshlam Jul 29 '15 at 1:02
  • 3
    The second paragraph is crucial. It is likely that everybody is going to encounter some problems in their career that look like insurmountable mountains at first. My approach in those cases has been precisely what is advocated here: Find a soft spot (a sub-task that looks doable) and start nibbling away. Lessons learned from the first nibbles are applied to following stages until one has tunneled through that mountain. The best part: Once you have gone through the process once and seen that you can succeed in the face of adversity, you'll have more confidence when the next such problem arises. – njuffa Jul 29 '15 at 9:24
  • 15
    +1: Whether you think you can or think you can't, you're right - Henry Ford. – Joel Etherton Jul 29 '15 at 14:29
  • 4
    One thing that helps a lot in the case of 3D graphics, in particular, is to build really simple toy applications that you can play with to understand the transformations. This is one very practical way to break down the entirety of "3D math" into more approachable tasks that you can experiment with and get a feel for. And here's a little secret: a huge number of programmers in games actually don't fully understand all the math they use. They likely have some grounding in the mathematics, but mostly they know the techniques and how to apply them. – Dan Bryant Jul 29 '15 at 18:10
25

All the answers so far are assuming that you can learn all 3D graphics math (which I'm sure you can), that you will enjoy doing so (which might not be true) and that you can learn all of it fast enough so that you can apply these techniques TODAY in a production environment (which is probably not true).

I think the best thing you can do is talk to your direct supervisor. Saying that you are unable to perform a part of your job to your own satisfaction is not showing weakness, it shows that you are critical of your own work and capabilities and that you want the best for the company. Be sure to add (if you want) that you are willing to learn these techniques but that you are looking for courses or a mentor to help you do so. This is a great opportunity to improve yourself and to make yourself more valuable for the company. (Things managers love to see).

  • 8
    I agree. "Learn it" is easy enough to say, but when most full time undergraduate CS courses barely scratch the surface of computer graphics it isn't a reasonable response in the short term. In the longer term you can become competent yes but there needs to be something done in the short term while you're still looking up what any of the words mean. – DavidTheWin Jul 29 '15 at 13:19
  • 1
    @DavidTheWin +1. At my university, we are required to learn linear algebra and up to calculus II. However, we never learn anything related to computer graphics unless you take the one graphics course offered once every 2 years, and even if you take it, you barely scratch the surface of actual graphics programming, and certainly not for video games (we just build static models that don't move), and certainly not in a production environment where doing 'C-level' work is OK. +1 to you as well Roy, your first paragraph is spot-on. – Chris Cirefice Jul 29 '15 at 15:18
7

Be forward communicating, and don't be afraid to over communicate. Do your best to provide accurate estimates and ratings of complexity for tasks. If you need help ask, if there is no help locally, quite often stack overflow will give you responses faster than the people you're working with if you ask questions clearly and provide the right details. Learn as much as you can as fast as you can, once you get your brain wrapped around things it will not seem so complicated. Try to find some workshops to get more experience or follow some tutorials online. If you are making an effort and your team sees it, often that will be in your benefit. Most people would rather work with someone who is passionate and motivated than a know-it-all who is an Island

5

I have a PhD in math. One day I had to explain linear algebra to a student after some years of never having actually multiplied matrices. I realized I had forgotten the matrix multiplication rule*, but interestingly, I was still able to explain a lot of linear algebra. The reason is: a lot of linear algebra concepts aren't about details like how to multiply matrices.

In your job, you can just use a library or copy and paste code. The important thing is to understand the ideas, which is something you might not be bad at. You will never know unless you try.

  • as an ego thing, let me mention I was able to derive the rule for the student.
  • Right, and matrices in 3D are mostly 4 packed vectors that describe the cordinate basis vectors x, y, zand origin offset. Also i doubt he ever needs to do the multiplication part. – joojaa Jul 29 '15 at 4:55
  • @joojaa: Right and it all boils down to arrays of arrays - which is something you learn within the first month of programming. – slebetman Jul 29 '15 at 6:34
  • 10
    Using a library = ver good. Copy-pasting code you don't understand = very bad. The only way to use copy-pasted code, is to isolate it into a library itself, clearly marked as copy-pasted and with the source URL included, so that future visitors know where it's from. – o0'. Jul 29 '15 at 8:08
  • It's such a bad idea that it has a name - en.wikipedia.org/wiki/Cargo_cult_programming – David Meister Jul 30 '15 at 14:25
5

I've been in situations like yours, and it's never a good feeling to be in over your head and lost. If this truly is your dream job, then the only choice is to figure it out. You can't stay a junior programmer doing menial tasks forever.

The key is to find someone who worked on the code before you who can mentor you. This is a relationship you have to manage well, because your mentor will have their own work to do and won't always have time for you. To start, I would ask whoever worked on that code before to dedicate an hour or two with you and walk through it. Don't be shy. Ask questions, take notes, etc. Take advantage of the time that person has dedicated to you. Hopefully you will learn enough to dive into the code with confidence. If not, then maybe this isn't the job for you after all.

After that, you will certainly have more questions, but you must try to figure them out on your own. Try to use your mentor only as a last resort. Do your homework so you don't look foolish and waste their time. Explain how you got to the questions you have. Say something like, "I figured out X, and I figured out Y, but I what I don't get is how X and Y make Z." If you demonstrate that you are learning this stuff and you are really trying, people will be a lot more open and receptive to your questions.

  • 4
    "You can't stay a junior programmer doing menial tasks forever." Very true, something I had not considered. – marsh Jul 29 '15 at 18:20

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.