Advertisement

Dear Developers

Started by October 17, 2007 04:18 PM
34 comments, last by Oluseyi 17 years, 3 months ago
Quote:
Original post by MaliciousDigit
Quote:
Original post by HugosHoH
I just want to give my opinion regarding outsourcing projects...

This site is not exactly friendly. Make your opinion known about a subject and your going to get rediculed, called names and rated down, even if for reasonable opinions like yours. But hey, it's stll marginally less condescending than Slashdot... marginally...


The OP is, of course, completely entitled to express his opinion. Were it a well-reasoned and well-presented one, it would probably invoke some serious discussion. It becomes a problem, however, when one tries to back up one's opinion with naive and completely wrong remarks, stated as facts. For example:
Quote:
Original post by HugosHoH
BUT they forget a very important thing about programming, in the end it's coding and you can never separate coders from designers. A coder is a designer and a designer must be a coder.


The OP has been corrected on this, and aside from one person calling him a "troll", there has been no name calling. Hell, he even got an insightful response from Oluseyi.

[Edited by - Driv3MeFar on October 23, 2007 5:18:41 PM]
Quote:
Original post by Oluseyi

Coding is like painting by numbers - you can get anyone with minimal skill to do it given sufficiently precise directions. It's fabrication.


I don't share this experience. I've seen minimally skilled people put into this position and fail, miserably, for a number of reasons that are beyond whether or not someone has the ability to follow precise directions. Suggesting that it is like painting by numbers is nonsense.

I tell you what, I'll phone Carmack up and ask him to give up his position so you can replace him with a graduate. Good luck.
Advertisement
Quote:
Original post by freakchild
Quote:
Original post by Oluseyi

Coding is like painting by numbers - you can get anyone with minimal skill to do it given sufficiently precise directions. It's fabrication.


I don't share this experience. I've seen minimally skilled people put into this position and fail, miserably, for a number of reasons that are beyond whether or not someone has the ability to follow precise directions. Suggesting that it is like painting by numbers is nonsense.

I tell you what, I'll phone Carmack up and ask him to give up his position so you can replace him with a graduate. Good luck.

I share his view that "minimally skilled" workers able to handle "sufficiently precise" directions.

I've been in the programming trenches for over a decade. More than just a coder, I've also managed teams, hired contractors, participated in multi-national development, and even been on executive boards.

It is true that many programmers are designers, yes, but hardly by requirement. Often they are placed in that position due to a lack of design, or by some combination of trust or naivete by the corporate superiors. I posit that globally, only the smallest percentage of programmers are designers by description. But let me give you an analogy to explain.


McDonalds is successful as an international franchise in part because they use both "minimally skilled" workers and "sufficiently precise" directions. The directions for preparing a Big Mac are very pricise, and you can train just about anybody to do it. The company invests a fortune improving their directions by making them based on pictures rather than words, elimininating steps by pre-processing the materials, removing unnecessary work, and so on.

As the franchise food business exploded, the need for short-order chef plummeted. When any 14-year-old can prepare food for the masses for very little money the demand for experienced cooks drops away. As Oluseyi explained, once the industry became a franchise, and as the franchise matured, the need for more creative workers fell. As businesses isolate the creative process (designing the McFood) and separate it from the implementation details (cooking the McFood), then it is natural for the least expensive workers, who are typically also the least skilled, to become the McCook.

But that doesn't mean EVERYBODY becomes a McCook. There is still a need for the short-order chef. There are still mom-and-pop operations that need them. There are still B&Bs, local diners, and cafes that employ them. People still need to be a little creative at home, or to show off for their friends.

But also note that there is another class of creative cook -- the highly educated Chef de Cuisine and Sous Chefs that actually develop new dishes and create custom fare for well-paying customers at high end businesses. These people are not cooks that stick meat patties on a conveyer belt. These are certified Chefs who create and design edible works of art.


Carmack is not "just a programmer", just like the Master Chef Andre Halson is not just a McBurger Flipper. Both of these individuals are foremost designers, and secondarily implementers. If these individuals designed a quality non-masterpiece creation, they could break it down into "sufficiently precise" directions that would allow anybody with a minimally appropriate skill set to implement. Carmack can (and does) make designs for other people to program. Halson can (and does) generate recepies that anyone who is somewhat competent in the kitchen can implement.



Back from the analogy.

When giving a project to a contractor, one needs to specify exactly what they are to deliver, with "sufficiently precise" instructions and requirements. Given that sufficiently detailed list of deliverables, any competent programmer can create it.

As such, the only core "creative" person is the designer; the external programmers are essentially interchangable.

Programmers are interchangable and replacable. Two programmers are not equal, of course, and some excellent developers may even need two or even five low-quality programmers to replace them, but the point is that they CAN be easily replaced.

