Where do you find the best developers?

I’ve always been fascinated with the different schools of software development.
Some make games, some make 3D tools, some make web portal development and some do software for fighter jets etc.

So, in what branch of software development do you think we find the absolutely brightest developers?

I think the bloggosphere might contribute to some sort of blindness in this area, we only notice those who make the most noise, usually the consultant / trainer type of guys.
At the top of this hierarchy are the “senior software architect” guys, they blog about domain models using O/R mappers and how to create nice web pages using MVC pattern and that type of things.

Ooh, so you want an WCF service in the middle? and Hibernate at the bottom?
And maybe some domain specific language for configuring your favorite dependency injection framework?

Spice that up with some talks about unit tests and friction less development and you will be king of the hill in this sphere.

No offence to any of those guys, but how hard is that stuff really?
Just to be clear; I have no delusions of knowing everything or being better than anyone in this area, there are of course really tough problems here too.

But what about those developers that write software for fighter jets?
Or write games like World of Warcraft where you have to deal with thousands and thousands of concurrent users interacting at a very high transaction rate.
Or maybe those who write 3D tools that are able to reduce the polygon count in a highres 3D mesh.

That is some seriously hardcore stuff.
I feel like some soon to go extinct cave man when I think about how those things work.

So what branch of software development holds the best and the brightest?

