Jump to content

  • Log In with Google      Sign In   
  • Create Account

Dave Weinstein

Member Since 08 Mar 2006
Offline Last Active May 22 2016 11:19 PM

#5221439 How to figure out if I'm on the right path

Posted by Dave Weinstein on 05 April 2015 - 12:14 AM

I actually wrote about this not that long ago.


Learning new languages (and being fluent in multiple languages) is something that I consider part of the baseline for being a professional developer. 

#5220828 Game Design Degrees

Posted by Dave Weinstein on 01 April 2015 - 05:50 PM

Bluntly, you want a degree with the maximal value for what you can afford.


So, certificate programs are effectively useless. No one cares about a certificate in game development, except the community colleges which want students.


Associates degrees, again, the degree isn't going to open any doors for you.


When looking at a Bachelor's degree, you want a degree with regional (that is to say, traditional higher education) accreditation, not national (that is to say, normally associated with trade schools) accreditation. The dedicated game development schools (DigiPen, Full Sail) are, as far as I know, still both nationally accredited. What that means for a prospective student is that if you wanted to go to graduate school, you would discover that you would need to get *another* Bachelor's degree first, because they won't count the one you have in game development.


Finally, I should caution you. The average career in game development is still quite short. Skilled programmers should have no trouble moving outside the industry (and getting a nice pay bump in the process). Artists? Well, everyone and their goat has a web site now, and the demand for art content is quite high. Producers? Producer maps straight over to Program Manager in the rest of technology, and again, will likely get a pay bump. Designers? The only people who need game designers are game companies. 

#5219477 I'm good at programming, is it enough?

Posted by Dave Weinstein on 26 March 2015 - 06:01 PM

If multiple people think you are coming across with a bad attitude, you might want to consider that you either do in fact have a bad attitude, or alternatively, are having communications issues.


Either way, the problem is yours. You are the one trying to break into the game industry.

#5216280 Starting fresh

Posted by Dave Weinstein on 13 March 2015 - 09:02 AM

Go read Peopleware.


The third edition is now out: http://www.amazon.com/Peopleware-Productive-Projects-Teams-Edition/dp/0321934113/ref=dp_ob_title_bk

#5215517 Getting out of the industry?

Posted by Dave Weinstein on 09 March 2015 - 04:32 PM

The game industry, even at the top end of programmer salaries, does not pay competitive wages compared to the rest of high tech.


It's simple economics. There is a talent oversupply, and that depresses salaries.

#5215332 Getting out of the industry?

Posted by Dave Weinstein on 08 March 2015 - 06:52 PM

I have been threatening for years to pitch a "How to Break Out of the Game Industry" panel for GDC.


When I decided (because, bluntly, the continual crunch burned me out) that it was time to leave the game industry, my path out was actually the fact that I had built a lot of tools for game development over the years. Look for points of congruence between what another part of high tech needs and what you have done in games, and take advantage of the halo effect that "professional game developer" has in the eyes of some people looking to hire, and find your way out.


Do you need to stay in your local area, or are you willing to relocate? Who do you know outside of games but inside of high tech? What sounds *interesting* to you as a career path to take? Where would you ideally like to live? What sounds like the most interesting thing to work on? Big company or small company, you ideally want someone you know and who knows your skills to be walking that resume in the door.


Start looking now. Write a resume for outside the game industry, and tune it and the cover letter for every job you are looking for. You just need to find the right position, it is going to be out there.


I will disagree with Tom, I would not have this discussion with your employer. When you have your next position lined up, give them two weeks notice. Having a discussion with them about it is far more likely to have your employment ending on their timetable rather than yours.

#5213584 Epic List of Interview Questions

Posted by Dave Weinstein on 28 February 2015 - 10:44 PM

I tend to like more open questions. One of my favorites is "Write an Elevator".

#5212722 Getting Destroyed in Programmer Screeners

Posted by Dave Weinstein on 24 February 2015 - 10:41 AM

The reason you don't advance to the next round can have nothing to do with how you answered the question.


The Game Industry has a talent oversupply, especially at entry level. This is further exacerbated by the instability of the industry; at any given point in time layoffs are putting experienced developers back into the labor pool.


So you could literally be the perfect entry level candidate, cream of the applicant pool, but if two days before they decide who to bring in for in-person interviews they get applications from experienced devs, you are going to fall out of the list.

#5212048 Getting Destroyed in Programmer Screeners

Posted by Dave Weinstein on 20 February 2015 - 09:58 PM