Carmack (or most other experienced lead designer/producer/creator) can hire a bunch of interns and give them sufficiently precise instructions to create a quality product. These interns could be easily replaced with just about any other intern and still give roughly the same results. Carmack as the core creative person, however, could not be easily replaced while maintaining the product.
And if the game happens to suck after you replace the one good coder with 5 interchangeable interns, you can always make up the difference by spending a fortune on advertisement and slapping an expensive license on it.

Allan
------------------------------ BOOMZAPTry our latest game, Jewels of Cleopatra
Quote:
Original post by __ODIN__
And if the game happens to suck after you replace the one good coder with 5 interchangeable interns, you can always make up the difference by spending a fortune on advertisement and slapping an expensive license on it.

Allan


Yeah, you would think from reading this thread that I could hire a team of 30 Mexicans to turn my UML diagrams into Halo 4. It's obviously as easy burger flipping or assembly line work. I do architecture and do outsource by the way, I just think there is some truth to the OP's post. If programmers are expendable why are some of the ones at Microsoft and IBM millionaires instead of looking at Monster.com right now.
Quote:
Original post by frob
I share his view that "minimally skilled" workers able to handle "sufficiently precise" directions.


Be that as it may, it is a less relevant statement to this argument that what you might think.

This is what was actually stated...

Quote:

Coding is like painting by numbers - you can get anyone with minimal skill to do it given sufficiently precise directions.


...and the statement implies that programming is something that can be done by people with minimal skill. Comparing it to flipping burgers doesn't make any sense either although I do agree with some of your analogies.

Programming isn't like painting by numbers. To do it successfully requires much much more than just typing statements into a text editor. To start requires that you attain a certain level of skill and this takes a few years to achieve. If this wasn't the case people wouldn't be attending Universities to do it. To make it beyond that requires refining skills, learning new ones and gaining a whole lot more experience, which takes even more years. This isn't painting by numbers, by any means.

If you still think it is then trying giving someone with minimal skill instructions on how to optimize a PS3 title. These are skills earned and learned and the tasks are best suited to those who have been down that path. This isn't painting by numbers.

Unfortunately the analogies about chefs hold this up. I am pretty sure Gordon Ramsey can tell me how to cook a beef wellington, but it would take me to learn certain, not minimal skills to learn how to do it well and 'debug' it when I've burnt the thing.

The problem is that a very general, blanket statement was made that needs to be further qualified. It may indeed apply to some entry level people, who may be following more strongly guided instructions, but this doesn't make these people skilled nor is what they are doing comparable to painting by numbers.

Anyway, as for the original poster he does have a point. It's not very well put but coders are designers, pretty much in all cases. I am not talking about being a game designer here, I am talking about software design. Give me any programmer worth their salt and you will find they are indeed creative, technical and have figured out many problems and designed very complex software. Actually, being a designer is indeed a requirement. Being a game designer isn't.

Being so creative, this isn't fabrication, nor representative of people with minimal skill, nor is it painting by numbers.

I am interested in you qualifying your experience when discussing this but if you've spent that long in the industry as a programmer, manager and so on I can't believe you share the conclusions you claim to have. I have actually been in the industry for 20 years now and by credit I am a Programmer, Producer, Development Director, Technical Director and Game Designer. No, I'm not trying to say mine is bigger than yours, but I've managed some decent sized teams and after all the experience I've had I feel the opposite of what you do - I value what a good, experienced and skilled software developer can bring to the team. I would easily pay a premium for this and I don't consider their skills to be replaceable, nor what they do every day to be painting by numbers. I also feel less people, who might be considered 'minimally skilled' have something to offer and even if it is only 'potential', I don't consider their contributions to be 'painting by numbers' either. I feel the same way about the designers and artists I have worked with.

BTW: MaliciousDigit was right. I made my post and some small minded individual flagged my rating down within minutes. I have been neither unhelpful, nor rude (which are the criteria for such things) and this is an open forum. Flagging people down in that way is just an abuse of the ratings system. At least have the decency to respect that someone has an opinion. Just because I said something you don't like, doesn't mean you flag. I haven't flagged any of you guys, even though I may not be aligned with your opinion on this topic.
Advertisement
Quote:
Original post by Oluseyi
The only reason that this bifurcation and economies of scale don't reliably apply in software design is not because software is special, but because software development is a young and relatively primitive discipline.


