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?"

63 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.

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

      Wow, you just invented my new catch phrase. "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 NineNine · · Score: 3, Insightful

      You're exactly right. Programmers are equivalent to plumbers. They're relatively well-paid specialists, but they're always replaceable, and there's always downward pressure on wages.

    2. 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.
    3. 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.

    4. Re:Food chain by CAIMLAS · · Score: 2, Interesting

      The irony here is that programming requires decision making and analysis, even if you're a medicocre programmer. On the other hand, a mediocre businessman will be able to ask other people for advice.

      Reasoning and analysis, as you put it (also called logic and deduction) are pinacle traits of programming. They are not even generally considered necessary skills for most run-of-the-mill business people, and there-in lies the problem: business folks fuck things up for everyone else.

      The only reason programmers are at the bottom of the food chain is because they're socially inept (ie, very low social intelligence), more often than not, and thus they've not realized that they need to network with people to retain viability in a social environment.

      --
      ~/ssh slashdot.org ssh: connect to host slashdot.org port 22: too many beers
    5. 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.

    6. Re:Food chain by Bush+Pig · · Score: 3, Insightful

      > ... MBA types don't seem to understand how difficult software actually is.

      MBA types don't understand anything. They're oxygen thieves.

      --
      What a long, strange trip it's been.
    7. Re:Food chain by 16K+Ram+Pack · · Score: 2, Insightful

      What's difficult about software is the impact of a change on the rest of the system. That's what a lot of people don't understand.

    8. Re:Food chain by Moraelin · · Score: 3, Insightful

      "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."

      Good to see I'm not the only one who's noticed this. People write some 10 line BASIC program, and then can't understand why writing an 100,000 line one is a much bigger problem. (And that's not even the biggest of projects.)

      You don't even need to go into uncharted waters: if you tried writing an 100,000 line as the same kind of unstructured mess, you'd end up with a nightmare to debug and/or maintain anyway. The size alone, and the fact that you're essentially looking at it through a keyhole of 25 (or 50 or 100) lines at a time makes it a fundamentally different kind of problem than that 10 line BASIC exercise.

      And it's not only MBA types. Most programmers (and I mean actual programmers) come out the college without ever having had to maintain anything _near_ the scale of actual projects. And some of the flamewars (e.g., about how any kind of structure or strong typing sucks) are nothing but proof that someone never was in a large project, but is extrapolating out of their ass anyway.

      Either way, IMHO that's only one of the problem types. The ones I've had trouble with include, but are not limited to:

      1. The extrapolating type you've just described.

      2. The "form before function" type. If it's easy to drag and drop some buttons in a form editor, surely any monkey can put the code together in no time. I mean, phbt, programming is easy. It was dropping those buttons that was the real problem.

      3. The living proof that "just a little knowledge can be dangerous."

      E.g., someone who doesn't really understand XML, but just heard that it's good. Dunno for what. Probably for everything. 'Cause SUN said so. So next thing you know, everything _must_ happen in XML. Even calls inside the program have their parameters passed as XML, and every method starts by parsing its arguments out of XML. (Not a joke: I know at least one project based on that idea.) Or since XSLT is all the rage too, let's have business logic and workflow control in XSLT. (Again, sadly not a joke.)

      E.g., the PHB (or even programmer) who bought some book about patterns or best practices on Amazon, didn't really understand it, but now everything must use every single one of those. If every single of your objects doesn't also involve a singleton, which gives you a factory, which gives you an object registered with a manager, etc, it's coming out of your pay. (Again, not a joke: one PHB actually went through a phase where everyone was required to write endless reports about which patterns they used. And would get berated if they didn't use enough. No matter for what.)

      4. The invisible man. Now much as I'm weary of over-management, the worst situation so far was basically not being managed at all. Everyone just go code something, and, hey, you can go talk to the others (and other teams) personally if you need something from them.

      --
      A polar bear is a cartesian bear after a coordinate transform.
  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.

    1. Re:Yeah, right. by peachpuff · · Score: 3, Insightful
      "It's skilled repetition, but no more so than drafting or car repair."

      Neither of those is done on an assembly line, in a factory, or with an emphasis on speed. (They probably also take more skill and creativity than you think.)

      --
      -- . . ramblin' . . .
    2. Re:Yeah, right. by Javagator · · Score: 2, Informative

      Software development is a funny occupation. Almost any reasonably intelligent person can do it, but very few people can do it well. The very best programmers write code faster, with fewer bugs, the code is more maintainable, and has more re-usable components. A lot of people believe that if you hire average programmers and use the correct process, you get superior code. That's just not true. The quality of the code depends on the quality of the programmers (assuming a management that stays out of the way).

  4. Assembly Line? by Anonymous Coward · · Score: 2, Informative

    If we wont conform to an "Assembly Line" mentality they will probably just outsource it to another country.

  5. Libraries... by noda132 · · Score: 3, Interesting

    It suggests creating 'development environments configured to support the rapid development of a specific type of application.'

    That's all well and good, but after a developer codes 5 apps which work pretty much the same way, won't he just develop libraries so that any subsequent app will take less than an hour to code?

    1. Re:Libraries... by crmartin · · Score: 2, Insightful

      That's because the "factory" is the wrong metaphor for the whole process. Instead, we should think of programmers more like industrial engineers: they don't build widgets, they build processes that build widgets.

      The real work piece is the executable, and once we've built our source code, we can turn out as many copies of the executable as we need. If it's really complicated, we need a ./configure file that knows which components to assemble and modify in place so we get the exact workpiece we want.

      We as software engineers -- or programmers, if you like, although I'd argue there is a difference -- are working on the tooling. We need to figure out the thing that's needed, and come up with a pattern for that solution, and then figure out how the factory can build them. Then we look at the results as they come out, test them, measure them aghainst the real world, and think about how to build a new version that's closer to what the real world demands. But, like industrial engineers, we don't build a zillion copies of the factory -- every factory is a little different.

    2. Re:Libraries... by xygorn · · Score: 2, Funny
      Companies today have realized that anyone can operate a wench
      You made my day. I'll be chuckling all through my final exams this afternoon.
      --
      I am a sig. I wish I were a more creative sig, but I am not. I guess everyone has something to strive for.
  6. 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?
  7. 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.

      --
      :(){ :|:&};:
    2. Re:Eliminating the "Good" option. by Darkman,+Walkin+Dude · · Score: 2, Interesting

      I have to say, I find this trend more than a little disturbing. I mean, have electronic or mechanical engineers been attacked as much as programmers? What about artists and teachers? Factory line production, this phrase is just another way for the suits to feel good about outsourcing the jobs of highly skilled and creative people.

      It seems to me that this is coming to a showdown between the talentless parasites (sales reps, office politician middle managers, and marketing types), and the honest to god educated, skilled and productive members of our society. Mod me down if you want, but I can't honestly say that the IT industry as a whole and the individual programmers themselves are going to sit there and take this abuse for much longer.

  8. Maybe by zors · · Score: 3, Insightful

    It could work, but only on a limited basis. They could probably make junk applications, things that don't really need very much polish on them. Maybe programs that would only be used for a small period, and not necessarily for a large market.

    1. Re:Maybe by TWX · · Score: 2, Interesting

      Or they could make the standard array of commodity software that the public seems to go through. Messaging apps. Forum software. Journal software. Hell, I've heard that Microsoft already runs its people this way to a certain extent, that they get to "Check out" and work on a piece of a project, not really knowing deep down how that piece interrelates to the rest of the main project.

      Based on the quality of Windows this wouldn't surprise me in the slightest.

      --
      Do not look into laser with remaining eye.
  9. 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.

  10. Think Peoplesoft, Oracle, etc. by Animats · · Score: 2, Informative

    This makes sense for companies that sell slightly customized versions of their packages. That really is an assembly line operation.

  11. For well-understood problems... by Homology · · Score: 3, Insightful

    with well-understood types of solutions, one could presumely setup a "factory". Indeed, the off-shoring of programming task is part of that. On the other hand, there are programming/designing tasks where not even the problem is that well understood, or that require a high degree of independent, creative thinking.

    1. Re:For well-understood problems... by glinden · · Score: 2, Insightful

      It's not clear to me what software projects are well-understood and well-specified. Anything that is well-understood, well-specified, and been done many times before is turned into a library, reusable by all. Everything else is a custom job that requires creative thinking, innovation, and problem solving.

  12. Software development projects? by AltaMannen · · Score: 3, Insightful

    "According to the Standish Group [Sta94], businesses in the United States spend around $250 billion on software development on approximately 200 projects each year."

    200 projects sounds extremely low, unless they mean 200 projects per business which is extremely high. How do they define a project? I would guess there are nearly 200 videogames a year so they can't be included in this figure. Does a project need to be >1000000000$ before it is considered as a project in this group?

  13. Similar to my paper... by Anonymous Coward · · Score: 2, Interesting

    Which is here: genprog.pdf

  14. Re:Yeah, right. Adapt or DIE by jaltoids · · Score: 2, Insightful

    Look, you can think what you want but this is BUSINESS -- and you need to adapt or die, if you cant cut it, get out of the way there is someone else who can.

  15. Engineering by kognate · · Score: 2, Interesting

    I think this guy is going to get lambasted for saying things that are true. This is what people who don't subscribe to the SlashDotGroupThink (USPattent #43483598) have been saying for some time now: Software needs to get better.

    Historically, the way to make things that people make better is to make them using methodologies derived from manufacturing. why is software not subject to the same rules?

    sorry folks, it's 1840 again, and this "Steam Engine" is going away.

    The up side is that you don't have to convince programmers that this is true, just outsorce them until it's true.

  16. Same old same old. by Meowing · · Score: 2, Interesting

    This article is merely reiterating the idealized world that was supposed to result from using structured programming, then objects, and all the other names that have been tossed in for variations on those themes. Code re-use, clicky visual development environments, automagical code generation thingies, scripting... it's always been about concentrating the "hard work" into prepackaged elements and lowering the barriers to producing a finished application. The jigsaw pieces in the article's illustrations made me smile. I had always assumed they would be LEGO bricks, but it's all the same idea, isn't it?

  17. 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.
  18. Right. by jasmusic · · Score: 3, Insightful

    Keep it simple. If your company competes against a large one that believes this mud, then punch it in its soft spot. If their outsourcing and/or code factory leads to bad quality, then market your product as having better quality. On the same token (though not necessarily in the context of this topic): If their outsourced customer support system is flimsy, then fight them with a local-hire system that gets the job done. And if that doesn't work, then you've just legitimized their operation. Boo hoo, not much more to discuss.

  19. Re:It Won't Work Because Of Programmer's Personali by zors · · Score: 2, Interesting

    Well who says that existing programmers will be the ones to work these assembly lines? Couldn't traditional menial laborers be retrained for non innovative coding? just learning how to make some small part of an application? any shift in the way you make software would have to mean a shift in the mentality of the poeple who make the software. the quickest way to do that is to change the people themselves.

  20. 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.

    1. Re:Around it comes again by ScrewMaster · · Score: 2, Interesting

      This all comes down to money. How can we produce software that is just good enough for our customers to tolerate while minimizing up-front development costs. The irony to all of this is that simply hiring a bunch of good engineers, a good manager, and allowing them to write solid specs and live by them will, when all is said and done, result in better software for less money. And let's not forget keeping marketing away from any decisions on delivery dates.

      All of this discussion about the front-loaded aspects of software development completely ignores the somewhat harder to quantify, longer term aspects of software such as support costs, customer satisfaction, and ease of software maintenance. However, such things only matter if a company cares about them: if the only concern is getting some kind of product to market before the competition, then a software factory (read: sweatshop) probably makes perfect sense to your average suit. The truth is, your average suit doesn't understand the nature of engineering at any level, and loves the idea of being able to run an engineering staff along the same guidelines as the production floor. They truly don't understand the complexity of modern systems, particularly those which must interact with the real world in some way other than a keyboard and mouse. The whole point, in fact, of having an engineering staff is to reduce those unquantifiables to a manageable level.

      --
      The higher the technology, the sharper that two-edged sword.
    2. Re:Around it comes again by crmartin · · Score: 2, Informative

      This is the place to pull out Fred Brooks' paper "No Silver Bullet", which makes that point.

      Twenty years ago.

      Sometimes I think I should have been an English major.

  21. 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.

  22. This is/was inevitable by Anonymous Coward · · Score: 3, Interesting

    Back in the early to mid nineties I became aware of how the software industry was changing and saw that programming would become like being a factory machine operator.

    When I started, computing was more like being a scientist, the journeys one would undertake would lead to wild, mysterious and interesting places. Now you need 30 years experience in SOAP and XML and JSP and Java and etc. etc. and all you do all day is read documentation telling you how to use some crappy proprietary set of classes that some daft bugger threw together one Sunday night because the boss needed a color wheel widget that allowed him to choose colors based on the phases of the moon.

    Sorry, but programming these days is so unbelievably boring and if you want to be a factory worker then knock yourself out and get an IT qualification.

    Other evidence can be seen merely by walking into a software shop. You'll either be faced by rows of cubicles (which I'm actually quite envious of as at least you get some privacy) or, more likely, a huge open plan shop floor which is noisy as hell, totally unconducive to doing any sort of work beyond drone coding and ugly as fat in a liposuction canister.

    There is no "will it be", IT already is a factory style production environment. It's just the "managers" that keep telling you how "valuable" you are that make it seem anything different.

  23. this doesn't work! by yagu · · Score: 2, Insightful

    I've been under many different managements and the most common call to action when projects fail is, "Change the methodology!" For some reason this is the all too common diagnosis. I've worked with, under, etc. many "methodologies", and generally these methodologies correlate loosely at best to measured success. Of course authors, pundits, and visionaries continue to make fortunes rolling out countless new methodologies and writing books proving they are right.

    As for the notion of a "factory" -- I find the idea patently absurd. This idea presupposes software is a well defined "product", and all one needs to do is create an assembly line with interchangeable employees thus fostering efficiency, consistency, etc. It doesn't work! I've been there, done that.

    As an aside, I've found IT people have a hard time picking up factory jargon and idioms, such as learning to insert the work "fucking" in between syllables of words to form new words.

    I'd write a book on methodology that has ALWAYS worked for me and teams I've been on, but I could never find a publisher willing to publish a one page book:
    Find someone who knows what they want. Find IT people who know how to do it. Put them in a room together until it gets done.

    Readers are welcome to download this book for free.

  24. From The Tao Of Programming by Anonymous Coward · · Score: 2, Insightful

    A manager went to the master programmer and showed him the requirements document for a new application. The manager asked the master: ``How long will it take to design this system if I assign five programmers to it?''

    ``It will take one year,'' said the master promptly.

    ``But we need this system immediately or even sooner! How long will it take if I assign ten programmers to it?''

    The master programmer frowned. ``In that case, it will take two years.''

    ``And what if I assign a hundred programmers to it?''

    The master programmer shrugged. ``Then the design will never be completed,'' he said.

  25. The Hard Part by the+eric+conspiracy · · Score: 2, Insightful

    The hard part is not turning a specification or requirement into a working piece of software. The hard part is writing a specification that captures what the customer needs to have happen in unambiguous language.

    Software development should be treated as a multiplayer team communications game. The success of the team depends more on how successful the communications are.

  26. 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.
  27. Doesn't matter though... by einhverfr · · Score: 3, Insightful

    Open aspect of open source software which is often overlooked is that it allows smaller teams to develop software faster. If the software is maintained by large self-regulating networks, than the network itself becomes like an assembly line, but better. This accomplishes what the article is talking about and does it better.

    --

    LedgerSMB: Open source Accounting/ERP
  28. Time to get over it by Fungal_Infestation · · Score: 2, Insightful

    Here's the deal. Approximately 5% (maybe 2%) of developers are god like creatures. Able to weave logic from gossamer webs of electrons and silicon. Stunning in their ability to move from ideas to usable systems in timeframes that leave the head spinning. Able to apply new paradigms ..... The other 95% (98%?) are hacks. They are the new medium skilled lathe operators of the 21st century. Their only claim to fame is that they execute their relatively unskilled efforts utilizing new technology. So did telegraph operators. They were young, cool and too good to stay in a job for long. Train Engineers. Airplane pilots. For God's sake, captains and engineers of those new fangled steam riverboats were about as cool as they come. But please. Wake up. It's almost over. Hacks are hacks are hacks. It doesn't matter what you're hacking on. If you're average - you're average. If you want to be special - make special things happen. But please please please stop for a moment thinking you're something new. Just the most recent in a long line of boys with the new toys.

  29. Developed at Microsoft, eh? by PythonCodr · · Score: 2, Interesting

    Summary: Briefly presents the motivation for Software Factories, a methodology developed at Microsoft. A Software Factory is a development environment configured to support the rapid development of a specific type of application.

    Well, I guess when the Software Engineering Institute held the Software Factory Forum in 1985 (or was it '86... I forget) with various luminaries from around the software industry to discuss just these issues, they were really helping Microsoft develop the software factory methodology. Who knew?

  30. I RTFAed: Empty Gibberish. by jjohnson · · Score: 2, Informative

    It's "10 printed pages" of Business 2.0 cliches that was probably lifted out of some dot-commies VC proposal:

    One way to do this is to give developers ways to encapsulate their knowledge as reusable assets that others can apply. Is this far fetched? Patterns already demonstrate limited but effective knowledge reuse. The next step is to move from documentation to automation, using languages, frameworks, and tools to automate pattern application.

    This is about the most concrete sentence I found, and it ain't all that concrete, besides simply repeating the same mantras we've been hearing for the last decade or so: code reuse is good, frameworks increase efficiency, design patterns are distilled knowledge... There's a bland and unhelpful, not to mention trite, rejection of comparing software development to the production of physical goods in manufacturing.

    Don't bother wading through it. It's tripe.

    --
    Anyone who loves or hates any language, platform, or manufacturer, doesn't know what they're talking about.
  31. Read between the lines by ca1v1n · · Score: 3, Interesting

    The effect of this is to make your skills non-portable. You won't want to leave your job because your experience is so highly specialized that you'd basically be an entry-level programmer wherever you end up. Not only will you be entry-level, but your MS will be only marginally more useful than the guy who took a couple community college courses in the cube next to you.

    This whole idea is centered around getting more code written, cheaper. While it may in the short term improve quality due to specialization, in the long term it serves to replace software engineers with codemonkeys.

    Ideas like this make Stallman look like an optimist.

  32. Microsoft still doesn't get it... by SwansonMarpalum · · Score: 2, Insightful

    Software is a service, not a product.

    --
    "Give away the stone, let the oceans take and transmutate this cold and faded anchor." - Maynard James Keenan
    1. Re:Microsoft still doesn't get it... by JamesKPolk · · Score: 2, Insightful

      No, they do get it. Selling software as a product has made Microsoft a wildly successful organization.

      The people who don't understand what's going on are their customers. They're content to get a junk product with no service, and Microsoft cleans up at their expense.

  33. 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.
  34. 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.

  35. The first time they did this, it was really cool! by anubi · · Score: 2, Insightful
    Remember the Microsoft API and how they pre-encapsulated a lot if in in their MFC to try to cut out the tedium of all the minutiae of programming for a GUI?

    I thought the concept was really cool!

    I no longer had to re-invent the wheel every time I wanted to build an app.

    I saw this effort very similar to my construction in electronics where I buy components off the shelf and know what I'm getting. I wouldn't even think of trying to build an IC, resistor, capacitor, or large inductor.. albeit I could if I had to. Or what building contractor would try to make his own lumber or nails.. even windows or doors?

    It all comes preassembled - commodity items - and everybody knows how its built - and could build one themselves if they had to, but why? The vendor holds a "natural monopoly" on the things he makes because his "economies of scale" allow him to produce this item and even ship it to you at far less than the cost it would be to you if you had to make your own. Ever tried to build a light bulb? ( well yeh, I have with vacuum pumps and pickle jars..)

    I loved the idea that Microsoft released this standard assortment of "objects" which supposedly are standardized. It took Microsoft hundreds of man-years to generate this code, it will take me years to master it, just like spending years to master the keyboard on a piano. I figured that an investment in my time learning Microsoft technology would be time well spent.

    So, now where am I... I know an ancient technology . Microsoft keeps changing the keys on their piano keyboard! I can't keep up with their endless changing of things. I can't stay with one technology long enough to understand it thoroughly and avoid striking "sour notes".

    This endless changing of things and their efforts to insure I learn only what they will allow is my main reason for avoiding Microsoft products.

    I kinda see Microsoft products like fashion trends in pants. Its quite easy to slip one pair of pants off and another on when your pants go out of style. So, if its something where I am not counting on it being there in say three years, and nothing on the old will run on the new, Microsoft products fill the bill nicely.

    But if its something like my tools, car, air compressors, home, anything I am counting on to sit there and do what it was designed to do until I dismantle it, then I want some platform where stability of design and maintainability is paramount.

    I have no intention spending a helluva lot of time learning to play the piano if I know the piano manufacturer thoroughly intends to mess up the keys all the time so as to give the latest generation pianists an edge over the ones who bought into the plan a couple of years ago. With our playing skills being suddenly rendered obsolete by the change. I know big business can afford this kind of stuff, but as an individual running a small business, I can not.

    --
    "Prove all things; hold fast that which is good." [KJV: I Thessalonians 5:21]

  36. 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.

  37. Repetition is not Programming by cow-orker · · Score: 3, Insightful

    The vast bulk of programming is just repetition.

    If so, something is wrong. Computers are good at repetition, humans can do better things. If your programming is repetitive, you are using the wrong tool. Heck, you should spend your time developing exactly this missing tool. Build a decent library or a preprocessor, then use it to automate away the repetition. It pays off soon. Compare http://c2.com/cgi/wiki?SharpenTheSaw and http://c2.com/cgi/wiki?ThreeStrikesAndYouRefactor.

  38. MAMF Acquired Methodology Failure by strangedays · · Score: 2, Interesting
    There is in our industry a self organizing, self replicating, set of commercial forces, which cause a recurring disease syndrome. I label it MAMF Acquired Methodology Failure, in recursive TLA style. It also involves much Motherhood and Apple pie. At any point, the public label of the syndrome varies, because the disease meme itself rapidly changes appearance and mutates. It is frequently detected early by alert Slashdot posters.

    The MAMF often appears as "formal methods" or "algorithmic proofs" or in extreme cases "maturity models". The disease usually surfaces in comp-sci student authored articles, in CACM or IEEE, or other vectors for spreading academic ideas publicly. This suggests that universities publishing novel methodology ideas, have unanticipated consequences that are surprisingly dangerous to the common good. This is known and expected in some fields such as biological weapons, or nukes, its impact via software engineering may have been overlooked.

    MAMF displays a broad class of characteristics:

    1. Initiated based on subjectively oriented pseudo "research". This has the useful feature that it never withstands quantitative, independent, expert scrutiny by practitioners.
    2. Justified based on high level commercial "failure" statistics. The failures being implicitly attributed to construction level development, as opposed to other less politically palatable possibilities, such as business management failures, or failed planning.
    3. The infectious meme usually is injected into an organization via an article authored and sponsored by non programmers, individuals external to actual development. This is scarcely a coincidence as some people stand to gain by the meme's short lived success, this is part of its self replication pattern.
    4. The "magic bullets" promised are always based on "process" and "structures" deemed generically applicable, they are also carefully camouflaged to NOT look like magic bullet promises, this is a key mutation pattern of the meme.
    5. There is much "deeming" and imperatives of "quality", that is not based on actual usage patterns by development practitioners. The claims are usually extreme, and fundamentally non tangible.
    6. Has the subtext that developers are weak and somehow at fault. Usually implies that developers must be forcefully re-organized into production line process teams, by those that must rule them.
    7. Nearly always invokes Kuhns "Paradigms". This signature of MAMF appears to be as an attempt to justify change. In the current example we see "Paradigm shifts occur at junctures where existing change is required to sustain forward momentum. " Which is clearly a botched and rather desperate attempt to supply a valid appeal to "authority", if one considers Paradigms authoritative.
    8. Moves the solution away from developers into the tools. This is of course a toolmakers ideal, as they can then sell a plethora of services and products to "raise the abstraction level". This thinly veiled tools sales pitch is a clear signal of MAMF infection.
    9. The key infecting article, usually contains a strangely seductive idealized view of software development. A melange of the authors knowledge, speculations and preferred viewpoint, crafted to entice confused and concerned management. Reviewed by practitioners, the description invariably falls apart, but this is often overlooked by those already seduced.
    10. Quite often, the article contains a shameless plug for an authoritative sounding book, as indeed does this example.

      What can we do to help avoid MAMF ?

      Well the good news is that the answer does not involve Hobbits or Rings, or dark lords, or evil empires, unless you really want to get extremely philosophical.

      The bad news is that this is like trying to cure the common cold, this marketing meme is successful because it mutates rapidly. I believe there is no simple cure. The common solution is to simply endure the parasites and discomfort, until the organizations natural immu

    --
    There is no god; get over it already! Never exchange a walk on part in the war, for a lead role in a cage.
  39. interesting tidbits by YouHaveSnail · · Score: 2, Interesting

    According to the article:

    Without comparable increases in capacity, it seems inevitable that total software development capacity is destined to fall far short of total demand by the end of the decade.

    There are a lot of unemployed sofware engineers out there who will be glad to hear this bit of news.

    Of course, if market forces have free play, this will not actually happen, since the enlightened self interest of software suppliers will provide the capacity required to satisfy the demand.

    Is it just me, or is it terribly ironic that Microsoft is talking about letting "market forces have free play"?

  40. Re:Snow Crash by count_zero011 · · Score: 2, Interesting

    Yeah, it makes sense outsourcing writing the code to various companies. I suppose as the business of writing software matures, it's only natural for it for it to take on familiar manufacturing paradigms. (If your analogy of auto-companies is true.)

  41. Biggest problems I've seen. by 16K+Ram+Pack · · Score: 2, Interesting
    The biggest issues I've seen in internal software departments are:-

    1. People not knowing what each other is up to. So someone builds a reusable module, but no-one knows about it.

    2. People not working through the impact of changes in one part of a system on another. How do I find out all the places that a particularly column on a database table can be updated? How do I find out what it is set to? OK. This can be done, but it's very long winded.

    3. Fragmentation of tools. As an ex-mainframe guy, we had COBOL and JCL. Now, people download pieces of software, build things in different tools. All these tools require training, which takes time to become mature in them (and often are discarded before maturity occurs).

    4. Specs and code don't match. We should be at a point by now that this isn't an issue. The spec should be the code and the tool should run from the spec.

  42. 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.
  43. kinda true, but... by llimllib · · Score: 2, Funny
    Yes, Microsoft does hire very smart people while recommending that companies hire the people with the right buzzwords. The reason that the companies that they sell software to can get away with people who are less smart/qualified than MS's people is that they are usually all developing in-house, form-based, data entry applications. These comprise the large majority (IMNSHO) of business applications, and it doesn't take a PHd to write one.

    In fact, it would be detrimental to have a PHd working on one. Thus, the companies can have a person that will take their orders well, while MS can hire people that will (hopefully) develop well.