(Not logged on) | Register | Log On

You can subscribe to this discussion group using an RSS feed reader. The Joel on Software Discussion Group

A place to discuss Joel on Software

This community works best when people use their real names. Please register for a free account.

Other Groups:
Joel on Software
Business of Software
Design of Software (CLOSED)
.NET Questions (CLOSED)
TechInterview.org
CityDesk
FogBugz
Fog Creek Copilot


The Old Forum


Your hosts:
Albert D. Kallal
Li-Fan Chen
Stephen Jones

is OpenGL programming especially well suited for outsourcing?

I don't have experience in graphics programming, so wanted to hear opinions of others. Basically, I know that outsourcing works best for tasks that are:
1. highly compartmentalizable
2. easy to verify correctness of spec implementation
3. spec itself is relatively short, i.e. it's easy to explain what exactly we want here without the contractor being an experienced expert in an obscure domain
3. require lots of not overly inspired work

Well, so from little I know about OpenGL this sounds like a perfect match. Verifying implementation correctness can be to some extent done just visually - either it looks correctly or it doesn't. Description of expected behavior is simplified by the fact that we all intuitively understand the behavior of "real world" objects that graphics are supposed to simulate (i.e. it can be hard to do, but not hard to explain). Amount of work involved, reputedly, is huge. About the compartmentalization part I am not sure.

Ok, so can somebody comment on the validity of what I wrote above? Are there in fact issues in this domain that make it all a lot harder to outsource component by component than it looks to an uninformed observer like me? Is there in fact massive outsourcing in this area? Or is there a shortage of competent OpenGL programmers which means that prices are high everywhere for such work?
Michael L Send private email
Tuesday, October 27, 2009
 
 
We recently outsourced a bunch of OpenGL development. Against advice, of course.

Soooo... what did we get back?

Well. Clearly the developer doesn't really do OpenGL. It *renders* which is the best that can be said for it.. with the proviso that because they don't know how to use scene management they've used some later stage compositing crap to avoid needing to which doesn't work unless you have hardware opengl. So as long as you have a hardware card it's OK. Of course, many of our customers (for various reasons) do not. But hey ho.

It isn't efficient. It isn't fast. It certainly isn't maintainable code -- they've obviously got one of the cases working and then cut-and-pasted their way through the rest and hacked and hacked at it until it was done. Trivial changes like increasing the polygonisation of some of the shapes have taken ages because everything is hardcoded instead of being read out of files or tables.

It was, however, done cheaply, which appears to have been the main goal here.

So on the basis of exactly 1 test case, I'd say you're OK outsourcing it as long as you can get it done cheaply enough that you don't actually use the code afterwards.


"Description of expected behavior is simplified by the fact that we all intuitively understand the behavior of "real world" objects that graphics are supposed to simulate"

Ah. You're playing in that arena.

Yeah. That's.... not an easy spec. It looks like it, written down like that. Looks trivial. It's not actually a solved problem. If it were a solved problem, games developers wouldn't spend millions of dollarpounds making their physics models work.

Not that games physics models actually work very realistically a lot of the time; for aesthetic reasons, gravity tends to be lower than real. And that means friction needs to be higher.. and so on and so on.

"Verifying implementation correctness ... just visually - either it looks correctly or it doesn't"

Mmm. You'll get shit. No, really. You'll get shit. And then you'll end up in an argument with the outsourcing who say it looks fine to them. This'll bat backwards and forwards for a while and finally you'll grudingly pay them half, they'll leave unhappy and figure you can fix it yourself. And that's when you'll discover the code is written with a single goal in mind -- getting the project off their books.


If you are in the business of doing graphics, it's the thing your customer/user sees. That means regardless of the underlying quality of the thing, it gets judged by the graphics. Sorry. Dull, but generally true. And it is therefore part of your core competence. Never outsource that.

You *CAN* sell a brilliant app wwith a shit front end, but it's a hell of a lot easier to sell the app with a good front end.

"Amount of work involved, reputedly, is huge."

OpenGL is (by and large) a piece of piss. Couple of weeks and you can have tucked all the opengl away in utility classes tuned to what you're trying to do.

The rest of it is the tricky bit -- culling, visibility determination. Data management, texture application. Stuff like that. Those are all non-generic problem domain influenced things. And at that point in time, your graphics implementation suddenly becomes horribly dependent on the rest of the system in a million ways. That's when the encapsulation fails, and suddenly it's all coupley and datastructures get important and then you're in a world of insourced pain.
Katie Lucas Send private email
Tuesday, October 27, 2009
 
 
When someone says "outsourcing" to me and they are an mISV type operation, that indicates that they intend to hire the very cheapest talent that seems like it barely meets their immediate needs. That usually implies a foreign person hired through Rentacoder, ODesk, etc.