I disagree. There is an important distinction between software engineering and other engineering disciplines: in software engineering, the difference between the design and the product is not very profound. If you're a civil engineer, there is an enormous difference between your blueprint and the bridge you're building. You need an immense amount of labor to translate the blueprint into the bridge--and there's essentially no way to translate the bridge back into a blueprint. For a Software Engineer, your product is source code, and you can easily convert your UML diagram into the skeleton of a solution, and your solution back into a pretty good blueprint via source documentation tools. The only way to design a solution so thoroughly that any low-value programmer could accomplish it is to specify it explicitly in psuedo-code--but there is not much value in doing this, because generating real source code is nearly as easy. Meanwhile if the SE leaves his method bodies blank, then inevitably he has to trust the implementor to make a large number of small, intelligent design decisions--in this case the programmer is a designer, just as the OP said (albeit a designer with a lower-case 'd', not necessarily on the same level as the Software Engineer who is architecting the whole project).


Also:

Quote:
Original post by frob
Programmers are interchangable and replacable. Two programmers are not equal, of course, and some excellent developers may even need two or even five low-quality programmers to replace them, but the point is that they CAN be easily replaced.


I've only been in the industry 3 years, but I can't imagine a case where replacing one solid developer with 2 or (even worse!) 5 mediocre ones would in any way benefit the project. I remain politely skeptical.
-david
Quote:
Original post by freakchild
I am interested in you qualifying your experience when discussing this but if you've spent that long in the industry as a programmer, manager and so on I can't believe you share the conclusions you claim to have.


Reading his journal, he obviously understands development. He is however concerned about his boss catching him writing pong. He's not a game developer, and he's not medical (i am, no one ever cared if i wrote pong) or military. Then I realize it and this site makes sense now. Most of these guys ARE contractors. They've never had to work four weekends because some asshats from Boston sucked at MFC. They've never had to fire someone for using unions when overloading a function was an obvious answer! They were just "reassigned"! This makes sense though. A majority of programmers I know are working for places like Accenture, outsourcing houses. At some point we need to do what me and my friends have done: realize there are two sides to every job.
Perhaps it would help to clarify some terms.

Quote:
Designer: The game designer is the one who takes a game from an initial concept and flushes out all the components of a game until it is totally complete on paper. The designer usually writes this information into a design document.

Quote:
Developer: This term refers to anyone who is involved in the process of development of games. This could include anyone in a game company, or it could only mean those who are directly involved in creating the game such as the artists, designers, programmers and musicians.

Quote:
(There is no gamedev.net description for coder, so I'll go with Wikipedia's closest definition of "Coder", which is different than "Programmer".) More specifically, it refers to a person only capable of grinding out code, but unable to perform the tasks of software architecture, analysis, and design. In this sense, the term is considered to be mildly insulting, and is often applied to the most junior people on a programming team. "Code monkey" may also refer to a self-deprecating way of denying responsibility for a management decision, or of complaining about having to live with such decisions.



The OP made this claim that is the heart of the issue: "you can never separate coders from designers. A coder is a designer and a designer must be a coder". Using anything similar to those definitions above, it should be clear that they are false.

Replacing a generic coder with another generic coder is not a big deal. I've hired and fired enough of them to know. They're like hiring and firing a minimum wage burger flipper.

There are many programmers who are HORRIBLE (additional emphasis required) designers. Some are horrible software designers, others are lousy game designers.

<begin story time>

TRUE STORY OF A BAD SOFTWARE DESIGNER

One specific programmer I know (name withheld) has been stuck in his career at two places before coming to (and eventually leaving) work with me.

He was an excellent coder. In one case, he took the design and literally wrote three distinct implementations that were profiled in game and specifically targeted for each platform, and even had some blocks of code moved around for each compiler's final build. He showed profile results that moving the code around for each compiler under the final build options resulted in various performance patterns.

As a coder, he could outperform anybody on the team. He would spend an evening rewriting the company's streaming libraries, and the next day we would come to work with a shiny new asset system that ran twice as fast as before. He would work late (unpaid, he was salaried) to rewrite sections of the PS2 libraries for the nearly unmeasurable performance improvements.

In short, the guy was a really impressive coder. If you gave him careful constraints and didn't watch the occasionally disturbing processes behind the scenes, he could develop very tight code.

But when it came to design, he couldn't design his way out of a cardboard box.

I spent a few days working with him on part of his tool chain. Together we came up with a simple grammar that was similar to his existing system but much more self-consistant and maintainable. He had never really known how to use a grammar properly, and thought all that fancy stuff in compiler documentation was just there to make normal people feel inferior.

We discussed how to use a grammar for his asset scripts. I walked him through using flex/bison to make a simple version of his extremely complex tools. He loved it. He was convinced he knew everything about how a grammar would help him. He wanted to stay late to explore this new-found knowledge. When he arrived to the office at 11 AM the next morning, we looked at his code. It was a series of jump tables and a lot of x86 assembly(the guy hated letting the copmiler generate them with switch blocks) that nobody could ever maintain. He proudly showed the team examples of how it could cover every possible statement made by the grammar, and how it never even needed to use 'all that fancy grammar crap'.

