Archived

This topic is now archived and is closed to further replies.

d000hg

Just what does a professional programmer DO?

Recommended Posts

Not quite as silly as it sounds, but a cover for many questions... Surely there can''t be that many software companies around - how many word-processers/virus things/whatever are really needed? What does a non-games programmer actually do as their job? Get told "write a class that does this"? In both games/serious programming are you normally in a small group (<10) or often with hundreds writing one application? How can the management notice you as standing out if they only look at how quick you write it not the quality of code - "if it''s got no bugs it must be well written right?" Do you really get 80 hour weeks (bad as doctors!) or is that just the odd week here and there, and can you make a stand "I have a wife, I''m not working till midnight ''cos of bad deadlines by management" without being sacked? Please don''t flame me, just trying to get an idea how different programming as a job is to hobby stuff. John 3:16

Share this post


Link to post
Share on other sites
I work with a financial company that uses C++ for their serious programming and VB for their GUI (this wasn''t my decision so don''t complain to me)
I provide software support to 15 [software] servers as well as any enhancements that are determined to go live. Any problem that occurs on my servers are routed through management then are assigned to the proper developer (there are 3 other server developers working on similar things I am) Within a few days of receiving the bug I will release a date I will have the code ready to build (this includes doing paperwork, finding and fixing the bug, and having a business lead check it out to make sure it fits into their scheme of things.) Included in the paperwork is what went wrong, why it went wrong, and what was done to fix it. My boss is able to tell the quality of my work by looking into past issues that I have fixed: if I fixed a bug, and it created five more, my boss would know.
I work anywhere from 40-45 hours a week and have never worked more than 50 (although there have been other people at my work who have done 70+ right before a big build.)
I forsee no end of programming work at my job, as there are always enhancements to be done, bugs to fix and if those fail then I could probably write a design doc or two *shudder*.

Share this post


Link to post
Share on other sites
Here's my perspective:

It's all about how much you know and how good you are at programming (and what your company does). I used to work for a company of 40+ developers writing all sorts of applications (corporate software). we were sectioned off into groups of about 5 developers per project. Every now and then a new project comes up and a prototype is needed for a showcase (to get funding to complete the project). The best developer(s) are normally selected to develop the prototype in the least amount of time (normally a few days to a couple weeks). I was put on several prototype projects (many of wich were backed and developed) of various types: Windows CE data recorder/scanner/picture device, Palm OS accounting application, ASP accounting application, Win32 Accounting application, Cold Fusion app for generating contracts, JAVA/JSP for road side services just to name a few
At my current job we develop architecture software and the whole dev team works on the same project. There have been 100+ developers at this place and there's 12k+ source files. But when prototype time comes, only the best will be selected to stray from the group and do some serious development. I was just selected to develop a visualization app for our buildings in a win32 Dx8.1 app (wOOtWooT!) that if gets funding will be a god send in this line of work (corporate software is shizzits without Vertex buffers )

So: coding for the "big wiggs" (non game dev jobs) for me has been fairly exciting in all the jobs i've had because I have the will power and flexibility to take on any task (and my boss's recognize this). Having a good outlook and alot of skill (or the ability to learn quickly) can make an otherwise boring job into the job of your dreams

Zygote-

[edited by - zygote_mm on July 17, 2002 7:05:32 PM]

Share this post


Link to post
Share on other sites
While I now work in the games industry, I used to work in the embedded systems industry. I spent three solid years developing software for digital output devices. In those three years I wrote upfront requirement and design documents, debug tools, motion control code, scsi interface code and mainline logic code. I worked in a team of 6 software engineers and 30+ mechanical and electrical engineers. I did bug fixing and prototyping. In my three years with the company only once or twice did I work more then 8 hours a day. My employers noticed my abilities from what my coworkers said, my bug tracking record, my ability to hit deadlines and the quality of my documentation and design work. When I decided to leave for a game job the company was disappointed. I can imagine that I could have worked there with the original 6 plus 3 or 4 more softwar engineers for the rest of my life. The pay was good and the job secure. Managers are able to determine the quality of your work if the product doesn''t RUN. If it is crash prone, eventually the right person is found who is actually accountable for the bad code. Likewise, when things get done on schedule people are usually rewarded.

Share this post


