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

342 comments

  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. Re:And while we're at it by Anonymous Coward · · Score: 0

      What is this "borg" you speak of?

      borg -- bong

    3. Re:And while we're at it by Richard+Dick+Head · · Score: 1

      Fool! You know too much. Botoxus, Locuticlus, take Coward to Wendy's for reprogramming!

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

      Do programmers really need to sleep and eat?

      No. It's called amphetamine. :)

    5. Re:And while we're at it by Anonymous Coward · · Score: 0, Offtopic

      Can some explain to me why the parent comment hasn't been deleted?
      I thought that the moderator's job was to remove this kind of garbage.

    6. Re:And while we're at it by Anonymous Coward · · Score: 0

      Slashdot doesn't have a delete feature.

    7. Re:And while we're at it by Anonymous Coward · · Score: 0

      Sounds great, no more waste of precious time on mundane offline matters.

      Where can I sign up?

    8. Re:And while we're at it by Anonymous Coward · · Score: 0

      **REM** byteboyz --- software is a COST ( c-o-s-t ) not a benefit ... and with your libertoon affections why NOT have sweatshop wogs write all the WORD look-alikes. Eh padres ???

    9. Re:And while we're at it by JackGr · · Score: 1

      Last I checked, good programmers like to build tools that do things for them, so that they have more time to sleep and eat. That's what Software Factories are about. Programmers building tools that automate grunt work, so that they can get on with more creative things.

    10. Re:And while we're at it by essreenim · · Score: 1

      Exactly, This talk of programming factories is strange. My vision is for well programmed robots to do all our remedial tasks. Of course unemployment would be high, but eventually people might learn that capitalism just DOESN'T work.

    11. Re:And while we're at it by F452 · · Score: 1

      Well, don't be shy, tell us what works better.

    12. Re:And while we're at it by Anonymous Coward · · Score: 0

      Don't stop there son. Work it into every post. This could be the birth of the next "In Japan"!

      Heck, that only lasted for a month or so...this could be bigger. It could be the next "Stephen King is dead", "hot grits" or, dare I say..."All your base...".

      Dream big! Strive to succeed. It worked well for the Borg!

    13. Re:And while we're at it by Anonymous Coward · · Score: 0

      It does, but only editors can use it.

  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 AuMatar · · Score: 1

      Have you seen what plumbers make an hour recently? I wish Iw as paid that well.

      --
      I still have more fans than freaks. WTF is wrong with you people?
    4. 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.

    5. 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
    6. Re:Food chain by Anonymous Coward · · Score: 0

      I think that's the main reason businesspeople are so freaking terrified by the open source movement - open source programmers are the socially-aware ones, the ones that meet down the pub to tell sad linux jokes and so on - but they're not autists controllable by guys in suits, hence the need to invent new laws to criminalise the new breed of socially capable programmers.

    7. Re:Food chain by Kris2k · · Score: 1

      Very true, the average programmer is someone who is socially inept, and cannot efficiently communicate their intentions. Consequently, they get abused into the corporate structure, making them the end of the food chain.

      The only way to break this social barrier is to immerse them in a situation where they have no choice but to interact with human beings. From experience, my best move was to work for a year in a call-center. Now , I have bosses who hate me because I give them the exact reality of their projects. :)

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

    9. Re:Food chain by Anonymous Coward · · Score: 0

      The decision making at the programmer level is not something a business appreciates, because it makes very little difference to the business. By your definition, EVERY job requires decision making, even burger flipping. Programmer ARE the new factory workers. There is no one lower on the food chain. Programmers get handed down work, and do not delegate any further. Everything they do has already been analyzed and decided by other people.

      The Business and Marketing people come up with the Product idea, and justify the cost of its development to the Board. They are given a Budget, and begin to look into it; how it can be accomplished, what technologies need to be brought in, what the Scope of the product will be, etc. A Project is started. The Project Manager brings on board SMEs (subject matter experts), Users and other Stakeholders who may be affected by the product, maybe because it requires some new equipment to be purchased, tested and supported, or because additional people need to be hired and trained to support it, etc. You get the picture. They develop Use Cases, from which will come the top-level architecture, and a development and test plans. Then the Architects from various areas touched by the project come in, and basically design the whole product by breaking it up into components and sub-components, with interfaces and messages and contracts. They give these pieces to the project manager, who assigns them to various Programmers.

      The programmer is at the very bottom. They are given work, and have very little say in what it is, or how it gets done. And unless the timelines are WAY out of whack, they don't even get to decide how long it will take to do the work. Even the Testers (QA) and Support that progammers like to make fun of are higher. They have the power to give programmers shit when they don't do their jobs (poor documentation, doesn't pass even basic tests, doesn't follow architecture and interface contracts, etc).

      You may think you're the shit, but that's only because for some bizzare reason business people thought you had real skills to affect the bottom line, so they paid you lots of money. Just realize you're a lowly assembly line worker, building pieces someone else planned and designed and architected, and in many cases not even that much, as when you're merely putting together pieces someone else build.

    10. 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.
    11. 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.

    12. 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.
    13. Re:Food chain by Anonymous Coward · · Score: 0

      YEah yeah... whining unappreciated geek.
      Not all MBAs are clueless, and some actually read /. Some can actually sling code better than you. STFU.

    14. Re:Food chain by Smallpond · · Score: 1

      Supply and demand. In Massachusetts, you need 6000 hours as an apprentice pipefitter to advance to journeyman. Anyone can be called a software engineer. No degree, certification or apprenticeship. What we need is a guild.

    15. Re:Food chain by Hognoxious · · Score: 1

      The expression "food chain" is so last century, and it was bullshit even then: fleas are higher up the "food chain" than humans.

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
  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 ReverendHoss · · Score: 1

      Perhaps (insert First World developed nation here) programmers will not, but as we've seen, companies are happy to shop elsewhere for coders. I'm guessing quite a few countries out there would love to provide large amounts of semi-skilled, CHEAP labor for projects such as this.

      This isn't necessarily a BAD thing, of course. Someone still has to write the modules that others will be using so assemble. Still, would be a major shift for the industry.

      And before someone calls me on it, I'm not saying Western coders take more pleasure in their work, or there aren't plenty of hackers elsewhere who would be incensed by this approach.

    2. Re:Yeah, right. by ergo98 · · Score: 1

      While the article in question has an attention grabbing headline, it's basically a completely vapid rehash of the standard component software development, advocating that with plug-and-play components software can just be snapped together as if it were an assembly line. Oooh, newsflash to the author -- this has been advocated for decades. We hardly need a chief super extreme architect extraordinaire from Microsoft to reword this for us.

    3. Re:Yeah, right. by WarMonkey · · Score: 1

      This will never work. Not because it's impossible or inefficient, but because programmers will never submit to it.

      Well, I agree -- but enough about the color scheme already...

      --
      -- I could tell right away that she was impressed with my HUGE Slashdot Karma.
    4. Re:Yeah, right. by Tlosk · · Score: 1

      Once you've spent some time studying the human brain or other organisms, it's not much of a stretch to start viewing all life as programs, sets of complex instructions that allow the organism to accomplish a variety of tasks given a particular set of environmental constraints.

      Is it any wonder then that the attitude you describe should develop in people who do for a living what god did. Assuming a god did/does exist.

      Most people strive their entire lives for the something approaching control over the things surrounding them. Few experience the intoxicating power of near total control.

    5. 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' . . .
    6. Re:Yeah, right. by Kenja · · Score: 0
      Boss: I dont know why it takes you so long to write this software, I've seen you working and its just a bunch of typing!
      Me: I quit.

      If you think that good programming is just repetitive typing I have to assume that you either have never programmed in your life or that your REALY bad at it and are projecting your own problems onto the rest of us.

      --

      "Have you ever thought about just turning off the TV, sitting down with your kids, and hitting them?"
    7. 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).

    8. Re:Yeah, right. by TheoMurpse · · Score: 1

      yes, the coding proletariat will rise up in a bloody revolution against the bourgeoisie in which all the computers are told to destroy the wage system and electronically deed over ownership of the companies to the proletariat

    9. Re:Yeah, right. by TheoMurpse · · Score: 1

      whoops, i forgot to add "in soviet russia" :P

    10. Re:Yeah, right. by dspeyer · · Score: 1
      If your coding process involves a lot of repetition then you're doing it wrong. Any time you find yourself writing roughly the same thing twice you should pull it out and make it its own function (or procedure, macro, object, module...). That way you can do it right and check everything because it's just once and you're not thinking about anything else.

      If your language doesn't co-operate, consider code generators -- or switching languages.

    11. Re:Yeah, right. by Anonymous Coward · · Score: 0

      And the managers I work with right now think that process and standards can proudce code from people who are under-skilled, inexperienced and totally unmotivated to learn and or improve their skills. A lot of coorporate developers I work with are one trick ponies who feel they are entitled to the job they have and that they have paid there dues and found their niche and resent being asked to do any work that is not precisely and exactly like thee work they have been shown how to do and have been doing for the last ten to fifteen years.

    12. Re:Yeah, right. by Xyrus · · Score: 1

      Or painters. I mean really, when you get down to it it's just mixing paint and brushing it on a canvas. It's skilled repitition, but no more so than drafting or car repair.

      Or musicians. I mean really, when you get down to it 's just mixing a bunch of notes together into some coherent beat. It's skilled repition but no more so than drafting or car repair.

      The bulk of everything is repitition. Life is repitition. It's what you do with it that makes it unique.

      I don't see you chastising music bands of doing skilled repitition, nor novel writers.

      There a seven themes for a play. There are thousands of plays. Yet, I don't think Shakespear et al. manufactured their plays on an assembly line.

      Programming is an art and a skill, like playing an instrument or painting a scene. Our instrumentation is just a little different.

      You need a better argument.

      ~X~
      "Yes I fed the troll!"

      --
      ~X~
    13. Re:Yeah, right. by Anonymous Coward · · Score: 0

      This will never work, not because the vast bulk of programming is repetition (it shouldn't be - thats what the software is for!), but because programmers will still need to be there to adapt to an ever changing set of requirements.

      I always get a kick out of the "Software as an assembly line" mentality. Primarily because no one manufacturing a car ever said:

      "Stop the line! Change the car so that it can do this other thing now! Oh, and that won't affect the delivery date, right?"

      Which of course, is the primary reason these projects fail: No or poor requirements and a mentality that you can change your mind at any time.

      As long as the people paying the bills are unwilling to spend the time to think about what they really want, we will all stay employed :)

    14. Re:Yeah, right. by PetoskeyGuy · · Score: 1

      Programmers will never submit to it?

      I bet they will. I keep reading about people working more then 40 hours a week without overtime, and all kinds of other crap. I don't see why they would suddenly make a stand when the alternative is not programming at all.

    15. Re:Yeah, right. by DarkMantle · · Score: 1

      The vast bulk of programming is just repetition. It's skilled repetition, but no more so than drafting or car repair.

      Um, just one question... Where would computers be without hackers, and software devlopers?

      Answer: We would be here

      --
      DarkMantle I been bored, so I started a blog.
    16. Re:Yeah, right. by Anonymous Coward · · Score: 0

      I'm going to equate this to the music industry.

      Yeah, ok, so let's say that programmers are nothing more than template drones. Musicians are as well by the same token, after all, music is nothing more than an arrangement of notes at the lowest level. I can play a G major scale, over and over, and probably write a piece of music just on that (I have, I rock). So, by extrapolating this moron's opinion (I hope you choke, seriously, I -HATE- people like you), musicians are not artists and are nothing more than machines.

      Now, let's push this a bit further, and say we should set up factories for musicians to churn out music, and we'll call them... oh... I dunno, RECORDING COMPANIES. Why we can churn out music faster and cheaper!

      Now, let's go back to reality, the recording companies exist, and they do churn out music faster and cheaper (anyone who says otherwise is full of shit). Now, look at the quality. Boy bands anyone? (Boy band programmers... *shudder* There surely would be no God if that were to ever come to pass).

      So, let's get back on topic. Sure, you CAN make 'software factories', and sure it'll work to some degree. But the result will be utter shit. But hey, on the up side, we'd at least have a place for all those 'Hey I can draw a button in Visual Basic, I'm a programmer' technical college grads out there.

      This is just sad, and yet, the idiots who are just trolling and looking to shit on programmers don't have a clue. They don't even realize that without programmers, they wouldn't be able to post their pathetic point of view on this site.

      Call me a troll if you want, but this just seriously makes me angry. We programmers are not robots. You greaseball MBAs are definitely an argument against evolution.

    17. Re:Yeah, right. by KermodeBear · · Score: 1
      but because programmers will never submit to it.

      Sorry, but remember the golden rule?

      He with the gold makes the rules.

      I hate to say it, but I'll do just about anything to keep my job, because jobs are hard to find right now and, well, let's face it - money isn't exactly something you can do without in this culture...

      --
      Love sees no species.
    18. Re:Yeah, right. by biggunks · · Score: 1

      Isn't that the equivalent of saying all a novelist does is repeat phrases? ... the dog, the man... I think there's a bit more to programming than just repetition.

  4. Re:MOD ABUSE! by Anonymous Coward · · Score: 0

    There have been literally hundreds of posts about the horrible color scheme for IT. Yes, it was first in this particular story, but it has been said numerous times. Too bad it's so true.

  5. everyone knows it's like this: by n3k5 · · Score: 1

    push out better software, do it faster, employ mediocre 'mass production' coders for low pay: pick any two.

    --
    but what do i know, i'm just a model.
  6. 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.

    1. Re:Assembly Line? by jmccay · · Score: 1

      From the article:
      "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."

      Do we REALLY want to copy Microsoft's programming strategy? They don't exactly have a good record for producing quality code.
      The last programming job I had was in an environment something like this. Quantity and speed are valued over quality.
      It is possible, and it might be the future. Opensource could thrive in this environment, but it could also create a guild like system rather easily. Under this system, code would be guarded more than it is today, and advances will be fewer and farther indetween.

      --
      At the next eco-hypocrisy-meeting, count the private jets used to get to the meeting. Should be interesting to see that
    2. Re:Assembly Line? by chthon · · Score: 1

      IIRC, the Japanese did already experiments in the eighties with software factories, in an attempt to beat USA in producing software.

      It never worked out, because the Americans where more creative and skilled in programming.

      So MS is its usual self, thieving and lying.

  7. 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 Anonymous Coward · · Score: 1, Funny

      won't he just develop libraries so that any subsequent app will take less than an hour to code?

      Shhhh! You want my boss to find out I spend 39 hours a week reading Slashdot??

    2. Re:Libraries... by TheGavster · · Score: 1

      You've hit precisely where the assembly line metaphor for programming breaks down. If I need to make 20 cars, I need to make 20 engines. If I want to make 20 FPSs, I really only need to make 1 engine and include it in all three. There are fairly good parallels between the problems inherent in applying property laws to knowledge and the problems inherent in appyling assembly line techniques to software production: mainly that reproduction of information is free.

      --
      "Because Science" is one step from "Because old book". Try "Because of my experiment testing my falsifiable assertion".
    3. Re:Libraries... by davecb · · Score: 1
      Yup, or tools to help out similar routineizable tasks, like porting.

      --dave

      --
      davecb@spamcop.net
    4. Re:Libraries... by servognome · · Score: 1

      If I need to make 20 cars, I need to make 20 engines. If I want to make 20 FPSs, I really only need to make 1 engine and include it in all three.
      Not exactly the right interpretation of the metaphor. Your analogy refers to the duplication process (make 20 cars is equivalent to 20 copies of the same application). The article discusses the difference in economies of scale (making 20 cars vs 20 copies) and economies of scope.
      To go with the car analogy, if I need to make a sedan, a coupe, and luxury car. All 3 cars are within a similar scope, so they can built as basically the same car with most of the same parts. This is economy of scope, after you create the first car you save money in the development of the 2nd and 3rd model because all 3 types of cars share the same "core pieces"
      The article argues we will start seeing more economies of scope in software development (and even says economies of scale is the wrong way to look at software). In your FPS example using the same engine in 3 different FPS shows economies of scope. The original half-life only came about because they were able to license the quake engine thus reducing development costs and time.

      --
      D6 63 0D 70 89 81 BB 8E 7B 7C 5F 5D 54 EA AB 73
    5. 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.

    6. Re:Libraries... by Anonymous Coward · · Score: 0

      They will do so only if you let them. I manage a software team and I encourage people to implement things so that we can re-use the code and I require them to write library functions even if they don't feel the need (but they do usually anyway).

      Other places I've heard of actively discourage writing libraries and make it part of their "management" that they will not allow any useful new technique to be used in a program.

      OT Rant:

      My wife works at a place that will go out of business soon because they refuse to let anyone make any correct decisions. None of the programmers are allowed to use any of the tools they have purchased. They are a mainframe shop and they have a DB2 database available but her team is forbidden to use it. They must hard-code their tables into their programs so they have to recompile them if they need to make a change. Utter insanity.

      They have many many other business mistakes in the works. This is what they do, this is their "style" of "management". They go from one project to another always making sure that they take as much time and as many resources as they can because if they have a big team requiring a big budget, they get paid more. They have no clue.

      They have many times scheduled people to fly in from all over the country to be trained on software that doesn't exist yet. They show up and talk about what they want to do with it, but not with the developers, just with each other.

      In any case, if you ever get a chance to invest at Waddell & Reed, don't. They couldn't find their asses with both hands and their management team is the most utterly clueless bunch of morons in the world. They'll lose your money.

      end rant.

    7. Re:Libraries... by sql*kitten · · Score: 1

      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?

      Most of the code written today falls into one of two categories:

      1) Forms. Applications for getting data from a human into a database.
      2) Reports. Applications for getting data from a database and into a human.

      This sort of development is a commodity.

    8. Re:Libraries... by Anonymous Coward · · Score: 0

      If you are the "linked list specialist", your inbox is pilled with descriptions of lists, but each one from a different "client designer", asking for slightly different function names, coding style, access methods or even language to implement.

      Your cleverness in building a "core library" to serve all clients is exactly the point why this "assembly line" view could bring benefits as you get so good at adapting your "core library" adding a small bridge interface in a few hours for each client that you are actually cutting development time for many clients.

      The Client Designer does not wish to go thru a list library and adapt his design document, he only wants the "AddManager" and "RemoveCodersPaycheck" functions available in the list.

      There could also be contractual issues; you might not be aloud to re-use the code from one client into another client's code. You need to re-code most of it from scratch each time, after 3 years you can code a linked list so fast, you are like that guy mounting 8 engines a day in the assembly line.

      Just my 2 cents...

    9. Re:Libraries... by DavidTC · · Score: 1
      Heh. That's exactly what I was thinking. A factory assembly line is exactly the right metaphor, for the wrong thing. Programmers aren't assembly line workers, they're assembly line designers. For very large and complex assembly lines.

      Sure, you can get unskilled laborers to hook the parts together and plug the things in afterwards, just like you can get non-programmers to build a GUI using Visual Studio or whatever. And you can buy off-the-shelf machines to hook together, just like good programmers know how to locate useful libraries.

      But anyone who things programming is an assembly line process needs to read this. You can't program via steps, anymore than you can design a factory by steps. Steps can tell you one way to do a big design, and can tell you how to write the tiny bits. But you'll never have the slightest clue how to write the middle, or whether or your big design was a good one.

      At some point, you need to hook up a machine dumping out 10 items a second at 5 mph at three feet off the ground and need to hook it up to a machine accepting 3 items a second at 12 mph six feet off the ground, which is twelve feet away and facing at an odd angle...and you won't be able to buy a part for that. You'll have to build it. And it will be crap if you asked me to do it, because I am not a mechanical engineer.

      Companies look at the programming mills in India that can churn out the little steps, and they grab some random programming structure and think they can make a program from that. Well...they can. And it will be crap. The middle is important, no matter how many books come out trying to say otherwise, or trying to come out with ways of making the top and bottom closer.

      And while the bottom is extremely uncreative, or at least can be done well without creativity, and you can basically write any program with any top, the middle is creative, period. (And it will get even more creative as management, in an attempt to remove it, builds more and more of the top, and outsources more and more of the bottom.)

      Frankly, there is plenty of grunt work in programming that can be gotten rid off, and just like other industries, the correct way is not to pretend there's no creativity, but to give the creative people some assistants. We don't pretend we don't need sound engineers, we give them assistants so they don't have to run around all over the place adjusting mics. And most civil engineers never do any construction work. OTOH, most programmers are already carrying around code libraries, so I don't know how much assistants would help. But it would be nice to say 'Hey, I need this single linked-list turned into a double. And change that place in foo.c where I had to start walking the list from the start to back up one. And anywhere else I did that.' and have some grunt in India do it magically overnight. Saves money, too.

      It's times like this that I'm reminded of the story with the plumber who charged 1 dollar for a part and 99 dollars to know which part to replace. Companies today have realized that anyone can operate a wench, so they think they can save 98 dollars by hiring the cheapest guy. Of course, they've ended up paying him for 3 hours instead of five minutes, they've spent 70 dollars in parts, you can't operate more than one sink at a time, and there's still a leak.

      --
      If corporations are people, aren't stockholders guilty of slavery?
    10. Re:Libraries... by EnderWiggnz · · Score: 1

      i gotta disagree...

      if you need to write 40 reports, using whatever (god awful) report-generating tool you've been given, you will need to write the same f'ing thing with FOO's in place of BAR's and 3 characters extra on this line, and the title looking like *this*....

      and no, the suits dont want a report generation tool - they want the report, and they needed it yesterday.

      that - would be grate for an assembly model.

      --
      ... hi bingo ...
    11. Re:Libraries... by Anonymous Coward · · Score: 0

      It sounds to me like the report-generating tool (however bad) is where the real programming is happening in your scenario.

    12. 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.
    13. Re:Libraries... by DavidTC · · Score: 1
      I probably meant wrench there, but, yes, wench is much funnier. ;)

      'Hey, Frank, my wench isn't working right.' 'Ah, you're holding her wrong. Flip her around.'

      --
      If corporations are people, aren't stockholders guilty of slavery?
  8. 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?
    1. Re:simple by glinden · · Score: 1

      Could you elaborate on what you see as the parallels between mass production and software engineering? I don't see them.

      Seems to me that anything that is well-understood and capable of being banged out many times repeatedly is instead coded up into a library. Reusing a library requires no coding at all.

    2. Re:simple by Anonymous Coward · · Score: 0

      mass production line worker,

      Mass production line worker are generally used to produce many copies of the same product which already exists or has an excellent specification.

      The mass production line worker in software has been replaced with scripts consisting of the 'cp' command in a 'for' loop.

    3. Re:simple by Hard_Code · · Score: 1

      Well, I see two classes of programmers:

      1) Reliable line workers who have to provide fixed features and solve well understood problems within some time limit to satisfy a business need. These guys don't [have to] do anything particularly innovative but instead consume the innovations others create. I see these in mostly administrative systems.

      2) Those who actually create new, theoretical solutions and frameworks, and aren't necessarily responsible for pushing a given product out the door.

      The former you can automate to some extent, which is where drag and drop and automated framework integration and tools makes sense.

      In your scenario I would presume it would be developer #2 creating the library for developer #1. It's typically harder to create a good reusable library than to simply use one. Perhaps #2 is the engine and car designer vs. the assembler. I don't know, I didn't plan on my analogy having to go that far :p

      --

      It's 10 PM. Do you know if you're un-American?
    4. Re:simple by csguy314 · · Score: 1

      You're pretty bang on there, and it's been happening for a while now. It all has to do with the commodification of software.
      This is the same reason software development has been outsourced to cheap labour economies. Software no longer has intrinsic value, it's no longer something you make as an expression of style or interest. Software is now a manufactured product, just like hats, shirts or shoes, so large corporations figure it makes sense to produce it just like these other commodities.
      There is no more "good" software, a shirt is a shirt, a program that performs a task is just like any other program that performs that task. It's purely a matter of which one can be produced cheaper and faster.

      --
      This is left as an exercise for the reader.
    5. Re:simple by Anonymous Coward · · Score: 0

      I'm not sure that #1 and #2 are so easy to seperate. The problem with a pure #2 is that the solutions they come up with are typically either very general (perhaps already available from a 3rd party) or so specific that they are only useful for a few projects.

  9. 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 ncaHammer · · Score: 1

      what if i pick good and cheap and put them in a Beowulf cluster ?

    2. Re:Eliminating the "Good" option. by Anonymous Coward · · Score: 0

      thats not what fast means here

    3. Re:Eliminating the "Good" option. by selderrr · · Score: 1

      that's exactly what the grandparent and the article are talking about : make software cheap and do it fast by means of a beowulf cluster of developers...

      gee... that beowulf thing seems ontopic for the first time

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

      --
      :(){ :|:&};:
    5. Re:Eliminating the "Good" option. by n3k5 · · Score: 1
      gee... that beowulf thing seems ontopic for the first time
      No, it's not. The article is about industrializing software development so the bulk of the work can be done by programmers with low skills (which most of them have anyway), not about speeding up development by throwing more wetware at it. Software development is largely non-paraliseable, so a beowulf cluster of developers won't help much. In fact the idea is rather insane.
      --
      but what do i know, i'm just a model.
    6. Re:Eliminating the "Good" option. by winfx · · Score: 1

      if it's "bulk of the work" and requires "low skills" as you say, then a beowulf cluster of developers will help. The mythical man month, does not have a place in such a case.

    7. 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. Re:Eliminating the "Good" option. by sporty · · Score: 1

      Actually it's 3.

      Deadline, features and money. If you have one that's pinned down, you can usually move the other two in your favour.

      If the deadline is short, you can either a. hire more people to alleviate some of the work load (doesn't always work) or b. lessen the features. Want it for cheap? Decrease the features. Want more features? increase cost and time.

      --

      -
      ping -f 255.255.255.255 # if only

    9. Re:Eliminating the "Good" option. by n3k5 · · Score: 1
      if it's "bulk of the work" and requires "low skills" as you say, then a beowulf cluster of developers will help.
      No, it won't; just because a task can be done by mediocre coders using a rather simple development methodology, you can't automatically speed it up by clustering lots of mediocre coders together. You can have a factory that houses several such teams, but making all of them work on the same code wouldn't be economical. You simply can't get a two-year project done in four months by emplying six or ten or twenty times as many coders. Absolutely no connection to the beowulf cluster analogy.
      Oh, and I referred to work that can be done by programmers with low skills, I didn't say it requires low skills ;-p
      --
      but what do i know, i'm just a model.
    10. Re:Eliminating the "Good" option. by 2nd+Post! · · Score: 1

      Hmm, I use 'good' commercial software all the time.

      Final Cut Express
      iDVD
      iMovie
      iTunes
      Mail
      Safari
      OS X
      Photoshop Elements
      iChat

      Where are you looking that you can't find good software?

    11. Re:Eliminating the "Good" option. by selderrr · · Score: 1

      The fact that it is an insane idea is quite sufficient for many IT managers to start it up. Just look around you at the major companies with large IT staff. They really believe in a constant problem complexity/developer manpower ratio : if it gets more complex, throw more peeps at it

    12. Re:Eliminating the "Good" option. by Kenja · · Score: 1
      "what if i pick good and cheap and put them in a Beowulf cluster?"

      What part of "cheap" do you not understand?

      --

      "Have you ever thought about just turning off the TV, sitting down with your kids, and hitting them?"
    13. Re:Eliminating the "Good" option. by Anonymous Coward · · Score: 0

      Really. Windows is arguably none of the three.

    14. Re:Eliminating the "Good" option. by GoofyBoy · · Score: 1

      >when did we have "good" commercial software?

      Good point.

      Vs. "good" free software?

      With the later they went with "Cheap", "Good" and dropped the "Fast".

      The only reason why they get it "Good" is because they have so much time to work on it.

      And example is Firebird, a great ("Good") and free ("Cheap") product which is still in the Technology Preview stage ("Fast").

      --
      The surprise isn't how often we make bad choices; the surprise is how seldom they defeat us.
    15. Re:Eliminating the "Good" option. by Phragmen-Lindelof · · Score: 1

      Would a "Beowulf cluster" of average calculus 1 students yield a good math (research) paper?


      I didn't think so.

    16. Re:Eliminating the "Good" option. by CoolGuySteve · · Score: 1

      I think some of it comes from the perception of programs not being very good. Like how often do your electronics or car blow out compared to your operating system?

      Some of this comes from the fact that most people spend all of their time at a computer looking at one of the more unstable programs around, but some of it also comes from programming not being all that mature. A lot of stuff is written in languages like C and C++ that aren't very safe and getting concrete and precise specifications written is often impossible.

      In general, programming is just hard to do for humans. Especially in business where time is critical, it's like showing up halfway through a math exam and trying not to make mistakes. The best products seem to come from places that have unlimited time, like BSD and games where the release date is 'When it's done.'

      Of course, when you do let developers do their own thing, you get at what this article is talking about where humans write as little error-prone code as possible: easily attainable, commoditized systems, that encourage reuse and reapplication, which you tie together to solve whatever general problem you have, allowing you to focus on the new bits. The STL, Linux kernel, various libraries, and glue languages are powerful abstractions in this sense. It's weird and sad that the closest thing Microsoft has to Perl or Python is VisualBasic.

    17. Re:Eliminating the "Good" option. by Anonymous Coward · · Score: 0

      I mean, have electronic or mechanical engineers been attacked as much as programmers?

      Poor software seems to be acceptable to people, poor airplanes less so. (Thankfully Microsoft aren't writing software for planes, although they're turning up inside enough medical equipment to make me worry.)

    18. Re:Eliminating the "Good" option. by HeyLaughingBoy · · Score: 1
      The best products seem to come from places that have unlimited time

      Actually the best products come from places that know how to make good use of time.
      Make a reasonable development schedule. Marketing wants a new feature? OK, either push the schedule out or drop some less important feature that will take an equivalent amount of time. Plan design and code reviews up front and build them into the schedule. Allow sufficient minor integrations along the way so the customer can see how the project is progressing and give feedback before it gets too far off course. Allocate enough time for QA to create test cases, execute the tests and make sure there's enough time for developers to fix the inevitable problems. Monitor the metrics coming out of the schedule: number of defects found this week; number fixed; number waiting to be fixed or fixed and waiting to be tested, number of features still not yet implemented; adjust schedule as necessary.

      In short, approach software development like you would an engineering project. It's done every day and many organizations churn out quality product.
  10. 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.
    2. Re:Maybe by dr_labrat · · Score: 0, Offtopic

      JESUS CHRIST... WHEN DID WE GET INTO 7 DIGITS FOR A SLASHDOT UID.

      God, have a 10 year old kid, and I didnt feel old until I realised this.

      Should I ebay my UID? Kinda like Ultima goods...?

      --
      The secret of success is honesty and fair dealing. If you can fake those, you've got it made. (Marx)
    3. Re:Maybe by bladesjester · · Score: 1

      you weren't looking at the uid, but rather the post number....

      relax, you don't have to feel so old ;)

      --
      Everything I need to know I learned by killing smart people and eating their brains.
    4. Re:Maybe by dr_labrat · · Score: 1

      OH CHRIST!

      Im going senile too!!!

      --
      The secret of success is honesty and fair dealing. If you can fake those, you've got it made. (Marx)
    5. Re:Maybe by bladesjester · · Score: 1

      heheheh. Look at it this way, the senility dulls the pain :P

      --
      Everything I need to know I learned by killing smart people and eating their brains.
  11. 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.

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

    1. Re:Think Peoplesoft, Oracle, etc. by doshell · · Score: 1

      Well, I think that would not be too much of a problem if all software were designed with customizability in mind. In other words, software shouldn't be designed only with the "average user" in mind.

      --
      Score: i, Imaginary
    2. Re:Think Peoplesoft, Oracle, etc. by DavidTC · · Score: 1
      That's only true because of an original design error: Making non-customizable software.

      You shouldn't have to change the software at all to specify business rules. It should all be in an understandable form that can be easily changed.

      Now, whether or not Peoplesoft lets their end users do this, or builds these rules, unalterably, into the finished application is up to them. I predict the later. ;) But regardless, they shouldn't, and I suspect they don't, require 'programmers' for this.

      Not only is there a time and money issue, there's a support issue. Support's much easier if everyone has the same version of the software.

      --
      If corporations are people, aren't stockholders guilty of slavery?
    3. Re:Think Peoplesoft, Oracle, etc. by Anonymous Coward · · Score: 0

      If they made it customizable, there wouldn't be
      an entire industry filled with lucrative consulting
      to make it do what they should have made it do
      in the first place. The money is in the consulting,
      not the software. It makes perfect sense. Make a
      product that needs slight customizations for
      everyone who buys it, and the charge ludicrous
      amounts for those customizations.

    4. Re:Think Peoplesoft, Oracle, etc. by Animats · · Score: 1
      You shouldn't have to change the software at all to specify business rules. It should all be in an understandable form that can be easily changed.

      Even Linux hasn't achieved that. If that problem were solved, there would be far fewer sysadmins.

      Exactly the same problem exists at the application level.

    5. Re:Think Peoplesoft, Oracle, etc. by DavidTC · · Score: 1
      What do you mean, Linux hasn't solved that? You don't run in editing code every time you want to enable SCSI.

      You might have to edit code, or patch, if you want features that are not present, or to fix bugs, but you don't have to go in editing Linux because your 'rules' changed, because that's just silly and time-wasting. At worst you have to recompile...all the rules are already seperated out from the code, and you just choose which ones get built in.

      --
      If corporations are people, aren't stockholders guilty of slavery?
  13. Does not compute. by Anonymous Coward · · Score: 0

    Once the software is written, why do you need a production line to keep writing it?

    1. Re:Does not compute. by Meowing · · Score: 1
      Once the software is written, why do you need a production line to keep writing it?
      For certain types of applications (accounting, ERP, that sort of thing), every business wants something a little bit different but fundamentally the same.

      We already have (relatively) off-the-shelf packages like SAP that companies take in and customize. If all those SAP customers are making simliar modifications and reports and whatever in parallel, there is (theoretically, theoretically!) a lot of efficiency to be gained by handing that work off to specialized houses that wouldn't have to figure out all the problems from scratch, having seen it all before.

      For lots of business and political reasons, if probably won't really happen that way, even if it is possible. Within one huge corporation with lots of semi-autonomous divisions, an approach like that might make some sense, though.

    2. Re:Does not compute. by JackGr · · Score: 1
      Right on the money. It's not about building things that are the same. It's about building things that are similar but distinct, like different configurations of SAP.

      We're not suggesting, however, that the mods be handed off to a specialized house. It's not about developers working in sweatshops.

      Rather, we're thinking about more modern factories, where robots designed by engineers do the work. The analogy is tools designed by programmers. Programmers build the factories to make their lives easier.

      We think development can be automated in many other problem domains in much the same way that SAP has automated it for ERP - i.e., by building frameworks that codify useful abstractions and supplying visual tools that make it easy to iterate rapidly over them. Do that for many pieces of more complex applications, and you have a software factory.

  14. To every job its worker by ehack · · Score: 1

    Many firms need banking screens designed, stuff like that. What's so special about writing a form that checks that no bill for less than $.001 get sent out ?

    --
    This is not a signature.
  15. 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.

    2. Re:For well-understood problems... by Justice8096 · · Score: 1

      Look to the example of Louis Comfort Tiffany for an example of both working at the same time - he had artisans produce "custom" stained glass pieces at high prices, and he had artisans perform increasingly minor changes to stained glass pieces until you had the cheapest, mass-produced pieces. The quality of the custom pieces got his company a reputation. The margin on the mass-produced pieces got him the profit.
      With this model, both things work... or, to try it another way, a company that produces open-source software to get it's name in the door, and then charges more for custom solutions based on them, since it now has the reputation and exposure to be able to offset its higher cost (and profit) with its reputation... like, say, IBM Global Services?

  16. Wouldn't somebody figure out how to automate this? by Anonymous Coward · · Score: 0

    Yes, there are some problems that have been solved thousands of times, this sort of thing might work to make cookie cutter software a bit more reliabily, but of course, won't somebody soon figure out how to automate this "factory"

    I suppose it widens the gulf between problem-solvers and code monkeys.

    But sooooo often, I've been called in to fix stuff that was developed according to some sort of "brilliant" methodology where totally obvious fundamentals were forgotten and well, it seemed better to simply start over.

    How is this different from the disposable "API of the month club"

  17. 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?

    1. Re:Software development projects? by SagSaw · · Score: 1
      200 projects sounds extremely low, unless they mean 200 projects per business which is extremely high. How do they define a project?

      I'm an electrical engineer at a relativly small company that designs and manufacturers auto parts. We are not a "software company", but we write a suprising amount of software, for example:

      Microcontroller/microprocessor code used in some of our higher-end products

      Ladder-Logic style (for simple tests) or LabView software for product validation test stands, end-of-line test stands, portable test systems, etc. for each product. While much of the code can be reused from product to product, there are usually enough differences that software written for previous similar products can't be used as is. (As well as customers who specifiy different, incompatible, test procedures for every project).

      Software to automate the process of analyzing the masses of data produced by the previous item.

      Various web-based systems for things like project management, purchasing, hours-tracking, etc.

      I imagine that this is pretty typical for most companies. While there may only be one or two big projects, there are likely to be numerous small software projects being worked on throughout the company.

      --
      Come test your mettle in the world of Alter Aeon!
    2. Re:Software development projects? by Anonymous Coward · · Score: 0

      The project management body of knowledge defines a project as a temporary endeavour to bring about a unique product, service or result.

      Temporary means that the project has a definite beginning and end. Unique means that the project is something new and makes a definable change. These factors different projects from ongoing operations.

      Projects usually involve multiple people, often from different areas and/or organizations and therefore require coordination.

      Multiple projects that have something in common may be grouped into Programs, which are groups of projects managed together to bring about advantages that could not exist from managing the projects individually.

      Portfolios are composed of projects and programs that are managed as part of an organizational investment strategy.

    3. Re:Software development projects? by tesmako · · Score: 1

      My guess is that they mean that the top 200 software projects in the US costs $250 billion each year. Getting and reading the paper is probably the only chance of really figuring out what this quote is supposed to say though.

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

    Which is here: genprog.pdf

  19. Re:MOD ABUSE! by Anonymous Coward · · Score: 0

    Redundancy only applies to posts in that story. Besides, that would rather stupid because there are many occasions when posting a link in multiple stories is helpful. Should people be forced to read all the posts in all other stories first instead of being given the useful information in the story its relevant to?

  20. I think that... by Anonymous Coward · · Score: 0

    this would work as well as writing books in an assembly line.

    1. Re:I think that... by Anonymous Coward · · Score: 0

      That explains a lot about books these days...

  21. Re:It Won't Work Because Of Programmer's Personali by Anonymous Coward · · Score: 0

    You underestimate how poverty will facilitate these sorts of factories; 100 years ago constructing buildings was the work of artisians, now they are pre-fab buildings. Software is not immune from this trend.

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

  23. Re:It Won't Work Because Of Programmer's Personali by gl4ss · · Score: 1

    'factory' made software(that is made on an automatic assembly line of sorts) is "made" all the time..

    everytime someone creates some ms access db with some wizard that happens.. everytime someone uses some wizard to create something that does something it's akin to the factory model where there's only pre-designed assembling.

    when creating something totally new though.. do they create car designs in a car designs factory?(no they don't but they have their own model of how it gets done anyways.. software design has some models that it can be done with as well but that's quite fucking long from factory work)

    --
    world was created 5 seconds before this post as it is.
  24. Author by ReverendHoss · · Score: 1

    Seems someone is channeling L. Bob Rife, straight out of Stephenson's "Snow Crash".

    If you haven't read it, do so.

    1. Re:Author by crackshoe · · Score: 1

      I'd actually say it's more similar to the federal government as it exists in 'snow crash'.

      --
      Don't worry - its just stigmata. Pass me a napkin and don't you dare tell my mother.
    2. Re:Author by cat5 · · Score: 1

      Damn, this is what I get for reading Slashdot late in the day. As soon as I saw the header for the article, all I could think of was the Feds in Snow Crash.

      Man, time to read that book again, for the ~15 time.

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

    1. Re:Engineering by ChrsJxn · · Score: 1

      What you are saying makes some sense.
      Software should get better.

      However, the problem with the assembly line idea is that an assembly line works fantastic for what it does. And what it does is recreate the same basic thing, slightly differently, many times. This is really effective if you're building a car, because each worker only needs to know a small amount, like which screw goes where. Yet true innovation always comes from one person with a brilliant idea, or a small group, which often just establishes a framework for one person and their great idea.

      --
      I once saw a /. article with 1 comment.
      I should've got a screenshot.
    2. Re:Engineering by phazethru · · Score: 1
      This is what people who don't subscribe to the SlashDotGroupThink (USPattent #43483598) have been saying for some time now:

      No! God! What are you thinking? SlashDotGroupThink isn't patented! It's open source :-D

      --
      "I am the Black Mage! I casts the spells that makes the peoples fall down!" ~8BT
    3. Re:Engineering by tsm_sf · · Score: 1

      Historically, the way to make things that people make better is to make them using methodologies derived from manufacturing.

      I think you mean "make things that people make more numerous". Mass production usually means a trade-off in quality, not the other way around.

      --
      Literalism isn't a form of humor, it's you being irritating.
    4. Re:Engineering by Anonymous Coward · · Score: 0


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

      yes -- that explains the thinking behind fast food like McDonalds, KFC, and Dennys

      I don't think they are an improvement in food quality, but they do make a lot more $$$ for the owners at less cost than a real resturaunt

      I think the reason you're missing is that software is IP, not a steam engine. It's all in your head in other words -- different rules apply.

      You can make 1000 or a million copies of digital data for nothing compared to the cost of making two locomotives instead of one.

      so, your simple idea goes away like the steam engine.

    5. Re:Engineering by johannesg · · Score: 1
      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?

      Because making software is a design effort, not a manufacturing effort. Any attempts to understand or control the process as if it were a manufacturing process is doomed to failure.

    6. Re:Engineering by DavidTC · · Score: 1
      Um, when did the assembly line improve product design? Did I miss something somewhere?

      Design methodology has improved in the last century, but that's because of engineering advances, it has nothing to do with assembly lines, which usually result in worse products because of various constraints and having looser tolerance due to using interchangable parts, instead of custom fitted. And they're the reason that every plastic electronic device seems to be held together with stupid tabs and screws instead of just screws, and battery covers now slide in and out with easy-to-break covers instead of having well designed hinged covers....because machines can just snap the bits together.

      OTOH, assembly lines produce much more consistent products, and the contraints they supply have resulted in many engineering advances out of necessity, which in turn resulted in better produces. But that's like calling the plague 'a great liberator' because the manpower shortages forced societal changes afterwards. (And it's not like you need to invent reasons that the assembly line is a good thing. Duh. They're in the top three innovations for giving us such a high standard of living. You don't need to start ascribing mythological properties to them.)

      I swear, some people are living in an alternate universe. Programming does need to get better, and manufacturing has nothing to do with it. Programming needs to be treated like engineering, not fucking manufacturing. Treating it like manufacturing is what's wrong with it...you can't just stick program bits together and hope they work.

      --
      If corporations are people, aren't stockholders guilty of slavery?
    7. Re:Engineering by sgt_doom · · Score: 0

      So, if I understand the previous posts, Henry Ford's production line was terrific - but then he should have offshored all those factory jobs???? (Seriously though, super post, DavidTC!)

    8. Re:Engineering by QuantumG · · Score: 1

      But "making" software is not what the software industry is about. The vast amount of us are employed to maintain software and for that we have no methodologies.

      --
      How we know is more important than what we know.
    9. Re:Engineering by johannesg · · Score: 1
      That is still a design effort first. Look, writing computer programs, or maintaining them, is about as much about typing in instruction as architecture is about drawing lines. Go find an architect and tell hem that you nephew of 3 can do as well as he can because he can draw lines too. See what funny color he turns before exploding.

      I recommend a good book on refactoring to pick up some ideas wrt. methodologies for maintenance.

  26. 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?

    1. Re:Same old same old. by servognome · · Score: 1

      We do see this model at work in the modding community. Just look at all the cool things that can be done with the same core module.
      Mods take less time than the original game, because the original game you have the complexity of creating the engine, this is the economies of scope the article describes.

      --
      D6 63 0D 70 89 81 BB 8E 7B 7C 5F 5D 54 EA AB 73
    2. Re:Same old same old. by Anonymous Coward · · Score: 0

      you have the complexity of creating the engine,

      There you go proving the parent's point while thinking you are rebutting it. "game engine" is a fancy new name for a library. And as all other libraries it was NOT created in a "code factory". Looks like playing those repetatively silly games took its toll on you? There are already ways to reuse software, quite well developed at that. They will not work well in a "factory" setting though. The reasons for pushing "code factories" have nothing to do with software quality - it will get much worse there. The real reason is the need to decieve people to pay big money for YASM (YET ANOTHER SILLY METHODOLOGY) Looks like you are an easy prey. Oh, well, the money is yours to burn...

    3. Re:Same old same old. by JackGr · · Score: 1
      Actually, the previous poster had it right on the money. Yes, a game engine is a library. That's what Software Factories are all about. Building reusable abstractions that can be combined or configured to do new things.

      The article said nothing about code factories. It talked about combining pieces to build similar but different things. Isn't that what we do with libraries?

      The gestalt of Software Factories is not programmers working in sweatshops doing mindless work under the eye of an overbearing manager. To the contrary, it's programmers building tools that automate grunt work, so that they have time to do more creative things.

  27. Re:It Won't Work Because Of Programmer's Personali by Antique+Geekmeister · · Score: 1

    It can be useful as an apprenticeship program for actual code and tool development. For example, getting all the change orders in for a commercial project can be a hell of a lot of work, equal in scope to building the damn thing in the first place. Adding a field, making one display have a link that points to another one, porting it to a new OS or modifying it to be compatible with newer graphics capabilities or API changes, etc. can all suck away the creative time of the original author.

    So there is a role for minions to do such work, especially because the original authors often never have time to write *good* interfaces for other programs to interact with it, or may be unfamiliar with those new operational modes. The original authors need to take the feedback from them seriously, but it's awfully helpful to have the original author available available to look over the minions' shoulders and say "no, that's silly, I already did that in this chunk of code".

  28. 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.
    1. Re:code monkeys by big+tex · · Score: 1

      I think your comment actually reinforces the OP's sentiment. In every group, there are excelent people. I work with some draftsmen, and some are just CAD monkeys, but we have one who is, well, gifted. Problem is, there are just too many drawings to only hire the gifted ones - they are in short supply.

      --
      I think I need a new sig here.
    2. Re:code monkeys by sgt_doom · · Score: 0

      You nailed it exactly! There are only a finite number (regardless of urban legends which proliferate) of really good coders - or code cowboys, if you will. Unfortunately, Corporate America can never get away from the idea that the American worker/employee is nothing but an easily replaceable module - and must constantly be replaced. REMEMBER THAT CLOWN, an economics prof at MIT, Lester Thurow, who only a short while ago proclaimed that "human capital" was the most important asset of a corporation. NOW THAT SAME CLOWN IS PROCLAIMING that offshoring as many American jobs as possible is the best way to go. Wonder what corporations endow that clown's chair at M.I.T.?????

    3. Re:code monkeys by jm91509 · · Score: 1

      But if you're lucky, you can get software that fits the same specification written by one 'artist'...

      Programming is science not art.

      As a science there are a well defined logical set of rules that you must follow in order to come out with a working program.

      An monkey can shit on a piece of canvas. That is art.

    4. Re:code monkeys by idlethought · · Score: 1

      Programming is not Science, it's not Art, it's Craft. In the same way that most engineering disciplines (Civil, Mechanical) grew from craft to engineering via the application of science. Software is on it's way to becoming an engineering discipline but is not mature enough yet. Currently most 'methodology' techniques are little more than snake oil and alchemy.

    5. Re:code monkeys by Anonymous Coward · · Score: 0

      This is exactly the same case with the project I am doing now. I would prefer to call it 'Black Box Development'. This is going to be the hottest topic in the industry journals, from the way it looks.

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

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

  31. 4 architects, 10 developers, 40 programmers by Anonymous Coward · · Score: 1, Insightful

    A major software projects starts with a handful of architects who must scope out every aspect of the project (reqs, overall and subsystem designs, APIs between subsystems) before development begins. The architecture and design must be audited. The design is then handed off to developers (i.e. tech leads) who work with programmers to implement each subsystem. All subsystems must be thoroughly QA'd. Finally, the subsystems are integrated and tested.

    After design hand-off changes should be few but will happen. Anybody who whines about these changes will be fired on the spot. Any programmer who whines about bugs found by QA will be skinned alive.

    In this model, the programmers are factory workers. You don't want to be a factory worker: become a tech lead and eventually an architect.

    1. Re:4 architects, 10 developers, 40 programmers by JackGr · · Score: 1
      That's not the idea. Our vision is not of programmers working as mindless drones driven by others. It's of programmers building tools that make their lives easier.

      Why use a compiler? Because it handles a lot of uninteresting details. I used to write those details by hand, writing applications in assembly language. I really appreciate having a tool that does it for me.

      Why not take the same idea farther, or do you think we have reached the zenith of automation in programming?

      I don't think we've reached it yet. We can identify many recurring problems and good solutions for them, and we can write them down as patterns. The next step is to bake some of those patterns into frameworks. From there, we can build tools that make it fast and easy to instantiate, configure and assemble components based on the framework.

      Don't believe me? How do you build UIs? By hand or using a tool?

      Software Factories are the same idea, just tackling more of the problem space. UIs are well enough understood and well enough automated. Let's work on some of the problems that haven't been solved to that degree.

  32. 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 base3 · · Score: 1

      +1, Ecclesiastes. There is indeed nothing new under the sun, and we will continue to make the same mistakes.

      --
      One CPU cycle wasted on digital restrictions management is ONE TOO MANY.
    2. Re:Around it comes again by davecb · · Score: 1
      In fact, during the late "structured" and early "4gl" era, Honeywell tried to set up software factories. Net result? They couldn't be distinguished from ordinary labs like mine (TSDC). They then went on to building Unix-like development environments, which worked quite a bit better.

      --dave

      --
      davecb@spamcop.net
    3. Re:Around it comes again by evil_one666 · · Score: 1

      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

      how very, very, very, very, very, very, very true
    4. Re:Around it comes again by StrawberryFrog · · Score: 1

      Indeed. This looks a lot like 4GLs and application generators all over again.

      --

      My Karma: ran over your Dogma
      StrawberryFrog

    5. Re:Around it comes again by Anonymous Coward · · Score: 0

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

      I always found it amusing when that certain someone says "wouldn't this be better if we could do this visually using come kinda of graphic code builder?" The suggestion makes little sense when there are no graphical components to the software, but the person posing it will often claim that it would be better that way, as if the answer to productivity lay in the input device used to construct the program. It's almost as absurd as claiming that there would be a significant productivity boost if the source code to the program contained fewer characters.

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

    8. Re:Around it comes again by Murf+In+Wyoming · · Score: 1

      Uh, just look at the world of Electrical Engineers, designing big circuits. They started out with schematics, but as circuit sizes increased, the graphics got to be a big slow-down. The newer methodologies all use programming languages to make the big circuits easier to describe.

      When things get big, language-based solutions end up more palatable than the graphical approaches.

      --
      Dogs look up to men; cats look down on men; But Pigs! Pigs can look men square in the eye. -Churchill
  33. Specifying software products by wayward · · Score: 1

    It seems like just specifying software products takes a lot of work. Part of my job as a developer is helping the stakeholders decide exactly what it is they want and pointing out risks. For example, they'll say, "I want it to work like this," and I'll respond, "Well, we can do this, but the consequence would be ..., and some alternatives are...." How would this kind of thing fit into a factory model?

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

    1. Re:This nonsense has been around before by glinden · · Score: 1

      Excellent point. Software engineering is the design stage. The industrial stage is burning the CDs for distribution.

      Another analogy might writing a novel. The actual writing is a creative task that isn't amenable to mass production. But banging out 100k copies of the book once the writing is done is an industrial process.

    2. Re:This nonsense has been around before by servognome · · Score: 1

      Did you read the article. It specifically says this: We can now see where apples have been compared with oranges. Production in physical industries has been naively compared with development in software. It makes no sense to look for economies of scale in development of any kind, whether of software or of physical goods. We can, however, expect the industrialization of software development to exploit economies of scope.
      The article discusses economies of scope, which is like using the same basic design of the 2004 Maxima to design the 2005 Maxima rather than starting from scratch

      --
      D6 63 0D 70 89 81 BB 8E 7B 7C 5F 5D 54 EA AB 73
    3. Re:This nonsense has been around before by johannesg · · Score: 1
      The article discusses economies of scope, which is like using the same basic design of the 2004 Maxima to design the 2005 Maxima rather than starting from scratch

      Well, _that_ is certainly news to me. I always thought I had to delete all my code, and purge my knowledge of software design, before I could start a new project!

    4. Re:This nonsense has been around before by Anonymous Coward · · Score: 0

      MS's idea is that somebody takes your libraries (since companies own your ideas), gives it to some outsourced software factory to "tweak" your software to make multiple customized programs.
      Once you make the libraries they don't need you anymore, they have cheap labor make small changes every year so they can make customers pay to license their "new" products.
      They are screwing everybody to increase their profits.

    5. Re:This nonsense has been around before by Anonymous Coward · · Score: 0

      That's the idea with IP law, yes. Giant "software factories" of anonymous asians cranking out code that is really functionally identical, but skirts around the patent laws corporations have bought in the decaying west.

    6. Re:This nonsense has been around before by DrCode · · Score: 1

      And don't forget that at the start of each new project, you have to implement new linked-list, dynamic-array, and hash-table code...

      Actually, before STL, that was pretty much the case if you changed jobs.

    7. Re:This nonsense has been around before by JackGr · · Score: 1
      Read the article. The point it makes is *exactly* the point you're arguing. You assumed you knew what it said without reading it based on your own interpretation of one word in the title, but that assumption was incorrect.

      It contrasts production with development (which includes design), and notes that in the software industry, production is done by machines that stamp out CD-ROMs, while development is done by engineers.

      But that doesn't mean we can't automate some aspects of development. If you use a compiler, you're already using a tool that automates some aspects of development.

      I used to write a lot of assembly code. The decisions now made by the compiler were made by programmers in those days, and a lot of tedious work was done by hand to implement those decisions. I no longer care about those decisions because the compiler does a good enough job of making them for me, and automates all the tedious work that went along with them. That buys me time to do more interesting things.

      Software Factories are not about building the *same* thing over and over again. They're about building similar but different things from common design fragments.

      Compilers do that every day. They write programs from specifications that you supply in a higher level language by combining the members of a fixed set of machine instructions using patterns. We're talking about the same thing, just taking it up another level.

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

    1. Re:This is/was inevitable by mikael · · Score: 1

      You'll either be faced by rows of cubicles (which I'm actually quite envious of as at least you get some privacy)

      Unfortunately, these are still noisy as hell, except you won't know where the noise is coming from. My next-cubicle neighbour used to have an admin visit him every afternoon. For the entire duration of the meeting, I kept hearing this "thump, thump, thump-thump". After three days it drove me nuts, and I just had to find out what the noise was... she was bending her knee and thumping the floor with the toes of her sneakers.

      Not forgetting the heavily built six foot six tall guy who just *had* to walk around barefoot on the dryboard floors. Every time he walked past, everyone felt their desk chairs bounce up and down like an early Disney cartoon.

      --
      Vintage computer adverts: http://www.vintageadbrowser.com/computers-and-software-ads
    2. Re:This is/was inevitable by Anonymous Coward · · Score: 0

      Unfortunately, these are still noisy as hell, except you won't know where the noise is coming from.

      OTOH, fortunately nobody knows where the hell that water bomb was comming from.

      I kept hearing this "thump, thump, thump-thump". After three days it drove me nuts, and I just had to find out what the noise was...

      In this case it is sufficient to know that it is the kind of noise that stops at a thowing-angles between 102.2 and 108.9 degrees - but you'll have to do a lot of empirical studies before you can draw such a conclusion.

      Not forgetting the heavily built six foot six tall guy who just *had* to walk around barefoot on the dryboard floors.

      That's why you should brag about your water sports achievements anonymously only.

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

    1. Re:this doesn't work! by Louis+Savain · · Score: 1

      Of course authors, pundits, and visionaries continue to make fortunes rolling out countless new methodologies and writing books proving they are right.

      They are not new methodologies. They are just variants of the same old tired methodology, the algorithm. For a completely different non-algorithmic solution, take a look at the The Silver Bullet and Project COSA

    2. Re:this doesn't work! by yagu · · Score: 1

      Point well made. I read the articles, and they make sense. I'm not sure I find the ideas COMPLETELY new, but there are interesting directions to consider.

      You are correct, the "experts" writing books and collecting speaking fees aren't rolling out new ideas, but I submit they are convincing the deep pockets their ideas are new and worth implementing and paying a premium for.

      I would also submit my two-sentence book in abstraction is the distillation of the articles referenced. Good input.

    3. Re:this doesn't work! by johannesg · · Score: 1
      I read the articles too, and their point appears to be that we should do away with function calls and replace it all by message sending, preferably expressed as a graphical program. There are some problems with this approach:

      - Graphical programming usually turns out to be unfeasible as problem size increases.

      - The notion that you cannot make incorrect software using graphical programming is, at best, misguided. The gap between "what the user wants" and "what the developer thought the user wants" remains, wide as ever. The developer may, or may not, have slightly more success eliminating some types of crashes, but certainly not all (unless things like mathematical operators are also disallowed you'll still have the opportunity for division by zero, for example).

      - I fail to see how you can write software without the two of the three basic constructs of programming (choice and repetition, the remaining one being iteration). Show me a "program" that reads a file with 100 lines of data, sorts it, and writes it back _without using an algorithm_. I'm not sure how one would weasel his way out of calling the sorting an algorithm, but it will sure be fun to watch...

    4. Re:this doesn't work! by JackGr · · Score: 1

      Where does the article say that Software Factories involve creating an assembly line with interchangeable employees? I didn't see that in the text.

  37. Re:It Won't Work Because Of Programmer's Personali by Veridium · · Score: 1

    I agree. I seriously wish more IT people would look at the facts: These companies you think you have "job security" at, you have no security at all. You are fodder. You are an easily replaceable renewable resource in their eyes, like paper. They do not care about YOUR quality of life, what YOU want in life, about YOUR security in life. All that matters is what they can get out of you and whether or not it's cost effective. And this will often be a deciscion made based on criteria other than your job performance.

    IT workers either need to unionize, or better still, start their own companies and operate as contractors. Maybe a nationwide co-op might be a good idea. I'll never go back to a 9-5 job, ever. The pay is better and believe it or not, the job security is better too. Just be willing to branch out in every direction you have the resources to go in. I operate online stores in certain niche markets as well as contract. They'll never shove me in a factory. And the hours? Typically I work throughout the day a few hours at a time, then when night rolls around, I work into wee hours and wake up around 10 or 11. That's my natural geek work cycle. Very compatible. Screw the factories!

    --
    Think for yourself, destroy your television.
  38. Not (only) a technology problem by r.jimenezz · · Score: 1
    I feel the article focuses too much on technological problems. Developing software is not only hard because of technical reasons. Tools have been growing in expressive power and abstraction by leaps and bounds, despite what is implied.

    They make the point for domain-specific frameworks by comparing them with SQL and GUI builders. But I feel they de-emphasize the importance requirements gathering and overall developer-stakeholder interaction has. It's not about better tools from a technical point of view, it's about tools that can speak and understand a particular business point of view.

    I even think one could argue that the kind of software that seems amenable to this "factory" approach is the least common. We could challenge the article's premise with the tendence that open source is bringing to the market. If value is to be found in customising and adapting software to highly specific needs, as opposed to the traditional "software as a product", then the amount of technology you can reuse, whilst important, falls second to actually capturing the things that change and that make your application unique. That certainly has quite a bit of technology to it, but again there's much more than that.

    Finally, even when focusing on the technical aspects I find it rare they made no mention of stuff like product line architectures and MDA, which seem to be all the rage these days when these topics arise.

    --
    The revolution will not be televised.
  39. We need a better software creation methodology by Louis+Savain · · Score: 1

    Will super-specialization of software development teams help the industry to push out better software faster?

    The answer is a resounding no. The problem is not how to manage or organize teams. The problem is in the way we develop software. We are doing it wrong. The solution requires a fundamental change in the way we program our computers. In my opinion, the main reason that software is so unreliable and so hard to develop has to do with a custom that is as old as the computer: the practice of using the algorithm as the basis for software construction. I believe that moving to a pure signal-based, synchronous software model will result in at least an order of magnitude improvement in both reliability and productivity.

    Currently there exist hundreds of programming languages, operating systems and development tools competing against one another, not counting custom proprietary technologies. A veritable tower of Babel. Worse, the complexity of many of the tools is often greater than that of the applications themselves. Becoming proficient in their use often requires years of training and experience. This is a sign of the chronic immaturity of the software industry. Software engineering will not come of age until a single software construction and execution model is universally adopted. More on this at The Silver Bullet.

    1. Re:We need a better software creation methodology by johannesg · · Score: 1
      I read the articles on the site, and their point appears to be that we should do away with function calls and replace it all by message sending, preferably expressed as a graphical program. There are some problems with this approach:

      - Graphical programming usually turns out to be unfeasible as problem size increases. The ability to still understand the graphs drops off far more rapidly than the ability to understand an equivalent text solution.

      - The notion that you cannot make incorrect software using graphical programming is, at best, misguided. The gap between "what the user wants" and "what the developer thought the user wants" remains, wide as ever. The developer may, or may not, have slightly more success eliminating some types of crashes, but certainly not all (unless things like mathematical operators are also disallowed you'll still have the opportunity for division by zero, for example).

      - I fail to see how you can write software without the two of the three basic constructs of programming (choice and repetition, the remaining one being iteration). Show me a "program" that reads a file with 100 lines of data, sorts it, and writes it back _without using an algorithm_. I'm not sure how one would weasel his way out of calling the sorting an algorithm, but it will sure be fun to watch...

      Some random flames based on this post:

      - The word "algorithm" simply means "method". I am inclined to believe that you do not know this, and are using it for something else, although what exactly escapes me.

      - Signal passing software makes sense in an asynchronous environment. Synchronous signal passing is no different from normal function calls, and in fact does not allow the concurrency you envision.

      - However, asynchronous environments involve all sorts of intricate race conditions, leading to all sorts of unpleasant problems that would not be present in "normal" programs.

      - "Becoming proficient in their use often requires years of training and experience. This is a sign of the chronic immaturity of the software industry." There are numerous mature industries that require years of training: law, medicine, any research job, teaching, etc.

      - While I agree there is a _lot_ of redundant fluff on the market these days that serve no purpose other than wasting everyone's time (typically anything that labels itself "middleware", and at least half the stuff put out by Microsoft), I don't think your call for the single tool will find many takers. Would you go into a machine shop and tell them they only need one tool? Or would you expect them to use the appropriate tool for each problem they solve? If the last, why would IT be any different?

      Have you actually solved any problems using your methodology? I'm asking because I find it hard to believe it would work except for the most trivial problems.

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

    1. Re:From The Tao Of Programming by Anonymous Coward · · Score: 0

      and then the manager was enlightened......

    2. Re:From The Tao Of Programming by NaDrew · · Score: 1
      and then the manager was enlightened......
      ... and the project was outsourced to Hyderabad.
      --
      Vista:XPSP2::ME:98SE
    3. Re:From The Tao Of Programming by wideBlueSkies · · Score: 1

      and then the manager was enlightened...... ... and the project was outsourced to Hyderabad.

      And after the requirement was communicated to India, the sweatshop^^^^^^^^offshore team then modified it to fit their available reuse components and stolen code...

      wbs.

      --
      Huh?
  41. 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.

  42. Nothing more than by Anonymous Coward · · Score: 0

    a CFO wet dream.

  43. Re:It Won't Work Because Of Programmer's Personali by Anonymous Coward · · Score: 0

    Unionizing and entrepreneurial instincts are diametrically opposed. Weird that you propose both.

  44. are factory systems not geared to mass production, by blackest_k · · Score: 1

    factorys are geared to doing the same job over and over again
    software just isn't like that the only repeating which gets done is at the disk duplicators.

    modular code and functions can help keep development costs down and maybe someone might come up with a way of building quickly searchable librarys of modules that can do specific tasks. so you can just include and call most of your way through

    of course then you can then go about patenting each idea forget about producing a working model and sue your company into profit.

    you can just imagine what it will be like paying for each patent used.
    customers will be screaming when they realize they have to pay 1000,s just to click on the icon to launch the program :/

  45. Amateur Game Development by Anonymous Coward · · Score: 0

    Makes me think about the old Shot'em Up Construction Kit... and other Make-your-own-game RAD tools.

  46. Everybody missed the obvious by ggvaidya · · Score: 1

    ... a certain company with the coolest remuneration packages ever? And going public soon for tons of moolah?

    Code factories *will* work, but they'll only ever be bottom feeders: eating away at overpopulated markets because they're cheaper than anyone else. Companies which produce good quality, innovative products will win. But only - ONLY - if they're good at figuring out what they do best (searching, making computers nobody ever gets fired for buying, making gizmos or allowing interoperativity and catering to the bottom line).

    Otherwise - guess what? - that code monkey just took your idea, wrote it for half the price, and took away all your consumers. Tough luck.

  47. Re:It Won't Work Because Of Programmer's Personali by Meowing · · Score: 1
    IT workers either need to unionize,
    Bad idea, especially in the current environment. Collective bargaining might delay the inevitable through the sheer bulk of bureaucracy, but it also tends to turn that group of workers into more of a burden that a company would love to jettison. It's a good way to get the group replaced as a group instead of individually, I suppose.
    or better still, start their own companies and operate as contractors.
    Free agency has a lot going for it. It's an excellent choice for people who can (and want to) handle it. Not everyone has the drive and creativity it requires to succeed in that environment, but it's always an option worth considering.
  48. Great idea by Anonymous Coward · · Score: 0

    Programmers are really just the semi-skilled assembly workers of the 21s century (c.f., "systems admins" who are basically janitors). These individuals commonly lack the inter-personal skills that are required in today's service-based economies and as such are mostly interchangable (especially given the "flexibility" that management innovations like outsourcing have wrought).

    As such the "factory line" approach would appear to be neatly suited to both the nature of the work (viz a viz "codemonkeying") and the qualifications and credentials of those currently entering the workplace (the blunt pragmatism of Computer Engineering against the refinement and elegence of Computer Science).

    The 'production line' approach is to be applauded as it restricts the many liabilities to be found when a mere implementor oversteps the bounds (through either arrogance or stupidity) and attempts architecture. Rightly these jobs should be seperated. It is a statistic oft quoted in software development that 20% of programmers do 80% of the work. This approach to programming fully allows the top 20% to be architects and thus restricts the remaining 80% to construction of pre-defined "blocks" of code, and at the same time leverages the "flexibility" within the semi-skilled computer programmer market to the advantage of organisations agile enough to take on this approach.

  49. Software is not "just like X" by monk · · Score: 0, Redundant

    We keep hearing about this or that great revolution in software development based on the realization that software is just like X where X may be a story or a building or a car on an assembly line.

    These ideas are usually pure intellectual laziness. Software can easily be demonstrated to be nothing like X. Download a house sometime. I'll leave debunking the rest as an exercise for the reader.

    The fact is that software is just like writing software, and mixing metaphors is good for nothing except selling management books.

    If you want to develop good software hire a very few excellent coders and fire everyone else. Test the heck out of everything they do and and don't let management start a software project without a clear idea of what they need and how it will pay for itself.

    If anyone creates a powerpoint presentation at any point during the development process, shoot them. Shoot them twice.

    --
    [-- Trust the Monkey --]
    1. Re:Software is not "just like X" by gnuLNX · · Score: 1

      Why? Why was this modded redundant. This person is exactly the kind of person I would want working for me...less talk and more walk. Management in big companies slow the entire company down while debate this and that like politicians.

      "If anyone creates a powerpoint presentation at any point during the development process, shoot them. Shoot them twice."

      I would like to add that you should gut the body and sink it to the bottom of your lest favorite river so as not to get caught.

      --
      what?
    2. Re:Software is not "just like X" by DanielMarkham · · Score: 1

      This is great advice. I'm going to put it in the next powerpoint presentation I put together.

      Thanks!

      (Sound of gunfire)

    3. Re:Software is not "just like X" by Anonymous Coward · · Score: 0

      This complacency is the exact problem. More than 80% of software projects fail to meet objectives. This is unacceptable. I will repeat again for the majority of readers apparently in some form of arrested adolescence: this is unacceptable. Corporations are desperate to fix this problem. Many design methodologies are there to precisely address the problems you noted (yeah, nice instruction to another employee bozo "test the heck out of everything" "have a clear idea of what you need". Yeah its just so easy isnt it.) Yet still the hostility to management. Not PHB, but genuine good quality management is something that if experienced you would never wish to be without.

    4. Re:Software is not "just like X" by monk · · Score: 1

      (yeah, nice instruction to another employee bozo "test the heck out of everything" "have a clear idea of what you need". Yeah its just so easy isnt it.)

      Ok, so your a manager...
      So here's your reading assignment, read "Death March" by Yourdon, "Agile Software Development" by Alistair Cockburn.

      It's interesting that you assumed I wasn't a manager. In fact, I usually serve as the software architect on large projects which is about equal measures designer, project manager and methodologists. I've lead the implementation of large systems using the Unified Process as well as more XP/Agile approaches. I've taught formal classes on requirements gathering and have a video series on the same. (I used a whiteboard, no Powerpoint)

      The point I was making is that while methodologies are useful, silly metaphors usually aren't. Requirements and testing are hard, irreducibly so. I never mentioned management in my post, so it's interesting that you automatically assumed I didn't manage and that I was blaming managers for something. Is it because I mentioned powerpoint? :)

      --
      [-- Trust the Monkey --]
  50. 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.
  51. 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
  52. Contradiction ? by pb9494 · · Score: 1, Interesting

    From TFA: Total global demand for software is projected to increase by an order of magnitude over the next decade

    Didn't I just read an article about how Tech Employment is dropping sharply this year ?

  53. Who cares? by Anonymous Coward · · Score: 0

    We hired two programmers recently. Recieved 200 applications for two jobs. Sorry, this 2004 not 1996, industry no longer has to beg you to work for them. You are harping back to a world that no longer and will never again exist. Move on or get used to it.

    1. Re:Who cares? by TheWanderingHermit · · Score: 1

      Read the whole post.

      Then think.

      First: You don't know how many of those applicants are unemployed, and how many are looking for something better. Many of those who are employed may not have applied for a sweatshop job.

      Second: Your point was addressed. Even if you're getting a 100:1 applicant to job ratio, there is still a finite supply of IT pros.

      For example fast food drains their workers, uses them up, and forgets them. They can do this. There is an endless supply of teenagers who need spending cash. While there are new IT grads every year, many of those seeking an intellectual challenge will go into something else if they know they have 40+ years in a sweatshop to look forward to. You may have a large supply of sweatshop fodder, but it's not endless. At one point, you'll run out.

      I was not, in any way, looking at an old world. I was just considering a few points, but you were so busy being snide you either didn't read the full post or didnt' think it through.

  54. Cut to the chase by ites · · Score: 1

    1. Every generation of software architects fights to find a way to build a software "factory". I've seen this go through at least 4 full cycles: mainframe toolkits (first CASE tools 1980-1990); client-server (early-Windows, PowerBuilder et al, 1990-1995); OO (VB, VC++, Delphi, 1994-1999), web applications (1999-present).

    2. Every model relies on pre-built components being glued together by programmers who understand a business issue (how to calculate a bank balance) but have no idea of the technology behind their work (CICS, VSAM, WIN32, HTTP, whatever).

    3. What MSDN is describing is "their way", a model that surely works very well indeed.

    4. Every software factory includes its own obselescense, since it fixes onto a specific technological platform, and these platforms have a lifespan of 5, maybe 10 years.

    Conclusions: (a) for any given technological platform it takes about 5 years to get to the factory stage. We are just getting there with web development. (b) the factory stage lasts for about 5 more years before it's wiped out by the next big thing.

    It's worthy, and banal all at the same time. I remember looking for work in 1994, having 10 years' experience as a top-class technical architect, and getting offered only work for AS/400 RPG development. That was also a software factory, the ASP of the mid-1990's. Today I'm working on new programming languages (based on XML) which will, in 5 years' time, completely replace today's way of working. (or probably not, but the point is that IT goes through permanent fundamental change).

    There is space in such a schema for all kinds of programmers. But I certainly don't see "hackers" as working in software factories except as toolsmiths.

    --
    Sig for sale or rent. One previous user. Inquire within.
  55. I don't buy it... by Rumagent · · Score: 1

    Seems pretty stupid to me. The problem isn't really coding, the problem is to understand and describe to domain. This is (if any complexity is involved) an inherently iterative process - in essence the very opposite of the "Software Factory" model.

    The article seems to "solve" this with two pretty old ideas: abstraction and reuse. Both of these has, at one point, been hailed as the silver bullet of software development, and they have both failed to deliver their initail promise of fast and dirt cheap development. Instead they have been adopted and integrated as part of software development. I don't think that "Software Factories" is the silver bullet (in fact I very much doubt one exists), but in time the idea may prove useful in some reduced and limited form.

  56. Better options available by nwbvt · · Score: 1
    I'll admit I just skimmed TFA, I didn't read it. But from what I got, this isn't that great of an idea.

    The basis of putting something into a 'factory' and mass producing it is that it shouldn't require much in terms of creativity, it should be just a process of putting together the parts. If that is all a particular piece of software is, shouldn't it be easier, quicker, and cheaper to automate the development than to stick it in an assembly line type of thing?

    --
    Mathematics is made of 50 percent formulas, 50 percent proofs, and 50 percent imagination.
  57. More evidence of MS trying to take credit for.... by 3seas · · Score: 1

    ...that which is not to their credit

    I wrote this in late 1996 and even more can be found here regarding autocoding and I'm sure there is plenty more I can bring up.

    Hey MS, how come you don't understand teh concept of "Credit where credit is due", Hmmmm?

  58. This is impossible for a different reason! by Anonymous Coward · · Score: 0

    In factory assembly, people are used to perform the same operation over and over again. In general there's no reason these steps couldn't be automated other than the cost of designing, constructing, and maintaining the necessary machinery. There is no way this can ever occur in software because whenever any thing can be automated in this fashion, the computer can do it without human intervention. This article presupposes a level of sophistication in the automation of programming that would make these programming factories totally unnecessary!

  59. Re:More evidence of MS trying to take credit for.. by 3seas · · Score: 1

    BTW, due to teh changing nature of the internet and how long ago the above link content was created, some the the links within those will not be available.... but you can use google to find the information and its new links

  60. Absolutely Silly by Anonymous Coward · · Score: 0

    Software Engineering academics don't need to discuss this because it is silly. They understand the complexity involved in building software and it is not necessary a linear process much like making a chair. Assembly line is a totally wrong metaphor. Once software is created, it is copied and configured. That's it.

    Authors are ignorant of the issues behind software.

    More likely we'll have programmers programming on a higher level and computer generating more code for us.

  61. Microsoft is selling utter snake oil again by David+Gerard · · Score: 1
    Software creation is not something that can be effectively Taylorised; it's more akin to designing factories than working in one. However, the fallacy that all jobs can be Taylorised into a procedure is popular with bosses who resent what they do not understand. So it'll sell. Microsoft is expert at selling this sort of thing, even when it doesn't work. c.f. the common MCSE.

    A full explication of the disaster anyone buying this line of insane bullshit is setting themselves up for is detailed in The Programmer's Stone by Alan G. Carter (and here are the appendices.

    --
    http://rocknerd.co.uk
  62. Strawman by Anonymous Coward · · Score: 0

    RTFA which is about economies of scope, not economies of scale.

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

    1. Re:Time to get over it by Anonymous Coward · · Score: 0
      relatively unskilled efforts utilizing new technology.

      That's the best abuse of the word "utilize" I've seen in several weeks. Bravo!

  64. 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?

  65. Re:Yeah, right. Adapt or DIE by deaddrunk · · Score: 1

    Think what you like but these are people. Chucking them on the scraphead to save money in the short-term leads to problems in the medium to long-term.

    --
    Does a Christian soccer team even need a goalkeeper?
  66. 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.
    1. Re:I RTFAed: Empty Gibberish. by Anonymous Coward · · Score: 0
      It's "10 printed pages" of Business 2.0 cliches that was probably lifted out of some dot-commies VC proposal

      I bet that the site has several images of smiling, moderately bright looking, moderately attractive people in large rooms filled with natural light as well. The people in those images of would look like they might be happy employees, customers, or just associated in some way with Global E-Data Business Solutions Partners.

      Thanks for the warning though, I'd have wasted my time and been pissed off if I read that crap. I am a bit surprised that anyone makes money off this scam since so many people were exposed to toxic levels of "new business speak" just a few years ago.

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

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

  69. 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.
    1. Re:Manufacturing model dead wrong by JackGr · · Score: 1

      I agree with you that programming is an art form. However, a lot of the time seems to be taken up not doing things that involve creativity, but doing grunt work. That's what higher level languages did for us. They took away some grunt work, as you point out. It's a good that that we don't spend much time juggling pointers or writing memory allocators in Java. I used to do plenty of both, and freely admit that the compiler and runtime do a better job than I did. I like not having to worry about them. That's exactly what Software Factories are all about. Building tools to automate rote and menial tasks, so that developers can get on with the creative aspects of development. What I don't understand is what specialists have to with any of this, however. The article doesn't talk about people focusing on narrow tasks. It does talk about forming supply chains, and there will be some amount of specialization as complexity ramps up. But, as I said in another post, this will happen at the level of companies supplying coarse grained components, not at the level of the individual developer. Most shops use DMBSs supplied by people who know that problem domain, for example. Why? Because it takes a long time to really know the domain, and because using a DMBS supplied by someone who really knows the domain takes less time and involves less risk than writing one yourself, learning by trial and error as you go. Using a DBMS supplied by someone else is an example of a supply chain with two links. The DBMS supplier and you. This can and will go much deeper. This does not mean that individual developers will be constrained to narrow and uninteresting problems. I'm sure the folks who work on Oracle find it interesting. The message here is a bigger picture message. It's about reducing risk on a project scale by leveraging the expertise of other companies. It's not about turning individuals into narrowly focused specialists. I also agree with you that programming will continue to favor the broadly skilled artists who can solve hard problems. Anyone whose job is threatened by giving away some grunt work to tools was never in a very secure position, anyway.

    2. Re:Manufacturing model dead wrong by Fulcrum+of+Evil · · Score: 1

      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?

      No, but I do spend some time cajoling the GC into running when I'm not running out of memory.

      --
      "We returned the General to El Salvador, or maybe Guatemala, it's difficult to tell from 10,000 feet"
    3. Re:Manufacturing model dead wrong by Spazmania · · Score: 1

      My point was twofold:

      1) Computer programming and manufacturing processes SHOULD NOT be compared. They don't compare. That's what it means to go through a paradigm shift and enter new age. It means that the fundamental character of a process has changed in such a way that there is no meaningful comparison of the details.

      Comparing computer programming to manufacturing is as silly as comparing manufacturing to the 19th century blacksmith. Any similarity is superficial at best, and it will only serve to confuse you as to the real nature of each.

      2) The successful software developer is a broadly competent artisan. The major difference from history's artisans is that he's not just limited to the tools he builds; he can also draw on the best of all the tools ever made. Actually, I think you got this point pretty clearly so I won't belabor it. Just don't call it a factory. The process has little if anything in common with a factory.

      --
      Moderating "-1, Disagree" is simple censorship. Have the guts to post your opinion.
    4. Re:Manufacturing model dead wrong by Sjobeck · · Score: 0

      Exception: buffer overflows. We all have known hwo to prevent them for quite some time but studies show that software conintues to be created every day with this same problem. We all suspect that the simple buffer overflow vulnerability that gets so much press lately will continue to for years to come. Something needs to be done where code is run through a mill after the art of writing it has been done.

    5. Re:Manufacturing model dead wrong by JackGr · · Score: 1
      Sorry, but I have to disagree on the first point. New things almost always draw from things that went before. This is true even for paradigm shifts, as noted by Cox and Kuhn. The reason is that people need to relate new things to things they already know.

      When we chose to use a factory as the basis for analogy, we didn't think about the turn of the last century sweatshop. Instead, we thought about modern factories, which are populated primarily by robots. In fact, my primary mental model was the factory that we had at NeXT, since I was a programmer there for many years, and greatly admired the level of automation that was attained.

      In such a factory, tools developed by engineers do the work.

      That may be beside the point, however. I agree with you that any analogy is superficial at best. That is why it is usually a good idea to read an article in its entirety before commenting on it. Then, the commentary can be based on what was actually said, not merely on a presumption of what was said inferred from a subjective interpretation of a single word in the title.

      We had to pick some words to name the ideas. There are only so many to choose from in the English language, and most have already been overloaded multiple times. We like the factory metaphor when the engineer is the factory designer. It has been quite a surprise to see how quickly respondents have jumped to the conclusion that we're trying to turn engineers into mindless drones. Many have assumed that article claims that software can be mass produced, when in fact the article says just the opposite. Clearly, they didn't read very far. We assumed that people would read at least a little bit of the material before posting public commentary.

      I think we're very much on the same page on your second point.

    6. Re:Manufacturing model dead wrong by Anonymous Coward · · Score: 0

      I see your point, but it is worth noting that as people move away from C/C++ to languages like Java, these problems will go away. Before I get flamed, I'm not saying that C/C++ are going away by any means, but as a percentage of work done, it is safe to say that C/C++ is less prevalent then it was 10 years ago, all security updates from Microsoft aside.

    7. Re:Manufacturing model dead wrong by Spazmania · · Score: 1

      I can't speak for anyone else, but I read the article. I simply disagreed with the factory metaphor. I disagreed precisely because it carries the mindless-drone stigma. Remember, a factory is about setting up a process which then outputs exact copies of a particular product. Copying is inherent to computing. The factory process has no meaning or utility there.

      You seem to be leaning more towards a Centers of Excellence model with a strong emphasis on component reusability. That's a fine idea and the industry has been evolving that direction for at least a decade now. But its nothing like a factory; you'll find better metaphors with the renaissance artisans.

      --
      Moderating "-1, Disagree" is simple censorship. Have the guts to post your opinion.
    8. Re:Manufacturing model dead wrong by JackGr · · Score: 1
      I guess my idea of a factory comes from more recent times. Modern factories are designed to support mass customization, where a diverse set of products can be rapidly assembled from common components by robots to meet specific requirements. When you buy a Mercedes, for example, you place an order that defines the configuration of your car out of approximately 20,000 possible configurations. The factory is programmed just in time to build the configuration you requested. Times have changed. Perhaps the connotations of the word factory haven't yet caught up.

      Thanks for the pointer to the Centers of Excellence model. Any suggestions for good places to look for more information?

  70. Speaking From Experience by wackysootroom · · Score: 1

    I decided to go back to college to get away from the ass embly line. It's a dismal life, becuase I really don't like someone telling me what to do, then watching my every bathroom break.

    If software engineering goes this route, I'll just find something t o do which gives me the freedom that I value and enjoy.

  71. Welcome to the game business, bitch. by Anonymous Coward · · Score: 0

    Assembly line? Wow! That sounds familiar.

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

    1. Re:You just aren't buying the right computers by bit01 · · Score: 1

      Quality costs money, always has, always will.

      I agree with you in general but this isn't true for software. Unlike quality hardware, quality software can be copied many times at close to zero cost, ammortising the initially high cost over potentially millions of consumers. In mass market software it is possible to have quality and cheapness.

      In the broken "free" software market we have the per-copy licensing model IP businesses are so fond of usually maximises profit for the producer and directly minimises the net benefit to the consumer but it's still possible to have reasonable quality and cheapness, as software like Linux and OpenOffice shows.

      ---

      It's wrong that an intellectual property creator should not be rewarded for their work.
      It's equally wrong that an IP creator should be rewarded too many times for the one piece of work, for exactly the same reasons.
      Reform IP law and stop the M$/RIAA abuse.

  73. Good analogy by xenocide2 · · Score: 1

    The big problem of course, is that the "industrialization" has already happened, and software in america looks disturbingly like steel factories of the previous generation: losing to overseas competition.

    In part, it's due to protective moves of foreign companies trying to establish their own software industry. But American software rarely enjoys the opportunity to compete with other American software companies. I was dissapointed with the Department of Justice's missing teeth once a conviction was upheld against MS. It might seem that punishing MS might be a harsh detriment to the American economy, but this monopolization reduces incentive to compete, not just overseas, but in America too. No incentive to compete translates into a direct lack of tech jobs, especially in costlier places like the United States of America. By most every account Microsoft's behavior has not changed.

    The fact of the matter is that Microsoft has only learned that violating the law is a winning investment. By most estimates, MS brings in upwards of a billion a month. If a string of decisions violates the law but keeps this earnings pace up, then the risk of a hundred million dollar fine every few years is likely worth the earnings it maintains. It reminds me a bit of football. Its not something publicly acknowledged, but most college programs try and coach players to selectively follow rules. It might be worth a 15 yard penaly from the spot of the fowl to stop Darren Sproles from making a touchdown return. Who this really hurts is the players, when they violate the "halo" that prevents a player from instantly getting creamed upon reciving the kick. In the same way, cutting your adversaries off early is typically dangerous to your advarsaries, but can bring in profit. While you might be okay with playing football against Microsoft's team, nobody wants to pay for your salary and insurance.

    --
    I Browse at +4 Flamebait

    Open Source Sysadmin

  74. 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]

  75. With the economy the way it is... by atr0p1s · · Score: 1

    as a recent Comp-Sci grad I'd be more than happy to work in a factory, heck it would get me off unemployment.

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

    1. Re:Software development has gotten harder by sql*kitten · · Score: 1

      In the old days of machines of 8KB of memory and sub-Mips processors, programming was easier.

      Oh PLEASE. Put any of today's PHP-kiddies in front of one of those and watch them crap their pants. Programming is EASY and it's going to get easier. Programming is data entry. The skill is in SOLVING PROBLEMS. Programming is just writing your solution down in a structured way, that's all. And really, it's no more difficult than typing. But some typists are just typists (like today's PHP/My First SQL kids), and some are best-selling authors who just happened to have typing as one of their skills.

    2. Re:Software development has gotten harder by trenobus · · Score: 1

      I agree with you that the skill that used to be required more is "SOLVING PROBLEMS". That's what I meant when I said it was like solving a puzzle.

      These days a lot more knowledge is required. For the problem space you suggested, you would have to be familiar with PHP, HTML, SQL, an operating system, a database, a web server, and maybe even HTTP, CGI, and non-standard behaviors of various browsers. You probably wouldn't need to be expert at any of these, but even a "PHP-kiddie" would need some knowledge of each.

      Today it's all about how much knowledge of various components you have. Just look at the typical job posting. Unlike problem solving skills, such knowledge has a tendency to become obsolete rather quickly, as versions or fashions change. (Trying to keep current with all the different components was what brought me to Slashdot.)

      Today's programmers also need more social skills to deal with clueless managers, and to advocate effectively for using their favorite language, operating system, etc, etc. In the old days, it was easier to be a (successful) lone wolf. And also in the old days, there were no software patents to worry about.

    3. Re:Software development has gotten harder by Anonymous Coward · · Score: 0

      Well yes, but your vision of a skilled programmer is still hovering around the level of the garage mechanic who knows about various transmissions, suspension system, engine management systems and so on (nothing wrong with that of course, but garage mechanics don't get the treatment programmers think they deserve).

      I'm a bit bored with this automatic "clueless manager" argument. Not all managers are by definition clueless. To boot, I've met some pretty clueless programmers who wouldn't know how to meet a deadline if it kicked them up the arse. The typical syndrome is the belief that programming is an art and other people "wouldn't understand". OSS political advocacy just digs a deeper ditch frankly. Programmers must deliver. Thats the bottom line. But as the article shows, only 16% of them know how to do this.

    4. Re:Software development has gotten harder by trenobus · · Score: 1

      but garage mechanics don't get the treatment programmers think they deserve

      You can see in a lot of the comments on Slashdot that many programmers are adjusting their expectations as a result of the bubble bursting, regardless of what they may think they deserve.

      I've met some pretty clueless programmers who wouldn't know how to meet a deadline if it kicked them up the arse.

      Man oh man, so have I! And who hired them? Some manager with a hiring schedule he felt he had to meet, even it meant just taking the next available body. Or some manager who just wanted enough direct reports to justify having managers reporting to her. That's clueless in my book.

      The typical syndrome is the belief that programming is an art and other people "wouldn't understand".

      Whether programming is an art is debatable, and depends a lot on what kind of programming we're talking about. But that "other people" don't understand is fairly well supported by empirical evidence.

      OSS political advocacy just digs a deeper ditch frankly.

      Not sure I know what you mean there. But my reference to advocacy was intended to more general than that. Specifically I was imagining the situation where you find yourself on a team at the beginning of a project. Because your manager is clueless, s/he has turned over decisions about what language and tools to use to the team as a whole, rather than making an intelligent choice or delegating the choice to a senior developer. So the members of the team need to have the social skills to advocate for the tools they feel are best suited for the project, be they OSS or not. In my mind, this accounts for why so much code is written in Perl these days. :-)

      But as the article shows, only 16% of them know how to do this.
      If 16% of garage mechanics really knew what they were doing, I would have found one who could fix my car by now. For the proportion of doctors who can do something more than prescribe what the drug companies tell them to, 16% sounds about right. And similarly for most other professions.
  77. Re:More evidence of MS trying to take credit for.. by perkr · · Score: 1

    Dude, the software factory concept is way older than 1996. I don't think MS give a shit about whatever crap you dreamed up.

  78. Straight from the horses mouth by tsm_sf · · Score: 1

    Software development, as currently practiced, is slow, expensive and error prone, often yielding products with large numbers of defects, causing serious problems of usability, reliability, performance, security and other qualities of service.

    I couldn't have said it better myself, Microsoft!

    --
    Literalism isn't a form of humor, it's you being irritating.
  79. 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.

  80. Knowledge, Experience & Communication is the k by Anonymous Coward · · Score: 1, Insightful

    ...and they don't come in the form of cheap code monkeys. I've often found that most of the problems associated with software development come down to these three issues:

    Knowledge: you need programmers who KNOW what they're doing. They MUST be well versed in not only the particular language(s) that a system is coded in, but also in general software design concepts (e.g. Design Patterns). Without this fundamental knowledge, even the most well meaning code monkeys can turn even your best & most efficient libraries into a slow, bloated, buggy pieces-O-crap in no time.

    Experience: not to be confused with knowledge, experience refers a programmer's grasp of the scope of your software. This includes the particular purpose (consumers, market, industry) that the software is designed for as well as actual experience coding inside the existing software. After all, in this high turnover world, where contractors are becoming the norm at many companies, it is very common for transient code monkeys to be totally unaware of an existing library, and/or not make connections with existing code and/or consolidate functions into common libraries in the first place. The results == redundant lines of code == bloated, buggy piece-O-crap.

    Communication: This is the most important part of any workgroup. The "architect" needs to know about the existence of commonly used libraries and needs to relate this information to the programmers. In turn, the programmers need to recognize and inform the architects of the need to refactor/reengineer portions of the software. Communication must go both ways! Communication also tends to reveal who the code monkeys are and keep them from doing serious damage to the software.

    Of course - a healthy compliment of unit testing, source control, debugging skills & documentation are also important, but you'll only find Knowledge, Experience & Communication associated with quality programmers - and quality programmers don't come cheap. Otherwise, you'll find that code monkeys will happily mass-produce lines of code (crap) that you're organization will have to pay loads of $$$ for over time to maintain.

  81. Probability of failure is multiplicative by chiph · · Score: 1

    Say that I specialize in middle-tier code. But if I'm working against a poorly designed database, my chances of delivering a successful product go down. If the front-end coder doesn't know what they're doing, again, my chances of delivering a successful product go down. The same with the documentation writers, the installer writer, the support staff, etc.

    The probability of failure in software is multiplicative, meaning that if any one person in the chain is a "zero" at their job, the result is a zero.

    What this proposal (software as a mass-produced item) does is put the burden of responsibilty of delivering a timely & quality product on the heads of technical management (where it ought to be). They have to select people with the right skills and skill level to form a team that is able to deliver the product on-time and on-budget.

    However, my personal experiences to date are that technical managers got there via the Peter Principle and the chance of this idea actually working is about nil.

    Chip H.

    1. Re:Probability of failure is multiplicative by JackGr · · Score: 1

      The article contrasts mass production with development and points out that Software Factories are about development, *not* about mass production. It also suggests using supply chains, not specializing individuals by tier.

  82. Re:More evidence of MS trying to take credit for.. by 3seas · · Score: 1

    " Dude, the software factory concept is way older than 1996. I don't think MS give a shit about whatever crap you dreamed up."

    Ok then I'm sure you are willing and able to show the evidence of your claim, so how about it?

    But you won't because you can't.

    Perhaps you should better follow the links and read what all I have pointed to, then you will know the falacy of the software factory and why FOSS will always be able to beat out MS, though this should be a good hint as to what MS is up to in their patent grab.

    FreeSoftware will only become genuinely free when it is easy enough to create that anyone, regardless of their resource limitations (knowledge, time, etc.) can create it, from simple automations to improve their personal productivity level to full application programming. This is based upon the primary concept and purpose of programming:

    Programming is the act of automating complexity in order to make the use and reuse of the complexity easy for the user of the complexity. Programming is a recursive act, as shown by any code/programming being done above machine language. And it follows that it is of such recursion that Software will become genuinely free, or otherwise contridict its own primary concept and purpose.

    Or in other words, we don't need no stinking sweat shop software factories, we only need a general population understanding of the physics and nature of software development or general automation, and the non-patentable tools that allow us all to cause a generation of code based upon our design.

  83. Nobody has mentioned India? by JeffHunt · · Score: 1

    We're basically turning India into a large software factory. I'm surprised that nobody has made this point yet.

    --

    "It was hell!" recalls former child.

  84. Re:It Won't Work Because Of Programmer's Personali by FinalCut · · Score: 1

    or maybe you just haven't worked at the right place. some companies actually do care about their employees, their way of life, and their standard of living, and will go to great lengths to secure all of the above for their workers. the company I work at is one such place. im sorry you have had such bad experiences.

  85. Programming is architecture by argent · · Score: 1

    Any part of a programming project that can be turned out by rote is a red flag: if it can be done repetitively, it should be done in software. Unlike a car, where the necessary robotics is still at the research level, it's easy to write a program to do the equivalent of replacing the spark plugs.

    This isn't to say that there aren't situations where people are repeating the same code over and over again, it's just that anyone who's doing that doesn't need to worry about being replaced by a software factory... they need to worry about being replaced by software.

    1. Re:Programming is architecture by sgt_doom · · Score: 0

      I hate to get too "technical" here - but there have been many posts here which refute the repetitive nature of GOOD programming - and I believe most repetition is taken care of by properly programmed code libraries and is also the fundamental reason for object-oriented programming......

  86. Re:It Won't Work Because Of Programmer's Personali by Veridium · · Score: 1

    Only because I recognize that some people are better suited to a union, and some people are better suited to working for themselves. I don't see the concepts diametrically opposed in the big picture of things. I think those who can take the entrepenurial route, should. I highly recommend it, it's been rewarding. Those who can't, should take the union route. Doing nothing is letting others dictate to you how things should be. Either way I suggested, is you telling others how you think things should be. Just how I see it.

    --
    Think for yourself, destroy your television.
  87. But, Doctor Evil, that already happened! by argent · · Score: 1

    We've been building specialised application development environments for particular kinds of software for decades now. The problem is that we've been doing it so long we've forgotten the kinds of things that used to require dedicated programmers. For example, we've forgotten that generating charts and diagrams and doing calculations on tables used to require programmers... back in the days before VisiCalc.

  88. Re:It Won't Work Because Of Programmer's Personali by themusicgod1 · · Score: 1

    As I have pointed out before- there is one resource just waiting to be tapped; the infinite supply of unemployed CS/EE/IT/programmer/software engineer/etc's out there. Sure, some of them are lame...but if you have an infinite supply of IT professionals, sooner or later some of them are going to crank out a POSIX compliant real-time operating system or something. Anything that you as a soverign being can do that can make use of an infinite supply of energy from an infinite supply of unemployed CS people, is obviously well worth taking, from a purely economic standpoint; and factory lines form some of the best outcomes from that point of view.

    --
    GENERATION 26: The first time you see this, copy it into your sig on any forum and add 1 to the generation.
  89. Re:It Won't Work Because Of Programmer's Personali by Veridium · · Score: 1

    Free agency has a lot going for it. It's an excellent choice for people who can (and want to) handle it. Not everyone has the drive and creativity it requires to succeed in that environment, but it's always an option worth considering.

    I think those that don't have the drive or the confidence to try, ought to work towards unionization. Maybe they can avoid the mistakes of past unions? IMO, if IT workers don't have some solidarity at some point, whether it be refusing to work for corporations as regular employees, or be through a union, the industry is going to continue the steady march towards paying us as little as possible, and putting us in as piss poor working environments as possible.

    I'm not going to play corporate games anymore. A corporation wants to hire me? Agree to my terms, show me the money, or don't bother calling. They sure as hell are not going to put me into a factory assemblyline environment.

    --
    Think for yourself, destroy your television.
  90. Re:It Won't Work Because Of Programmer's Personali by Veridium · · Score: 1

    I'm glad you're in a comfortable environment. I actually did have the extreme pleasure of working for a software company that gave a damn. Where are they now? They got bought about a larger software company and that was the end of that.

    I've never found another company like that since then. Enjoy it while you have it. Suck the marrow out of it. You just never know when it's going to end. Don't lose contact with your friends and management that you are enjoying now, they will be more valuable than gold if anything should happen to your company down the line.

    --
    Think for yourself, destroy your television.
  91. Shows what you know about auto repair, dickweed... by Mnemennth · · Score: 1

    Geeez... wonder when was the last time you actually fixed something on a car? Was it a burned out bulb in the dash?

    Lessee... this Pontiac shows it's running lean on bank 2, the downstream HO2 sensor is lazy changing state... Is it the O2 sensor itself? Or is it maybe the upstream O2 sensor operating below threshold and causing the lean condition? Or is it really the catalytic converter coking up and causing the erroneous reading? Oh wait - maybe it's one of those vehicles covered under a TSB about corrupted EEPROM files... Or maybe the left head temperature sensor has shifted range, making the computer think it's running colder than it is...

    Knowing which one of these possibilities to chase first involves a lot of intelligence, experience, and in many cases, intuitive understanding that is more art than science.

    Okay - this is a lot of automotive techspeak - just as you guys talk geekspeek about everything under the sun. My point here is simple - there are many levels of expertise in any field, and the higher levels of expertise will always border on artistry. (Or at least those involved will say so...) I realize that noone here will believe that say, a dozen script-kiddies crashing the SciFi.com IRC server amounts to anything but public masturbation, but on the other hand, I've seen some truly innovative code come out of the quieter corners of one of the IT departments (read insurance industry codemills) I used to schlepp cubicles and terminals in. And just as almost any idiot can hang an exhaust on a Mustang, it takes some artistry to bend the pipe on the fly and give the customer the "tucked-under" look he's asking for.

    So... just give the monkeys a break.

    As a wrench monkey with over 20 years experience I can tell you - there is artistry everywhere, even in the mundane task of hanging a pair of Flowmasters.

  92. Every effort at this has failed by iendedi · · Score: 1
    Every effort I have ever seen at this fails. The reasons are simple:

    Software is highly custom to it's creator - there is a high barrier to entry for new creators to absorb the model created by the previous creator.

    The only reasonable membrane between developers because of this is the API. However, it is unreasonable to have APIs that don't make sense or too many APIs that present similar or same (overlapping and confusing) services.

    Instrumentation for software testing, internationalization and other purposes must be done throughout the development process or the costs multiply non-linearly.

    This list can go on and on and on... but instead

    The most succesfull software development technique is to break a project into teams that can co-develop in a sane way. Each team develops their "product" indepentantly, where every member of the team can be a subject matter expert on the "model" of the software being developed. Some specialization within the team is expected (e.g. this guy is instrumenting for testing, that guy is architecting new features, these three guys are wipping those features out and that guy is doing bug testing)... Keep the team under 10 people...

    --

    It is your personal duty to fight for what is right on a daily basis. Ignoring injustice is identical to approving
  93. 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.
  94. Programming as a prduction line ...not by SimonInOz · · Score: 1

    For years, people have tried to make programming into a production line process.
    Well - it is and it isn't! Mostly it isn't.

    In a "real" production line there are the lines of people - and robots - bashing out the cars or whatever. They don't look like programmers to me.

    But hidden away, in a back room somewhere, there's a guy who thinks about the new production line. Or improvements to the production line. THAT's the programmer equivalent.

    (You can look up The Programmers Stone if you like. Read and enjoy)

    --
    "Cats like plain crisps"
    1. Re:Programming as a prduction line ...not by JackGr · · Score: 1

      Well said. Software Factories are not about programmers in production lines bashing out software. They're about programmers in the back room creating production lines. Instead of people and robots, think tools, like compilers. I like it when the tools I design bash out the things I want.

  95. Re:Yeah, right. Adapt or DIE by Melantha_Bacchae · · Score: 1

    Good "business" consists of things like "the customer is always right", "it is less expensive to keep a customer than it is to get a new one", and "a business' most valuable resource is its employees". Obviously the "business" you are shouting about ignores this time-tested wisdom.

    If programming is such a devalued resource that programmers should be paid little and treated like dirt, then why are salaries going up in India, making them a nice balloon economy? Salaries going up in India indicate that programmers are indeed a valuable resource, and that they probably deserved the wages they got in the USA. (As a little reality check, not all of us made $80K+ salaries - my all time high in the Midwest was $40K.)

    The word "business" does not give anyone the right to act unethically or illegally. Business is not above the law, and it is certainly not above justice. The robber barons of old got smacked down, the trusts got busted, the Nazis and their offerings of concentration camp slave labor to companies like IBM ended on VE day. The day of the greedy shark mega-corps will come to an end too. Their business, and their evil, is not sustainable.

    Seeing that such evil is an aberration rather than the way of things, I suggest that you might want to adapt. As a start, I would recommend growing a heart.

    "The path of peace is yours to discover for eternity."
    Japanese version of "Mothra" (1961)

  96. The individual does, the world does not by DescData · · Score: 1

    Individuals do reuse solutions, but for the most part, the world of software developers does not. Personally, I think we have enough tools and languages that could take the repetition out of writing software.

    The problem is not the tools, but the smell factor. Your house, your car, your code takes on a nice familiar smell after you've lived in/driven/massaged it for a while. Someone else's code just isn't the same. Number one reason for our failure to reuse code (IMHO).

    Ok, maybe we could gain some efficiencies of scope, to use the author's term. How about this? We pick one university in each state to hold the software awards for their area. Let the U decides which categories will be judged each year. Anyone can play. The winner doesn't get any money, but the next best thing, recognition and we hope they get contracts for the same type of work from all over. Sounds like a plan?

    ps
    Don't you maintain some skepticism when a paper is based on one source of information? Is software still being written the same as ten years ago? Is hand crafting the rule with only a few exceptions? It seems likely that delving into what the rats are doing in the privacy of their cubicles is not so easily done.

  97. Worth a try? by jm91509 · · Score: 1

    Ive read lots of posts say its been talked about for years but its a waste of time.

    Projects are too individual and unique to hand off to a production line.

    I agree.

    However design and coding are only one aspect of a project. What about testing? Sustaining? Release engineering? All these areas are equally valid to the long term survival of your product.

    Once you have the testing infrastrucure in place, if its correctly built, then getting new products into be tested is relatively easy (compared to starting a new test team for each new product).

    So by all means have lots of teams making products, but how about a central test and release factory? If all your products go out the same way (RPM, tar balls whatever) then why not centralise it all?

    The developers work away and produce a tar ball of source code which they give to the factory. The factory then compiles it and tests it and if its good enough, release it. Then as bugs are found, they are fixed by sustaining engineers in the factory and their code fix goes through the same process of test and release.

    Most posts seem to focus on just the design and coding phases of software when there is much more to it when dealing with large scale real-world projects.

    PS. The company I work for uses a similar software factory and I work in it.

  98. anyone else noticed by timmarhy · · Score: 1

    that this manucatured code that comes out of india and russia is complete shit. this is fine by me, fire away move your development to india, get an application which bearly compiles and give untold told trouble. it just allows me to change more for my services when it fails.

    --
    If you mod me down, I will become more powerful than you can imagine....
  99. India? by Anonymous Coward · · Score: 0

    India's software houses are nothing but assembly lines. What's so new about this story?

  100. Re:Around it comes again:We are better by sien · · Score: 1

    I used to work with a guy with about 15 years of experience in the games industry.

    He was a very, very wise programmer. We got into this kind of discussion and he pointed out that some things have gotten better. He said that for a typical game around 1990 it would take 4-5 programmers 1 year to write say, 10 000 lines of C and you'd get whatever.

    These days, the same number of coders would produce 100 000 lines of CPP, there would also be more people involved and the product would have a much larger scope and capabalities, and when done well, even quality.

    Good coding tools (these guys talked about how version control only came in in the 90s!), faster machines and people understanding the coding process have improved our ability to write software.

    The problem is, the specs have changed. People don't want what was state of the art in 1990. They want a GUI, help files and some visual stuff on almost every tool, a better backend and whatnot. And in 1990 people didn't want Visicalc either, they wanted stuff that could be used under Windows 3.1 So, nom ce change, plus ce change.

    The software factory thing goes back to the debate about whether coding is like engineering and design or merely cranking the handle.

    Management also has a tendency to want to eliminate engineers. In some industries you can see what has happened. In the US car industry engineering has become second to marketing. And the innovations of the US car industry have been cupholders and SUVs. In Germany, you don't get anywhere unless car engineers have far more input. You then get ABS brakes, fuel injection, Porsches, BMWs and Audis.

    Take your pick.

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

  102. I'm willing to bet ... by ReidMaynard · · Score: 1
    United States spend around $250 billion on software development ... Only 16 percent of these projects finish on schedule and within budget. Another 31 percent are cancelled, mainly due to quality problems, for losses of about $81 billion. Another 53 percent exceed their budgets by an average of 189 percent, for losses of about $59 billion.

    I bet if you

    1.change billion to million

    2.change "software development" to "industry"

    3.roll back the calender about 100 years

    Wow, that PROVES HIS POINT

    except, we aren't trying to make 1,000,000 boot hooks a year, as cheaply as possible. It's more like building a bridge. Can't build a bridge in a factory.

    --
    -- www.globaltics.net

    Political discussion for a new world

    1. Re:I'm willing to bet ... by JackGr · · Score: 1

      Read the whole article. As it points out, you can automate bridge building, not by turning out the same thing over and over again, but by combining design fragments and in some cases reusable parts based on those fragements in different ways.

  103. Re:Around it comes again:We are better by crmartin · · Score: 1
    Good coding tools (these guys talked about how version control only came in in the 90s!), faster machines and people understanding the coding process have improved our ability to write software.
    The distressing part about it for us old guys is the number of people in the 90's who thought configuration management only came in in the 90's. Which wouldn't be nearly as depressing if it weren't for the number of clients I've seen in the last four years who said "configuration management? Why do we need that?"
  104. stepping BACK to the assembly line.... by riprjak · · Score: 1

    ...may not be the Answer.

    In manufacturing the Assembly line is only ideal when you are building EXACTLY the same thing over and over again.

    There are other factory layouts with far more synergy with software development.

    Let us consider the functional layout; where you have a layout of work cells with specific functions, but no need to mindlessly trudge through in a specific order. Essentially for modular products (such as machinery and tooling, most commonly) this is ideal. This is alot like software; GOOD software design AFAIK is modular, with separate functions in separate libraries. So you have teams whose job it is to make libraries which are optimised and bug free, in isolation, and then integration teams who link these libraries into apps and feedback bugs, as if they were simply assembly or design problems to those specific teams.

    Such an approach would require project managers with far more rigorous training than I (a mechanical engineer) have encountered from software companies in the past; as you need to be able to compartmentalise the components and objectively assess the whole to determine the most efficient breakdown and, more critically, the root cause of problems and plan effective resolution.

    However, I see it as inevetable; Software development is more like manufacturing trades IMHO, toolmaking, boilermaking etc... than it is like consumer product manufacture, building cars or kettles etc... The layout I have described allows people to focus in their core skills without being forced into working like automatons; and the more skilled developers move higher up the product tree into integration groups.

    Project managers could be anyone competent enough to schedule and manage the complex "assembly" whilst having sufficient skill to conduct root cause analysis on problems and assign solutions to appropriate groups and also be able to filter bitching and bullshit from facts when dealing with the team leaders.

    Of course, I understand this is how many development companies already work to a certain extent.

    Modularising like this would also make offshoring etc. less painful; as you keep the high value add work locally and ship out the low value add stuff to minimise risk and maximise return to shareholders (this is how Manufacturing is tending to go).

    Course, Im far from an expert, just my $0.02.
    err!
    jak

    1. Re:stepping BACK to the assembly line.... by JackGr · · Score: 1

      The article never suggests an assembly line. It does point out, however, that there are two ways to automate. One is to build EXACTLY the same thing over and over. That's not what Software Factories are about. The other is to build many similar but different things from the same piece parts. That *is* what Software Factories are about. It's also what a compiler does. It builds many similar but different programs from the same machine instructions. It's also what you do when you write software. You build many similar but different programs from a fixed set of language primitives and other piece parts. Another word for this act is configuration. A compiler does fully automatic configuration. A Software Factory does some fully automatic configuration when it generates one file from another, but it also provides scaffolding to support manual and partially automatic configuration.

  105. Still stuck in the industrial revolution by argoff · · Score: 1

    Well, I was reading along, and a single paragraph pretty much summed up why this is crap....

    In order to provide return on investment, reusable components must be reused enough to more than recover the cost of their development, either directly through cost reductions, or indirectly, through risk reductions, time-to-market reductions, or quality improvements. Reusable components are financial assets from an investment perspective. Since the cost of making a component reusable is generally quite high, profitable levels of reuse are unlikely to be reached by chance. A systematic approach to reuse is therefore required. This generally involves identifying a domain in which multiple systems will be developed, identifying recurring problems in that domain, developing sets of integrated production assets that solve those problems, and then applying them as systems are developed in that domain.

    Just as many in the inustrial revolution believed that it's entire purpose was to leverage inventions like the cotton gin to expand their plantations for unlimited growth and profit, there are many people in the information age that believe that it's entire purpose is leverage their copyright holdings for unlimited groth and profit.

    They are both wrong, the information age demands the unrestricted flow of information and the fall of copyrights just like the industrial revolution demanded the unrestricted flow of labor and the death of the slavery system.

    When you hear phrases like "Reusable components are financial assets from an investment perspective" - Then it almost guarantees that they are trying to treat the uncontrolled flow of information more like a threat then an advantage, and they intend to treat each part like components that you need to pay for to use.

    It is crap, they just won't get it.

  106. Not art by Anonymous Coward · · Score: 0


    Until the majority of my fellow programmers realize that making some new button, or a "slightly" different kind of menu, or defining functions a different way just to be fun, is NOT, NOT, NOT art, and that at work we should strive for boring things like code readability, standardized, logical interfaces, reusability, reliablity, and all that other "work" stuff, then code will suck and programming will still be a needlessly stressful job. Leave your bullcrap-wannabe-pretending-you're-fucking-creativ e shit for whatever bullcrap shareware you write by yourself in your free time, and let's be done with the late-night fuck-is-this-gonna-work-by-the-deadline on my fucking 12th mountain dew gotta remember to take my fucking ulcer medicine bullshit. M'kay?

  107. Games. by CoolGuySteve · · Score: 1

    A lot of games, especially ones that are just updates to older engines, are great examples of the good option. The annual sports games from EA have mostly been perfected and are done quick. Most importantly, people buy them.

    Some of the most technically brilliant games out there are made at a pretty rapid pace because of the Unreal and Quake engines. All it costs is a million or two for the license and code, so there's good and fast. The engines themselves are evolutions and reimplementations of a slow moving design, so there's good and cheap.

    Really, I think the abstraction and scale aspects that the writer is talking about have been perfected in games, they use a lot of abstract tools and scripting for level design and modelling. UnrealEd in particular seems like exactly what he's talking about when he mentions ASIC design.

    Game developers even work industrialized 19th century hours. Maybe this guy's on to something after all!

    But really, the thing with games is that a lot of the best ones have no release date, even if they're completed in less than a year. The worst ones are usually that way because the publisher forced them out half done, making them unplayable. I think the problem with trying to write something well and quickly comes from the way it's done, project managers only treat the symptoms by setting dates in stone.

  108. ASICs - a dying production process by loophard · · Score: 1

    The author holds up ASICs as an example of an automated production process that could be used in software. The analogy may be somewhat unfortunate, as ASICs are rapidly being replaced by FPGAs (Field Programmable Gate Arrays). FPGAs are generic silicon devices that are given functionality by loading a binary image on device startup. This binary image is designed using a high-level language called VHDL, that is, hmmm... much like writing software. Why are FPGAs winning over ASICs? FPGAs are much more flexible and are not tied to a rigid object definition as ASICs are. The functionality can be fixed in the field, whereas an ASIC is fixed in functionality.

    1. Re:ASICs - a dying production process by JackGr · · Score: 1

      Good insights. One of the issues we address in the second article is the rigidity of components as we know them today. Would appreciate hearing your thoughts on the piece about development by assembly.

  109. Work On Software Factories Not In Them by JackGr · · Score: 1

    Interesting posts. But, where did anyone read that Software Factories are about making developers into drones or monkeys? Not in the article, I'm sure, because that's not what it's about. Quite the opposite, in fact. Software Factories are about building tools to make life easier by taking care of housekeeping. Why spend time on rote tasks, like copying and pasting things from one file into another, when tools can do that? Why write a web app in assembly language, when you can use C# or Java? I wrote a lot of assembly code in years past. It's fine for device drivers, but I don't need to scoreboard registers by hand to build a web app. I would rather use tools to do tedious things that don't involve much thinking, like copying and pasting files, or things that aren't the best use of a human brain, like register scoreboarding, which my compiler does well enough for most applications. That way, I can buy time for more interesting things. Software Factories just take that idea to the next level. Instead of just using existing tools, however, you build them, and then use them. It's like emacs in the large. Jack Greenfield

  110. Snow Crash by count_zero011 · · Score: 1

    Reminds me of the book Snow Crash. In the story, the only software production was done in factories, with each person working on only a little chunk of code.

    1. Re:Snow Crash by JackGr · · Score: 1

      That's not what the article suggests. It does talk about breaking up large projects across many suppliers, but that doesn't mean that each piece is built by a person who works on only a small chunk of code. Look at how supply chains work at Daimler Chrysler. Daimler assembles the system that runs the car, but many subsystems from other suppliers, like Bosch and Siemens. As software gets more complex, it's only natural to expect people to specialize in different areas. You may write everything you deliver from soup to nuts, but on many teams, there are some folks who work mainly on UI, and others who work mainly on the persistence end of things. Ramp up the complexity and you'll reach a point where it's just not cost effective to have everyone know everything. Does that reduce the participants to drones working on only little things, as in Snow Crash? Far from it. It merely means that we scale up the way other industries do.

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

  111. Re:Shows what you know about auto repair, dickweed by EnderWiggnz · · Score: 1

    let me take a crack at this...Lessee... this Pontiac shows it's running lean on bank 2, the downstream HO2 sensor is lazy changing state... Is it the O2 sensor itself?

    >well... bad O2 sensors have a way of glowing bright red when they fail.

    Or is it maybe the upstream O2 sensor operating below threshold and causing the lean condition?

    >well... what other symptoms does the car have? has the gas mileage changed drastically? how old is it? whats its repair history?

    Or is it really the catalytic converter coking up and causing the erroneous reading?

    >meh... i cant remember the last time i've had a gm have a problem with the cat coverter at all... and i'm on my second grandam, the first ran until 192k, this one is on 115k, and my buick century is at 185k... and never a cat conv problem.... .... gm alternators on the other hand, i can change in my sleep.....

    Oh wait - maybe it's one of those vehicles covered under a TSB about corrupted EEPROM files... Or maybe the left head temperature sensor has shifted range, making the computer think it's running colder than it is...

    > and this is why i absolutely hate having so many damn computers in a car these days... yeh yeh, more accurate, more efficient, and also an expensive pain in the ass when the go schizy... i had to replace an effing wheel bearing in my grand am, and the part was 220 because of the sensor... grumble.

    --
    ... hi bingo ...
  112. Re:Shows what you know about auto repair, dickweed by Mnemennth · · Score: 1

    None of the things you've said negate my point... that repairing an automobile is a lot more complex than mere grunt work; as much an art as any science.

    I'll have to disagree with you on the bit about O2 sensors glowing red when they fail however - the only time I've ever seen one do that is when the cat in front of it was burning lean due to a leak drawing in air, and then the cat was glowing cherry red too...

    In case you're wondering, this particular vehicle was suffering from a partially clogged injector - poor atomization allowed unburned fuel to escape with the exhaust and burn before the cat, making the upstream O2 sensor read rich and causing the computer to constantly lean out the bank.

    Mnem
    "The grass is always greener over the grave of a defeated foe."

  113. I disagree by bladesjester · · Score: 1

    While some things about programming are scientific such as the math behind the code, innovation is very much a form of art. Doing the same old thing over and over doesn't require much creativity, but comming up with a new project and finishing it takes a decent amount of art and intuition. New problems are just that - new, and new problems require at least some form of innovation.

    --
    Everything I need to know I learned by killing smart people and eating their brains.
  114. Appreciate programming! by guitaristx · · Score: 1
    Right now, it takes either a certification or a degree to be considered skilled enough to program professionally, in most cases. It really pisses me off that my profession can be equated to an unskilled, uneducated factory worker. I gotta agree with the Nissan Maxima analogy above.

    At any rate, there is a lot of crappy software out there. Just like there are a lot of crappy car manufacturers. There are a lot of crappy products, and they are the products that don't last. The products that do last are the ones that are engineered properly. Software is no exception. And having been in the software industry more than two days shows me that there are a lot of software engineers that make some pretty poorly engineered code.

    Really, the writing of software comes in three flavors, and none of them lend themselves to assembly-line production. These are:
    • Build this new thing
    • Change this thing (faster, prettier, or more functionality - usually)
    • Fix this bug
    Equate that with assembly-line car manufacturing. It just doesn't fit (you insensitive clod!).
    --
    I pity the foo that isn't metasyntactic
    1. Re:Appreciate programming! by JackGr · · Score: 1
      Interestingly, the article says nothing about assembly lines, nor does it equate programming to the work of an unskilled, uneducated factory worker.

      Quite to the contrary, it's about building tools to automate grunt work, so that humans can get on with more creative things.

      As I said in another post, programmers are the designers of factories, not unskilled workers laboring inside them. The idea is to build tools that do the work.

      Do you remember the monks who claimed that the printing press was the work of the devil? Granted, it put many of them out of the business of hand lettering manuscripts, but it also opened up the world of reading and writing to many more people.

      Monks who could think about the content of the writing, in addition to lettering it on paper, did quite well in the new world of the printing press.

      Software Factories can actually help with all three of the things you list.

      When you build a new thing, is it entirely new, or are some parts similar to things you've built before? If some parts are similar, then you may be able to reuse some design fragments. After doing that a few times, you might sit down and write out those deisgn fragments as patterns. That's exactly the idea behind a Software Factory. Why not build some tools that implement some of those patterns?

      When you change something, do you have any idea how it might change, or do you shoot completely from the hip? Chances are, you have some idea about how it might change, again because you've done that before. There are number of well known refactorings out there, so why not use them if they apply? And if you can write a tool that does the work for you, why keep doing it by hand?

      When you fix bugs, how often do you find that the bug is due to something being configured incorrectly or not being changed to take some other change into account? Probably happens a lot. I used to write a lot of assembly language. The number of little details that had to be gotten right was enormous. The compiler takes care of most of those now. If you can build tools that keep things synchronized, why keep doing it by hand?

  115. decade old data --Re:And while we're at it by 3seas · · Score: 1

    from my own web page created late 1996---

    PROBLEMS IMPORTANT TO SOLVE

    Attention Getting Points

    ------ FROM ------

    COMDEX SPRING and WINDOWS WORLD 95

    Power Panel - "What's Wrong with Software Development"

    ** In The U.S. Only **

    $81 Billion = 31% of software development gets cancelled before complete

    $59 Billion = 53% of software development has cost over-runs of 189%

    16% success - project success and failure ratio

    61% customer requested features and functions make it in

    Maintenance and repair is where most of the U.S. dollars are going, instead of new, better, easier to use software.

    ---- Overall ----

    Problems - all-around lack of complete documentation and weak training, faulty user input and feed back - self contradictory user request, lack of project leadership between developers and users, management created problems and low quality control standards, feature creep and software size increase, advancing technology rate of change and lack of general standards, solutions around the corner but never arrive and our tools are better than theirs attitude, lack of a value chain structure for value added abilities, failure to produce a functional model before coding and constant remodeling, etc.

    Solution directions - code re-use, object oriented programming, component-based programming, distributed components, better tools, better programming methodologies, leaner software, a splitting of code writer types into two catagories - architects and assemblers, better effort to establish a working vocabulary between developers and users so users can in some way lead development, etc.

    ---- A Few Comments from Panel Members ----

    A culture needs to evolve that respect software engineers as crafts-people. Writing code is not just writing code but like the field of writing where you have technical, creative, documentary, etc., there are different types of code writing. (Authors' note: I agree with this but also realize end users are even more specialized in what they need and do. Respect for the end user needs and abilities is needed even more so. Without respect given to the end user, the software engineer will not be given respect in return.)

    A fundamental change in the programming environment needs to happen that allows the tools to work together more. (Authors' note: the panel member making this comment, did not specify what tools or who the tools would be used by. It was a very general comment pointing to a fundamental programming environment change. A lead in to the concept of componet programming. But, there was no recognition given to the concept of componet software or componet applications. At least not in the sense of being outside of "plugins". Read on!)

    Jokingly - one of the best ways to copy protect software is to put it in a dll, give it an obscure name and put it in the windows system directory. Because you'd never find it. (Authors' note: This does not make it any easier for the end user in keeping their system organized, clean and optimized. This attitude of constraints, though humorous, cost end users alot.)

    The meaning of "intellectual property" became questioned. Did it mean you take the best ideas or something owned? (Authors' note: it was the panel supporting "best ideas" but wouldn't the correct term for this use be "intellectual value" rather than "intellectual property"? What would happen, regarding this, in a court room? The audience member whom brought this up, was a bit angry about the distortion. Her question was: Is it the developers whom are creating the problems? And what are the developers going to do about it? The responce was "that's not the problem!")

    Users shouldn't develope software but know, better than the developers, what they want and need. (Authors' note: users don't have the time to write code, it's not their job or duties!!! I can cut the lawn, I know how, but if I don't have th

  116. Re:It Won't Work Because Of Programmer's Personali by JackGr · · Score: 1

    Who said anything about stuffing programmers into factories? I hate grunt work, so I'm interested in building factories to make tools do things for me. It's not about making programming a mindless job. It's about automating the mindless parts of programming, so that we can get on with the creative parts that drew most of us in the first place.

  117. Re:More evidence of MS trying to take credit for.. by alienmole · · Score: 1
    Programming is the act of automating complexity in order to make the use and reuse of the complexity easy for the user of the complexity. Programming is a recursive act, as shown by any code/programming being done above machine language. And it follows that it is of such recursion that Software will become genuinely free, or otherwise contridict its own primary concept and purpose.

    Or in other words, we don't need no stinking sweat shop software factories, we only need a general population understanding of the physics and nature of software development or general automation, and the non-patentable tools that allow us all to cause a generation of code based upon our design.

    No offense, but apparently we also need more reliable drug delivery for schizophrenics...
  118. Custom vs Off the shelf software by syousef · · Score: 1

    The thing with a factory is you produce the same line of products repeatedly in mass quantities. We already have this in software and its very efficient. You can make an exact copy of a piece of software on CD very very cheaply without involving programmers.

    Programmers get paid to solve problems (Analyst programmers), or do things differently to how they are currently done. The problems may be similar but they are not exactly the same. If they were exactly the same you would use off the shelf configurable software. If the business is small or the problem calls for a generic solution this is absolutely the right thing to do.

    Packages have been applied in the areas of HR, management and timekeeping. However what you find is that companies that provide generic solutions force you into their methodologies and charge a mint for their supposedly superior software.

    Each business is in fact different and wants slightly different solutions. Not just different look and feel, or configuration, but their organisational structure and decision making processes differ. As long as this is the case they may try to pay developers like factory workers but this will be an injustice, since the job is more complex and stressful than a repedative job in a factory.

    --
    These posts express my own personal views, not those of my employer
    1. Re:Custom vs Off the shelf software by JackGr · · Score: 1
      Sammy,

      Read the whole article. It deals with exactly this issue. It does not claim that software can be mass produced, as you suppose. On the contrary, the central theme in the paper is the difference between mass production and development.

      It is possible to reduce complexity by raising the level of abstraction. It's been done many times before. We take it for granted when we use a compiler.

      What we're advocating is just more of the same. Rather than turning developers into factory workers, Software Factories automate rote work using tools, so that developers can focus on the creative endeavors that require human intellect, in the same way that compiling a higher level langauge like C# or Java automates a lot of low level details that don't really matter, but that used to be done by hand.

    2. Re:Custom vs Off the shelf software by syousef · · Score: 1

      Programming a tool, which is a very generic thing is very different to programming a system.

      I think you'll find we're already very good overall at building tools for automating mudane tasks.

      --
      These posts express my own personal views, not those of my employer
  119. Who writes software these days? by Anonymous Coward · · Score: 0


    If you work for a company that still produces serious software, you don't use any of these ideas. You write software just like they did 20 years ago -- like a design engineer. Companies that really write software include Avid, Adobe, Apple, etc, companies that build difficult applications in c++ and assembly. Just like the old days.

    If you stitch pieces of third pary libraries together for distributed IT applications, then these methodologies apply to you. It isn't much of a job, and it never was.

  120. Food chain-Bowling for IT. by Anonymous Coward · · Score: 1, Funny

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

    Apparently it's "difficult" enough that our jobs are going overseas.

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

    Tell Microsoft that.

    1. 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.
    2. Re:Food chain-Bowling for IT. by Anonymous Coward · · Score: 0

      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.

      Ironicaly, because of outsourcing, the programmers that you speak of are now top notch burger-flippers.

  121. The Case? by 16K+Ram+Pack · · Score: 1
    What's the case? What's the solution?

    I've read this and can see nothing that states how you get from current position to a software factory. All I can see is "this doesn't work" and "this would be good", but nothing about how you organise it or anything.

    1. Re:The Case? by JackGr · · Score: 1

      That was article 1 of 4. The second is already posted. The last two are on the way.

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

  123. I have a patent pending on that by Anonymous Coward · · Score: 0

    If you use it i'll sue

    --darl

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

  125. The Silver Bullet? by TheClarkey · · Score: 1

    I'm torn on this article, I kind of agree with what he's saying but for a different reason.

    I think its pretty obvious that if a developer stays in a particular industry for an extended period of time they grow familiar with the domain and the type of problems that companies face in that domain. So for example if I'm developing software for the retail sector I understand the lingo, if I'm developing for the financial sector I'm not puzzled by "industry norms" or TLAs.

    I think thats a fine way for a developer to capture his knowledge, but unless he builds the libraries and shares them it isn't very reusable.

    Let say that it happens (I'll talk more about how it could happen later), there is still a lot of complexity left in the problem. Unless the captured knowledge/library is 100% spot on in terms of quality (and even if it is!) the coordination of such software will be a very complicated task.

    I can however see this playing out in a good scenario. To build such a tool, I would have to have a great understanding of my problem domain, not to mention excellent technical understanding of a particular architecture and platform. As a Developer I would have to have a great incentive to build a library that incapsulated my knowledge about this particular domain, such a developer is likely to be highly in demand.

    I think Developers in this scenario would be likely to form into small companies and develop their expertise in thier specialised industry and technologies. Said software could then be licensed/developed for clients or other developers building more sophisticated solutions. It's not entriely unlike a law practice - I don't goto a lawyer who specialise in divorce about my tax problems do I? I'd goto one who specialises in tax problems and I'd probably have to pay more for it.

  126. Nah by Anonymous Coward · · Score: 0

    The IT industry is grappling with the fact it basically reeks. If you'd read the article you'd have met this sucker punch early on: According to the Standish Group [Sta94], businesses in the United States spend around $250 billion on software development on approximately 200 projects each year. Only 16 percent of these projects finish on schedule and within budget. Another 31 percent are cancelled, mainly due to quality problems, for losses of about $81 billion. Another 53 percent exceed their budgets by an average of 189 percent, for losses of about $59 billion. Projects reaching completion deliver an average of only 42 percent of the originally planned features. Nobody cares what IT workers do and do not want. The industry (in the US) is increasingly uneconomic and less than productive (do you know another industry that would tolerate an 84% rate of failure to meet targets?). Its within this context you have understand why corporations like MS have had enough. The supply will never run out precisely because of outsourcing. If you read between the lines of the article its not about a new working pattern for Americans, its an integrative programme for utilising high churn-rate outsourced labour.

  127. Amazingly inappropriate model by sjames · · Score: 1

    It's amazing to me how long a completely screwed up and inappropriate model of development has managed to live in management. It seems every few years, we see some new hype (tripe) about how we are like craftsmen making each unit by hand while we need to be cranking them out on a assembly line.

    The problem is, they're comparing the DESIGN phase of software to the PRODUCTION phase of everything else.

    I agree 100% that software PRODUCTION should be on an assembly line. We simply MUST stop producing those CDROMS one at a time with a handheld laser. Manuals should be printed in bulk, we can't keep typing each one up by hand.

    I propose that executive and middle management functions are at LEAST as good a cantidate for 'industrialization' as software development is. While there ARE managers who produce carefully crafted decisions that ACTUALLY reflect a grasp of reality and produce positive results, many could easily be replaced by a life sized version of those talking dolls with the pull string in their backs.

    Interestingly, the gist of the article is fairly dead on, it just uses an ENTIRELY inappropriate analogy and so leads the reader to the wrong conclusions early on.It wouldn't be such a large problem except that management has been wandering down that bad conclusion over and over again throughout the history of software development.

    I BELIEVE (correct me if I'm wrong) He's essentially saying we don't really need to keep writing essentially the same function to accept user input and validate that they entered a number over and over again. Quicksort is a well understood problem, quit writing quicksorts and get on with the meat of the problem (you're not likely to do any better than Knuth anyway).

    Of course, there already is a movement within software developers to do exactly that sort of thing at even higher levels of abstraction. We call it Free Software. If an existing program does almost everything you want it to do, add the feature you need/want rather than writing yet another X.

    That doesn't totally eliminate duplicated effort only because it's not always clear which approach to a design is best overall and there usually isn't a 'One True Way'.

    Of course, the biggest obstacle to expanding the appropriate practice of reuse is our laws and economic basis. We have large bodies of law that focuses exclusively on preventing appropriate reuse and an economic system that creates a natural tendancy to expand rather than remove the body of IP law.

    1. Re:Amazingly inappropriate model by JackGr · · Score: 1
      Glad to provide the correction you requested.

      If you read the whole article, you will find that it *specifically* addresses the difference between production and development (which includes design, along with requirements gathering, analysis and implementation, though preferably not in a waterfall).

      It then goes on to say that Software Factories are *not* about automating production. We can do that with CD burners.

      They are about automating development, but not by trying to turn out identical things over and over again.

      Instead, they focus on combining reusable design fragments (think patterns)to produce many similar but *different* results.

      Compilers to this every day. They combine the members of the same fixed set of machine instructions to produce an infinite variety of different programs.

      You probably do the same using higher level language primitives in C# or Java.

      You don't question the value of having the compiler generate the byte code, or having the JITer generate the machine instructions, since there isn't much value in working at that level of detail.

      What we're advocating is the same idea, just moving up to the next higher level of abstraction.

    2. Re:Amazingly inappropriate model by JackGr · · Score: 1
      I think your second point is spot on. We *are* saying that we don't really need to keep writing essentially the same thing over and over again.

      Once we know how to solve a problem, with variation, we can automate the application of the solution to some extent.

      This is what a visual GUI builder + widget framework do. We've built enough UIs that we don't have to keep solving the problem from first principles over and over again. Instead, someone who chooses to invest in providing a reusable solution builds a widget framework. Then, they build a visual builder that makes it easy to instantiate widgets defined by the framework, set their properties, combine them in interesting ways.

      While a few people would rather build the UI entirely from scratch every time by hand, most choose to use the framework + the tool because they have other fish to fry, and can't afford to spend a month reinventing that wheel.

      I agree with you that some Free Software is heading in this direction. Eclipse, for example, provides a base architecture, with well defined extension points, tools to help build out the unique extension you want to add, and an organzation that helps manage the contributions from multiple participants, etc.

      Keep an eye on Visual Studio. There are some interesting things coming.

      I also agree with you that this doesn't totally eliminate duplicated effort. There will always be more than one supplier for the same thing. Some will survive in the marketplace. Others won't. That's how it works in every industry. This is a social and economic phenomenon, not a technical one.

      Finally, I appreciate your point about IP law. Brad Cox wrote an interesting article on this topic in reply to Fred Brooks some years ago, explaining why this is such a challenging issue.

      At the end of the day, softare is a bit like music or video content, with digital property rights issues. As artists often point out, without some compensation, they can't afford to practice. Of course, one could argue that they receive too much or too little. The marketplace will ultimately decide that question.

      We expect to see software leasing become the primary means of compensating those who supply reusable components. The line between development and maintenance is really just a question of when you decide to cut a release, when you're supporting many customers with constantly changing needs.

      There are many other issues that make this kind of development by assembly a challenging problem. There are also some interesting approaches to solving them. Both are the topic of the second article.

    3. Re:Amazingly inappropriate model by sjames · · Score: 1

      I suspect we're talking past each other while agreeing violently :-)

      The only real objection (if you could call it that) I had was only that the use of the term software factory will bring up horrifying images of Taylorist managements attempting to proceduralize creativity and ingenuity (yet again) before the reader gets far enough to see that you're NOT suggesting that.

      I probably should have had a second cup of coffee before I wrote that, I could have been clearer :-)

    4. Re:Amazingly inappropriate model by JackGr · · Score: 1

      No worries. I think your objection has merit, given the postings on this thread. Clearly, many readers were smitten by horrifying images before getting far enough to see that I'm not suggesting proceduralized creativity. Too late to change the title of the book, so I've started thinking about simple ways to quickly communicate what we really mean. Good feedback helps improve the message, so this has been good feedback. Thanks for writing.

  128. Considering that it happens, a lot by SmallFurryCreature · · Score: 1
    Writing code ain't all that hard. Writing good code is, writing code that is good and can be maintained is an art.

    But the artist can't work in a vacuum. He needs to be told what he needs to create or you will end up with a master sculpture while you were after a painting.

    And that is the real problem. Talented programmers are being wasted as their employers are unable to give them detailed instructions on what needs to be done. I can't count the number of times I had to spend days hunting after simple details like for example exactly what the minimum payout is on a cheque. It is not the programmer who can decide that and it not the programmers job to find it out either. Simple things like deciding wich fields in a database got to be unique. Social security number you say? What if people without are employed? Sure it ain't legal but it happens, I been in more then one company where a simple check on the social security number (in holland it can be calculated to see if it is a legit number) showed the company had employed people without a valid number. Wich by the way is illegal.

    When managers don't manage programmers spend time not programming and projects run over budget. First step to more efficient development is to make sure that it is known what needs to be developed.

    Most software developement is like building a building without it being decided if it shall be a house or flat. How many doors their shall be if any. What windows are.

    You can tell how wrong software development is that they decide on the material before they decide on the structure. Would you choose straw as the building material without knowing wether you are going to build a hut or a skyscraper?

    --

    MMO Quests are like orgasms:

    You may solo them, I prefer them in a group.

  129. Programmers assembly line? by ecks0r · · Score: 1

    Sounds a lot like India to me!

    --
    X01 001 110
  130. Everyone is misinterpreting this technology by Anonymous Coward · · Score: 0

    This isn't about turning programmers into factory workers. It's about raising the level of abstraction to provide programmers with domain-specific model-oriented languages to program with instead of generic high-level languages like Java.

    While domain specific languages are great to use, they are expensive to develop. The Software Factory is supposed to be a high-speed development environment for domain specific languages that will lower the cost of their development.

    This work is Microsoft's "embrace and extend" offshoot of the OMG's MDA and a free metaprogrammable domain specific modeling framework from Vanderbilt University called GME.

    Learn a little about the relevant technology before you scream "They're turning programmers into assembly line workers!"

  131. Mostly right, but one MAJOR exception... by Paradox · · Score: 1
    Mostly, you're dead on right. Especially about PHBs or programmers who don't think critically about their work reading one book and trying to rigorously apply its principles without thought or reason.

    The GOF Patterns book has wreacked nearly as much havok as it has helped to prevent.

    But when you say:

    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.
    I must take exception. If you really believe that this buys you anything in the long run, you're the one extrapolating out of your ass.

    Let me qualify this though. If you're on a competant team who knows the language, and you are doing test-driven (not necessarily test-first, mind you) designs, then you're probably in better shape than a good static-typing-driven team.

    Let's discard Haskell and the ML family for just a second, the truth is that in most of these higher-level languages, 1 line of code is worth many more than the equivalent Java or C/C++ line. Sometimes, we can even get into 10:1 ratios.

    A 100000 line project is huge. But a 10000 project is managable by one skilled person. If your language, dynamically typed as it may be, lets you cut down the overall size of the project it is going to be a net win. Program size is to system difficulty as speed is to car breaking distance; the dominant term in the equation.

    Bringing ML-family languages into the mix, YMMV. I don't like them, but some people do and that's fine. If you're going to use static typing, at least use a modern system for it.

    Don't mix your religious preferences in with your very good rational arguments please. Lots of people on Slashdot can't seem to separate them.

    --
    Slashdot. It's Not For Common Sense
    1. Re:Mostly right, but one MAJOR exception... by DJ_Perl · · Score: 1

      Perl. No strong-typing. Concise code.

      --
      -- Subvert the dominant paradigm. Repeat as desired. http://ownlifeful.com/
    2. Re:Mostly right, but one MAJOR exception... by Paradox · · Score: 1

      "Concise" isn't the word I'd use.

      --
      Slashdot. It's Not For Common Sense
  132. Just brilliant! Further isolate the developer by karlandtanya · · Score: 1
    Code factories are the most idiotic idea I've heard today.

    Does anybody seriously believe that blackboxing programmers will increase effeciency?

    We already have systems that blindly do exactly what they're told to do. They're called computers.

    We need programmers to get them to do what we want them to do. As of yet, there is no DWIM instruction for people or machines.

    For programmers to be effective, they have to have some involvement in the planing process. They have to make decisions and understand why they're doing what they're doing.

    As a "programer", I design electrical drawings, hunt for parts, line up electricians, manage installations, test and troubleshoot builds (that's build as in tools, cables, wires, & pipes, not ./configure && make), etc, etc, etc.

    I've seen programmers around here who "just do the software".

    But I don't see them for long.

    --
    "Reality is that which, when you stop believing in it, it doesn't go away." - Philip K. Dick
  133. Re:Around it comes again:We are better by Anonymous Coward · · Score: 0

    Wasn't there a quote that had something to do with history and repeating? Oh well it probably wasn't important anyway....

  134. Re:Buffer overflows by Spazmania · · Score: 1

    Buffer overflows are partly a language issue and partly a hardware issue.

    Programs written in C, C++ and other languages which use staticly sized buffers and no bounds checking are subject to buffer overflow attacks. Programs in languages like perl and java which have dynamic buffers or bounds checking are generally not vulnerable.

    Most processors have stack-helper instructions which build the stack from the top of memory down. As a result, any positive buffer overflow of memory on the stack will overwrite earlier contents of the stack including the return pointer which can be highjacked to run the custom code inserted into the buffer. With the stack built from the bottom of memory up, such overflows would generally overwrite unallocated memory with little opportunity to highjack the program.

    Solve either or both of those problems and the buffer overflow problem largely goes away.

    --
    Moderating "-1, Disagree" is simple censorship. Have the guts to post your opinion.
  135. Re:Around it comes again:We are better by LurkingStranger · · Score: 1

    Speaking of version control, are there any good and not horribly expensive tools to manage version control? Preferably suited to objects as well as pure code...

  136. Re:Shows what you know about auto repair, dickweed by EnderWiggnz · · Score: 1

    so, the answer was to clean the injectors?

    oh, dont think that i disagree with you - i think that programmers (db programmers, in particular) think that they are somehow above "skilled labor" - they arent, they just dont admit it.

    --
    ... hi bingo ...
  137. programming RULES by packrat2 · · Score: 1

    harken unto my blog, if you will. (sigh. I HAD to say that. it scres off the boneheads.) http://slashdot.org/~packrat2/journal/79818 it's supposed to be funny. AND it's about programming.

    --
    packrat ; writer-informer. http://packrat.comicgenesis.com http://www.youtube.com/area163 https://www.smashwords.com/
  138. Re:Shows what you know about auto repair, dickweed by Mnemennth · · Score: 1

    Ahhh... I see. I guess I'm not qualified to judge that particular aspect of computer programming... my experience as a programmer is rather limited. Building some modules for custom apps written in BBX3/BBX4 back in the 90s, plus the bits of scripting and C++ programming I've had to do in my current pursuit of a Network Admin/CISCO track degree at my local community college. I assume from your obvious contempt that this level of skill is only a few steps above "Hello World"?

    As for the Pontiac - the cure was to replace the #4 and #6 injectors, as they were beyond cleaning. The way I identified what was happening was that there was a small but noticeable difference in the heat discoloration on the headpipes - checking the temp of the exhaust with my handy dandy laser/infrared thermometer indicated a 260 degree difference from one side to the other. After finding that, troubleshooting the fuel system was my first course, and it was simple visual inspection that identified the two injectors as culprit.

    VroomVrooom!

    Mnem
    "Bigger. Faster. Louder. All the good things in life..."

  139. Re:Just brilliant! Further isolate the developer by JackGr · · Score: 1

    What gave you the idea that the article advocated black boxing programmers?

  140. right. by sonamchauhan · · Score: 1

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

    You're wrong on the first point - my brother is an architect and one of the reasons his ex-employer hired him productivity - "AutoCAD drafting speed" (for want of a better term).

    You're right that the job takes skill though.

  141. Just for clarification sake by Moraelin · · Score: 1

    I don't think that structure or strong typing precludes good design or tests. You can have it all.

    Tests are good and fine, and everyone ought to use them. Indeed.

    But keeping me from passing the wrong arguments to the wrong function is another source of bugs eliminated. A source of bugs which can sometimes be rather insidious, since parameters can come from anywhere and get passed through 20 function calls. They can come from a user who (sometimes even deliberately) enters wrong data, the web designer who did this small change in the template and replaced the numeric ids with string ones, or the poor maintenance programmer who has a deadline to fix something he doesn't even understand.

    And let me stress the last part: maintenance is the bigger problem, not writing the code. It's also the under-manned part: while when coding you could get only 10,000 lines per person, in maintenance one single person can well get a 100,000 or even 1,000,000 line project alone.

    That person sees the program like through a keyhole. It's like seeing the Sixtine Chapel fresco for the first time... through a pinhole. You can scroll the view, but you see a couple of square inches at any given time. Good luck seeing the big picture. Good luck remembering it.

    But when you're doing maintenance you're not always even allowed the luxury of getting the big picture. You're just expected to fix this one small problem, and fix it yesterday. Just quickly find the line that does that, and change it already.

    Which brings problems like:

    - where the heck _is_ the code that does that?

    - where does it get its parameters from?

    - are those parameters what I think they are? (E.g., does it always get a ClientDO object? Can it be null? Can it get some other data type instead?)

    - I see FunctionX and FunctionY being called. Which in turn call functions A, B, C, D _and_ E. What _are_ their parameters? Am I sending the right data?

    (E.g., I see it expects a Collection object. Will _any_ collection do? How do I know it doesn't get cast to ArrayList down the line. Don't laugh, I've seen code like that.)

    - is my change breaking anything else? (E.g., passing the wrong data type to a function.)

    And at that point _any_ help is most welcome. Good structure and strong typing and unit tests can give that maintenance programmer vital hints. Hints which otherwise he/she would have to spend weeks digging in code for.

    That's really when that stuff is the most valuable. Sure, when coding you can often do without them. It's maintaining someone else's code that's the real kick in the nuts.

    --
    A polar bear is a cartesian bear after a coordinate transform.
    1. Re:Just for clarification sake by Paradox · · Score: 1

      I don't think that structure or strong typing precludes good design or tests. You can have it all. Tests are good and fine, and everyone ought to use them. Indeed.

      Agreed. However, I feel some strong type systems make good, test-driven design harder. Some type systems do not.

      But keeping me from passing the wrong arguments to the wrong function is another source of bugs eliminated. A source of bugs which can sometimes be rather insidious, since parameters can come from anywhere and get passed through 20 function calls. They can come from a user who (sometimes even deliberately) enters wrong data, the web designer who did this small change in the template and replaced the numeric ids with string ones, or the poor maintenance programmer who has a deadline to fix something he doesn't even understand.

      And the nice part about using a well-designed dynamic language is that you can plan for this, incrementally add code, hot-swap modules with debug modes, and actually look at the system at run-time in a much more powerful fashion. For instance... Deep in a library call in a C++ project, one of your methods throws an exception. You didn't know what that exception was. Your catch(...) handler can't tell you.

      If you were using a language with more dynamic features, this problem could be solved.

      Even then, this concern suggests to me that you haven't worked on a big system in a test-driven fashion using one of these languages. Such problems tend to become apparent rather quickly.

      And let me stress the last part: maintenance is the bigger problem, not writing the code. It's also the under-manned part: while when coding you could get only 10,000 lines per person, in maintenance one single person can well get a 100,000 or even 1,000,000 line project alone.

      Actually, I consider this issue to be orthogonal to the language. If the code is well designed and idiomatic, it will be maintainable. If it is not, it will not. If we're talking about refactoring, this is why good unit tests and test-driven design is so important, they act as your safety net.

      Working as I do in C++, I find the type system to be less than helpful when I have to do this kind of work. I've done 3 of these kinds of cleanup jobs. Only 1 of them had working unit tests (one didn't have tests at all!). Of the three, all were poorly written and used very unusual (not idiomatic) constructs (longjmp is verboten, people!). The only one I could edit with confidence was the one with unit tests.

      That person sees the program like through a keyhole. It's like seeing the Sixtine Chapel fresco for the first time... through a pinhole. You can scroll the view, but you see a couple of square inches at any given time. Good luck seeing the big picture. Good luck remembering it.

      All paradigms of programming give people ways to encapsulate work into bite/keyhole sized chunks. Be it Object Oriented or Functional (or even database languages, purely declarative and relational), they give you ways to design with foresight.

      I believe this is not related to the type system. Although in the absense of unit tests, a type checker can sure be better than nothing!

      And so I respond:

      - where the heck _is_ the code that does that?
      * Checking for a symbol is an IDE job or a documentation job, and the design clarity is what will tell you where it is. How would type systems help you with this?

      - where does it get its parameters from?
      * Finding callers is a lexical search away. Heck, if your IDE doesn't find callers, get Emacs and do a tags search. Unless your language supports coroutines, this is rather difficult to determine statically with any real precision. :)

      - are those parameters what I think they are? (E.g., does it always get

      --
      Slashdot. It's Not For Common Sense
  142. The important line in this article by Randym · · Score: 1
    Systematic reuse can yield economies of both scale and scope. These two effects are well known in other industries. While both reduce time and cost, and improve product quality, by producing multiple products collectively, rather than individually, they differ in the way they produce these benefits.

    The author makes the point that *only* under these specific circumstances will this idea of "software factories" work. He addresses the "craft question" ["But programming is a craft, not a science!"] and concedes that under those circumstances, software factories will *not* work.

    Only in a high-reusability environment (like, natch, Microcruft) will this concept work.

    --
    DNA is a Turing machine. You, however, being dynamic and emergent, are not.
  143. All jokes aside by butane_bob2003 · · Score: 1

    Most of the really good software development houses are very factory-like. You have a system architect, who describes the system to be developed in terms of patterns using a modelling language. The components of the system are implemented by competent junior developers. The architect keeps watch over the code as it is developed, refactoring and reorganizing as necessary. Developers work in pairs on important code, sometimes with the architect when they are not sure how to solve a problem. Everyone at every level can be happy in this situation, generally as long as the company is stable and making money, most people are satisfied. As the developers gain more insight and experience, they can move up to the architect level and start thinking more abstractly, stretching their brains a little. The more experienced architects spend more time experimenting with new ideas and passing them on to the team to improve quality and re-use, and take more of a mentor and R&D role. Nobody works extra hours or gets burned out on a problem, no one is blamed for failures because A: there are few critical problems; B: no one person is responsible for any of the code.
    The opposite to this would be a company where the system architect is also the lead developer, quality assurance, manager, and support team. This person is probably on the brink of total burnout 90% of the time, as are his fellow programmers. The company's focus changes almost every week, as do the names of the CEOs/CIOs, etc. Nothing is documented, there are no standards, no one is learning anything, and people quit any chance they get. Management plays the blame game with the developers over suffering software quality, and the developers are engaged in constant infighting. This is what happens when managment does not understand modern software development, which is a common problem. Look around. Are people happy? If not, something is wrong.
    The software 'factory' can be a reality, and it is not as bleak as it sounds. The bleak vision would be Neal Stephenson's 'Snowcrash' future where software developers are about as valuable to a company as burger flipping minimum wagers. Looking at how common offshoring is becoming, it's probably not too far off down the road. Languages and frameworks are becoming more abstract, but the need for abstraction and re-use is less critical when you have 5 times the development staff at half the cost. Hopefully software development will go the way of the ultra-efficient factory and not the ultra cheap sweatshop.

    --


    TallGreen CMS hosting
  144. Factory Analogy is Wrong by MarkF3th3r01f · · Score: 0

    The factory analogy is wrong. Factories produce large quantities of the same thing over and over. The thrust of the business process is consistency and efficiency. I have always been puzzled why anyone would relate this to programming. Once a program is written and debugged, it can be reproduced with perfect consistency.

    The construction business is a much better model, where there is a customer / end-user, an architect and various builders, some of which are generalists and some more specialized. Also, some elements are prefabricated, others have to be custom-built.

    FWIW,

    ~mark

  145. Confucius he say: by Hognoxious · · Score: 1
    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.
    Learn programming languages by writing 20 line programs.
    Learn programming by writing 2,000 line programs.
    Learn software engineering by not writing 200,000 line programs.
    --
    Confucius say, "Find worm in apple - bad. Find half a worm - worse."
  146. Prior art by maximilln · · Score: 1

    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?

    Look to your brethren in other industries and just say NO to Redmond style factorization. Okay, maybe it can't be stopped anymore but here's why it SHOULD have been:

    Case 1> The automobile industry
    Case 2> The energy industry
    Case 3> The pharmaceutical industry
    Case 4> The music entertainment industry

    In all four of these cases the industry sentences itself to achieving a level of maximized profit margin utilizing cookie-cutter schemes. Innovation is stifled, intensely scrutinized, and accepted if and only if a maximum profit can be reaped by the people at the highest executive levels. Innovation which serves no purpose other than to make the job easier for the people actually working is brutally ostricized for fear of laziness. This business model leads to a very politically separated interior corporate structure where political maneuvers outweigh expertise or ability in the consideration of promotions. This system also leads to pigeonholing of the best talent by the extremes to which functions are delineated. One-trick ponies are favored while people with a broad range of knowledge and ability are either tolerated or thrown out as unable to perform in their position.

    I understand that you can't fight big industry or big government. I guess this article and my post serve more as a warning for you working in the IT field: your day is coming just like it has come for every other industry in America. Soon you will lose your crazy haircuts and your pierced ears and your odd hours. You will be marginalized, minimized, and subjected to the brutal ego driven politics that those of us in the established professions have always had to deal with.

    --
    +++ATHZ 99:5:80