He was an excellent coder while he worked with me. If I had to outsource code to somebody, I'd ship it to him. But as a software designer, he sucked.

<end story time>

<begin story time>

TRUE STORY OF AN AWFUL GAME DESIGNER

This story isn't as much fun, because we didn't really let him shine at being bad. :-( Another programmer I worked with was good at software engineering, but horrible at game design.

We joked that if he were desiging it, he would turn the "Happy Fun Ball" into "Mildly Amusing Dangerous Substance (MADS)".

Whenever we discussed a game design, he just wouldn't get it. When invited a single time to a play test, he asked questions that were completely inappropriate and left everybody, including the play-testers, looking at him dumbfounded. Left to his own devices, many games would devolve into variations on pong, breakout, pair matching, and completely random chance.

No, teens don't like playing a game where they guess a number from one to five. No, we don't want to see a game where you try to play a cat-and-mouse as the computer AI runs in circles around the environment. No, a teenager doesn't want to play games that a five-year-old would get bored of. No, we will not put it in the game targeting teenage boys.

Great coder. Absolutely no clue about design. He probably still works at the place, but I don't. [grin]

<end story time>

The point of the stories? Hm.

Now I remember.

The skills required to be a designer of games, to be a designer of software, and to be a coder of software, are completely orthogonal to each other. Having skills in one area has no bearing on skills in the other two.

Those with only the "coder" skill set are easily replacable. Those who can write code and design software are much harder to replace, but can be replaced by a few good interns. Those who can design games, in addition to creating solid software, become the Master Chefs.
Quote:
Original post by freakchild
I tell you what, I'll phone Carmack up and ask him to give up his position so you can replace him with a graduate. Good luck.

If you think Carmack is a "coder" or "programmer", then you've completely missed my point.

Quote:
Original post by MaliciousDigit
Yeah, you would think from reading this thread that I could hire a team of 30 Mexicans to turn my UML diagrams into Halo 4.

LOL. Funny, but both hugely inaccurate and desperately lacking in perception. Most of you who disagree with my assessments fail to understand the crucial importance of the clause "sufficiently precise"; UML diagrams are nowhere near sufficiently precise. Neither is a design specification.

Let's say we were implementing a web-based architecture intended to fully decouple the front- and back-ends from the content layer, and the design decided on is to have each "page" contain stub code that invokes a number of web services to retrieve a layout, presentational elements, and content definitions (any of which may themselves contain stub code that make further requests if necessary, such as a form element). Sufficiently precise instructions will specify which low-level system and frameworks APIs are to be used, in which situations they are acceptable due to their performance characteristics, the precise formatting (and process for formatting) message packets, example code for each distinct implementation case, etc.

Don't blame me because you have an arbitrarily abstract notion of what constitutes a "design." The fact remains that if you provide sufficiently precise instructions, a team of interns can write Halo 4 (or whatever passes for a superlative example for you).

Programmers are expendable, but many of the people referred to as "programmers" are not just programmers; they are also software developers, software architects and designers, and they are consequently not expendable.

Quote:
Original post by freakchild
This is what was actually stated...
Quote:
Coding is like painting by numbers - you can get anyone with minimal skill to do it given sufficiently precise directions.

...and the statement implies that programming is something that can be done by people with minimal skill. Comparing it to flipping burgers doesn't make any sense either although I do agree with some of your analogies.

Programming isn't like painting by numbers. To do it successfully requires much much more than just typing statements into a text editor. To start requires that you attain a certain level of skill and this takes a few years to achieve. If this wasn't the case people wouldn't be attending Universities to do it. To make it beyond that requires refining skills, learning new ones and gaining a whole lot more experience, which takes even more years. This isn't painting by numbers, by any means.

First of all, attending university is not a prerequisite to being a programmer - even a good/great one. But, again, your confusion stems from an overly broad definition of "programmer". At its most narrow, a programmer merely transforms a sequence of logical steps into source code. fin.

Quote:
BTW: MaliciousDigit was right. I made my post and some small minded individual flagged my rating down within minutes. I have been neither unhelpful, nor rude (which are the criteria for such things) and this is an open forum. Flagging people down in that way is just an abuse of the ratings system. At least have the decency to respect that someone has an opinion. Just because I said something you don't like, doesn't mean you flag. I haven't flagged any of you guys, even though I may not be aligned with your opinion on this topic.

Unfortunately, there's nothing we can do about that. People have the right to flag as they see fit, and some will abuse the system. I'm sorry. For what it's worth, though, I find that your overall rating trend will align with your posting behaviors, so try to ignore statistical outliers. Also, sometimes an apparent negative posting may result if someone re-rates you.

I wouldn't worry about it too much.

This topic is closed to new replies.

Advertisement