What makes a standout programmer?

Started by
29 comments, last by Wan 14 years, 2 months ago
Whoever told you the industry was difficult to get into was exagerating. If you want to be a programmer then learn to program and then you can get a job as a games programmer. It's that simple.
As for what makes a rockstar programmer it depends on what is good for the company. For a lead programmer I think being able to know your limits is an important one.
I've lost count of the times I've worked on projects where we could of licenced an engine but, the lead programmer has insisted that we could write our own multiplatform engine in 6 months and save money. Once the engine has been written it usually does its job but turns out to have cost more to develop in the long run and lacks most of the features that the designers wanted in the game.

Also I think you'll find that there's more "Rockstar" programmers outside the games industry. The reason for this is cold hard cash. Games programming salaries suck. Banking and financial firms offer top doller for the best graduates and then pay for them to continualy improve their skills and knowledge throughout their career whilst the games industry will hire anybody who knows a little C++ and what a Cross Product is and then give them a low salary and expect them to just get on with it until they burn out and end up hating the industry they used to be so passionate about.
Advertisement
Quote:Real artists ship
I should frame that on my wall.
Quote:Developers don't need an office full of rockstars - in fact it would be a disaster.
Basically, the programming equivalent of a supergroup band? :)
Just to chuck in my tuppence:

  • Perversely obsessive attention to detail. You want the kind of guy who walks into a crowded room and notices that the throw rug on the floor has an irregular pattern.

  • Ability to think across a spectrum of perspectives. Seeing things from someone else's point of view is critical to working on a team, especially if you need to interact with (or mentor) less skilled colleagues. Someone with significant interests and knowledge outside of gaming is, believe it or not, far more useful for development than someone who has a myopic world view - because they know how to change the way they think, and, more importantly, are willing to change the way they think.

  • As a corollary, ability to think across a range of scales. You need the guy that can look at assembly code and debug the associated C++, as well as looking at the overall game's code architecture - and see problems there too.

  • Patience to do the job right, and laziness to do the job more efficiently.

  • Creativity. Someone who can think up a new way to approach a problem will do a much better job at writing good, cutting-edge code than someone who can only emulate what they've seen in a textbook.

  • Humility. If you can't happily admit you're wrong (and learn from being wrong), you're doomed to become obsolete in a matter of a few years, because you'll never truly learn to keep up with the pace of the business.

  • Last but not least, communication and interaction skills. As my father was once fond of reminding me, it does you no good to be the smartest person in the world if you can't communicate your ideas and express your knowledge. You want the guy who can walk into a crowded room, notice that the throw rug has an irregular pattern, and then strike up an interesting conversation with someone five seconds later.



(Bonus points for working the rug pattern into that conversation, btw [grin])

Wielder of the Sacred Wands
[Work - ArenaNet] [Epoch Language] [Scribblings]

Quote:Original post by Daaark
Basically, the programming equivalent of a supergroup band? :)


Worse... a ballet company full of Prima Ballerinas!
Dan Marchant - Business Development Consultant
www.obscure.co.uk
Quote:Original post by Obscure
Quote:Original post by Daaark
Basically, the programming equivalent of a supergroup band? :)


Worse... a ballet company full of Prima Ballerinas!


Is this worse than a house full of so-called super models?
"real artists ship" is supposed to be a Steve Jobsism, used to get the Mac development team to stop trying to make it perfect and just get it to work well enough to be released.


It isn't hard to start looking like a rockstar. There's a LOT of very very very poor developers out there. It's amazing how many five and ten year experienced people can't do fizzbuzz properly. Who just can't design software in an organised way.

If you can write code from scratch and get it to run reliably, you're a long way off the background dullness of this industry.

Here's a story; I worked for a bank some years back. It's a bank that UK will have heard of. They used to hire "developers" off the street. Open interviews. No experience needed. Each hire was given a copy of "Learn C++ in 21 days". 21 working days later, they were assigned to development teams. If they were crap enough they were moved into being dev managers. You can picture that even five years spent in that environment isn't going to produce gems. That's the sort of level of people against who you have to look good to be in the top 10%.

When I did my music A-level back at school I was surprised and disappointed to find out that of the 16 or 17 people on the course, only 2 or 3 actually enjoyed composing music. The rest found it a chore.

I shouldn't have been surprised therefore when I got to university and found that about 80% of the people on the Software Engineering course didn't like programming. People would do as little of it as possible and refer to themselves as being "not so good at the programming" as if that was just a minor part of their course and that they were fine at the rest.

Some of those 80% can find their way into simpler stuff, eg. the less technical end of web development, but I think most just end up in IT support or completely unrelated careers. Game developers and other places requiring skilled programmers are fighting over that 20%, not all of whom are actually any good. Many of those people will focus heavily on the things that interest them to get an impressive portfolio together but will have no wider interest in algorithms or coding style, and these people will be the useful workhorses of most software companies, churning out working-but-flawed software. The guys who stand out are the ones who go beyond that, furthering their own skills and knowledge and taking pride in what they produce.
Wow.
The more I read those lines, the more my confidence is growing.
But I don't have a degree, and I don't want to do programming for a living.
I wish it was as easy to stand out as an engineer, as a programmer.
Just wanted to say thanks guys, this thread has generated some excellent responses.
Quote:Original post by SpriteChild
The one I've typically heard with the term is John Carmack; I was reluctant to drop the name only because....he's Doom and everything -- you could think wonders of him for breaking open 3D gaming or any number of other things that would distort the term. I can totally see designers being more recognizable (because they are), but even so, I feel like most studios would have that programmer they trust with their life... Not so? Every senior programmer is basically equal?


Very interesting thread.

BTW, has anyone downloaded and (tried to) read quake or doom code?

Am I the only one who believes Carmack is not a genius? He only reads papers and implement them in a not very clean way. As far as I know, he only invented a shadow algorithm (that was already implemented)

Must read: http://c2.com/cgi/wiki?CowboyCoder

In a large company (I mean, with a lot of people) somebody who is a very well programming but only he/she understand what he/she is doing is not very good for that company.

Is software developent a team or an individual activity? Usually first one.
I've seen things you people wouldn't believe. Attack ships on fire off the shoulder of Orion. I watched C-beams glitter in the dark near the Tannhauser gate. All those moments will be lost in time, like tears in rain. Time to die.

This topic is closed to new replies.

Advertisement