Slashdot Mirror


On Situated Software - Designing For The Few?

janbjurstrom writes "Clay Shirky has published a thought-provoking (and long) essay discussing the concept of 'situated software', musing on changes in software development, from general systems catering to thousands towards applications 'form-fitted' to small, specific groups and particular social contexts. A lot of interesting observations about the differences." Shirky argues: "Most software built for large numbers of users or designed to last indefinitely fails at both goals anyway. Situated software is a way of saying 'Most software gets only a few users for a short period; why not take advantage of designing with that in mind?'"

102 comments

  1. Isnt this why MS sucks? by Debug+This · · Score: 1, Insightful

    The only reason software "designed for large numbers of users" fails more often than that designed for few is because there is a much larger userbase to nitpick and 'test' it.

    1. Re:Isnt this why MS sucks? by Anonymous Coward · · Score: 0

      That does NOT make any sense.

    2. Re:Isnt this why MS sucks? by dasmegabyte · · Score: 1

      Not really. The reason software "designed for large numbers of users" fails is that it is difficult to understand what all these options do. I've seen people who could turn double spacing on in Word 97, but not in Word 2000. Reason? IN Word 97, it was just "Use Single Spacing/Use Double Spacing/Use Triple Spacing." In 2000, it was "Use spacing: [2]" with a numeric control. As soon as it went from double to a number, people got confused. They didn't want that level of control, and they didn't trust their knowledge of the application to use it properly.

      Customizable toolbars get people as well. They are too easy to move and change and most people --myself included -- adjust themselves to a certain config. Move a menu, and you may take a long time to figure something out.

      Example: the first thing I do when I install VS.NET is turn off all the toolbars and close all the panels. I just want the editor (and the file selector bar)...when I want to do something else, I'll do it with keyboard commands. Another guy I work with, he turns ALL the toolbars on (boosts the font too, another pet peeve of mine as I like to view 100 vertical lines of code at a time). When he needs to use my environment, he's stuck. At first he couldn't even figure out how to compile. Because in HIS world, compiling is a button you press on a window. In mine, it's ctrl-shift-b. He can figure it out of course, he's not stupid. But imagine if your entire computing experience was a series of adventures in figuring out what the programmer wanted you to press to do a simple task. That's modern computing for the end user.

      Design Principle #6: Simplicity BEFORE generality. He's talking about interfaces, but it works here, too. Don't ruin a program for everybody by trying to make it do two completely opposite tasks.

      --
      Hey freaks: now you're ju
  2. I'd say by mihal · · Score: 1, Funny

    Everyone must write a new program every time he wants to do anything.
    And never reuse the code or use the same program twice.

    --
    Sig. No Sig.
    1. Re:I'd say by Manip · · Score: 1

      Sounds a lot like the days when you would insert punch-cards into a terminal.. had to re-write everything back then too, was a living hell. :)

      I must admit, it would be interesting if the /. admin's had to re-write the main page in HTML, from scratch each and every time someone submitted something. ;)

    2. Re:I'd say by asdf+101 · · Score: 2

      I don't agree.

      I dont' believe that situatued software is contrary to the idea of code reuse.

      The only thing I beleve this approach is contrarian to is to the idea of "mass-use" software being developed to appeal to the lowest common denominator. Rather than ending up as trying to be something to everyone, the ideology here is more inclinded towards trying to be everything to someone (more or less).

      If you want to reuse code to attain the objective, it's surely fine. I mean it's in no way mandated that situational design should always be from the ground up. That would be outright silly.

    3. Re:I'd say by Anonymous Coward · · Score: 0

      If you did that, you'd run out of text editors and compilers pretty darn fast!

  3. Yay - back to inhouse programming by MrRTFM · · Score: 5, Insightful

    I worked as an in house programmer serving 10 or so people (data manipulation, etc) and it was great.
    No specs, meetings, or other bullshit - they would say 'I want something that does so and so' and after a few screen prototypes, I'd go off and build it.

    *sigh* - these days it takes 2 weeks for a team of 4 to decide what database version to use.

    --
    You can't expect to wield supreme executive power, just because some watery tart threw a sword at you
    1. Re:Yay - back to inhouse programming by necronom426 · · Score: 3, Interesting

      Yep, sounds familiar.

      I used to work at a small local engineering company and they would say "We need a reporting program that takes the data from this Unix box and prints out nice reports in colour with plenty of options so we can select what prints." etc.

      I just started to knock-up a screen with a few tabs and buttons and we would take it from there. Changing bits here and there. Adding new options when we wanted them. It was great :-) I could add things if I wanted to without asking anyone, and change the way that it worked, or re-write whole chunks of code if it was getting messy. As long as it did what they wanted and they had no objections I was free.

      Now I am supporting a large mainframe system and it can take days to get approval to change 1 character of data!

    2. Re:Yay - back to inhouse programming by Anonymous Coward · · Score: 1, Interesting

      You remind me of a small job I did when working with cadastral data for the city. We needed a util to help convert some of the data in its raw form into a better laid out format in order to sell some of the data we had to the public. I said I could get most of it done within a weekend, but that wasn't quite good enough; the project was outsourced, and 2 months (and several thousand $$ later) a bloated app came back to us that only worked usably with the quicker 3/4 of our workstations and had a GUI was frankly shit.

      I went and did my "weekend" hack, which ended up taking 10 days to complete. Not only was it quicker, smaller and light enough to run on every workstation, it immediately became the choice for preproduction layout. Still didn't help me get the job to do the next small app that needed doing, which was once again sent out to an external co, and in no small part due to the mr.negative supervisor who claimed I'd "cost the department thousands" by releasing my app inhouse and making the costly one redundant. Go figure

    3. Re:Yay - back to inhouse programming by AKnightCowboy · · Score: 1
      I used to work at a small local engineering company and they would say "We need a reporting program that takes the data from this Unix box and prints out nice reports in colour with plenty of options so we can select what prints." etc.

      These days you don't need to write custom apps to do that. You just import your data into an Excel spreadsheet and hack away at it. I guess "real" programmers don't believe this is the proper way to process data, but people are doing it in the real world all the time now.

    4. Re:Yay - back to inhouse programming by jellomizer · · Score: 3, Insightful

      But for many smaller companies you will need to put on many hats. Although you are the in-house programmer for most companies now in in this economy you will also need be able to do other jobs as well Like management, sales... and all the other stuff that a lot of techs don't like to do. If you do have a program to write you will need to spread it out over the rest of the other work you will need to do. A company of 50 employees cant usually justify to have a full time programmer paid at 45k a year. For the odd job that needs to be done (although they are often more then they think) Plus for these situations there will be long times that you are not programming because you made all the apps that the group needs to run for a while.

      --
      If something is so important that you feel the need to post it on the internet... It probably isn't that important.
    5. Re:Yay - back to inhouse programming by Antity-H · · Score: 2, Informative

      Sounds quite a lot like what's behind Extreme programming rationale to me.
      Do what the users want, show them what you do often so they can change it as it goes, and don't try to do more than they need, and, well xp recommends you try to keep it clean nonetheless so you can extend it if need be.
      However this is pretty hard to apply in real life,. Lots of people who are oblivious to both usability and technical constraints come in the loop and kill it all. They require plannings and time estimation to be able to satisfy their political agendas. They will first ask you to validate technical choices, only to later force them onto you when you tell them that the features sold to them are not present.

    6. Re:Yay - back to inhouse programming by Euler · · Score: 1

      Spreadsheets happen all to often. Then you get like 17 different lists floating around the office with highly redundant, but ever so slightly orthogonal data... with no revision control, and no common process.

      I myself am guilty of this as well ..because it is often the fastest way to just play around in a spreadsheet. But you should always stop and work with the IT staff to see if a better solution can be found.

  4. Also Known As... by femto · · Score: 3, Funny

    The Quick Hack.

    1. Re:Also Known As... by mystran · · Score: 4, Insightful
      Not funny, but insightful!

      This is done all time time, people hack some throwaway code to do a simple task, which then grows for some time, until it reaches the state where it satisfies the 1 to 5 users it has, but can't really be transferred to another system/environment without so much hassle that nobody bothers to.

      Some of these hacks later become "real software", while most stay like they are. I'd claim that this is awfully more common practice in the Unix world, thanks to tools like bash/perl/python and the ultimate-unix-scripting-language C. But really, most software written in the world is VERY likely to belong into class "a quick hack".

      --
      Software should be free as in speech, but if we also get some free beer, all the better.
    2. Re:Also Known As... by LinuxOnHal · · Score: 1

      Remember, be it good or bad, this is how Microsoft was started as well. MS-DOS comes from QDOS (The Quick and Dirty Operating System). This served as the foundation of Windows for years, and it grew from that. They're still having a great time trying to maintain at least a little bit of compatibility to with it.

      --
      Trying is the First Step to Failing --Homer Simpson
    3. Re:Also Known As... by Anonymous Coward · · Score: 0

      Also known as the Slashdot April fool's artical, though I would only give it a 1 for humour quality

    4. Re:Also Known As... by jorleif · · Score: 1

      Yes it's a case of "quick hacks". But the point Shirky was making was that it's not just any "quick hack", but a socially adapted "quick hack", AKA the right tool for the (one) right job.

    5. Re:Also Known As... by Anonymous Coward · · Score: 0

      By their nature, quick hacks are typically done to satify a need within a small, cohesive group such as a club or a development group. Consequently they tend to automatically be 'socially adapted'.

    6. Re:Also Known As... by Tin+Foil+Hat · · Score: 1

      Also known as...

      The guy that still has a job.

      --
      No matter how many of my rights are taken away, somehow I still don't feel safe. -Frigid Monkey
  5. Admin scripts by SavingPrivateNawak · · Score: 4, Interesting

    Everybody doing a little admin on his linux box does exactly this...

    My scripts are very specialised and wouldn't be as useful to somebody else but they serve my purpose very well.

    Their limited scale is an advantage since I don't have to respect interface compatibility between versions, etc.

    This really eases the "upgrade" process when you think of a new super functionality-that-unfortunately-breaks-a-lot-of-t hings,
    It's my sole responsability and I am not blocked by others that would have different uses of the scripts and would not care about the functionality (but would care about the incompatibility!)

  6. The key.... by D-Cypell · · Score: 3, Insightful

    The key to efficient software design is flexibility. Designing for the current problem while allowing the easy migration to more complicated issues (such has massive scaling up).

    I think the XP guys outline this particulally well.

    Design for today, allow for tomorrow. Too much software is designed with only one of points in mind. The great software covers both.

  7. More recognition and appreciation by jsinnema · · Score: 3, Interesting

    Personally I feel I get more recognition and appreciation when programming for a larger audience like the Internet.

    1. Re:More recognition and appreciation by sdcharle · · Score: 1
      Personally I feel I get more recognition and appreciation when programming for a larger audience like the Internet.

      I dunno, as part of a huge team consisting of marketeers, graphic design folks, and server-side Java kids, I felt like a cog in the machine more than anything.

      At another job, when I developed an app with a very small group of programmers to help some scientists run raw data through a pipeline and then display the results on a website only this small group ever used, I felt something like 50 times the job satisfaction and recognition.

  8. Designed to scale? Where? by fuzzy12345 · · Score: 1, Insightful
    The article continually stresses an alternate viewpoint to what is allegedly taught in web design schools, scalability.

    Not from what I've seen (or maybe it's taught but not followed?)

    Many of the code and sites I've seen have scalability problems, and those aren't the ones that explicitly say "not designed to scale."

    --

    Everybody's a libertarian 'till their neighbour's becomes a crack house.
  9. He's right, this is exactly why... by Boss,+Pointy+Haired · · Score: 1, Funny

    ...small project teams in big companies end up developing sophisticated Excel Spreadsheets.

    1. Re:He's right, this is exactly why... by jayayeem · · Score: 1

      Yep... A small project team in a big company is not likely to have a C programmer and a DBA. But they all have access to Excel, and at least one of them with the {time|knowledge|inclination} to put together a really complicated spreadsheet.

      --
      I metamoderate, therefore I am
  10. New software scaling needs in distribution... by SuperKendall · · Score: 2, Insightful

    I think what the article is talking about is an edge of what is going on all over, things like RSS feeds or other things that become small pieces of a very custom application for many users.

    In a way it's sort of the "UNIX way" of thinking, having a lot of small tools and linking them together to complete a task - only at a higher level and with richer building blocks.

    I think the challenge for anyone building and selling software that wants to ride this new wave is then to say - how can we create software small enough to be useful part in this world, but not not harden it so much that it becomes too impersonal or inflexible to communities?

    It's a sort of scaling in distribution, not performance, problem. You need to figure out ways to let the user pick up a piece quickly to create something for his mom or a group of friends. The example of RateMyProfessor.com says something... why didn't the group pick up on that? It does seem that just some interface being slapped together by somebody a few people knew had a much larger impact and willingness to adopt - and things like that happen all the time in business too, with spreadsheets or project templates that people pass around because someone respected made them, even if there might be slightly more impressive ones available from outside sources.

    So what could RateMyProfessor.com have done to succeed? I'm not sure they could have. They would have had to build some kind of API to a rating engine - but then that kind of piece is too specific, and not as flexible as a simple DB. I don't know if between HTML and PERL and MySQL there was really ever any room for them. That is also an important lesson for people building things that look like services to the masses - will the masses be able to serve themselves almost as easily? Are you really providing a piece of the puzzle, or just a box for the puzzle, and do people want a box?

    I don't know if such things will ever displace large software though, in the same way that there still were programs like Emacs and Framemaker on UNIX long ago even though you had all these cool small editing tools like cat and sed (and ed which someone else will provide a link and diatribe about).

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
    1. Re:New software scaling needs in distribution... by Anonymous Coward · · Score: 5, Insightful

      One of the major points of Unix design is that small programs are more usefull then big ones. Ones that incorporate a menu-driven user interface are less usable then ones that can receive input and output.

      Every program is a filter.

      Information in, modify it, and information out.

      That's it, that's all that programs do. So menu driven software only takes information from one source (the user) while input/output style programs can take information from many places.

      So when designing a program you need to figure out what it does, find out how to get it done and finished in the simpliest way possible, and then make sure that it isn't going to f*ck that up. Anything extra is a liability.

      Small programs are much longer lasting. You code one piece of software, why is it a good idea to code the same functionality over and over again? What? Wasn't the first 30 times you wrote a function good enough?

      Take the "cat" command for example.

      When will that never be usefull? It was used years ago and will be used years from now. You can take the code and incorporate it into other programs, but the functionality and the nature of the programs will awlays be there.

      You want to dump the output of a text file anywere, into anything? Cat can do it. It can copy files, can be used to provide information to other programs, it can take any information from anywere and move it anywere else.

      You know a easy way to ruin "cat"?

      Make it go: "Are you sure you want to cat this file? Y/N"

      Instantly useless.

      Weird stuff, userfriendly 9 times out of 10 equals user useless.

    2. Re:New software scaling needs in distribution... by Anonymous Coward · · Score: 0

      The problem with 'cat' is that it is useless for processing anything but text. These days I almost never process raw text, rather I process streams of complicated objects.

      Everyone always touts the 'lots of small tools' approach of Unix ('every program is a filter'). But they ignore the fact that this approach doesn't really work in Unix, at least not on any scale. For this approach to work it requires that programs have common data formats. The common data format on Unix is text, and text is not sufficient for complicated tasks.

      XML makes a step toward common data formats, but it to isn't really sufficient, since all the conversions from internal data formats to XML and back again will overwhelm any program constructed as a long chain of filters.

      EJB (beans) is a step further than XML, but we still have a long way to go before the 'lots of little tools' approach will work on any sort of scale.

    3. Re:New software scaling needs in distribution... by ciggieposeur · · Score: 1

      Everyone always touts the 'lots of small tools' approach of Unix ('every program is a filter'). But they ignore the fact that this approach doesn't really work in Unix, at least not on any scale.

      What do you mean by "scale"? Amount of data? See Beowulf. Number of interacting components/processes? See Xfree86+GNOME+Mozilla. Number of distributed processing nodes? See Beowulf again.

      Seriously, have you ever seen a real Unix shop in action? We're talking several gigabytes an hour of data flowing through smoothly, using multiple processes that have their own memory space talking to each other and behaving very well: blocking on I/O to free up CPU and writing verbose debugging information to human-viewable log files. When a process SIGSEGV's a nanny process can detect that and restart it quickly. Each node uses NTP to maintain a uniform clock and NFS to share files. It actually works very well, even if the ps output is confusing to a new user.

      The common data format on Unix is text, and text is not sufficient for complicated tasks.

      Text is an acceptable least common denominator format for tools that weren't designed with each other in mind. For instance, transferring IEEE 80-bit floats between programs can be accomplished easily between architectures using standard text representation of numbers.

      EJB (beans) is a step further than XML, but we still have a long way to go before the 'lots of little tools' approach will work on any sort of scale.

      Clearly. Have you actually used (or tried to use) EJB? 2.0 CMP *finally* gets there almost, but:
      a) It needs vendor-specific (proprietary) code to generate database stubs. This is NOT a trivial point. In order to use EJB AT ALL you have to have an enterprise DB like DB2, Oracle, Informix, etc. You can get by with an embedded DB (like Cloudscape) ONLY IF you are single-node. You need this DB to provide the backend for both JNDI lookups and persistent data.
      b) It needs the whole J2EE infrastructure to live in, which takes at minimum 30 seconds (2+ GHz x86) on up to 6 minutes (4-way 450MHz RISC) to fire up. A SIGSEGV is a *serious* problem, especially if it occurs during an EJBStore(), as the container may be corrupted.
      c) Its security model is completely separate from the OS's model. If the container security is broken, your data is wide open; the OS can't help.
      d) Good EJB developers cost more than good Unix admins, in terms of both outside hiring and in-house training time. A good Unix admin has skills that go much further in the world than a good EJB developer.

      By the time you get EJB implemented for your application, you need 1.5+GHz processor, $10000 for WebSphere+DB2 or WebLogic+Oracle PER NODE, $50000/year on a full-time EJB developer, and an LDAP server. You also need to write SOAP clients that use SSL to communicate with your EJBs from the command line, because any other method is just too damn slow for the real world. Don't forget to add four months to turn the EJB implementation Class into a prototype that can actually work inside the vendor's EJBContainer.

      OTOH if you had committed to Perl, you could get by with a 500MHz processor box, $0 for Linux+Perl, $45000/year on a full-time Unix admin/programmer, and "scale up" by adding more processor nodes and running named pipes between them. And your solution is ready for prototyping as soon as its written.

      So why bother with EJB, when the common text utilities can get you 60% there (and Perl can push that to 95%), and if you need more speed you can replace parts with portable C/C++?

    4. Re:New software scaling needs in distribution... by theCat · · Score: 2, Funny

      Indeed, I've been ruined countless times, in just that manner. Shameless.

      theCat

      --
      =^..^= all your rodent are belong to us
    5. Re:New software scaling needs in distribution... by mr_mischief · · Score: 1

      1) What's wrong with a set of filters for your streams of complicated objects?

      2) You don't have to have common data formats. That's what filters are for -- to massage data into the form needed.

      3) XML _is_ text.

      4) EJB is scalable how? By running on top of an application foundation which trakes up more processor and memory than every other program on the box just to get started?

      The Unix tool-based approach may not be perfect, but how "portable" do you really think EJB is? Ever tried running EJB on a microcontroller? Why not?

    6. Re:New software scaling needs in distribution... by mcrbids · · Score: 1

      One of the major points of Unix design is that small programs are more usefull then big ones. Ones that incorporate a menu-driven user interface are less usable then ones that can receive input and output.

      Which only makes sense when you are a programmer. End users aren't going to learn the gritty on the "cat" command.

      When you see "user friendly" read that as "gets done what the user needs done without too much fuss". Deliver that, and you'll get paid.

      I can just see it now - you're dealing with a 55 year old carpet layer, and you want to teach him the value of "cat"?

      How about "Click here to get a list of the customers for the day, and click the red button when you're done installing their carpets..."?

      The latter is user-doable. The former is an exercise in futility and frustration.

      --
      I have no problem with your religion until you decide it's reason to deprive others of the truth.
    7. Re:New software scaling needs in distribution... by Anonymous Coward · · Score: 0

      Certainly, but the former is also the bulk of the work required to acheive the latter. Nothing says you can't put a user-friendly interface on programmer-friendly tools. It's not one or the other. You can do both. The point is that somebody with the right knowledge can take generalized tools good for a programmer and put a specialized interface on them good for users.

  11. I don't see it... by sirdude · · Score: 2, Interesting

    This just sounds like "propietary/custom" written software rather than "situation" software, albeit combined with a certain degree of marketability predetermined during design, which is usually not the case.

    It also outlines something similar to the "Google vs. Yahoo" design debate, where Google has gone with the "The user has come here to search, so lets let him search the fastest and the quickest", while Yahoo has gone with "Search is just one of our products - lets give the user a ton of options and draw him to use Yahoo! for all his needs.."

    Basically, situation software just sounds like a repititious new-fangled jargon to me..

    1. Re:I don't see it... by Anonymous Coward · · Score: 4, Insightful

      Basically, situation software just sounds like a repititious new-fangled jargon to me..

      I agree.

      The point to successfull software design is:

      1. Find out what the user wants to be done.
      2. Do it
      3. Don't screw it up

      Bad software design goes like this:

      1. Figure out something to do.
      2. Make it look cool and make it fast, or at least increadably feature rich.
      3. Try to convince people to use it.
      4. Make it look flashy, and with that flash hide the functionality so that people depend on it without understanding it.
      5. have lots of options.
      6. make it so people can use it without thinking.

      (6 months later)

      7. Fix the horrible mess we just made.

    2. Re:I don't see it... by platos_beard · · Score: 2, Insightful

      I think Shirky's point is more than that good design is important, but that design for small groups is inherently better -- and I think it's wrong because of that. The main benefit of targetting small groups is that it makes step 0, which you didn't list but is the MOST important step, much harder to screw up:

      0. Identify who, and what situations, you're designing for

      If you don't do that, you'll design crap that doesn't do anything well for anybody. If you identify your user and what they're doing, you at least have a shot at making your software handle that situation magnificently. And if you choose your user/situation right, your core users will be ecstatic and the users who need to accomodate software tailored to someone else will be the users who are most up to the job.

      Most of these ideas bear an uncanny similarity to those in "The inmates are running the asylum" which is also a pretty amusing read.

      --
      What's a sig?
    3. Re:I don't see it... by jooon · · Score: 1
      This just sounds like "propietary/custom" written software rather than "situation" software...

      Not at all. Many free software products start out small, just for yourself (scratching an itch) or a small group of people near you. I have seen so many failed attempts at solving all problems at the same time. A few years back, lots of companies died because they spent so much time in the initial development cycle that all their money and support suddenly were gone. Many big programs today wouldn't have been written at all, if they hadn't started out small.

      What this article seems to emphasize though, is not really that small programs win, but that you should take advantage of having a small and tight userbase. A system isn't useless because it can't scale, it might even be better. You should consider if your program really has to scale. It's more of a question of what your ultimate goal is. If you are a power and money hungry person, then you are probably better off building something that can scale, because it's easier to get filthy rich that way.

  12. I think you forgot something. by Zutroi_Zatatakowsky · · Score: 1, Funny

    Er guys? Did you know which day it is? I mean, what's up with all those interesting and important news?!
    It's 01/04, don't ruin my day, Slashdot!

    --
    All Hail Discordia. Hail Eris. Fnord.
    1. Re:I think you forgot something. by wtf · · Score: 1

      I think that might be the joke!?

  13. To small for extreme, and more honest by SuperKendall · · Score: 2, Insightful

    I think the kind of stuff ebing talked about here is things that are too small for any process at all - no matter how extreme. And they are programs with no pretension for any kind of future scalability, becasuse they will never need it.

    The contrasts with a number of XP results I've personally seen where the result was , as you say, supposed to migrate up to better scalability - but because that wasn't thought about in design to start with, the end result was a mess.

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
    1. Re:To small for extreme, and more honest by ThePretender · · Score: 1

      yes, not everything needs that level of complexity. On the one hand, you don't cook a meal and throw away the pots and pans, but you also know that this isn't a meal that has to feed you for the rest of your life. Some things are utilitarian in nature and short-lived. Program accordingly.

  14. You should complain to his supervisor by SuperKendall · · Score: 2, Insightful

    Seriously - the second time around, have your version ready - when it becomes widely deployed and used again go to this guys supervisor and ask for his job pointing out how much HE is costing the company. It sounds like his position is completely useless anyhow so the company could get rid of a headcount. It's guys like that that suck the life out of a company.

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
    1. Re:You should complain to his supervisor by pfleming · · Score: 1

      Except he said it was a government job. The only government jobs that get cut around here(generally speaking) are teachers.

  15. No wonder /. doesn't work so well by whimdot · · Score: 3, Funny

    Too many users and the social fabric has broken down. The application has attempted to scale and it copes, in so much as the servers staying up is a measure of success. But look at the contents these days.

    1. Re:No wonder /. doesn't work so well by Anonymous Coward · · Score: 0

      But look at the contents these days.

      So why doncha quit whining and write something interesting?

    2. Re:No wonder /. doesn't work so well by DrEasy · · Score: 1

      It's always the "hubris" part that screws things up. We always want to appeal to the maximum number of users. For example, what's wrong with having a mailing-list that has a 50-member limit (unless there are commercial considerations)? I once ran a Catpower mailing-list which was great until we reached about 200 members. At that point you start observing obnoxious behavior, because people feel like that they are "more anonymous", so they can do whatever they please. Also, the slightest thing can risk offending somebody (more eyeballs). That's when the flamewars started, the good contributors got fed up and left, and I decided to give it up altogether. Somebody else is running that list now, but it is very quiet...

      Had I decided to restrict new memberships once the list hit its stride, we would have been ok.

      --
      "In our tactical decisions, we are operating contrary to our strategic interest."
  16. Why not? by Anonymous Coward · · Score: 0

    Because for anything more complex than 100 lines of code, you are quite likely to have bugs.
    So why replicating those bugs, when you can use existing, stable code?

    Of course, I'm not talking about web sites or small VB/perl/shell appliances for converting, say, a bunch of photos into a nice custom album.

  17. Now the question is... by Wiktor+Kochanowski · · Score: 5, Insightful

    ... how to capitalize on that trend?

    How to market yourself as a developer (preferably independent) so that you can make a nice living doing this kind of localized software?

    This is what's on my mind as I contemplate starting my own software company. I noticed the same thing as the author: there's a lot of demand for "small" software which is not being met, or is being met by second- and third tier programming talent, and the quality of results is quite often offensive.

  18. target by zby · · Score: 2, Insightful

    I think there is nothing to justify that new name - 'Situated Software' seems to be just software with a narrow target. The whole rant with all examples is just stating the obvious truths about targetting. Perhaps there is an argument that when programming is easier (with better hardware, languages and libraries) then it economic to target it on narrow groups, but that whole story is a bit overblown.

    1. Re:target by Bigman · · Score: 1



      *leans on walking stick*

      When I where a lad, 'twere called "vertical markets".

      </MODE>

      Valid concept, but I think it's just specialisation of market with new clothes.

      --
      *--BigMan--- Time flies like an arrow.. but personally I prefer a nice glass of wine!
  19. what slashdot editors do all year by millette · · Score: 1

    I just found out what slashdot editors do all year: they prepare for this day, year after year, to make April 1st the great holiday we geeks deserve! Thanks! Oh, and if you ever need a job, Google is hiring...

    1. Re:what slashdot editors do all year by kent_eh · · Score: 1

      I want to apply just to have access to the "innumerable arrays of massively parallel lava lamps".

      --

      ---
      "I can't complain, but sometimes still do..." Joe Walsh
  20. Other advantages by f8ejf · · Score: 3, Informative
    I own/maintain several very specialized programs.
    One of them, CWirc, has a known target of maybe 15 people, and another 50 occasional users. And everybody who uses the program seems to like it a lot, because:

    It caters to their specific, specialized desire

    I have time to implement or improve things by request, to fit someone's wish almost to a tee (meaning, I don't have to make compromises)

    The project is so low-bandwidth and simple that I can make it evolve exactly like I, and the few users, want, at the pace I want

    So, while big projects with wide audiences are good, small (and also very small) ones with a very small audience have their place too. That's what makes open-source / free software work, because Microsoft and the likes don't have time or money for smaller projects, and big generic ones often don't do what people want.

    73 de F8EJF

  21. MySQL by Tarwn · · Score: 1

    I'm still trying to figure out what that cheap MySQL plug was in the middle...

    --
    Whee signature.
  22. all about the situation by timmarhy · · Score: 2, Interesting

    it is a perfectly decent job writing customised software for companies. pays very well and has much less stress then working for big software firms ( which you won't catch me dead doing ) i wouldn't ever take a job writing a webserver for example, i'd just advise clients to use apache and charge then do setting it up. but if someone wanted say, an appointment book system which reflected their unquie busniess requirements i'd do it in a span. it serves them exactly what they need and theres not need to wait for some development house to get off their arse to make changes if they need them.

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

    Someone who uses the phrase "persistent cognitive dissonance" must be taken with a pinch of salt.

    I wonder if the software code he/she produces is as shit as the writing - and I'm not trolling.

  24. There is an intermediate level. by AlecC · · Score: 4, Interesting

    An interesting article, but on the other hand you can look at it the other way. Larry Wall developed perl because he was fed up with writing special pupose report analysers, and built a general purpose report-analyser-generator - which turned out to be mind-bogglingly useful for other things. But it is a good idea to avoid feature creep: there is always a tendency, if not resisted, to add global features to a quickie "just in case".

    But the article was talking about a geograpically close-knit community. I write software fore spcialist machines used by a technically close-knit community. As such, my user interfaces can take advantage of their knoledge (for example, you can assume that a video editor can do timecode arithmetic). The trouble is the marketing droids don't have these skills, and try to force the UI to have features to make it iasy for them to use, rather than the end user. So they want every timecode box laden with calculating abilities, and boxes to show differences between timecodes etc. Lots of screen area, lots of niftiness - "look, I enter it here and it changes over there", but not much use. Luckily, my corporate culture allows me to fight back - "It's not for you, dummy, it's for " carries some weight. The problem sometimes comes with the customaer management, who pay the bill but are not themselves users. All you can ope is the users can control their management like I (sometimes) can mine.

    --
    Consciousness is an illusion caused by an excess of self consciousness.
    1. Re:There is an intermediate level. by fncll · · Score: 1

      Great example. I'm definitely glad Perl managed to avoid the trap of bloat and creeping featurism so well!

  25. Everything old is new again by Asprin · · Score: 2, Insightful


    Didn't we try this already? I mean, wasn't the Y2K problem largely caused by this kind of thinking along with compelling limitations on hardware? You know, "Let's just design it for the hardware we have and when cheaper for powerful hardware comes around, we'll rewrite it." At least that's what TV says.

    --
    "Lawyers are for sucks."
    - Doug McKenzie
    1. Re:Everything old is new again by Oligonicella · · Score: 1

      Ummmm. There *was* no Y2K problem. Or perhaps you didn't hear that *nothing* happened?

    2. Re:Everything old is new again by Asprin · · Score: 1


      It was a problem right up until 23:59:59 on 12/31/1999.

      A lot of man-hours and cashola were spent rewriting software and upgrading systems to avoid it. I would even be willing to argue the IT spending bubble of the late 90's, (and even the horribly accelerated acceptance of Windows NT 4.0) was not caused by cheap ubiquitous internet access, but by Y2K. Sure, internet speculation contributed, but it wouldn't have had nearly as sizable a foothold among financiers if market expectations weren't already inflated by Y2K spending.

      --
      "Lawyers are for sucks."
      - Doug McKenzie
    3. Re:Everything old is new again by polymath69 · · Score: 2, Funny
      Why don't you try googling for Mar 19104 if you think there are no unresolved Y2K problems?

      Some things were prevented from breaking -- most of the major issues. Some things broke but were quickly corrected. And some things, as that search will show you, broke and are still broken.

      --

      --
      I don't want to rule the world... I just want to be in charge of mayonnaise.
    4. Re:Everything old is new again by Anonymous Coward · · Score: 0

      Wrote a little Fortran program my group used in 1978, small group, just for a few months.
      It had a Y2K-type problem in 1980, which I patched, since it was just going to be used for a few more months. I left the company in 1982. Got a call in 1989, wondering how to get past the same problem we had in 1979. Got another one in 1999, this time a genuine Y2K problem. But the program was only going to be used for a few months when I wrote it -- 26 years ago.

  26. Artistic Programming by randomErr · · Score: 0

    Ya know this article is right. We shouldn't program for the masses, just individuals. We should be able to put up colored modules and let people 'Draw' thier own personal applications.

    --
    You say things that offend me and I can deal with it. Can you?
  27. UI and other issues by kisrael · · Score: 2, Interesting

    One of the small issues is sometimes it's bad when every little program has a new UI to learn. Not that big a deal.

    Actually, there's a related issue internal to development: I find small do it from scratch implementation much better than applying some massive pre-existing gramework, ala EJBs in J2EE; when you build from the ground up, directly task-focused, and understand how to reimplement the parts of the giant framework ou need in a fairly quick way, I think you get a lot more done than trying to munge some massive beast which always seems to be doing almost, but not quite, what you want.

    --
    SO YOU'RE GOING TO DIE: The Comic for Dealing with Death
  28. No social contract by ishmalius · · Score: 1
    Programmers make software to suit their own purposes. Maybe it is for a specific task at work, maybe it is for altruism. But there is no moral imperative to only write code for the benefit of humanity.

    There are many, many tasks out there that are "orphans" in the software world. Much like Orphan Drugs, there is not enough of a demand for large organizations to support them. So personally writing code to support a specific function is the only way to get it done. Why require that a developer with a specific need modify his design to support tasks that he does not need? Why not, rather, expect the larger projects to support his problem? Because they will not!

    I have had several apps on the web available free for download for years. It is a lucky happenstance that the specific problem I was solving is the same that other programmers have. Thus there is a little bit of code on the Net to help whoever needs it. But I would not have written that code at all, were it not for my own task.

    I think that there is a "gimme" attitude on the Net, where people expect software to be provided for them for free. And sometimes they resent that their wants are not always fulfilled. I have heard, several times, the argument: "If your software does not give me [YOUR FEATURE HERE] then I refuse to use it." Oh dear, I am so shattered.

    There is a need for all types of projects, big and small, wide or narrow.

  29. Often good technique by rjstanford · · Score: 2

    This can be scaled up to Enterprise levels as well. The code moves away from the "quick hack" standpoint, but the goals can stay the same. Rather than trying to write an uber-app, you have a very solid, very consistent shared data layer (either a database or a set of business objects), and then tons of user specific (or role specific) applets feeding from it. That lets you have your core architecture team modeling your business reality, and your user-facing teams out talking to the users, building use cases, and writing software to solve specific problems. Cuts down on the size of the apps, and also reduces training costs as each user or group of users have exactly the software they need to do their job - no less, and specifically no more.

    --
    You're special forces then? That's great! I just love your olympics!
  30. Quick and dirty vs customized vs kitchen sink by Latent+Heat · · Score: 1
    To use the Perl example, suppose one created a tool to create Report Style A, and then reused some of the modules to create Report Style B, and so on.

    The idea of having a lot of little tools (Report A tool, Report B tool) seems attractive, but then one has the support burden of modifying all of those little tools. It seems easier to either 1) consolidate them into a general purpose report tool (the typical Swiss Army knife app) or 2) bundle the supporting modules into a library and passing off the responsibility of what kind of report tool to generate to another group of developers (the Perl approach).

    The idea of developing (and maintaining) a large number of special purpose programs without migrating in direction 1) or direction 2) is well-intentioned, but it doesn't seem to last.

  31. No, the article is about rejecting "flexibility" by Julian+Morrison · · Score: 1

    The idea being that if you know your audience, and they all know one-another, then rather than anticipating every contingency, you can create someting precision-tailored to the specific task.

  32. Isn't that what most programmers have always done? by mwood · · Score: 3, Insightful

    Think of all the guys'n'gals slaving away at payroll programs designed for one company. Not exactly a wide audience, but OTOH the one company gets an exact fit to its needs.

    Thing is, most payroll programs are pretty much alike, so there's opportunity for some vendor to offer a somewhat poorer fit for much less money than custom-tailored software. Some customers will be happy enough with off-the-rack software, but some will have needs or desires that still prompt them to pay the price for a one-off system.

    I believe there'll always be a market for custom-tailored systems, but it will shrink. The off-the-rack software jobs are the ones going overseas, just as was done in the garment industry. It's still hard to do tailoring over the phone, so those who need it will still patronize local talent.

    Moral of the story? If you want a long career making good money in software, one way is to seek out the work that has no mass market, and the single-use projects. It's hard work, but that's what makes it worth more.

  33. Re:Isn't that what most programmers have always do by mwood · · Score: 1

    Forgot to say that the work is always new, so it's more fun too!

  34. Applies to most products, actually by Logic+Bomb · · Score: 1

    Many in the environmental community have made this argument as a general principle: products should be designed with a local focus. For a fabulous example, think about soap/detergent. Given how much the content of available water changes around the world -- different minerals in different proportions -- wouldn't it make sense to have cleaning products that are specifically made to work best for your situation? Instead, everyone washes their clothes with Tide, and most of us have to use more of it than should be necessary because it isn't very effective in our water. This leads to a higher chemical content in the waste water, which flows back out into our environment. Ta da... pollution!

  35. Shirky smokes crak by Safety+Cap · · Score: 1
    ...or has never worked in a business environment.

    I don't have enough fingers or toes to count the number of "small apps" that some wonk wrote to make life easier for a few folk (maybe an excel spreadsheet + macros) that ended up living long after their creator left the company. The people who use the app have no clue how to do the job manually, just how to run the macro ("Simply open whtzits.xls and click the "RUN" button"). Then something breaks or they need new functionality and it is YOUR job to wade though that crappy code rewrite it in a more suitable language/platform.

    Oh, and there are several Fortune 100 companies who have their core business running on, or key business decisions based upon this crappy "software."

    --
    Yeah, right.
  36. Different Assumptions are the key here by Presence1 · · Score: 1

    What the author keeps describing, but does not specifically articulate is that the 'situational software' is more implementable and works better because it uses a different set of assumptions in the design.

    This set of assumptions is based around what features can be eliminated because of the small group. E.g., they could eliminate a reputation system (a la eBay) because they assume that the set of users already know everyone's reputation.

    What is the best code? Code that is never written -- it takes no time to write, runs in zero time and has no bugs! The successful 'situational software' is simply taking advantage of this.

    Even with the features that do need to be implemented, it is always easier to solve the specific problem than the general problem. solving general problems well requires very careful thought in the UI and internal design to handle a variety of uses or cases that will be encountered in a scaled app. Just take a set fo fields to enter an address. If you assume only US addresses, it is trivial, but if you want to scale globally, or, heck, just add Canada and Mexico, it suddenly becomes more complex to present and run well.

    These sort of situation-specific programs are not new. I'm sure there's hundreds++ of little apps built to track someone's mom's recipies, built with only the measuring system (Us/metric) and searching types that Mom uses, not for general use.

    So, it is a good descriptive article as far as it goes, but I think the real issue is how to build toolkits so that the app can be scaleable, but also be efficiently and effectively 'situationalized' for its various sub-audiences, like the apps he describes, not like the "Hello Dave" on the ATM that he properly derides.

  37. Yeah so what? by Anonymous Coward · · Score: 0
    The recent boom was in part fueled by the opportunity to design general systems that met the needs of most consumers to some degree. One system potentially allowed one to reap profits from many somewhat satisfied customers.

    Now the easy pickings have been taken with generalized software leaving only the less lucrative task of meeting the rest of customers needs more completely with more specialized software.

  38. Around anywhere by SuperKendall · · Score: 1

    I missed that the first time. I guess that's true of any government job - damn the expenses and everyone gets to stay forever!

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
  39. Re:APRIL FOOLS! by Anonymous Coward · · Score: 0

    But if you want a really nice car, exactly the way you want it, then you DO have some company like Lamborghini or one of those people on "Rides" or "American Hot Rod" build it from the sheet metal up.

    You buy a mass-produced car because you either can't afford or can't justify the expense of a custom one, but you have to admit that all things being equal, you'd pick a Lamborghini (for example) over the Civic you drive now.

  40. Please condiser this... by akaina · · Score: 0, Troll

    Who determines when N-squared is too large? Management has a tendency to maximize profit and therefore to let N get large. If you let software go in the wild under these conditions it's only a matter of time before a manager asks his techie why the software that worked yesterday doesn't work today, or why it's going to take a month out of his quarter for re-design if we want to change the forum or layout of the group.

    Writing form-fitting software is not an asymptotic approach to design and breeds laziness in all levels of design in a design group. Change is the nature of the market and software written for that market must be able to handle that change.

    Cheaper and faster doesn't teach the programmer anything; in fact this dulling effect can bore a programmer out of his job. Just because you ignore scalability doesn't mean the software has fewer scalability issues. You'll find the simplest changes much more challenging than they should be. If users aren't willing to learn software (or any other skill) to do their job better, this also breeds mediocrity.

    How rare is it to find programming talent that can't write utilitarian software? Software programmers are born lazy. This is the nature of all inexperienced and un-trained programmers. With experience in a field, skills become secondary to philosophy. When you focus purely on skill and ignore philosophy you become doomed to peak at mediocrity; thus the world before XML and other important abstractions.

    I thank God that mathematicians are free to think asymptotically. If their creativity were confined to industry they would be pressured to stick with 4 function calculators and work everything else out on the fly.

    I would suggest that a program like "Teachers on the Run" contain the ability to setup a basic schema via an INI file so the schema can be changed based on the needs of the user very quickly and easily.

    The trade-off in popularity came when your programmers got geeked about their product - which is very healthy. But the fact that we live in different locations of the country and we both have heard of ratemyprofessor.com proves that when Web School app developers get excited, indeed the oceans and the continents start to heat up.

    The pier pressure on deadbeats approach works only in the vacuum of an academic setting.

    "We rarely rely on the cognitive capabilities of groups, however, though we rely on those capabilities in the real world all the time." A large part of industry is trained to perform daily functions - novelty only occurs when a new system is implemented, and contrary to popular belief many people don't use icons because they're drawn toward the usefulness of the pictures, but out of trained procedure and rote documentation. When we use schemas that developers can easily modify, we allow the trained and very bored masses that ability of having a deeper understanding of the system, which improves their ability to submit change requests, not to mention the improved ability to train new employees.

    The two mid-term critiques might have been a reflection of people finally learning a centralized abstraction such as the Web. Remember the web is still new to most people even though it's been around for 10 years. As it permeates our culture you'll be more and more blown away at how well users integrate higher technology into their lives. I'm amazed every day when I hear non-technical types talking about upload sizes, bandwidth limitations, proxy servers (etc.) like they were talking about an episode of Oprah.

    Do you think it would be harder for most kids born in the 80's to use a web form or a beta-max interface? Most kids born in the 80's have never heard of beta-max, and apart from novelty might quickly ask those important questions.

    Deploying services on an Intranet would solve your physical layer issue with web deployment.

    "everyone knew and trusted Scott" - again, this only works in the vacuum of an academic setting.

    In the information age, where the ent

    --
    Remembering that you are going to die is the best way I know to avoid the trap of thinking you have something to lose.
  41. Easy Tools Makes it Easy by adamontherun · · Score: 2, Insightful

    Writing your own home-grown app is a function of how hard and how expensive it is to do. With pretty simply WYSWYG tools like Dreamweaver that has good support for making data-driven apps, anyone willing to take a week to learn can do it. But if research projects underway on allowing "programming for dummies" tools hits the mainstream -- Clay's observations will really come true. If you can use a combination of natural language, and drawing information diagrams with icons, then literally anyone can write applications. They won't be pretty - but they'll probably be good enough for home-grown 10 user applications. TechPolicy

  42. You never know how software might expand by gidds · · Score: 1

    Indeed. And the other thing to be wary of is that software can often expand in many different directions, and it takes quite a bit of experience and intuition to tell which ones are likely enough and/or easy enough to allow for. Often it's a good idea to solve the much more general case or allow for particular types of future expansion, but sometimes it's just not worth the extra work.

    --

    Ceterum censeo subscriptionem esse delendam.

  43. Do kiosks fit in to this? by gilgongo · · Score: 1

    Kiosks have always slightly mystified me, and it seems that what Shirky is describing is relevant to their design, although because his angle is that he has discovered a new phenomenon, he doesn't mention them.

    Airports, stations, public buildings... trackerball, touchscreen, crash, crash, crash. Ever since about 1993. They're still around though, and being consistently ignored by all who walk past them.

    --
    "And the meaning of words; when they cease to function; when will it start worrying you?"
  44. ERP = Made-To-Measure by Vagary · · Score: 2, Interesting

    As I understand it, ERP systems are a hybrid of your two approachs. Basically made-to-measure rather than bespoke or ready-to-wear: ERP systems typically are an infrastructure requiring customisation for each enterprise. Since customisation is simpler and in a higher-level language than creating a system from scratch, the cost of the ERP software plus customising developers should be cheaper. (Many made-to-measure and even bespoke tailors are offshoring the stitching today.)

    Of course many small businesses can barely afford the ready-to-wear software, so they're still stuck with a bad fit. Once I can figure out exactly how to provide them with cheap made-to-measure (probably built on open source ERP), I'm going to be rich!

  45. Too many users and the social fabric has broken do by Anonymous Coward · · Score: 0

    Rule of 150 applies: too many of any group, and the social fabric breaks down.