25 thoughts on “Where do you find the best developers?”

  1. Hi Roger,
    in the beginning of my career I thought that the real programmers are the smartest guys on the planet and must have IQ 150. As the time passed by I realized that I already work with such guys and they are just ordinary nice people who know what they are doing and are passionate about it. For me the top has been always a 3D game development. WOW is nice example, it’s realtime, 3D, multiplayer and so on. On the other hand the data driven apps and web applications are the low end. But it’s about opportunities and location and many other factors. My conclusion is that the development is not a one man show, but is a result of a great team work and lot of time. The brightest programmers are just spread around the world in many companies in many businesses.

  2. Programmers come in many variations. Some has a very broad knowledge, others a deep narrow knowledge. Some are good at estimating, others are bad at it. Some works best in the middle of the night. Some have good social skills.

    Best and brightest depends on the task and the environment they are to work in and the amount of money you pay them.

    To find the best.

    The people that have entries on this list http://pouet.net/top10.php have skills that goes beyond whats humanly possible.

    Also look on the mailing lists in the opensource community, such as rubycore, git, ..

    Also logon to IRC and look for those few that answers all the questions that all the others are having. These people have some skill too.

    These are the real heroes :-)

  3. Classically I think it was game developers, but now they are really just highly specialized developers. Almost all of the original research is done, now it’s just tweaking out how to best process things in 3D and to offload certain CPU problems to the GPU.

    OS developers are just very low level people, that doesn’t really make them uberdevelopers. They might be horrible up at the modern business level.

    The demoscene also offers a modern glimpse into the past of game development where both creativity and engineering knowledge are needed.

    With the current trend toward specialization, I think your best bet at finding an “industry” with what could be the “best” developers would be those who move from new business to new business as the leader and cowboy that creates successful projects. This might have an intersection to some highly successful contractors or consultants (maybe).

  4. “best” is clearly subjective. Saying “absolutely brightest developers” doesn’t really tell me what it is you are trying to optimize.

    Are you looking for fantastic coders? Folks that know the language and target platform inside and out. Can squeeze every ounce of performance available. Example: these are the guys who code high volume, mass market, code sensitive projects. Think console games, Elmo Live! toys, etc.

    Are you looking for engineers that can estimate their effort, craft a plan, write the code, verify and validate that it meets the customer’s needs, and deliver it all on time and on budget? These are the workaday professionals making sure your pacemaker and your bank account software work as expected.

    Are you looking for people to crank out “state of the art” designs to “wow” investors and lay the groundword for the army of developers bound to follow. These are the mad scientists you want in your Start-Up, attempting to solve world hunger so that the Angels shower you with millions.

    Each group is “best” for some industries, and probably crap for others.

    What do you want to optimize?

  5. I am a business application developer. Now that this is out of way, :P I think game developers are the most creative and brighest!!

  6. @Kelly

    Well I’m not aiming for anything special, just the general oppinion.

    It’s interesting to see what others think.

    Different branches requires different amounts of knowledge.

    For example, developing an operating system requires a fair bit of knowledge how the computer works at low level.

    While many somewhat clueless people works as ASP developers / consultants.

  7. Best is highly subjective. I’ve spend more than 10 years in the demoscene, writing all kinds of wicked code (even opengl demosystems) and did know most of the tricks and although some guys are really really smart (Chaos/Farbraush, JMagic/Complex), most is just a clever hack but not really rocketscience, as most demos simply ‘fake’ things to make things look really awesome while it’s just a simple routine (I recall a ‘fractal zoomer’ years ago, which was just a 2D pixel scroller with a fragmentation routine). On top of that, most demo code is really really bad, as in: one-shot code and never look at it again. E.g. if you had a bug and some polygon caused havok in the left bottom corner, you simply placed a 2D image with some random logo in front of it so you wouldn’t see it. ;)

    The best developers IMHO are the ones who deliver what they have to deliver when they have to deliver it, in solid, easy to maintain code where design decisions are described and a future maintainer can work with it without problems.

    Those might write asp.net sites, or code for MRI scanners or command line tools. Code is code: the end result might be cool compared to a boring VB app, but in the end, it’s just code to create what’s to be created. After all, a 3D engine is just an in-memory database with an odd query system. ;)

  8. Roger, you said “Different branches requires different amounts of knowledge.”

    I beg to differ: “Different branches requires different KINDS of knowledge.”

    To be a pro-developer in whatever field requires a high level in your field.

    I have been a games programmer (not a particularly good one), a software quality consultant, an R&D programmer, and now a business systems designer/programmer, and so I’ve seen experts in lots of different fields.

    It’s not so much the amount or depth of knowledge that varies in the experts, but the kind of knowledge – you can find programmers with mad skillz in Oracle PL/SQL who’ll be able to do all sorts of wild things, but who couldn’t program an ASIC to save their lives. And vice versa.

  9. @Xero – “Classically I think it was game developers, but now they are really just highly specialized developers. Almost all of the original research is done, now it’s just tweaking out how to best process things in 3D and to offload certain CPU problems to the GPU.”

    Not in my experience! There’s *loads* of cutting edge stuff going on in graphics and games development. Everything from talented, boundary-pushing games developers (of which there are several), to a competitive middleware industry (which I’m part of), to fast moving research (ie. siggraph, eurographics).

    I’m not claiming it’s necessarily at the “top” (whatever that might imply), but it’s definitely has a lot of fun challenges ;)

  10. @Ben.

    I agree that it requires different kinds of knowledge to _master_ a certain branch.

    But some branches requires far _less_ knowledge to get started.

    For example, in the ASP3 days, it was common to people who had never touched a computer before being re-trained to do ASP3 work.
    And in a few weeks, they were spitting out “working” (yet horrible) code.

    AND they were able to make a living out of it.

    I don’t know any other branch of programming where this is possible.

    So while there might be extremely bright and skilled people in all the branches, the percentage of experts vs. mortals has to be far different.

  11. I think as someone else commented that it is not a matter of which type of programmer (business, 3D graphics, networking) are the smartest most talented but the fact that those areas require very different knowledge and skill.

    For example if you work with 3D games and graphics you really need a solid understanding of 3D algebra (and even quaternion algebra), so many programmers that work in gaming are great mathematicians (at least the the top people).

    On the other hand programmers that write large long running business apps needs to be great designers and really know how to develop systems that are easy to change and evolve.

    If you write networking code to manage a game like WoW I would suspect you need to have a really solid understanding of how to build performant distributed systems.

    Someone writing code for OS systems or low level drivers need to have a solid knowledge of how computers work, good understanding of binary systems and boolean algebra.

    My guess is that none of these areas are necessary harder and require more skilled people, at lest not if you compare people that are among the top in their field.

    Maybe the average business app is a lot simpler than most 3D games, so the average games programmer is probably a little sharper than the average business app programmer, but I wouldn’t bet my life on it.

  12. “I agree that it requires different kinds of knowledge to _master_ a certain branch.

    But some branches requires far _less_ knowledge to get started.”

    Now you’ve changed the original question from “So, in what branch of software development do you think we find the absolutely brightest developers?” to “where is it hardest to get started, and where is it hardest to master?”

    I’d like to think that my comments addressed the original question, not your re-phrase.

  13. @Ben

    I have never claimed that your comments wasn’t directed at the original question.

    I was just trying to point out that different branches might contain far more people with little or no skill.
    And Thus, that “population” will have a lower percentage of highly skilled developers.

    So the question might differ if you look for individuals or at the general population in each branch.

    The brightest developer in the world might very well be an ASP developer.
    While the general ASP developer might be less skilled than the average game developer.

  14. As an intermittant programmer/software engineer (call it what you will) over the past 29 years of my life I’ve encountered most development environments. Early life was in Z80A assembly (often coded directly into the decimal codes ready for the good old ‘poke’ statement) through ASICs and onto .NET these days so I’ve been around the block. To me the best and brightest weren’t always the most prolific or the most successful in their fields but when you talked to them or looked at their code the elegance and the ingenuity shone! I agree with the others, it’s not a particular field or area of coding that generates the best. In a way I really don’t think the field is important, it’s just a different mindset to adopt and a new set of processes and procedures. These are learnt abilities, really really great programmers are born programmers. They don’t know why they are good, often they don’t know how they are good but when you’ve got a problem that you can’t find that ‘loose thread’ on they take one look, and before you’ve seen where they are looking they’ve unravelled the whole ball and rewound it neatly :)

    Truly great programmers solve problems efficiently, elegantly and creatively. All the other requirements for maintainable code, etc, fall out of that naturally. Wish I was one of them! :) I have to work at it.

  15. You cannot, as a software developer, have anything but respect for other programmers who write software which holds the live of another human in their hands.

    For example software which is used in medical devices. Raise your hand if you feel confident enough of the quality of the code you write that you would trust it to operate an important piece of medical equipment! :-)

    Thought so… ;))

  16. >I feel like some soon to go extinct cave man when I think about how those things work.

    I know that feeling, yet it’s amazing when you push yourself and end up on the other side. For me this happened with Physics engines. There was a time where I’d see all these games doing physics and it was like magical coder wisdom. Then I tried doing one myself. I made some test demos, tweaked some code. Then I wrote a game ‘Darwin the Monkey’ that used my own physics routines. Then I played around with other ideas in http://screamingduck.com/doodle.html

    Now, physics engines don’t seem all that special, they are just in my brain as one of those things I know how to do. I did the last Ludum Dare 48 hour game competition and made a game using a written from scratch 3d physics model (in flash no less).

    I think that lends to Mats’s comment.
    >Behind the keyboard.
    Doing stuff makes you good.

  17. For me programming really has two schools.
    In the first, the best programmers are (professional) hackers.
    In the second, the best programmers do AI.

  18. To me, the best programmers are those that influence their whole field with new ideas and a new direction. They are blog-posters who make you see a programming paradigm in a new light, they are researchers who can present alternatives to the von neuman architecture, it’s the guys that make GPUs do other things than render games and who’s making grid computing a reality. It’s the programmers that spawned P2P which went from obscurity to a movement challenging the norms of society.

    I think you find these guys and gals everywhere from universities to companies selling CRM programs, though they may not be equally distributed.

  19. I’m quite sure that those working for governmental departments have to be the brightest. To be able to deliver under the kind of pressure that is on really requires something like super programmers.

  20. oh, damn. There is a computer science (math, algorithms) and IT (language, design patterns, programming paradigmates, …). Most of developers from IT are not able to make complex algorithims. On the other hand, algorithm people are not able to create complex software. Form me it’s easy :)

  21. The best developper is the one who creates the most useful and simple piece of software. If there was a ratio Utility/Line of Code, the higher the better you are.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s