I did this myself a few months ago using the same rationales. I had some Qt development and I wanted someone else to help me climb the learning curve.  I hired an overseas guy through one of the outsourcing web sites.

My experience is that it is unlikely that you will find someone who doesn't burn up all of your time in managing them and surmounting their lame communication skills.

In other words, you're probably going to get an inept code monkey in the truest sense of the word.

What I experienced:

The guy was useful for one thing - to disgorge some very simple isolated pieces of code that showed me how things worked together in Qt. I imagine that with any API (like OpenGL) that this would work similarly.

The person's expertise was ONLY the tool, IE, knowing how to wire objects together and how to use the IDE like tool in Qt. He was a terrible C++ developer,  in general.

Non native English speakers on these job sites will tend to grossly overrate their English skills and communication abilities in order to get business. This guy's English was at pidgin English level but he rated himself a 4.5 in English abilities, and he even listed himself as a candidate for technical writing in English. The net effect is that even SIMPLE concepts are freaking impossible to get across. I had some feature I asked for and the guy kept getting it wrong.  I'd give the guy's English skill a 2 or 3 (barely) out of 5.

The work ethic was terrible. This guy didn't even try at times. He had a strong start and then sputtered out with a lot of lame excuses.  I wasn't giving him a lot of crap but he seemed bored and disinterested with the task after the first week or so.

Maybe there are competent, hard working, honest bidders on the outsourcing sites. I suppose that the rating system would flush that out.  The guy I hired did have a couple of completed projects that were assessed highly.

I'd say, overall, that these people on the auction sites are usually cheap for a reason. They're uncommitted to quality work and generally not very good.
WannabeTycoon Send private email
Tuesday, October 27, 2009
 
 
I've done quite a bit of OpenGL work myself that people have outsourced to me. I work in the video game industry since 1996, and I worked with the very first version of OpenGL when I was a grad student using SGI workstations (before OpenGL was available on other platforms).

Give me a shout if you need a remote contractor. I have my own full-time company since 2005.

Generally, though, as with any outsourcing you may need done, there's lots of snakeoil salesmen out there who will leave you less than satisfied with whatever work you get. Unfortunately, these guys give a bad name to all contractors, even ones that are the real deal.

Whether or not OpenGL is well-suited for outsourcing mostly depends on your application and OpenGL's role in it and how the rest of the application is going to be put together (or if it is already put together).
Jim Buck Send private email
Tuesday, October 27, 2009
 
 
The "OpenGL" part of 3D graphics is just the tip of the iceberg.

There's orders of magnitude difference between rendering a rotating cube in OpenGL and writing a real 3D app. Distinguishing between a bullshitter and the real deal is very hard.

PS: Add me to the "I do 3D contract work" list. I've done OpenGL since before it existed, my current pet project can be seen here: http://www.topaz3d.com/  (though that's version 1.0 of the app and version 2.0 is due out very soon).
Jimmy Jones Send private email
Wednesday, October 28, 2009
 
 
ok, so sounds like it's not THAT compartmentalizable and it's also just plainly hard and requires braaaains. Got it :-). More work for the smart guys.

I guess a follow up question then. If it's hard to be a competent graphics programmer, does this make this field "in demand" and "recession resistant"? Or are there too many experienced programmers already whereas the game production has declined, causing unemployment?
Michael L Send private email
Wednesday, October 28, 2009
 
 
There are rafts full of mediocre, teenage, wannabe game programmers on the internet who know some opengl.  There are also a few free opensource gaming/graphics libraries (that build on opengl adding things like scene/resource management etc...) that are REALLY REALLY good.  A little research may go a long way.

Also 'making it look real' implies your also looking for a physics simulation of some sort.  This is another, vast, vastly difficult field only tangentially related to graphics.

You need to know your customers though, if they have low end hardware, that WILL be a problem.
anonymous_jerk_registers_at_last Send private email
Wednesday, October 28, 2009
 
 
From my experience, outsourcing only works as a long term commitment.  You spend a year or two getting them trained and useful, then you reap the benefit.  So, outsourcing is only for big companies: IBM can afford to outsource and let it suck up time and managerial effort such that they can benefit down the line.  For uISVs, you can't afford the upfront investment.

But, if you want workers for a uISV, go to a local college and get somebody for free (or nearly free) who will graduate soon.  He'll speak perfect English and he'll be in driving distance.  You'll get much more for much less.

If you need to pay the guy, spend the money that you would have spent on outsourcing as a freelance contract and then convert him to be paid in equity later.  He'll also be a helluva better developer after he's with you for a while than he will be if he sits unemployed on his couch, playing PS3.
Daniel Howard Send private email
Thursday, November 05, 2009
 
 

This topic is archived. No further replies will be accepted.

Other recent topics Other recent topics
 
Powered by FogBugz