Bloomberg Developer

    This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

    • Bloomberg Developer

      Hey guys,

      A headhunter got me an interview with Bloomberg in a few days. It's pure C++ development on Linux. I'm kind of torn on what to do. Working on my game and reading GCC has been very addicting and I want to do game development professionally.

      Pros:
      Apparently Bloomberg operates at a very high level and has people who are committee members for the C++ standard. In contrast, my current job is 90% FORTRAN (which is absolutely god awful for those of you who have never used it) and 10% C++. I could spend a lot more time getting better at C++.


      Cons: I would work long hours, and I don't think I'd have time to work on my game. I barely do now since engineering has it's own "crunch" time.

      So, for those that are familiar with the hiring process for game developers: would it be more attractive to have raw brute force C++ experience at a company like Bloomberg, or should I stick with 5-10 hours per week of development time for my game?

      The salary and quality of life difference in the two jobs is essentially a wash, so it's purely a matter of what is a better path to game development. Ironically, the recruiter said the "Hobby Game Development" section of my resume got me the interview because it showed a passion for C++ development. Life can be so cruel!

      Thanks in advance
    • That's a tough decision, I'm relatively new to the industry (4-5 months) as apposed to Mike & Rez, but I'll try to chime in on what I can. C++ is an awesome language, but it really isn't the only way to games, and some companies will rarely even touch it, I work for Gameloft which does a lot in C++, but there is also Objective-C, C#, Java, Python, Lua, all mixed in throughout the Gameloft world. Other companies I have met, or interacted with really vary, one company that hosted the Molyjam last year uses almost only web languages like Ruby and Javascript for their games, and this is a decent sized studio (50-100).

      I think what it comes down to is this, do you have people relying on you for a salary? If the answer is no, and you can afford to eat noodles a lot while you push yourself hard to learn game development, I would say this would be the route to go. Honestly, I doubt aside from lower level stuff that you will get an experience akin to game development at a software production firm. Game development has sides you won't ever get to touch making accounting software (or whatever it is they do).

      To summarize, if you think that by working at Bloomberg you are going to have no time to pursue your dreams of making video games professionally, you should not take it, if you have mouths to feed and your current job can't provide, than maybe games will have to wait. But either way you decide, know that the game industry is an incredible place to work, with awesome, creative people who love there jobs and love making games to, don't let it out of your sight if you are truly passionate about making games.

      *Fun Fact*
      About 2-3 years ago (whenever GCC4 came out), I was a hobby programmer, who worked full time as a licensed tech in the natural gas fitting trade, I loved programming and really liked games and had been dabbling with game programming for while already (3-4 years just for fun). I never really learned much or got anywhere because I worked 40+ hours and only spent an hour or so doing any actual programming. I finally found GCC4 which helped me to really get things in perspective (not to mention the countless page long replies from Mike and Rez to help me understand things), I then got serious and considered going to school for game dev, which my wife pushed me to do. 1 1/2 years later (an accelerated course), I graduated. I actually graduated early as getting an industry job is an instant pass in my course, but pushing through to achieve my goal and having a full focus on getting there payed off, and I found myself at Gameloft (November 2013).
      PC - Custom Built
      CPU: 3rd Gen. Intel i7 3770 3.4Ghz
      GPU: ATI Radeon HD 7959 3GB
      RAM: 16GB

      Laptop - Alienware M17x
      CPU: 3rd Gen. Intel i7 - Ivy Bridge
      GPU: NVIDIA GeForce GTX 660M - 2GB GDDR5
      RAM: 8GB Dual Channel DDR3 @ 1600mhz
    • No one can make this decision except for you, of course, but I will offer one or two bits of advice.

      First, for gameplay programmers, the following is absolutely true:

      Source Code

      1. Finished Game Demo > C++ Experience > NULL


      For systems programmers, I might swap C++ and demo, but both are very important. Second, when it comes to C++ (or anything really), you'll learn a LOT more when you do it professionally.

      If it were me, I'd take the job and make time for a game demo anyway. When I was in your place, I was staying up until insane hours working on my own stuff just for the fun of it. I still do; how do you think we ever wrote this book? Mike lives in Austin and I live in San Francisco. Sometimes I would call him when he was just waking up at like 7am my time. He usually answered the phone with "Dude, you are not still awake."

      The real question is, how much do you want this? And how much are you willing to pay for it?

      -Rez
    • Oh yeah, what he said....lots of late nights haha.
      PC - Custom Built
      CPU: 3rd Gen. Intel i7 3770 3.4Ghz
      GPU: ATI Radeon HD 7959 3GB
      RAM: 16GB

      Laptop - Alienware M17x
      CPU: 3rd Gen. Intel i7 - Ivy Bridge
      GPU: NVIDIA GeForce GTX 660M - 2GB GDDR5
      RAM: 8GB Dual Channel DDR3 @ 1600mhz
    • You guys are relentless! Rez suggests learning assembly code, working 100 hours a week as a badge of honor, and I think in one of these threads said re-implementing the STL was a good way to learn data structures.

      I mean, I still want to PLAY games too!

      I suppose I'll see how the interview goes and re-evaluate. My formal education didn't cover data structures and apparently the interview is a lot of programming "puzzles" with them. So who knows if anything will actually come out of this.

      But, it's good to know what your opinions are on the situation.

      Thanks guys
    • Yeah, but the 100 hour work week isn't like being part of the 300 club in a bowling league, it's generally best to avoid that one haha, we've had some pretty long weeks already, but 100 hours would just be a death march (unless the game was REALLY awesome than I might be ok with it).
      PC - Custom Built
      CPU: 3rd Gen. Intel i7 3770 3.4Ghz
      GPU: ATI Radeon HD 7959 3GB
      RAM: 16GB

      Laptop - Alienware M17x
      CPU: 3rd Gen. Intel i7 - Ivy Bridge
      GPU: NVIDIA GeForce GTX 660M - 2GB GDDR5
      RAM: 8GB Dual Channel DDR3 @ 1600mhz
    • It all depends. I don't work 100 weeks every week, but I definitely go through sprints. I just finished one where I was working until five or six in the morning to get my presentations done for GDC. Now that I'm done with GDC, I will probably work a normal schedule for a little while until something else comes up.

      That having been said, making games isn't an occupation, it's a lifestyle choice. I got home last night around 8pm after the conference and unwound by working on my chess game. That was how I chose to relax. If you're not spending your time doing this stuff on your own, it might not be the occupation for you. Again, that doesn't mean you have to spend ALL your free time doing it, but making games should be just as interesting as playing them.

      I think Jiro says it best:

      "Once you decide on your occupation... you must immerse yourself in your work. You have to fall in love with your work. Never complain about your job. You must dedicate your life to mastering your skill. That's the secret of success... and is the key to being regarded honorably."
      -Jiro Ono


      -Rez
    • Well that's the thing, I probably only spend 3-6 hours a week actually gaming.

      The real time sink is my job and Orange County traffic. All of that is essentially wasted time, but you gotta pay the bills.

      The 5 hours a week reading GCC, books from Scott Myers, Concurrency in action, etc. and 5-10 hours of actual hands on the keyboard computer game coding is basically all I can seem to fit in. I'm pretty satisfied with my progress though. I can play my own (clunky and unpolished) tic tac toe game and I think I have multi-threading down pretty well now.

      I think the real thing I have to decide is if I should lower the scope of my demo game. I think it was a bit ambitious to start out :/

      But, I've only been serious about this for about two months and I enjoy it. No point freaking out yet!
    • If you are looking for my input, I am in a similar position as you. I have a lot of different things going on, and I sometimes find it hard to focus on gaming stuff... but not because I don't think about it all the time. I want to make games so bad I get myself all worked up into a frenzy, and if I'm not careful I don't sleep or eat or make time for my family. When I find that I get discouraged, and wonder why I do this, I have a few things that I do to remind myself why I do what I do.

      I have found a lot if inspiration from Indie Game the Movie. Like, that movie makes me want to do this, and makes me feel like I can. In high school, I let people talk me out of programming, and now 10 years later, I have decided to do it for myself, and not the approval of others. It's a lot to take in, and for every chapter I read of GCC4, and all the other books I have, I just realize how much I don't know, and how much I have to learn, but I try to make my mind vacuum, taking in everything around me so that I can make my visions real, and make some money at it.

      I would say for me, I have given, do give, and want to always give all I have to make games. I will live to my dying day making games, and doing all I can to express my art through games.

      Hope this helps
      Birdemic
    • In high school, I let people talk me out of programming


      I'm getting the impression that soon enough there is going to be a shortage of programmers, it's never been a better time to get into programming.

      I got home last night around 8pm after the conference and unwound by working on my chess game. That was how I chose to relax. If you're not spending your time doing this stuff on your own, it might not be the occupation for you.


      I find it extremely strange that I'm one of the only people at my work that does any side projects, there are maybe 3-4 of us that do anything on the side for fun. It seems like everyone else I've asked is too burnt out from work to want to do it for fun.
      PC - Custom Built
      CPU: 3rd Gen. Intel i7 3770 3.4Ghz
      GPU: ATI Radeon HD 7959 3GB
      RAM: 16GB

      Laptop - Alienware M17x
      CPU: 3rd Gen. Intel i7 - Ivy Bridge
      GPU: NVIDIA GeForce GTX 660M - 2GB GDDR5
      RAM: 8GB Dual Channel DDR3 @ 1600mhz
    • Originally posted by birdemic
      In high school, I let people talk me out of programming, and now 10 years later, I have decided to do it for myself, and not the approval of others.

      I'm curious, how did they talk you out of it? Was a nerd vs jock thing, or did they convince you that the lifestyle wasn't for you?


      It's a lot to take in, and for every chapter I read of GCC4, and all the other books I have, I just realize how much I don't know, and how much I have to learn, but I try to make my mind vacuum, taking in everything around me so that I can make my visions real, and make some money at it.

      That never changes, by the way. I've been programming for 18 years and working as a professional game programmer for about 9. I still get that feeling when I read some new material or go to GDC and listen to talks. I'll probably quit once I feel like I actually know it all. Fortunately, I don't think that ever happens.


      I would say for me, I have given, do give, and want to always give all I have to make games. I will live to my dying day making games, and doing all I can to express my art through games.

      Amen.


      I think the real thing I have to decide is if I should lower the scope of my demo game. I think it was a bit ambitious to start out :/

      Yes, you should. You should make your first few games about 1/10 as complex as you think you can handle. I usually suggest something like Tetris for a first game because it's trivially simple but has some hidden complexities. It's also a game design we all know and love. Nothing kills a project faster than biting off more than you can chew.


      I'm getting the impression that soon enough there is going to be a shortage of programmers, it's never been a better time to get into programming.

      Going to be? Programmers are the most sought-after discipline in the industry, by far. We also tend to get paid the most, though we do work the longest hours (sometimes by absurd amounts).


      I find it extremely strange that I'm one of the only people at my work that does any side projects, there are maybe 3-4 of us that do anything on the side for fun. It seems like everyone else I've asked is too burnt out from work to want to do it for fun.

      It depends on the person. Some people get their game programming fix from work so they don't need it else ware. Most people still have other creative outlets though. Our lead gameplay engineer makes board games in his spare time. He's actually about to push a kick-starter up for his game, which is really good. Another gameplay engineer helps her husband with some designs for his game. Another guy says he can't work on two games at once or wires get crossed, so he gets his fix by building guitars. Me, I teach, write, and do a lot of theater. Of course, I also work on game projects in my spare time...

      There's a great GDC talk about the making of Monaco that I listen to every now and then when I need a pick-me-up about making games. It's really, really inspiring, especially how he exposes his facebook posts.
      gdcvault.com/play/1014577/How-to-Win-the-IGF

      Also, just GOING to GDC is key for me. It fuels my passion to be in this industry for another year. There's nothing like being surrounded by your own people.

      -Rez
    • Well I don't think I'll have to worry about the decision. I got a couple of questions like differences between bubble sort and quick sort, balancing binary trees, and a couple other algorithm - data structure questions. I eventually said, "I use the STL so I don't have to know those details."

      The interview stopped pretty quickly after that, haha.

      The rest of the questions were more C++ usage and less computer science. I got all of those correct - except it took me a while to remember all of the automatically generated functions C++ creates in a class.

      So, any recommendations on books for the more computer science-y side of programming?
    • When I was 16 my Father passed away, and in looking for a sort of mentor / father figure, I looked to the wrong people. This one douche bag tried to take an intro programming course, and wasn't able to program because it was just too hard from him. I, however, at the time, admired the guy and though he was pretty smart. He was step one.

      A pal of mine had some older brothers, and one of them worked on Warcraft 3, and just got sick of blizzard, and I listened to a 2 hour rant about how if you go to make games, you'll never have the creative control to make the art or the game that you want to make. I was very impressionable, and wish I had told them all off, and just bought a book about c++.

      I spent the next 10 years working on writing short stories and book, trying to convince my brain to be a writer, when i wanted to be a game designer and programmer. I am working at a web hosting company now, linux administration and site troubleshooting just came naturally for me, and paid more than a retail job. I started some work with perl, and php, an all the web norms. I applied for a QA job, and decided that I had a knack for programming, and wanted to pursue it.

      My plan was to get on a perl dev, then learn c++ and make games, and when I didn't get the QA job, I just had a very cathartic moment, and realized that I was wasting all of my time. This was about 6 months ago...

      Long post, I know, but I just want to say thank you for writing books like this. I have found it to be an invaluable help in learning all this. Luckily I can pick things up pretty quickly, and I am way excited to be getting in the industry, and have a long road ahead of me, but if I could give a lesson I have learned to people who think they may want to do it, everyone should try it if they think they might like, and don't listen to negative people who try to stop you from doing what you dream of doing.
      Birdemic
    • Originally posted by DieselMaxPower
      I eventually said, "I use the STL so I don't have to know those details."

      Yeah. Honestly, if I were interviewing you, I probably would have made the same decision. It is critical for engineers to understand how stuff works underneath. It doesn't matter what language it is.


      So, any recommendations on books for the more computer science-y side of programming?

      Nothing recent, unfortunately. I reimplemented most of the STL in an effort to learn how it all works. I built a resizable array (vector), linked list, map (red-black binary tree), hash table, queue, stack, string, and a couple sorting functions. It took me several months but I learned a hell of a lot. Then I forced myself to use them on the next three projects or so before switching back over to the STL. Interestingly enough, my versions were a lot faster than the STL, but they also made a lot of concessions (not thread-safe, for instance).

      -Rez
    • Originally posted by birdemic
      This one douche bag tried to take an intro programming course, and wasn't able to program because it was just too hard from him. I, however, at the time, admired the guy and though he was pretty smart. He was step one.

      It's funny how that works. People who think they know it all will try one thing and decide it's bad because they can't understand it or had a bad experience.


      A pal of mine had some older brothers, and one of them worked on Warcraft 3, and just got sick of blizzard, and I listened to a 2 hour rant about how if you go to make games, you'll never have the creative control to make the art or the game that you want to make. I was very impressionable, and wish I had told them all off, and just bought a book about c++.

      Well, that part is somewhat true. Professional game developers get much less creative control. If you have a good team, you can sit down and really help out with designing features, but you're mostly making someone else's game.

      My first professional game as an engineer was Barbie Diaries: High School Mystery. Here are some screenshots:
      gamesguru.rs/pc/barbie-diaries-high-school-mystery

      I actually wrote the necklace minigame at the top right.

      Anyway, one of the things I snuck into the game was the concept of a relationship matrix. X could like Y by Z amount and it determined their desire to socialize. It was also asymmetrical. This allowed me to tell stories. The cool kids hung out on the lawn together, the nerds hung out in the computer room together, quirky girl followed the emo kid around, but he didn't like her much so he mostly went and did his own thing. It looked awesome and it's a great example of the level of creativity we can bring to an existing design.


      My plan was to get on a perl dev, then learn c++ and make games, and when I didn't get the QA job, I just had a very cathartic moment, and realized that I was wasting all of my time. This was about 6 months ago...

      About a decade ago I had the same realization. It was actually after reading Game Coding Complete, 2nd edition when I realized I was wasting my life and needed to get back into games (I had done some QA, tech support, and was moving into design/production when the studio shut down). I was working a job I hated (coincidentally writing perl scripts) and decided to submit my resume to a game company. I got in, mostly because they happened to need someone who could automate their source control systems. If you read the forward in GCC 4 by Bo Lasater, you can hear the story straight from him. He was our head of studio and one of the founders.


      Long post, I know, but I just want to say thank you for writing books like this. I have found it to be an invaluable help in learning all this. Luckily I can pick things up pretty quickly, and I am way excited to be getting in the industry, and have a long road ahead of me, but if I could give a lesson I have learned to people who think they may want to do it, everyone should try it if they think they might like, and don't listen to negative people who try to stop you from doing what you dream of doing.

      You're quite welcome! My biggest hope is that I can be the resource I wish I had when I was getting started. I'm glad our book has helped you. :)

      Thanks for sharing your story.

      -Rez
    • Originally posted by rezination
      Yeah. Honestly, if I were interviewing you, I probably would have made the same decision. It is critical for engineers to understand how stuff works underneath. It doesn't matter what language it is.
      -Rez


      Yes, but surely at some point specialization is more productive than generalization. So your art designers don't know the inner workings of your graphics code, and your UI guys don't know the inner workings of your engine code, blah, blah.

      But in the end it was a hardcore c++ development position. I guess data structures/algorithms was supposed to be my specialization :/

      I guess there's nothing left to do besides getting ready for some hard work, 100 hour weeks, and re-implementing the STL. :)

      The post was edited 1 time, last by DieselMaxPower ().

    • Sure, but those are artists and designers. As an engineer, I would expect you to know why this will kill you:

      Source Code

      1. std::vector<int> count;
      2. for (int i = 0; i < 100000; ++i)
      3. {
      4. count.push_back(i*2);
      5. }


      If you don't know what's really happening inside push_back(), you may not realize how bad the above loop is.

      I don't expect people to have it memorized, but you should know the run-time advantages and disadvantages of the data structures you're using.

      Specialization is certainly reasonable. I probably couldn't work as a graphics programmer since it's not the thing I've focused on, but I do know the concepts of how 3D graphics are rendered onto the screen. :)

      -Rez
    • I agree with that. I know you have to call count.reserve(100000) to allocated sufficient memory to avoid reallocation and copying penalties there. Or use range inserts if it makes sense. I know .size() is linear time complexity on lists and constant on vectors, stacks, etc. I know hash maps are constant time complexity on insertions, deletions, and lookups while maps (which I think are based on binary trees) are log(n) time complexity.

      The questions were more like, modify the guts of the STL data structure to get some meaningless integer. That stuff I have no idea with.

      I probably should have known quick sort vs. bubble sort, but a degree in mechanical engineering just doesn't cover that stuff.
    • I don't expect people to have it memorized, but you should know the run-time advantages and disadvantages of the data structures you're using.


      In school we had a class dedicated to data structures, we had to essentially rewrite the STL fundamentals. Even though there aren't many cases we use our own data structures at work, having that core understanding of the different structures and how they operate is key. You would be surprised (or would you?) at how many times in production code I see someone treating a vector like a linked list, and adding/removing elements from them without consideration.
      PC - Custom Built
      CPU: 3rd Gen. Intel i7 3770 3.4Ghz
      GPU: ATI Radeon HD 7959 3GB
      RAM: 16GB

      Laptop - Alienware M17x
      CPU: 3rd Gen. Intel i7 - Ivy Bridge
      GPU: NVIDIA GeForce GTX 660M - 2GB GDDR5
      RAM: 8GB Dual Channel DDR3 @ 1600mhz