Not one of them will improve my ability to "create a queue structure that has manual alloc and dealloc methods that do not use heap, but instead, a provided 2048 char/byte array as storage" I couldn't even force a scenario like that if I wanted to into an indie game. Why would I?


So, that sounds very much like they are looking to see how comfortable you are with actually implementing and understanding data structures, rather than just using libraries. Yes, you probably won't be writing your own systems (and arguably, most of the time, you shouldn't be), but making sure you know how to as an open-book question seems reasonable to me.


#5211111 how to know most hack possiblities and find best way to handle them

Posted by Dave Weinstein on 16 February 2015 - 10:06 PM

Encryption of network traffic has really only one purpose -- to prevent a third party from seeing the contents of the message traffic. 


That's it.


It doesn't even prevent a third party from tampering with the data (that would be message authentication), it just is supposed to prevent them from reading it.


Someone cheating is not a third party, they are a hostile endpoint, and that's another problem completely.

#5210602 I this going to be ok as a Network message class

Posted by Dave Weinstein on 13 February 2015 - 11:39 PM

If you were going to make a custom packet in binary. you need to add a packet header in case data is corrupted, or hacked.

Usually the header includes

1. Message ID

2. Message type or class

3. Checksum

4. Actual data size


The checksum is likely wasted data. It isn't necessary assuming that your transport layer is TCP or UDP, since those are already doing those checks. And a checksum is useless against an actual attacker.

#5206340 Game college: Cheaper school or better school?

Posted by Dave Weinstein on 23 January 2015 - 11:29 PM

Avoid debt if you can possibly help it.


College debt cannot be discharged in bankruptcy -- if you were disabled they would garnish your social security to pay back your college loans.


Debt denies opportunities. You have payments that must be made, and that limits your ability to pursue lower paying options with long term payout, or to get access to credit that you might need for future purposes.

#5197992 best way to send an receive multivarible data by socket

Posted by Dave Weinstein on 13 December 2014 - 09:45 AM

Is there a reason you want to use text for transmission?

#5195314 IOCP critical section design problem

Posted by Dave Weinstein on 28 November 2014 - 11:03 PM

Threading is one of the hardest things to do well in programming. Period.


Locks are both prone to hard but complex failures (deadlocks) on the one hand, and extreme performance hits on the other (limited number of locks to prevent deadlocks).


I'm personally fond of option 3 (above) in the case of network code, for a couple of reasons. First, you are spending as little time in the lock as possible, so you might be able to get away with a single "I am about to create a message" lock. Second, you have a single inter-thread communications system. The first one makes it less likely you will have programmer error, and the second gives you a single high-risk component to test the everliving-hell out of.

#5165165 I've got problems with interviews

Posted by Dave Weinstein on 06 July 2014 - 07:45 PM

I cannot imagine ever hiring for a programmer position without having the candidate white board one or more programming problems.


I say this, because I've been the "technical interview" for people being hired in as programmers who really were not at all qualified. The resume looked great, they absolutely nailed the "let's talk about process, and how we work together" process interviews, as well as the "let's talk about programming without actually doing any" interviews. And then I asked them to whiteboard, and they absolutely cratered.


One of the questions I used to use when looking at candidates who listed on their resume a proficiency with C/C++ was a simple opener. 


Please implement this function:

/* Implement a simplified version of integer to ascii, supporting only base 10, and assuming a 32 bit value on a 2s-Complement architecture */
char * itoa(Int32 value)

This is not a hard question per se (as with most of my interview questions, I stole it from questions I was asked in an interview). There are a couple of ways to approach it, and while there is a corner case, I don't hold missing it against the candidate. Getting it on the other hand is a bonus. Mostly, I want to see you approach the problem.


And yet, one candidate confidently wrote this:

char *itoa(Int32 value)
   return (char *) value;

Not only did he confidently write it, it took a fair bit to convince him he was wrong. Even with a lot of prompting, what was supposed to be the first 15 minutes of the interview took the whole hour, and he never did get the problem solved.


And that is why I'll always want anyone being hired for a development role to actually write code as part of the interview. Because I've *seen* people with the right resume say all the right things, and flunk the ability to actually write anything. I no longer assume "basic coding competence".


[As a side note, having been on both sides of whiteboarding questions, it is *always* easier to spot the bug while you are sitting there watching them write. That's why the interviewer always seems to have a laser focus on the bug when you haven't seen it. As a candidate, as soon as you finish writing it down (and you should talk about what you are doing and why as you go), say something to the effect of "Now to step through this and look for bugs", and out loud start debugging what you wrote with example cases.]