During the Seattle Startup EDU Weekend I had the chance to work with two programmers. In high school I studied Basic, then in I tried a little Pascal. I liked programming but didn’t major in it in school, following other interests instead. When I started teaching I learned html and tried to get back into programming. I tried to learn Perl and C and Java. What I found is that I didn’t have the time to learn any of those so I gave it up.
I’ve always enjoyed computer and video games so there’s a part of me that’s interested in how a game gets developed and programmed. At the startup weekend I got a glimpse into that world and it was cool. For those who love gaming and have an interest in making games of their own I asked Vinay Ahuja and Pratyush Jalan some questions about what they do. Here are there responses:
1. When did you get started in programming? How did you get started?
Vinay: My first exposure to programming was in 7th grade on Basic in a summer vacation class. I didn’t do any programming after that until I went to college — first year.
Pratyush: I think it was during 8th grade. We were taught to program (draw simple figures) in BASIC.
2. How much education did it take to learn the programming languages you know (please tell which programming languages you know)? If you were self taught please explain how you did it.
Vinay: The first language takes more time than the subsequent ones because the programming constructs are similar in most languages. It depends on the type of language too – whether it is procedural, functional, object oriented etc. Once you have grasp of one of each kind it is just a matter of syntax afterwards.
I have programmed in C, C++, C#, Java, SQL, Visual Basic, COBOL over the last 18 years.
Now, I mostly use C#, SQL
Pratyush: I started learning core programming from 9th grade. We started programming in C++ and it continued up till end of high school. In College I elected for Computer Science as my major and I learned most of the programming languages through projects. In college, there weren’t many courses which taught you specific programming languages. We picked them by doing class/course projects. In Computer Science, once you learn the fundamentals of programming then it is easier for you to learn multiple programming languages. I learnt C++, Java, Python, Ocaml and C#.
3. How long have you been programming?
Vinay: 18+ years
Pratyush: I have been programming for the past 10 years. Most actively after my Junior year in College.
4. Where do you work? What kinds of jobs are available with your skills?
Vinay: Microsoft, Jobs in Software Development, Architecture at multiple levels.
Pratyush: I work in Microsoft as a Software Developer Engineer. With computer science skills, you can go into wide foray of fields – Â Software Development, IT solutions, Network & Communications.
5. What things have you worked on?
Vinay: I have worked on B2B, B2C, Ecommerce, Online services, Systems software, Very Simple games, Machine Learning algorithms, Mobile Devices and so on.
Pratyush: While in College, I worked on multiple projects as part of my courses. Some of the interesting ones have been – enemy bot games, Facebook app and Amazon applications. While working in Microsoft, I have worked on Service, User-Interface applications and tools.
6. How hard is to develop games like Call of Duty and World of Warcraft?
Vinay: It’s hard for me to comment on this, as I have not played these games and not too much of a gamer now. It should be easily in 100s of man months though — if you take into account all the effort for requirements, design, implementation, testing, marketing, strategy etc. Depends on levels and complexity of the game.
Pratyush: Call of Duty and World of Warcraft are quiet difficult to built because they require high quality graphics rendering at a very high speed. These games have two core pieces, the UI and the game engine. The game engine requires knowledge of physics as well to develop.
7. Once you start working on a game like Call of Duty does that provide steady work for a programmer or do you constantly move from one project to another?
Vinay: In game development, there are multiple aspects and various skills — User interface design, Level design, UI development, Backend (middle tier/repository) development, overall architecture, community web site, in game credit purchase integration etc, help/documentation
There are scalability and reliability aspects of the game, testing — alpha/beta, user adoption etc.
there is physics engines being written, simulation software for games etc..
there are several game development books out there..
Pratyush: Generally these games take quiet sometime to build (probably 1-2 years). There are multiple teams working on each small piece of the game. Developers generally tend to stick till the end of the project and then you have the flexibility to move to a different team within the same project or you can change your field of work as well.
8. With regards to our Magical Petz game I hear you guys say that Pratyush worked on the UI and Vinay worked on the API. What does that mean?
Vinay: Pratyush — designed the UI interface to layout the maze and any plumbing code to do integration with the backend API.
API — stands for Application Programming Interface — think of these as core libraries that form the backbone of the software — which people don’t see first hand but this does the foundational work. look at wikipedia for API.
Pratyush: Think about the Magical Petz game as two part. On the User Interface, I layed out the grid, the buttons and the other stuff (using different colors, size and etc) When someone clicks on these buttons, there is a signal sent to the backenend (game-engine) which drives what the next step would be. Similarly the lego-minestorm has some APIs – functions that signal the lego piece. So I build the game and Vinay wrote the APIs to move the lego-piece and we integrated both of these together.