Link to post
Share on other sites
My field is electrical engineering. Almost the entire field of EE involves programming at some level. For instance, I work at a communication company--we design many algorithms, from codecs (speech encoder/decoders) to voice-recognition to GPS receivers to the actual over-the-air transmitters and receivers. Every single one of those algorithms is programmed and tested first on software before we build the boards or ROM the chips. And since we make our own DSPs, we also make our own compilers, so there's people at the company that build compilers. Then we build custom testing platforms to test the actual targets, which often requires custom hardware and software--PC-based and embedded.

There's a tremendous amount of programming in electrical engineering--anywhere from 50% to 90% of your job, from my experience.

Usually, what you get told is: "These are the requirements--we need something that does X. Build it." So we do that, from the ground up.

We do lots of individual projects (1 worker on a project), though for bigger projects we've been known to pull together 7 people for six months or so.

As far as standing out, it's easy to tell how good a person is by the code reviews and by how quickly they can modify their programs & how they don't crash. It also comes through while debugging, which is usually a group effort. Our management polls our peers to ask how good we are, so teamwork is a must.

80 hour weeks can happen (the dreaded "crunch time"). In my experience, though, this usually happens because of poor planning, so it doesn't happen often. We can also have 30 hour + 10 hr goof-off weeks; it really depends on current demand for services.

[edited by - Stoffel on July 17, 2002 7:37:39 PM]

Share this post


Link to post
Share on other sites
Guest Anonymous Poster
quote:

What does a non-games programmer actually do as their job? Get told "write a class that does this"?


I don''t believe that there is an awful lot of difference between a games programmer and non -games programmer in that respect. The lead programmer will determine the order of tasks to make sure people aren''t waiting around for other programmers and also try to ensure that each persons specific code will fit neatly into the project as a whole (along with a host of other tasks). The programmers working under the lead are then assigned the tasks to be completed and are usually them selves incharge of implimentation details. Usually the tasks are given to the person that is most knowledgable in a specific area.

quote:

In both games/serious programming are you normally in a small group (<10) or often with hundreds writing one application?


I have worked on a couple of games with 3-4 people, but the last one was with a team of 19 programmers.

quote:

How can the management notice you as standing out if they only look at how quick you write it not the quality of code - "if it''s got no bugs it must be well written right?"


If you''re good, you will stand out. Simple as that. The lead programmer (should) be following what each programmer is doing fairly closely. Usually this involves the occasional code review where your programming descisions and style are looked at, a design document where you describe usage and structure of your code to other team members, or just simple chats about schedules/deadlines etc.

quote:

Do you really get 80 hour weeks (bad as doctors!) or is that just the odd week here and there, and can you make a stand "I have a wife, I''m not working till midnight ''cos of bad deadlines by management" without being sacked?


On most projects there are distinct high and low periods of stress. Usually there is a bit of a rush before each milestone deadline, and before the project ships. That can occasionally mean a few late nights and (rarely) an all-nighter.

If programmers on a specific project are regularly doing 70+ hour weeks, it tends to hint that the project has really bad problems. This is usually due to either bad management, bad communication between programmers, lack of motivation, big problems in the codebase, big problems with the art tools (or lack of them), or the project is in serious jeopardy of being canned for some other reason.

In my last job I saw all of the above, I did an average of 80 hours pw whilst there. The only problem, is that after a short period of time, people become really drained and don''t get the opportunity to recover. This tends to lead to some very unhappy people at work, who tend to not be motivated first thing in the morning after another late night. These people generally look for new jobs whilst spending all day browsing the internet for southpark episodes, and wandering off to the smoking room every half hour for an ''erbal remedy......



Share this post


Link to post
Share on other sites
Thanks for the replies so far, a question though:

How do you get experience in all the different areas? I''m procicient in C/C++ and will be in DX by the time I finish Uni, but there''s so many languages/protocols/libraries out there - how is anyone meant not only to find time to learn them all, but also to remember them? I mean if you work on compiler design or OS or embedded systems there''s going to be a good deal of low level stuff which will be unique to the hardware you''re using - quite possibly no-one else has done before. How does one have any hint of this depth of knowledge to get a job like that in the first place?
And stuff like a network manager - not many people have access to even small networks to play on, let alone big, multi-server, multi-OS networks like you''re going to deal with. Maybe you can build a PC or link two PCs together using WinNT, but how does any company choose you apart from knowing you can code.

Oh, additionally, could I show a game demo to a serious software company or would they want to see a calculator or map editor or something more serious?


John 3:16

Share this post


Link to post
Share on other sites
quote:
Original post by d000hg
Thanks for the replies so far, a question though:

How do you get experience in all the different areas? I''m procicient in C/C++ and will be in DX by the time I finish Uni, but there''s so many languages/protocols/libraries out there - how is anyone meant not only to find time to learn them all, but also to remember them? I mean if you work on compiler design or OS or embedded systems there''s going to be a good deal of low level stuff which will be unique to the hardware you''re using - quite possibly no-one else has done before. How does one have any hint of this depth of knowledge to get a job like that in the first place?
And stuff like a network manager - not many people have access to even small networks to play on, let alone big, multi-server, multi-OS networks like you''re going to deal with. Maybe you can build a PC or link two PCs together using WinNT, but how does any company choose you apart from knowing you can code.

Oh, additionally, could I show a game demo to a serious software company or would they want to see a calculator or map editor or something more serious?


John 3:16


Bring a complete game with you. Notice the only word I really used to describe the game is "complete." That will show them you mean business and can actually follow through with a project. The complexity of the demo is just icing on the cake.


LostLogic
www.lostlogic.com
Author, Multiplayer Game Programming
Author, Strategy Game Programming with Direct X 9 (Not yet released)

Share this post


Link to post
Share on other sites
quote:
Original post by d000hg
Not quite as silly as it sounds, but a cover for many questions...
Surely there can't be that many software companies around - how many word-processers/virus things/whatever are really needed?

What does a non-games programmer actually do as their job? Get told "write a class that does this"?



I have never had a person tell me "write a class that does this." Rather I am given a business problem to solve through software and I architect it.

I am a team leader (ie lead developer) where I work and it really isnt that much different from when I was manager of game development at a game company (my last job.) The main difference now is that I deal with systems that cost millions of dollars and much much larger in scope.

Since I am the lead developer my normal day consists of designing new systems, solving problems, maintaining the project plan, and helping the devs on my team to reach their goals. I also end up coding the mission critical parts of the systems I design. This should reflect the same duties of a lead game developer.

When you get down to it, development is the process of solving problems through the creation or modification of software. Nothing more, nothing less. It doesnt matter if you are in game development, application development, or web development. The only main difference you will see is the size of projects.

quote:

In both games/serious programming are you normally in a small group (<10) or often with hundreds writing one application?



The actual development team size varies greatly from project to project. Some project require only one developer while others require dozens. The average team size seems to be around 5 developers. Now, this doesnt even begin to cover the "entire" team size needed. You have testers, technical writers, product managers, program managers, logistics, user education, usability, system integrators, etc. The last project I worked on required only 4 developers but I had to work with close to 40 people. My current project has 6 developers but I interact with over 100 others to get the job done.

quote:

How can the management notice you as standing out if they only look at how quick you write it not the quality of code - "if it's got no bugs it must be well written right?"



Results... That is what gets you noticed. If you deliver results consistently on time and with high quality you should get noticed. Consistency is the key here. A one-trick pony will go nowhere.

quote:

Do you really get 80 hour weeks (bad as doctors!) or is that just the odd week here and there, and can you make a stand "I have a wife, I'm not working till midnight 'cos of bad deadlines by management" without being sacked?



Any developer worth their weight in whatever knows that normal weeks are about 40 hours a week. But, before releases or milestones you have to endure "crunch" times. And yes, sometimes I work 2 weeks in a row coming in at 6am and leaving at 2am. But, that happens maybe once every two years. Its just part of being responsible for your work when the "rubber hits the road."


quote:

Please don't flame me, just trying to get an idea how different programming as a job is to hobby stuff.


John 3:16




LostLogic
www.lostlogic.com
Author, Multiplayer Game Programming
Author, Strategy Game Programming with Direct X 9 (Not yet released)


[edited by - LostLogic on July 17, 2002 10:34:23 PM]

Share this post


Link to post
Share on other sites
quote:
Original post by d000hg
How do you get experience in all the different areas? I''m procicient in C/C++ and will be in DX by the time I finish Uni, but there''s so many languages/protocols/libraries out there - how is anyone meant not only to find time to learn them all


If you''ve learned this, the assumption (usually true) is that you can pick up new libraries quickly. Nobody expects that you exactly know each tool & library currently in use when looking for a new job--though it REALLY helps if you coincidentally do know them.

quote:

, but also to remember them?


Don''t tell your profs, but you don''t need to remember squat. That''s what docs are for. As you use it more and more, you''ll have to look it up less and less.

Share this post


Link to post
Share on other sites