Slashdot Mirror


Hackers As Factory Workers?

DevDude writes "A strangely interesting article is running on MSDN, entitled: The Case for Software Factories. It suggests creating 'development environments configured to support the rapid development of a specific type of application.' As a developer thrust into many an unsavory situation, I am constantly stepping in the remnants of some development methodology or other. Will super-specialization of software development teams help the industry to push out better software faster? Or are we hassled enough without being treated as an assembly line?"

18 of 342 comments (clear)

  1. And while we're at it by Anonymous Coward · · Score: 5, Funny

    Do programmers really need to sleep and eat? What if we just give them implants and let them plug themselves into nutrient/rest bays at the factory? I'm sure it would be quite a bit more efficient. It worked well for the Borg.

  2. Food chain by Kris2k · · Score: 5, Insightful

    Programmers are at the end of the food chain buddy. That's why you need to upgrade and become part of a function that requires decision and analysis. Or , if you're looking for the easy exit, a Sysadmin :)

    1. Re:Food chain by tsm_sf · · Score: 4, Insightful

      And there will always be one ready to help (with a big smile on his face and dollar signs in his eyes) when you're ankle deep in water after hiring the lowest bidder.

      "Ooo. This not look cheap."

      --
      Literalism isn't a form of humor, it's you being irritating.
    2. Re:Food chain by tzanger · · Score: 4, Insightful

      I take it you haven't paid for the services of a plumber recently. Actually most tradesmen are paid relatively well. The trades are always in demand. Price is an issue everywhere but people find out what the lowest bidder can often do.

    3. Re:Food chain by chickenwing · · Score: 4, Interesting

      It disturbs me that the general public and MBA types don't seem to understand how difficult software actually is.

      There is this curve where when you learn how to program and write a few small projects you extrapolate from that experience and believe that large projects must be the same.

      Part of the misconception lies in the belief that the difficult part is knowing a programming language. Being able to competently write code is only being conversant. It is really the higher levels of organization that are difficult.

      You don't need to hire a genius to slap together a porn site for you...it is a solved problem and much like hiring a factory worker, you don't have to look hard to find someone who can assemble the pieces. But as you start going out into uncharted waters doing things that are more technically interesting, you will find that you cannot just hire anyone who knows how to type out correct code.

      The good news is that believing that all programmers are the equal doesn't make it so. Any company who wants to try this experiment does so at its own peril.

  3. Yeah, right. by Anonymous Coward · · Score: 4, Interesting

    This will never work. Not because it's impossible or inefficient, but because programmers will never submit to it. For some reason, people who type instructions into machines have gotten into their heads that they are underappreciated artists or that there is something uniquely heroic about what they do. The vast bulk of programming is just repetition. It's skilled repetition, but no more so than drafting or car repair.

  4. simple by Hard_Code · · Score: 5, Insightful

    this is simple - it's the difference between the mass production line worker, and a master craftsman.

    It would be foolish to say that there is no place whatsoever for one or the other type of worker in the programming ecology (extrapolate this analogy to society and economics at your own risk).

    --

    It's 10 PM. Do you know if you're un-American?
  5. Eliminating the "Good" option. by Maul · · Score: 5, Insightful

    It has always been said with software...
    "Good. Fast. Cheap. Pick two."

    Outfits like the one proposed here elminiate the choice of "Good."

    --

    "You spoony bard!" -Tellah

    1. Re:Eliminating the "Good" option. by quelrods · · Score: 5, Insightful

      Uh since when did we have "good" commercial software? I've got mod points but I couldn't resist responding to your comment. Corporations 99% of the time pick fast and cheap. I lament the fact that we never are allowed the time to do things correctly. Software out of almost every company is massive hack on massive hack followed by massive rewrite due to lack of doing it right the first time.

      --
      :(){ :|:&};:
  6. It Won't Work Because Of Programmer's Personalitie by TheWanderingHermit · · Score: 5, Insightful

    Most programmers have a strong desire to be challenged and to solve problems. They want to use their brain and imagination. (Wasn't there an article here within the last few weeks about charactistics of good programmers?) That's why they hate cubicles so much. If you try to stuff them into "factories" where they're doing nothing but making modifications to existing code over and over, the tedium will get them.

    Those that don't quit will burn out and self destruct. While there is a surplus of IT workers, a sweatshop like this will burn through programmers fast enough that it'll only last a few years before the quality of code gets shoddy because there's no good programmers left that are NOT burned out that will willingly work at such a place.

  7. code monkeys by n3k5 · · Score: 4, Insightful
    For some reason, people who type instructions into machines have gotten into their heads that they are underappreciated artists or that there is something uniquely heroic about what they do. The vast bulk of programming is just repetition.
    That's one possibility. You can hire a dozen code-monkeys and let them type instructions until the product resembles the works of shakespeare to a degree that is sufficient for your business model (a.k.a. the microsoft method). But if you're lucky, you can get software that fits the same specification written by one 'artist' who designs well thought out components and two or three people who put them together, test them, document them etc. And you'll get software that is much better maintaineable, reusable, etc.
    Not every programmer who resents the idea of typing repetitive instructions all day has gone crazy. In fact if implementing your project requires lots of mindless, repetitive work, then your design decisions are crazy. The very term 'project' implies that you're doing something new you haven't done before.
    Example: the cheap, unskilled code monkey spends lots of time repetitively building mediocre GUI components with his, err, GUI builder, while the 'artist' uses the same time to write a factory that constructs the GUI components on the fly, considering things like the data structures they'll edit etc. One central place to enforce consistency and human interface guidelines. No mindless repetition.
    --
    but what do i know, i'm just a model.
  8. Around it comes again by crmartin · · Score: 5, Insightful

    One of the really odd things about a long career in computer science is that you often find the Big New Thing was a big new thing ten, or twenty, or forty years ago. Wilbur and TSO and VTAM become EMACS on a terminal which becomes "thin clients" (and its dual, dedicated compute time becomes workstations become personal computers.)

    In this case, we're seeing the re-awakening of the notion of "commoditizing" programming. Back in the day, it was the notion of "deskilling" programming with forth-generation languages; before that it was the development of general high-level languages like FORTRAN and COBOL; before that it was the realization that you didn't have to be either Goldstein or von Neumann to successfully program a computer.

    So, yeah, it's possible to improve programming productivity by building specialized environments for certain classes of problems. That trick worked for report programs with RPG in the 60's; works marvelously with parser generators; works pretty decently with GUI tools for UI programming now; and will undoubtedly work for other classes of programs in the future.

    Then you'll find people programming new classes of programs by hand, and a few years later someone will say "wouldn't it be better if we could do this with specialized tools?"

    And you can bet that 50 years from now the big issue will still be figuring out what you want to do, and figuring out how to describe that.

  9. This nonsense has been around before by njdj · · Score: 4, Insightful

    The "software factory" analogy has been around before. It's nonsense, of course. The software analogy of a "factory" is the plant that presses CD-ROMs. Pressing the 10,000th CD-ROM of a software product is the software equivalent of building the 10,000th Nissan Maxima on a production line.
    But writing the software which will go on that CD-ROM is the software analogy of designing the 2005 model of the Nissan Maxima. Now, some software development is not very creative. Just as tweaking the design of a car model that's been around for 10 years, to get something a little bit new for a new model year, is not very creative mech engineering. But it's still design, not assembly-line production. A competent software engineer will be able to do it better and faster than a bad one. And a factory worker will not be able to do it at all.

  10. it's a typo by n3k5 · · Score: 4, Informative
    200 projects sounds extremely low
    There's a reference to the source of this number right in there, why don't you just have a look at it? In the original paper, you find:
    "In the United States, we spend more than $250 billion each year on IT application development of approximately 175,000 projects."
    --
    but what do i know, i'm just a model.
  11. Manufacturing model dead wrong by Spazmania · · Score: 4, Insightful

    The manufacturing model of software development is dead wrong, and the reason why ought to be ovious to any good software developer.

    Programming computers is an almost entirely an art form. It was the same way 10 years ago. It will be the same way 10 years from now.

    Parts of programming which were art forms 10 years ago are a science today. Memory management, for example, is now a very well understood process. What happened? It ceased to be a programming task. Think: Java verus assembly language. Don't spend much time juggling pointers in Java, do you?

    Unlike manufacturing, once we've solved a problem it stays solved. That means the role of a specialist who is very good at some technique is necessarily short term: As soon as someone gets good enough to automate the technique, the need to repeat it disappears.

    As a result, computer programming remains a high art form: programmers are only needed for the tasks which still defy rigid definition. Art favors the renaissance man, the master of a breadth of disciplines who works with all of them. Computer programming will continue to favor such broadly skilled artists.

    So, those of you who style yourselves java coders or C coders or MSCE's, take heed: Become a generalist because your days as a specialist are numbered.

    --
    Moderating "-1, Disagree" is simple censorship. Have the guts to post your opinion.
  12. You just aren't buying the right computers by Sycraft-fu · · Score: 4, Insightful

    There are plenty of systems out there that are made to be put in place for years and years. IBM makes mainframes that will be expected to last 20 years, and never fail during that whole time. They really deliver too, as their old ones do just that. You can get systems with hot swappable PROCESSORS, they are so redundant, and others where 2 CPUs run in parallel, checking on each other.

    This is all real, and is what runs mission critical stuff across the world.

    However, as the orignal poster pointed out, it's good/cheap/fast pick two. I'd even say pick at most two. These systes are neither cheap nor fast. They do not use the latest greatest shit, they use proven reliable hardware that has undergone lots of testing. They are also not in any way shape or form cheap. Whatever level of processing they offer you, you can beat 10 times over with commodity hardware and still be under their price.

    The software that runs on them is likewise ultra reliable. Crashes just arne't an option, and they don't happen. The OS and apps are just rock solid. Of course, that means they also don't support all the whiz-bang features. No happy candy-coated bouncing docks or the like.

    It's the same deal as in consumer electronics. I continually see peopople lament how poor quality theri $40 DVD player or $20 VCR is as compared to the $500 model they bought years ago. Well DUH, they could afford to put some quality into a $500 DVD player, they can't in a $40 one. Thing is, you can still buy high end electronics, they just still cost lots of money. Go get a studio grade DVD player. It'll be built to last, produce a better picture, but it'll cost $500.

    Whatever the level of reliability you demand, there is probably a solution out there that can meet or exceed it. However, don't whine that it costs money. Quality costs money, always has, always will. If you want it cheap, be prepared to accept the consequences that come with that.

    Also, in computers, many times it's better to just go with multiple cheap systems. Ends up being as reliable and much cheaper. I mean say you have a server app that is prone to crash, because it is continually hacked and updated. Also, it runs on cheap hardware, so that's not reliable. Ok, so you design it such that it runs on 3 parallel servers, each capable of taking 100% of the load. So even if the hardware fails on one, you still have two, and your testing indicates that it's likely that if one crashes, it'll get back up quick enough that the other won't crash in the mean time. Maybe you go for 4x just to be safe.

    You end up having what appears from a user perspectinve to be an ultra-reliable setup, however it still allows you to quickly hack out new versions, that may not be as stable as they should.

  13. Software development has gotten harder by trenobus · · Score: 5, Insightful

    In the old days of machines of 8KB of memory and sub-Mips processors, programming was easier. The space of what programs you could potentially implement was much more limited than today (although both are obviously very large spaces). Most of the development time back then was devoted to figuring out how to implement a program, e.g. how to fit it in memory and make it fast. The was no operating system and the language was assembly (for the 8KB sub-Mips machines anyway).

    Today we spend a great deal more time deciding what a program should do, since better machines have expanded the possibilities to an extent we could scarely imagine 35 years ago. But we also spend more time deciding how to implement programs, though for different reasons than before. Now we choose languages, databases, GUI frameworks, and on and on. And the basis for making those choices intelligently involves much more knowledge than was needed before, i.e. not just knowledge of the target machine, but knowledge of the capabilities of the potential languages, operating systems, databases, etc. So the how part is now much more knowledge intensive, whereas it used to be more like solving a puzzle.

    So programming really has gotten harder! Is it really any wonder it takes longer and is so often screwed up?

    How to improve the situation? Well, the what part is only going to get worse, and we want it to, because that means we can do more with computers. The how part, on the other hand, can and probably will get easier. Standardization is the easiest way that can happen, though I wouldn't call standardization "easy". Using higher levels of abstraction is another way, but the current means of achieving this is mostly through components, the use of which narrows the spaces of both what and how. The problem is that component packages often make incompatible decisions about the how of their implementation, which often makes it difficult to combine multiple packages. And that gets back to the need for standardization.

  14. Re:Food chain-Bowling for IT. by Moraelin · · Score: 4, Insightful

    Actually, Microsoft or Google are proof of what he was saying. They're not companies who hired burger-flippers off the street, but companies who hired smart people with an education.

    At least for Google we had a recent article right here on Slashdot: they have a very high number of well paid Ph.Ds. Quite the contrary of what your average clueless PHB or beancounter does in the name of efficiency.

    Microsoft makes money by selling PHBs the illusion of "buy our patented snake oil, and you can make quality software fast with any burger flipper turned VB.NET developper." But suspiciously enough that is _not_ who Microsoft employs.

    Yes, you may rant and rave about how much Microsoft's software sucks, or how it misses deadlines too. But guess what? Most other companies software sucks twice as hard, and costs more too.

    While Microsoft does have buffer overflow exploits, other companies had those _and_ a bunch of bugs or broken design decisions of their own. Or shipped downright broken and non-functional software, just to keep a badly planned deadline.

    Among the closed source world, Microsoft actually does an outstanding job. So, you know, maybe hiring smart people actually does something for them.

    --
    A polar bear is a cartesian bear after a coordinate transform.