Slashdot Mirror


Getting Accurate Specifications for Software?

spiffcow asks: "I design internal software for users that are largely computer-illiterate, and obtaining accurate specs for these programs has become a huge challenge. In the most recent instance, I asked for detailed specs on what an accounting program should do (i.e. accounting rules, calculation methods, and so forth), and received a Word document mock-up of an input screen, complete with useless stickers. This seems to be the norm around here. When I asked my boss (the head Sales manager) for specs, he responded saying that it was my responsibility to determine what was needed. How do I convey to the users that, in order to develop the software they want, I need detailed, accurate specs?"

147 comments

  1. he's right by Anonymous Coward · · Score: 5, Insightful

    Your boss is correct: it is your job to get accurate specs.

    In my experience, the best way to get these is *not* asking people what they want or need (because they are usually not capable of putting that into words), but to observe how they do things right now, and determine which features they need (or which features would ease their workload) that way.

    1. Re:he's right by KDan · · Score: 5, Insightful

      Absolutely. Get your ass off your chair, walk over to the users, and talk to them about what they need. Then write yourself a detailed spec if you feel you need it. Then turn that spec into some paper-based mockups and walk the users through it. Then make any corrections needed. Then write the software.

      And count your lucky stars that your company is incapable of writing proper specs - if they were, they would have outsourced your job to India or Brazil a long time ago.

      Daniel

      --
      Carpe Diem
    2. Re:he's right by Moggyboy · · Score: 1

      Hey there AC, I don't think it's that clear cut. For example, I currently consult to a large insurance company, and part of my job is to take complicated mathematical specifications from our actuarial department and implement them in our calculations engine. Even now, after having to clarify the previous specification with them in endless meetings over the last three months, I received a new one this morning with the exact same problems - vaguely defined arguments in pages of calculations that assume I am familiar with abstract actuarial concepts (not to mention the annoying contradictory footnotes). Yes if it's basic program requirements you're talking about (i.e. I want to be able to search through users by name etc.) then it is the software engineers function to hone these requirements until they are sufficiently defined, unambiguous and clearly understood by both the developer and the user. That's a given. But in the case that you are implementing complex software modules in an industry requiring specialized knowledge, a certain amount of the responsibility lies with the users.

      --
      Work smarter, not harder.
    3. Re:he's right by russ1337 · · Score: 1

      >>>> "part of my job is to take complicated mathematical specifications from our actuarial department......vaguely defined arguments in pages of calculations ........not to mention the annoying contradictory footnotes...."

      Wow, if you're having trouble figuring out how the Insurance calculations are carried out, then that leaves little hope for the rest of us 'customers' to figure out how to lower our premiums...

      It also shows that the insurers probably want to charge more no matter what you do.

      You really should post their formula you know....

    4. Re:he's right by qwijibo · · Score: 3, Interesting

      Are there actually companies that write proper specs? I've only been doing IT for 19 years and I have yet to find any place where it actually happens. It's something I've always heard of, but never ran into anyone who had actually seen it happen. Generally, I've found the organizations least capable of writing specs to be the ones most likely to outsource, not the other way around. I think the idea is that if you don't know what you're doing, you may as well pay as little as possible since you already know you're going to fail. I agree with that philosophy, which is why I expect to be paid more for projects that people want to succeed. =)

      The real goal is to ensure that the developers and users/customers are trying to address the same problem. The specs/requirements/design phases are just ways to document everything so that when it doesn't happen, someone can point to a document and said "this is what you said you wanted, pay us". It's a legal CYA. This is why it's more important to have these documents when the users and developers aren't part of the same small group of employees.

    5. Re:he's right by DudeTheMath · · Score: 2, Insightful

      No, it doesn't "leave little hope". What it means is that GP isn't up to the job. What he's talking about is part of my job, too (turning pages of actuarial documentation into business calculations). GP needs to get erself some training so that what e thinks are "vaguely defined arguments" suddenly reveal themselves to be well-known, precisely defined shorthand for (occasionally) complicated actuarial entities.

      --
      You save only 59 seconds over 8 miles by going 75 instead of 65. Do you really have to pass that guy? Do the Math!
    6. Re:he's right by Moggyboy · · Score: 1

      Normally, I would agree with you, but being informed on actuarial terms is not my business. My business is providing design, implementation and maintenance on software projects, usually over short periods of time (3-6 months) and in varying industries. In the past four years I've designed and implemented software in the clinical sciences, health sciences, construction, telecommunications and insurance industries (successfully I might add), so forgive me if I don't run out and do a six month course on each.

      --
      Work smarter, not harder.
    7. Re:he's right by Zarf · · Score: 2, Insightful

      And count your lucky stars that your company is incapable of writing proper specs - if they were, they would have outsourced your job to India or Brazil a long time ago.

      Damn straight. All of us who get specs like these are in a special place. We have to bridge both the Analyst and Programmer jobs. If you are lucky the person who writes your specs won't go on a power trip and scream at you if you don't write exactly what they put in their word document. If you are lucky you have been given the chance to find the needs, fill the needs, and write great software.

      You might not be that lucky. But, the harder you work the luckier you get.

      --
      [signature]
    8. Re:he's right by geoffspear · · Score: 2, Insightful

      Exactly. Submitter says "I design software..." but in reality he wants someone else to design the software so he can just be the codemonkey who programs it.

      --
      Don't blame me; I'm never given mod points.
    9. Re:he's right by stanmann · · Score: 0, Troll

      If you can't, don't or won't understand the needs of your customers, you'll never meet their needs. You're the guy that gives the rest of us a bad name, and the reason why people assume it's the computers fault.

      --
      Food not Bombs is a nice platitude but it breaks down when you notice that the Bombees are usually well fed
    10. Re:he's right by idontgno · · Score: 4, Insightful

      but being informed on actuarial terms is not my business

      Then you'd better have some damn good and damn accommodating domain experts.

      An analyst's job is to understand the business rules and figure out how they can be sanely implemented in an IT solution. (Or, more importantly, when they can't.) And unfortunately, that sometimes means learning the jargon.

      That's why my general (25-year) experience says that the best analysts are, first and formemost, generalists: capable of quickly absorbing the rudiments of any computable field of human endeavor. If you're doing the systems engineering for an accountancy, you'd better learn the fundamentals of accounting. Automating medical records? Learn medical recordkeeping. Weather forecasting? Heh. I could pass for a forecaster now, in casual conversation, because I've worked on weather data-gathering and forecasting systems so long.

      Obviously, you are one of those quick-study generalists I spoke of, because of the breadth of (successful, I presume) systems you've helped implement.

      That just leaves the problem of customers who don't actually know what they do, at least in enough clarity and specificity to implement as software. That's just a matter of patience and iteration. Prototyping can be helpful here, if you have time. Otherwise, I guess you just have to sigh and assume your first cut will be wrong.

      --
      Welcome to the Panopticon. Used to be a prison, now it's your home.
    11. Re:he's right by Moggyboy · · Score: 1

      Again, I agree with the sentiments of this post, but the specific case I'm talking about can be expressed as a mathematical formula instead of something like "apply loading and commissions here", especially when the people writing the spec are fully aware that I'm a newbie to the industry-speak. Of course there are situations where it is required that you have an detailed understanding of the business to correctly interpret the business requirements, but this is not one of them. Systems I've worked on in the past have required long hours of poring over and clarifying requirements before work commences, and I always leave adequate user and developer documentation. So far I'm averaging two callbacks per project (over the last four years) to fix bugs and provide additional information, which by anyone's standards is a good hit rate. So spare me the "thou art the source of all evil" speech.

      --
      Work smarter, not harder.
    12. Re:he's right by maxume · · Score: 1

      Shop around. Stop smoking, drink less, lose weight, don't get into car accidents(they don't really care very much if you are at fault or not), buy a cheaper car, buy a safer car, buy a car that isn't red, get older, get younger, move off a flood plain.

      The calculations are complex because they combine a large number of factors, and because they are at least a little bit competitive on price(really!). The big insurers printed money last year, but they all took a huge hit in 2005, between Katrina and that other one(even the ones that worked so hard not to pay for water damage that was caused by floods, the jerks). Anybody who accepts that they are mostly honest can get good idea of the insurance risk they present by asking several companies, the price they set signals what they believe. If someone truly thinks it is a ripoff, the alternative is simply not to carry insurance(which very few people seem to do).

      I used to chide my actuarial friend by constantly asking him to tell me when I was going to die. His unfailing response was that it didn't work that way. It takes a special person to be that interested in math that arcane, especially when it is basically only applied in a way that people resent quite a bit.

      --
      Nerd rage is the funniest rage.
    13. Re:he's right by smbarbour · · Score: 1

      We have to bridge both the Analyst and Programmer jobs.

      There is actually a job title for that, Programmer Analyst, and supposedly it's the highest paid non-management IT job there is. Of course, I'm not being paid anywhere near what the title should pay, and I also handle desktop support, database administration, security administration, backup administration, report development, systems administration, etc.

      I am the highest paid non-management IT worker in my company... but I'm also the ONLY non-management IT worker in my company.

    14. Re:he's right by jackv · · Score: 1

      Depending the software / user interface complexity this is not necessarily a straight forward procedure. You have to set expectations properly from the outset i.e if you are going to create mockups and then build the software , you will have to communicate this to your boss. The job will take so many days.

    15. Re:he's right by sconeu · · Score: 1

      No he's not. He's saying, "Tell me *WHAT* you want it to do, I'll figure out *HOW*".

      Parent should know the difference between requirements (spec) and design.

      --
      General Relativity: Space-time tells matter where to go; Matter tells space-time what shape to be.
    16. Re:he's right by Richard+Steiner · · Score: 2, Interesting

      Are there actually companies that write proper specs? I've only been doing IT for 19 years and I have yet to find any place where it actually happens.

      At most of the places I've worked, the creation of specs is an interactive iterative process between us (the developers) and the users. Sometimes it starts with an idea, sometimes with a detail write-up, but most of the time the gory details take a little while to mail down and will usually get implemented in code first and then changed over time based on user feedback.

      When I worked at the Unisys Airline Center, they had a fairly good process in place to meet with the customers and draw up a series of general and detailed specification documents based on those meetings, but that was a place that released software on a roughly 18-month cycle between versions, not a live shop with a constantly shifting set of applications.

      I think it's harder to write project specs for a living system -- it's a lot easier to document the system in detail after the fact. If one has the time. :-)

      --
      Mainframe/UNIX Bit Twiddler and long time Windows/Linux Hobbyist.
      The Theorem Theorem: If If, Then Then.
    17. Re:he's right by Wizworm · · Score: 1

      (even the ones that worked so hard not to pay for water damage that was caused by floods, the jerks) Unfortunately that is outside of the scope of normal homeowners insurance. It is paid by Flood insurance which is a federally backed program run by http://www.fema.gov/hazard/flood/index.shtm

      --
      I always thought of Creationism as the Raving Right's version of the Loony Left's Anthropogenic Global Warming-brightmal
    18. Re:he's right by qwijibo · · Score: 1

      Document the system after the fact - that's the funniest post I've seen in weeks. We all know there's no business case for documentation once the system is working and live. =)

      I'm not sure if your 18 month cycle between versions sounds miraculous or scary. It would be nice to actually follow a project through to completion, as opposed to shipping the abortion which is the most cost effective approach. However, I worry that an environment that allows that could ship the same quality, but have a lot more pointless methodology that makes 18 months the minimum cycle time.

      I actually have worked on requirements and design documents with an outside vendor, but it never sat right with me that both documents read like feature lists of the products the vendor wanted to sell us. In cases where we needed something that contradicted the product's capabilities, we compromised and settled on a way of wording the requirements so that they specified the product's existing capabilities. I never understood how taking someone else's proposal verbatim was a compromise, but that's probably the lack of vision that is holding me back from upper management. =)

    19. Re:he's right by maxume · · Score: 1

      I was being ironic. There is nothing unfortunate about the coverage being 'outside the scope of normal homeowners insurance', no one in private industry is interested in taking on those kinds of risks, and so they don't offer insurance against it. The disconnect between what people expect from insurance and what it actually is is rather unfortunate though, and I really wish that government in general was a little less willing to reward people for stupid.

      --
      Nerd rage is the funniest rage.
    20. Re:he's right by AuMatar · · Score: 1

      Job titles mean jack squat. You do what needs to be done. I have never had a programming position in which I wasn't a coder, architect, analyst, etc. As a programmer your job is to write the software your company needs. You need to be prepared to do any of those steps, regaurdless of title.

      Now money is another thing- if you aren't getting paid what you think is fair for your experience/skills, ask for a raise or look for a new job. But don't expect that things will be any different elsewhere.

      --
      I still have more fans than freaks. WTF is wrong with you people?
    21. Re:he's right by Hognoxious · · Score: 1

      You need to be prepared to do any of those steps, regaurdless of title.
      ... or your experience, training & ability.
      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    22. Re:he's right by Bamafan77 · · Score: 1

      "Absolutely. Get your ass off your chair, walk over to the users, and talk to them about what they need. Then write yourself a detailed spec if you feel you need it. Then turn that spec into some paper-based mockups and walk the users through it. Then make any corrections needed. Then write the software.

      And count your lucky stars that your company is incapable of writing proper specs - if they were, they would have outsourced your job to India or Brazil a long time ago."

      If there were a once-per-year +20 mod, I'd give it to you right now, KDan. This is SO on the point on so many levels.

      If you are operating inside a company Intranet environment or you're consulting, THIS is what you need to be doing. And as KDan said, don't cop an attitude if your users can't seem to do these things. Interacting with user is your biggest value-add. They need you right there talking to them and helping them face-to-face. Otherwise, yes, your company may as well ship your job overseas to some offshoring company for half the price.

    23. Re:he's right by SavvyPlayer · · Score: 1

      Which would be gained via proper preparation, i.e., seeking out the requisite training, mentoring, study materials, etc., right?

      To your point I would agree that one does not simply unilaterally implement a new project methodology, regardless of project size, and regardless of experience, training or ability. Any solid methodology will involve stakeholders across the organization, stakeholders who will need to form an understanding of, and an appreciation for the proposed change. With this appreciation, an IT practice should get the funding needed to directly implement, train, hire or outsource the proposed role(s) as needed.

    24. Re:he's right by Anonymous Coward · · Score: 0

      You want to create specs for users and ,at the same time, able to manage all the specs in a software-driven way? See how it is done for Ubuntu's Feisty Fawn's specification: https://launchpad.net/ubuntu/feisty/+specs The nice part of it is the use cases and peer review. Brilliant! No need to be so detailed like programming codes and such. Be simple for your peace of mind....

    25. Re:he's right by devonbowen · · Score: 1

      There is, in fact, at least one company out there that writes good specs. I had the pleasure of working a few contracts for them. I never had more than one or two small questions about what they sent me. They sent it, I wrote it, they paid me. Their customer always got it on time and with no surprises. It was surreal.

      Devon

    26. Re:he's right by Hognoxious · · Score: 1

      seeking out the requisite training, mentoring, study materials, etc., right?
      Except for the "no time for training - we need you to do it - now!" factor. Then it still needs experience to develop those skills - assuming he has an aptitude to start with. AuMatar's answer came over a bit gung-ho and with more than a hint of arrogance.
      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    27. Re:he's right by Richard+Steiner · · Score: 1

      Document the system after the fact - that's the funniest post I've seen in weeks. We all know there's no business case for documentation once the system is working and live. =)

      Commercial software development for external consumption is VERY different from in-house software development, both in terms of the nature of said development (different lifecycles and methodologies), and in terms of the nature of documentation required.

      My Unisys ADSC example was an example of a mainframe software house releasing a product version by version to several concurrent customers on a lengthy release cycle.

      However, most of what I've done is in-house development work.

      I worked on flight operations systems at Northwest Airlines for ten years, and we generally created two types of formal documentation, both of them after the fact:

      (1) End-user documentation. This was created by the business analysts and end user reps, not by the programming staff. Screenshots, error messages, common "user manual" stuff.

      (2) Programmer documentation. Every program module, subroutine, and file was documented in great detail for the programming staff.

      The latter set of documentation was *important* -- the system was started in 1966 at another airline and grew as a living system over 20 years before we got our hands on it, and we were just starting to learn about it (through the very extensive technical documentation we were provided by the other airline) and had just started doing our own development and support work in 1988. The system is still running today, and will likely be running in another ten years (my guess).

      Because of very complex nature of the software and its lengthy past and (assumed) future history, we fully appreciated the need for having complete technical documentation available for all of the changes we made to the system. If it wasn't for the fact that UAL had such a culture with their UNIMATIC system to begin with, our own cutover would have been a real PITA...

      --
      Mainframe/UNIX Bit Twiddler and long time Windows/Linux Hobbyist.
      The Theorem Theorem: If If, Then Then.
  2. an unrealistic ideal by listening+to+triplej · · Score: 1

    This is the kind of problem I always run into, websites, databases, you name it.

    It would be great to be given a comprehensive and accurate spec for development, but in my experience it just doesn't happen! Maybe if your working for some large development company - where it is someone else's job to develop such a specification, you may be lucky enough to experience such bliss, but elsewhere you can just forget it.

    More and more I am learning that it is just easier to do everything as best you can, using your own judgement, doing all the information gathering yourself. If what you do is not what is wanted, then just make the changes. It might suck, but that's how it goes.

    1. Re:an unrealistic ideal by Mountaineer1024 · · Score: 1

      On my last major project I was handed a detailed spec which I went and discussed with the client.
      Out of that discussion came spec 2.
      I started developing based on spec 2 but when we demonstrated some early milestones we suddenly had spec 3.
      My bosses are starting to get annoyed by this point, leading to spec 4, which is being implemented DESPITE the client pointing out things that would have led to specs 5 and 6.
      It's a crazy old world when the client doesn't really know what they want, or how to describe it in any usefull manner.
      Of course, I certainly wouldn't want to be doing the clients job either. :P

    2. Re:an unrealistic ideal by cyclop · · Score: 4, Insightful

      I am by no mean a professional developer, however I develop a data analysis application that my collegues use in my lab (I hope to release it on Sourceforge soon). I do it not only for *my* data analysis, but also for other kinds of analyses, so I discuss "specs" from my collegues and implement them.

      What I found is that when they are in front of the app, after a bit of usage they think "could you add feature X?" "how can I do Y?" and so on. I implement X and Y, and only then they ask "oh, you did Y? So why not Z?" etc. So the spec becomes dynamic, in the sense that only when they see a milestone accomplished new possibilities come to their (and my) mind. It's a climbing process. I don't know if it's the same also for pro developers.

      --
      -- Patent no.123456: A way to personalize /. comments with a sig attached to the end.
    3. Re:an unrealistic ideal by Diomedes01 · · Score: 4, Interesting

      What I found is that when they are in front of the app, after a bit of usage they think "could you add feature X?" "how can I do Y?" and so on. I implement X and Y, and only then they ask "oh, you did Y? So why not Z?" etc. So the spec becomes dynamic, in the sense that only when they see a milestone accomplished new possibilities come to their (and my) mind. It's a climbing process. I don't know if it's the same also for pro developers.

      If you are lucky enough to live and work in an environment that allows this, then it is, IMHO, the absolute best method for developing software. Now unfortunately, in much of the world, and especially at larger companies, very rigid software development practices are followed that make this sort of agile, iterative development difficult or impossible. I am lucky; I work at such a company,and work directly with a group of developers who use a very rigid, unflexible system; we don't see the product until it's been completed based on the spec - any iterative feedback I or my colleagues has is worthless, and would have to be done to fit into the next quarterly release cycle. Luckily, I also do my own development for some internal departments, and am given the freedom to work in a more agile manner.

      --
      "To hope's end I rode and to heart's breaking: Now for wrath, now for ruin and a red nightfall!"
    4. Re:an unrealistic ideal by cyclop · · Score: 1

      If you are lucky enough to live and work in an environment that allows this, then it is, IMHO, the absolute best method for developing software.

      Being an "amateur", well, not always, because more often than note I had to refactor to allow things that it was never intended to do first. As of today I'm writing a plugin architecture and I'm rewriting the code to be everywhere as elastic as possible. Yes I should have done it first, but I'm not a pro developer and this is a good lesson I'm learning...

      --
      -- Patent no.123456: A way to personalize /. comments with a sig attached to the end.
    5. Re:an unrealistic ideal by PhilipMckrack · · Score: 2, Informative

      In my experience this has always been the case. Some people are blessed with the ability to take what is on paper and visualize how it will function in reality but I don't work with anyone like that. No matter how much I drill down specs on paper and work things out, once development starts there are always changes. The best you can do is roll with it and develop the product they ultimately want. From the start write software that is easy to modify. Lucky for us, the client that usually has the most changes for me also pays us by the hour so it works to our benefit.

  3. Well... by Anonymous Coward · · Score: 2, Funny

    Step 1: Export those Word documents to HTML
    Step 2: Place HTML documents on webserver, hang around on slashdot until deadline and claim all their requirements have been fulfilled.
    Step 3: ???
    Step 4: Fired!

  4. Systems Engineering by MichaelSmith · · Score: 4, Insightful

    Its called Systems Engineering and its a whole other profession. For a large, complex system like the ATC systems I work on syseng could easily account for 30% of your staff. Remember that getting the design right in the first place it the hardest part.

    The only way I can think of the convince the "sales" people who apparently run your site is to create a really big stuff up and document it in advance to make them culpable. The problem is that they will probably just get rid of you when they respond.

    You could try a kind of passive-agressive approach. Keep misunderstanding them. A bit like a monty python sketch. Don't go so far that they really get angry. Judge it so they come to their senses and start to write down exactly what they want.

    Isn't there an old adage: The user got exactly what they asked for but not what they want.

    I think you are screwed. Sorry. I have been in that situation before.

    1. Re:Systems Engineering by JonathanR · · Score: 2, Insightful

      If you know what detailed and accurate specs are, then you'll just have to sit down and write them. Bear in mind that this will involve a lot of interviewing of the prospective system users, to discover and document what they do now, and figure how best to implement it in your new system. I hope you've budgeted for this process in your estimate.

    2. Re:Systems Engineering by Mikkeles · · Score: 2, Insightful
      This is correct. You require someone to fill the role of domain expert (aka subject matter expert) who can provide clear requirements of what has to be done and guides a UI expert in how the users are to interact with the functionality. If you have to fulfill both roles and don't know the users' business, then the system will probably be a turd regardless of how well the software is designed and coded.

      No, it's not necessarily your fault; however, programmers should become familiar with at least one area in which they intend to work.

      --
      Great minds think alike; fools seldom differ.
  5. Something I struggle with as well by myurr · · Score: 2, Interesting

    This is something that I also struggle with, so I'm very interested in any tips 'n' tricks that others can supply. The only useful trick that I've found helpful in the past is to take an iterative approach to the documentation, repeatedly sending drafts to the interested parties and encouraging feedback. Often their problem is that they don't know what they want, only what they don't want - so starting to lay out some options before them helps them make decisions on what they would like to see. Start at a high level, and slowly drill down on the detail - making assumptions where necessary to keep the process moving, but always verifying those assumptions with the interested parties.

    1. Re:Something I struggle with as well by Anonymous Coward · · Score: 0

      ...but do they actually read your drafts or do they just fix the typos and not focus on the content?

      I have written many specs and interface documents but no one seems to read them or use them.

    2. Re:Something I struggle with as well by Diomedes01 · · Score: 2, Insightful

      I've found that you can iterate on a design document all you want, and create nothing but churn. I have found that it's far better to iterate with an actual prototype or mock-ups, because users don't think the same way looking at a sheet of paper as they do looking at an application. I've started using Ruby on Rails or PHP to do quick and dirty prototypes for our users (most of our internal intranet sites are Servlet/JSP based, but it's so painful we only want to do that piece once). Lately, my management sees the functioning prototype and says "hey, we're done" and has me polish it up and then move on to another project. The prototypes end up becoming the final app. I'm not sure how I feel about this; the "final" product (in my mind) never gets done, butthe users are happy... which I guess at the end of the day is the most important thing.

      --
      "To hope's end I rode and to heart's breaking: Now for wrath, now for ruin and a red nightfall!"
    3. Re:Something I struggle with as well by Dan+Ost · · Score: 1

      Don't send them the documentation, send them an application that they can play with. Then, based on their feedback, write you're own detailed specs and update the application accordingly. As time goes on, your application will begin to have all the fleshed out features that the user needs, and, since the user was involved from the beginning, they'll be familiar with how the app fits into their work flow (this should keep them from asking for radical or contradictory changes with each iteration).

      Get the user involved as early as possible. Writing software can be fun, but if the product isn't something the user can/will use, then you've wasted you company's money.

      --

      *sigh* back to work...
  6. accurate specs by Patrik_AKA_RedX · · Score: 3, Funny

    You draw a pentagram on the floor and place lit candles at each of the corners, then I'll dig up the old spell book. We should have this covered slightly after the first full moon.

    1. Re:accurate specs by SurturZ · · Score: 1

      I'll bring the cheetos. No way am I getting lumbered with finding a goat again.

  7. Force them to say What, not How by Bloke+down+the+pub · · Score: 5, Informative

    I try to get them to tell me how they would do it with a pencil and paper. They won't anwser the question as asked, of course. They'll say "I need some trancaction where I can put..." or "there needs to be some file where..."[1] - at this point you interrupt and ask them, again, how they would do it with pencil and paper. Eventually, you'll get to the answer. Then you, the developer/analyst, should be able to work out how to do it.

    This forces them to concentrate on the what, not the how. You'd hope people would have the ability to intellectually grok the difference, without such a trick. You'd be disappointed.

    [1] To them, file/screen/transaction/table/program are all synonyms. Never, ever, trust their terminology.

    --
    It's true I tell you, feller at work's next door neighbour read it in the paper.
    1. Re:Force them to say What, not How by cpuffer_hammer · · Score: 2, Informative

      Right on, I like to say pen, note cards, a calculator, and maybe a clock. I then observe the process. Only then do I write an initial specification. I take that back to the customer for their review. If they have questions I determine if the question is about the specification, the process, or a lack of understanding. Then we make corrections and improvements.

      I also ask questions to determine if the customer understands the specification and the process it describes.

      The customer then has to agree to the specification.

      Then work can start on the code. If during the process there needs to be a change, if I or the customer finds a problem or wants a change or feels money can be saved if something is done a different way, this process is repeated to create a change order.

      As to questions, I always try to ask questions that do not have yes/no answers. For example (If I was working for a rare coin shop) when a new coin is bought by the your coin shop what happens to it next? What should happen to it? Or after the specification has been written, what will you do with a new coin based on this specification?

      Yes, you may even have to help them change practices and policies. If you make this a value added, sell it as a additional benefit of automation or reautomation. (Rare coins shop again) when you add the new coin to the inventory right away the system will check it against the "customer coins wanted list" and you may be able to flip it (pun intended) to a customer who wants it.

      There will be more than one contract: your employment contract, the project specification, change orders, and others. Don't skip the documentation.

    2. Re:Force them to say What, not How by mgblst · · Score: 2, Insightful

      Do you like meetings, because the only way to do this propertly is lots of meetings. Talk to them, talk to them some more, go away and think about it, and talk to them again. Talk about how you think it should go. Then get corrections. Ask lots of questions.

      WHen you start to get an idea, produce a document and then, in another meeting, go through it with them.

      This job is more about dealing with people, extracting little bits of information from them, getting them to think about the problem, more than programming.

  8. Impossible by synx · · Score: 5, Interesting

    What you think your job is, and what your actual job is are two quite different things. Traditional software 'methodology' is bunk and doesn't work - this is why you are confused.

    You think it works like this:
    - User knows what they want
    - They write it down
    - You...?
    - Programmers implement it (probably wrongly)

    If you consider your job more like an architect, then you will see the flow is really more like:

    - Users think they know what they want (maybe)
    - They can tell you what they DONT want
    - You interpret their needs/desires in to a design and spec
    - Programmers implement it (probably wrongly, but nothing is perfect)

    If you think about what architects do for their clients, they figure out roughly what the client wants (house, building, garden, etc) and various parameters specified and unspecified in fuzzy things (building code, safety margins, design principles, aesthetics, etc). They then produce a number of different designs and design ideas to run past the client. Iterate a few times and then once they have sign off, build it.

    If you were required to write some 300 page doc about the house you want, you'd be finding a new architect. Likewise, make life easy on your customers. I'm sure they have pre-existing documents and references regarding the accounting rules they need implemented (I assume you are familiar with accounting - if not, why the hell are you building it?!). But as for the UI and other software design features, most people just want something that (a) works (b) well (c) usable (d) does what they need. Meaning, don't ask for label or window placement.

    If you have a RAD tool such as interface builder on OS X then you can create semi-functional mocks easily. I'm sure .NET has something similar.

    1. Re:Impossible by mgreider · · Score: 1

      In line with the parent poster, this is really where agile development and prototyping can really help out. Yes, it is tough to get specs from an end user, and if you try to sit down and write technical specs with them, you aren't going to get very far. Likely, they will rush through or only think of half of the functions that they really need. Instead, observe what they do. Observe their obstacles and roadblocks. Then, begin to prototype. It doesn't have to be super detailed, but users tend to know it when they see it and can work actually work with it enough to feel how it will help/hurt them.

      As Mr Burns said, "I don't know what I like, but I know what I hate ... and I don't hate this".

      Quite prototypes with many frequent iterations will help you flesh out the technical specs that you need.

      --
      -- Best Greetings Cards Ever :: www.sm-mancards.com
  9. Lazy by Anonymous Coward · · Score: 0





    Why don't you have the users write the program as well? Your boss is right. Do your job. You should be fired.



  10. Yes. This is hard. by WasterDave · · Score: 2, Interesting

    obtaining accurate specs for these programs has become a huge challenge ... When I asked my boss (the head Sales manager) for specs, he responded saying that it was my responsibility to determine what was needed."

    You're trolling, right? I hope so.

    Yes, it is hard. Much harder than actually writing the code. Yes, it is your problem. Software Engineering is a profession. That's why you and I get paid the big (in theory) bucks ... to make hard things your problem. And solve that problem.

    Without going into too much depth the process you have described (accurate specs, make software, test software against spec) is known as the waterfall model and is famously difficult to do for non-trivial projects. Can be done, don't get me wrong, but very very hard. Better, probably, would be to take an iterative approach: Take the word doc and bash together a prototype (RealBasic, Ruby on Rails, whatever); drop the prototype in front of the users and make notes as they say "nooo! not like that, it needs to do X, Y and Z"; feed back into the prototype and try again. Finally use this prototype as a "living" requirements document. The hard part is persuading the pointy haired types that that prototype is, in fact, not the completed piece of software. Yeah, good luck with that.

    Not wishing to sound offensive but it sounds like your company needs to hire someone with more experience to act as a project manager. There's nothing wrong with writing code to spec (no matter how it's translated) and letting it be someone else's job to keep the project on track and ensure the users get what they want. And, in case you hadn't noticed, this job is hard f'kin work.

    Dave
    --
    I write a blog now, you should be afraid.
    1. Re:Yes. This is hard. by Bloke+down+the+pub · · Score: 1

      Better, probably, would be to take an iterative approach: Take the word doc and bash together a prototype (RealBasic, Ruby on Rails, whatever); drop the prototype in front of the users and make notes as they say "nooo! not like that, it needs to do X, Y and Z";
      That's the perfect approach, if your sole goal is to find what their favourite colour is.
      --
      It's true I tell you, feller at work's next door neighbour read it in the paper.
    2. Re:Yes. This is hard. by rikkus-x · · Score: 1

      That's the perfect approach, if your sole goal is to find what their favourite colour is.

      Which is why many mockup tools specifically try to make the mocked-up screens as 'functional' (read: ugly) as possible, to stop people saying 'I think I'd prefer it in minty buff'

    3. Re:Yes. This is hard. by ivano · · Score: 2, Interesting
      It's not up to him to make all the decisions since it's not him that is taking the risk if the thing doesn't give the right answer or says the transaction is done when it hasn't. You want him to make the decisions that people higher up should be. Decisions need to be made by the person who has the risk. Sure testing, documentation, hell, even code-writing is his job, but then to insult him about his abilities and then talk about how fucken difficult the thing is is a bit back-handed.

      You even mention him needing a good project manager (PM). Well if he hasn't got a PM then wouldn't the advice be "get a good PM" (not just calling him a troll). I've seen too many projects die because the software engineer is a "yes" man. "yes, I can do that", "sure, i can fit that in". Whenever I see a developer do that I worry. Because if he's saying that to me he's probably saying that to all the other PMs and bosses and so wasting time on projects he's not allocated to. So the guy works day and nigh and on weekends and when the big roll-out comes he's so crashed and burnt he can't even think straight let alone fix the last few bugs.

      Your job as a software engineer is to also stand your ground, say, "*You* need to prioritize the tasks you want me to do", "*You* need to give me the financial algorithms in a way I can implement them" etc etc. That's what's fucken hard. The other shit is easy :)

    4. Re:Yes. This is hard. by Hognoxious · · Score: 1

      GP was joking I assume, but many jokes are based on truth. There is a tendency to focus on the external appearance. I don't know whether this is because it's easier to say "put it there" or "make that green" than to actually think and articulate "I want to able to search based on name, zipcode and date of last order. Or any combination of those... and the date must be +- 4 days. Working days..."; it might just be plain human shallowness.
      I was at a client once, not directly connected with it but they were supposed to be developing a CRM system. I knew one of the developers and he basically told me the design team had gotten as far as the screen layouts and more or less given up.

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    5. Re:Yes. This is hard. by Dan+Ost · · Score: 1

      Fortunately, the appearance is the easiest thing to change. You can put a different interface in front of the user with each iteration without having to make any changes to the backend. Of course, by doing that, you keep the user from gaining as much familiarity with the app as development progresses (which usually hurts their ability to give meaningful feedback).

      --

      *sigh* back to work...
    6. Re:Yes. This is hard. by walt-sjc · · Score: 1

      GP was joking I assume, but many jokes are based on truth. There is a tendency to focus on the external appearance.

      I once worked with a new-hire programmer who had been asked to prototype some data-entry screens... He ended up demoing a UI with pink text on lime green background. When asked why he chose those colors, it turned out that he was color blind... He was taken off UI projects and put on back-end code :-)

      But yeah, I agree with the statement that the customer usually focuses on how things look rather than how they work.

    7. Re:Yes. This is hard. by Hognoxious · · Score: 1

      It doesn't matter how easy it is to change, it's still a distraction from what really matters - the functionality. The original question was about an accounting system. You can iterate 200 times with every shade of sky-blue pink with orange dots. But if you don't know up front the difference between a debit and a credit, and that they should balance, you won't know at the end either. Because the users won't tell you.

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
  11. Become an analyst, and hire programmers by cerberusss · · Score: 4, Funny
    Become an analyst, and hire programmers. Then:
    1. Don't make requirements anyway. Demand that they organize and create use cases and make them code the whole thing from there.
    2. If that's not possible, let a web designing agency do screen layouts. Then demand they only talk to the agency. Web designers are easy to talk with; they don't bother with stupid details. Actually, they don't bother with anything but the screen layouts.
    3. If you really must create requirements, create documents in PowerPoint. Make high-level, short and non-descriptive requirements. It's quite easy to design a system when you're in orbit instead of both feet on the ground.
    4. If you haven't driven the project into the ground, create documents in Word. Word offers fantastic opportunities! Use track changes, nested tables, extremely large tables, bizarre macros, hidden notes/comments, etc.
    5. Wait with submitting for review until you have a nice stack of documents. It's so much more economic (for you).
    6. Do NOT refer to any other requirements. Just copy/paste and then make small changes.
    7. Require prototypes in VB. Later, you can ask them what's taking them so long.
    8. They want to MoSCoW your requirements. Conduct several meetings on hot, sweaty days and slowly but surely make them understand that each and every requirement is a must-have.
    9. Make it difficult to let them get the latest requirement. Make it easy to get confused with old versions.
    10. Make circular requirements. But don't make it too obvious: make a chain of, say, 10-20 requirements and only THEN refer back to the first one.
    11. Make the versioning consistent with the 'Naked Gun' movies: 1, 2, 2-and-a-half, etc.
    12. Never uniquely identify requirements! That way, it's too easy for analists and developers to refer and to maintain them.
    13. Make sub-requirements that are sometimes numbered, sometimes with characters, and just for the hell of it, drop in some bullets, too! NEVER, EVER make it possible to sort the requirements in any way. Make sure to use the auto-numbering in Word, but sometimes just type them in yourself!

      123. This is a major requirement.

      123.1. This is a minor.

      123.01A.1. Please refer to 782.5.1¾.1A.

    14. Hide major requirements in a very deep nesting:

      123.5.1.A. This is a MAJOR requirement.
    15. Requirements should contradict each other, but not too obvious:

      78.a7.A. A history should be kept for all items. Never should any item be permanently deleted.

      ... skip a version and 300 pages ...

      342.8. Wullywuz must always be permanently deleted.
    16. Make sure it's hard to reach you. Go live in another country. A different timezone is even better! Convince your boss to outsource to an offshore company, which is easy, since it's all the hype these days.
    17. Include database tables in your requirements.
    18. When the project has already started, make major changes. But first talk your boss into thinking that the system without that particular change is basically worthless.
    19. ???
    20. Profit!!!
    --
    8 of 13 people found this answer helpful. Did you?
    1. Re:Become an analyst, and hire programmers by $RANDOMLUSER · · Score: 1

      I'd be laughing if I wasn't crying. Brilliant. Bravo, good sir.

      --
      No folly is more costly than the folly of intolerant idealism. - Winston Churchill
    2. Re:Become an analyst, and hire programmers by Mark+Hood · · Score: 1

      You are my first manager, and I claim my five pounds :)

      Great write-up, but you missed one:
      123. This is a major requirement.

      123.1. This is a minor.

      123.01. This is a critical one, note that it's NOT the same as 123.1, or 123.10.

      Mark

      PS now just use Word for the requirements doc, and some requirements are auto-numbered as paragraphs so they move, and others aren't, so you can easily get:

      1. Introduction
      2. Requirements
      2.1 Important requirements
      2.1.1 Requirement 1.
      2.1.2 2.1-Requirement 2.2 ...

      --
      Liked this comment? Why not buy me something nice
  12. Forget it by Moggyboy · · Score: 4, Insightful
    After working in the industry as a consultant for nearly 10 years, I can honestly say that none of the following has ever occurred:
    * I've received a specification for a new project that accurately tells me what the program should do, and doesn't assume prior knowledge of the entire business;
    * I've read the original specification for an existing project that matches the way it's actually been implemented;
    * Management have believed me when I've informed them that either of these conditions are occurring and are preventing me from doing my job in a timely, effective fashion;

    The lesson to be learned here is that there is no tried-and-true methodology that works across the board in IT, and thus there is no established framework for non IT people devising specifications for IT people. The problem is always going to be that each person in a business is so far down their own specializing holes that they forget how much people in other departments know or don't know. I liken it to teaching someone how to drive a car after you've driven for many years - after a while these things become ingrained in you, to the point you forget that your pupil doesn't know to hit the clutch before changing gears. CRUNCH!

    --
    Work smarter, not harder.
    1. Re:Forget it by ivano · · Score: 1

      I wish I had mod points to give. A tip of the hat to you.

  13. It's a dialogue. Not a tasklist by 91degrees · · Score: 1

    While it's nice if the customer knows exactly what they want, the only people who can really do this well are usually software engineers. A lot of the time, working out specs takes me as long as writing the software.

    People really really don't understand software. It's a form of magic to them. You need to find out what the inputs and outputs are, what the behaviour should be in specific cases, and gradually refine a spec from that.

    This sort of problem has caused a lot of expensive IT white elephants. Some of the more successful companies seem to have an intermediary to operate as a translation layer between the developers and the customers. Or to put it into non programmer terminology, to translate the requirements into geek.

  14. And parent comment is right, too. MOD PARENT UP! by Futurepower(R) · · Score: 4, Insightful

    I agree with the parent comment. It's too big an intellectual challenge for most people to think about the details of software design. Users just want their software to work.

    The correct approach is a very loving one. You try to discover what would make their work easiest, and make the software do everything software can do. Most jobs require that a person turn himself or herself partly into a robot. That's wrong. If a machine can do it, a machine should do it.

    Programmers typically say to this, "I just want to be a programmer, not a sociologist." The real world requires every one of us to be a sociologist, or be out of touch with what's happening.

    --
    Is U.S. government violence a good in the world, or does violence just cause more violence?

  15. Use a project model - step out of your dev role. by el_jake · · Score: 1

    Start getting the head manager to define a business case. Then with that define a vision for the project in cooperation with all participants. Scope your vision with the help from the input from the users.
    Make sure you have involvement from management, which is critical for success.

    Define all roles: Who is the "customer" and/or stakeholder, who will test your software for you (you can't do that yourself wi) who will be responsible for managing requirements and who will develop.

    You actually already have the step to iterate trough steps for a solid projectplan.
    Make af mockup / prototype and show it to the project members (users managers etc.) And iterate until you have a working specificatio

    If you don't follow these important steps, you are about to be part of the high statistics of doomed software project without a clear scope and stakeholder involvement.

    --
    In order to form an immaculate member of a flock of sheep one must, above all, be a sheep.
  16. ...and prototype by blorg · · Score: 1

    I design internal software for users that are largely computer-illiterate ...and yet you expect these people to write high quality accurate software specs. Why?

    Parent is exactly right, it _is_ your job. But even then, if you need specs, they are for your own use. There is no point writing thick specification documents for the users as even if they are accurate, they will not be read/understood by the people you are writing the software for.

    So prototype. Start off with a paper based mock-up as sibling poster suggests, and follow up with a complete click through GUI before you write any code. Run through this with them and make sure it is what they need before you actually write the software.

    1. Re:...and prototype by Hognoxious · · Score: 1

      yet you expect these people to write high quality accurate software specs. Why?
      Because they're the business people (specifically accountants) who will use the system, and to build it the programmer needs to know what the business rules are (i.e. what an accounting system should do)? That's what I would call a functional spec, which is an entirely different thing from technical spec.
      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    2. Re:...and prototype by Anonymous Coward · · Score: 0

      Both paper prototyping and specs are useful. Paper prototyping lets you make sure that what you're designing fits the user's mental model (and in some cases muscle memory) while the specification is useful to make sure you don't forget what you have to implement as well as for the QA for the project. If something doesn't behave as the spec says it should, then there's a bug. It could be a bug in the code, it could be a bug in the spec, or it could be a bug in either the implementor's or QA's understanding of the spec.

      Note that paper prototyping is not just for GUIs -- you could paper prototype a command-line application just as easily. As the user "types commands at the prompt" you give them a page showing what output that command generated. If they try a command you haven't written up, just ad-lib it.

    3. Re:...and prototype by AuMatar · · Score: 1

      I'd still write specs. You don't need a 5 inch think binds of specs, but specs have a few good points

      1)If you disappear, die, have a family emergency, quit, etc they still can hire someone else to write from the specs
      2)You won't remember everything. Writing it down will remind you of what you wanted to do a month or 2 from now.

      --
      I still have more fans than freaks. WTF is wrong with you people?
  17. Want a nice introduction to OO Design & Analys by Tanuki64 · · Score: 1

    Try this one:
    http://www.oreilly.com/catalog/hfobjects/
    Fairly simple, fun to read and far more useful than it appears at first sight.

  18. Build a prototype by Lonewolf666 · · Score: 2, Informative

    In my experience, very few users are capable of creating a high-quality spec out of thin air. But when they get to play with a prototype, they will usually find out what they really wanted but are missing in the prototype ;-)

    Be prepared to go through a few iterations, AND you might have to say "no" at some point because once the prototype - feedback - prototype cycle is started, requests for new features will keep pouring in.

    If the above fails (some users will say they dislike the program but cannot tell you what they would like instead), your project is probably doomed. I've seen that happen before.

    --
    C - the footgun of programming languages
    1. Re:Build a prototype by Tanuki64 · · Score: 1

      But when you really build a prototype, don't build a good one. Make the part you are interested in nice and everything else really ugly. Stupids usually cannot distinguish between a prototype and the real deal.

    2. Re:Build a prototype by CaraCalla · · Score: 1

      You don't even need a full, working prototype. Build mock-ups. Sit down with your prespective users and watch them try using your mock-ups. Understand what they are going to do with your product, is it really software they need? Understand what the guy who pays for the project wants. Return of investment?

      You really need to start thinking more like a designer, than a code-monkey. If you like being the code-monkey and if you like coding/engineering to specs, you should probably find yourself another job. Go for a really big company, with design process, and all.

      Should you stay with your current job, you should think about redefining your role. From what you write its unlikely you will ever get something remotly similar to specs from the sales people.

    3. Re:Build a prototype by Lonewolf666 · · Score: 1

      In theory, my current company has design process (much reworked over the last year). It is followed in a rather perfunctory way so far, but I see some improvements creeping in. Also, the people writing the "design inputs" are gaining in experience and might eventually belong to the very few people who can write decent specs.
      There are other reasons to maybe switch jobs, but I will not do it over the lack of design process as it seems to get better :-)

      --
      C - the footgun of programming languages
    4. Re:Build a prototype by computational+super · · Score: 1

      What you all seem to have forgotten is that his boss has already given him a hard deadline for the delivery of the project, and that deadline is next Tuesday. He didn't say that in the summary. He didn't have to.

      --
      Proud neuron in the Slashdot hivemind since 2002.
    5. Re:Build a prototype by oni · · Score: 1

      you might have to say "no" at some point

      what I find far more useful than saying no is going through the whole process for any change. I go to a meeting and someone says, "oh, can you make do this extra thing?" And I say sure. Then I add it to the spec, call the new spec version 2.0, add a week to the timeline, and send the whole thing to them to sign.

      At some people, they step back and realize that they have asked for four years worth of development and they stop doing that.

      Now, after the product is delivered, I give some small leeway for changes or additions. It's my option. But when they keep asking for stuff, I eventually just work up a whole new spec and send it to them to sign, along with a statement that makes it clear how much this is going to cost. At that point, they say, "oh this isn't free? well then we don't want it."

      What's funny is, if you've ever built a house, you know that builders don't put up with this crap. If you tell a builder you want tan-colored bricks, and then later change your mind and say you want red, the builder will laugh at you. If you decide you want french doors, the builder will happily charge you for that. Nobody would expect a change like that to be free.

    6. Re:Build a prototype by Bloke+down+the+pub · · Score: 1

      If you decide you want french doors, the builder will happily charge you for that. Nobody would expect a change like that to be free.
      [Boss mode] Don't try and tell me that moving a few words around on a screen is the same as knocking a hole in a wall! [/Boss mode]
      --
      It's true I tell you, feller at work's next door neighbour read it in the paper.
  19. Re:A lesson learnt by MichaelSmith · · Score: 1

    "Head of Sales" translates to "IQ of 40, fantastic liar". Never ask sales anything.

    Its hard when you don't have enough scale to do things properly. Small is OK. You can work on your own, specify it code it and sell it. Big is good. You can have a pipeline from customer requirements to specification to development to integration and validation. But in the middle is a zone where steps get compressed and people have to improvise. I have been there and its not good.

  20. You want accurate specs? Write them! by arb · · Score: 1

    If you want "accurate" specifications, write them yourself. Interview the users, find out what they think they want, what they actually do and then determine what they actually need. Then you write up a draft specification, present it to them and get their feedback.

    Developing specifications is often harder than writing the code. You need to engage in a dialogue with your users to really elicit the requirements for the systems. Requirements gathering and analysis are tasks that shouldn't be left to the users, especially computer-illiterate ones, you need to do the work to create the specifications.

  21. You boss is??? by simm1701 · · Score: 1

    Your direct report is to the sales manager and you are a programmer?

    Unless you are contracting on a very attractive rate then personally I'd be looking for something else.

    You are going to be in a position where you will get all the blame when things go wrong, be given riduclous deadlines with the assumption that just by pressuring you harder they can get better software faster, no assistance from your manager, vague and contradictory statements of requirements from your users and since they won't be earning comission while they sit down with you for you to slowly guide them through stating what they actually need they will probably resist doing it.

    Oh and while you get all the blame, you probably won't get any of the credit.

    Frankly there is no way I would want to be in that position as an employee - if I'm working as an employee I either want to be the technical/project manager or working under a competant one, with the authority to get the resources needed and the sign offs in advance.

    Of course if I am contracting on a daily rate then as long as they are offering enough I'd put up with most things and do my best to deliver something useful though I would expect it to be an uphill battle.

    --
    $_="Slashdotter";$syn="OTT";s;..;;;sub _{print shift||$_};s!ash!Perl !;s=$syn=ack=i;tr+LLEd+BLAH+;_"Just Another ";_
    1. Re:You boss is??? by Tanuki64 · · Score: 1

      Could not agree more. Just have quit my job because of that. First 'reporting' to an idiot sales manager, which did not understand the concept of 'priority' or anything else, then when the project was almost finished they 'gave' me because of the problems a 'project manager' with absolutely no experience and who could not distinguish between C and LISP even if you shoved him a textbook up his ....
      The payment was ok, but there is only so much someone should have to tolerate.

    2. Re:You boss is??? by Jellybob · · Score: 1

      Agreed - get out of this situation now. I work as a web developer for an design agency, and the projects that go wrong are almost always the ones where our client contact is in sales.

      The worst is a multi-lingual site providing an online product catalogue. The site itself works, but getting translations is a nightmare. For example I was once given an Italian translation for the site, where the only reference point as to which words are translated is the odd German word, an =, and then a long list of Italian phrases.

      The sad thing is I'd sent them a spreadsheet (the common language of sales) containing lots of blank spaces to fill in, clearly they just didn't like the idea of that, but they were still furious when we pointed out we need it in the right format to be able to work it. A year later, we're still going back and forth with them.

  22. Haha.. welcome to the real world :) by Johnno74 · · Score: 2, Informative

    This is typical, get used to it - or get a job where this stuff is left to specialists, business analysts.

    Although I beleive you should go through the pain of requirements gathering at least once, it will make you a better developer.

    I reccommend workshops. Get some users (and preferably also a manager or team leader who can give a different perspective) in a quiet room with a whiteboard for two or three hours at a time, and get them to walk you through the process. Draw diagrams, get them to explain things. Getting what they actually want out of them can be like pulling teeth. They will assume you understand their problems... assume nothing.

    Make sure you do a thourough job, and get them to sign off on the requirements documentation you come up with in the end. If you don't and then end up building something that doesn't meet their needs then its difficult and expensive to change, and you will get the blame.

    1. Re:Haha.. welcome to the real world :) by QuantumG · · Score: 1

      You read my mind.

      --
      How we know is more important than what we know.
  23. User stories by dwerg · · Score: 4, Informative

    We've found that writing User Stories together with the 'client' is the only sensible way to gather requirements. Make sure you develop in short iterations, that way people can change their mind about the software and you don't loose a lot of time.

    1. Re:User stories by Anonymous Coward · · Score: 0

      ... and you don't loose a lot of time.
      What grade are you in? Loose (not tightly bound, not literal) and lose (to mislay, to waste, to not win) are not even close to the same word.

      Other hints you may find helpful: They're (contraction of "they are"), their (third person possessive), and there (a location) are all different and mean different things. "It's" is a contraction of "it is", while "its" is the possessive form of "it" (MS SourceSafe routinely corrupts its database).

      Written communication is a critical skill for software developers, and something that you could clearly use some help with. The only real upside to your (not "you're") ignorance is that I look so good in comparison. *sigh*
  24. Do their job by chris_sawtell · · Score: 1

    Do their jobs for a while to find out what is actually needed as opposed to what they think they want. Sales staff people usually have little idea about what's possible.

    Mock-up a few screens and talk with your temporary coworkers to see if they think what you suggest would be useful.

    Avoid the bosses, they usually have little idea about the finer details of what their staff actually do.

  25. Maybe try a Scrum/Agile approach?? by ivano · · Score: 2, Informative
    Scrum/Agile approach might be what you need since the feedback cycles force your client (the product owner) to think about what you misunderstood and what the product should become.

    I am still surprised that people actually believe that you can have a specification written before even a line of code of written. No one is that smart and thoughtful. You need to break down what needs to be into big chunks and get your product owner to prioritize. What I like about Scrum is that it brings all the shit that usually happens at the end of a product cycle to the front of the product cycle. It forces the product owner to think about what they really need and what they expect (i.e. all the discussions about what the definition of "done" is). The hardest thing about Scrum for developers is for them to underachieve in deliverables. We've been spending all our dot.com boom period saying yes to everything without thinking about the consequences.

    So my advice, whether or not you want to use Scrum, is to have tight feedback loops. Plan weekly demos (Scrum prefers monthly) of what you have done given the specs you've received. If there are disagreements you can then ask what they had in mind instead (which leads nicely to a discussion about what they perceive "done" means).

    But all good methodologies have one thing in common: the product owner needs to work fucken hard too. It can't just be "here you go, I'll see you in 3 months time." Pretty much all methodologies fail when the product owner can't see why they need to work so hard ("prioritize my list of tasks?", "we need to free up these resources?", "can't the project manager do this?" etc etc) my 2 cents worth

    1. Re:Maybe try a Scrum/Agile approach?? by garo5 · · Score: 1

      Mod parent up!

      Agile methods is the way to go. Thight feedback loops, short iterations and all the normal agile stuff ensures that your client gets what he really needs :)

        - Garo

  26. Illustrations of the process by simm1701 · · Score: 1
    --
    $_="Slashdotter";$syn="OTT";s;..;;;sub _{print shift||$_};s!ash!Perl !;s=$syn=ack=i;tr+LLEd+BLAH+;_"Just Another ";_
  27. User interaction by Sobrique · · Score: 1
    Requirements and specifications have been a challenge to developers (software and system alike) since the first '1' met the first '0'.

    First off, is the question of who needs to produce the spec. The answer, sadly, is 'you' - if you're developing it, you need to produce a 'final spec' within the context of what you're able to produce.

    However that's not the whole story by any means. You're also correct in saying you can't really make decisions on what stuff should do, and how and why. That's the really hard part. It requires a collective effort, between you and your users.

    Unfortunately most of your users are also going to be wanting things that 'just work' so you'll possibly need to arrange with various managers that you _need_ your time, and theirs to get an accurate specification and requirements together.

    Now, most will co-operate. You'll be able to talk to your users, and get them to take you through the aforementioned word document with sticky lables, and ask exactly what they mean.

    Remember - your users don't understand 'technospeak'. Even simple stuff like what kind of button - they may not appreciate the difference between a radio button, and a drop down list.

    Unfortunately, if you take away what they said they wanted, and do it, you'll be wrong. Which is why you need to draw up a 'spec document'. It's dull and long winded I'm afraid, but not nearly so bad as having to write and rewrite the thing you're working on, because the communications between you and your users isn't as effective as it could be.

    Ask them to explain it. If there's something that exists already, arrange to watch them doing it, or better yet, use it yourself for a day or two. Draw up your document with what you 'think' they mean, in as clear a manner as possible. And then ask them to look at it, and feed back on correctness or amendments.

    You can't do a spec without their input, but at the end of the day it's you that needs to do the spec - this is both because most end users are not IT savvy enough to put together something that you can use to code from, and because that way you have some control over nearly impossible features you sometimes get asked for.

    Oh, and get manager 'buy in' on you doing these things. If you need to speak to the users for a long time to get it right, don't just assume they'll be able to put whatever their 'real' job is on hold whilst they do. At best, that annoys them, at worst you'll get told they 'don't have time' and you'll be stuck at a dead end.

  28. Users Guide by Anonymous Coward · · Score: 0

    Have the end user organization be responsible for the User's Guide. In THE Guide, they show all the screen mock ups, with details as to how each element works, including calculations. Warn them that Accounting uses a special kind of math that only Accountants are taught and ask for a copy of Quickbooks to validate your calculations for specific scenarios that the users create.

    Unfortunately, Use Cases and other UML techniques are lost on most users. I've been in many, many arguments about "that isn't what a meant" with users. Stick to your guns - "that is what I heard" and please show me where you told use differently "in writing."

    If could be that you are in a no win situation. Update your resume, there are better jobs available.

  29. Face it. You'll never get decent requirements by johnjaydk · · Score: 2, Insightful
    It's a fact of life. Deal with it.

    IMHO the way to deal with it is to accept it and make it part of your process. Since you're talking about in-house development and small to medium sized projects I'll recommend an agile, itterative method. Make a small incremantal release every other week and get your requirements from the user feed-back.

    At the end of the day, users are unable to express what they what they want. They only knows that they have a problem situation and that they want a piece of software that makes all their problems go away.

    --
    TCAP-Abort
  30. Don't ask them, tell them. by idries · · Score: 1

    I find that customers like this are far better at telling you want they don't want, rather than what they do want. This can be very unhelpful as it can lead to your not knowing that what you're making is incorrect until it's actually finished.

    The best approach is for you to spec out the system as best you can yourself, using what little input you do have (perhaps including some glaring errors on purpose ;) This spec will almost certainly be totally unacceptable, but you should then ask the customer to approve it.

    Generally you'll get a whole lot of input about what's wrong with this system that you 'almost' built. Hopefully you can then work from that.

    Of course, depending on just how unreasonable they really are they might get rid of you just because your spec was so wrong ;)

  31. Do you need a complete spec upfront? by StrawberryFrog · · Score: 1

    Some degree of education of the users may be in order, in your case. You need to understand their language and they need to understand yours.

    but in many (possibly most) environments, this idea that a large system can be specified entirely upfront is myth. Business priorities change, problem areas are uncovered, understanding of what the system needs to do is improved (on both the programmer and user side). You may well be in such a fluid a poorly-specified situation.

    Waterfall methodologies are usually broken. Try an agile approach such as scrum instead.

    --

    My Karma: ran over your Dogma
    StrawberryFrog

  32. Story Based Development and Agile by JavaSavant · · Score: 2, Informative

    I've found in the domain I work in (medicine) that story-driven projects tends to work pretty well, both in the way that estimation can be achieved and the degree of cohesiveness with which the "specs" or stories come together.

    1. Identify each potential user of the piece of software;
    2. Use a sample size of that group (e.g. an auto mechanic, auto body specialist, etc.) or proxies for those users, and given the direction of the project (workshop management tool, per se), solicit stories for development. A story should be short and describe a measurable unit of work from the users perspective (e.g. As a mechanic, I must be able to find a wrench in my toolbox.) Define any constraints (The mechanic may not search through the toolboxes of other mechanics) and acceptance tests the user can refer to to see that the story is complete (Any known wrench in my toolbox should be retrievable).

    This approach allows you to avoid the technology and focus on the true business requirements. From this process, you can then size each story, scope the project based on features desired or a given deadline, and then things proceed fairly naturally. This has worked very well for me with Agile and working with small iterations so the users can see the manifestation of the ideas that produced the stories, and provide feedback so that you can add additional stories, remove ones that are no longer valid, and above all else - demonstrate progress.

    Some good books on the subject:

    User Stories Applied by Mike Cohn
    Agile Estimating and Planning by Mike Cohn

    Single author (no, he's not a friend), but both books that have been fantastic for me in terms of taking a fairly unmanaged project group and making it a much less squeaky wheel within my department.

  33. Requirements Solicitation by s31523 · · Score: 2, Interesting

    Your problem is not unique. I attend an Extreme Programming workshop near where I live and a guy by the name of Richard Sheridan came to do a presentation on his companies technique called High Tech Anthropology. It was a great presentation and it is something you might try. Basically, you camp out in the users "Den" and observe them, taking notes and trying to understand how they work, what buttons they push, which user interfaces frustrate them, which things they like, etc. You then take this back and use it to publish your requirements specs. Some XP enthusiasts talk about bringing the customer in and having them work with them team, but Richard Sheridan makes a great point, that this can sometime lead to the users becoming more like engineers rather than the other way around (like the book The Inmates Are Running The Asylum).

    1. Re:Requirements Solicitation by KillerBob · · Score: 1

      Bah. My mod points expired. That's a very interesting idea... one I wish more programmers would follow up on.

      --
      If you believe everything you read, you'd better not read. - Japanese proverb
    2. Re:Requirements Solicitation by s31523 · · Score: 2, Interesting

      I deployed this strategy and it worked quite well. I was developing requirements for a UI on a flight system for the function of flight planning. I traveled a lot with our company plane and road "shotgun" a lot. I started bringing my notepad and jotting down what the pilot was doing with respect to flight planning. I also made several notes on the most common buttons and scenarios based upon what Air Traffic Control was telling the pilot. I flew in good weather, bad weather, heavy traffic, and light traffic. After about one or two months I went back to our spec and said, this is all wrong. The widgets here and here are "cool" from a programmers perspective but the pilots will be annoyed by this. I also made several suggestions to the radio team because one of the most common tasks the pilot did was change communication frequencies for radio navaids and ATC operators. I got a lot of flac for my suggestions, to the tune of mind your own UI, this is what the customer was shown and this is what they are going to get.

      Anyway, my point is, it can work, and probably for more applications than you would initially think. It might just take a little, I hate to say it, "out of the box" thinking.

  34. Is their such a thing? by NinjaTariq · · Score: 1

    Full and Accurate specification, i don't think it can be full and accurate, in my experience it either has everything in it but it is not what the user wants or it has what the user wants but not everything is in it. Should create some programming law about that.

    Don't discount the users opinions, but it is a good software designers job to ask questions and offer suggestions to get around the users weird ideas. But observe them, if you understand the process they are trying to do then you can offer alternatives which might help them, and make their lives easier... They will love you for it, then curse the programmers who can't work to your perfect software.

  35. you're being lazy by oohshiny · · Score: 1

    How do I convey to the users that, in order to develop the software they want, I need detailed, accurate specs?

    It's your task as a developer to get the specs you need and to communicate with users in a way that they can understand. Furthermore, it's never as simple as simply requesting specs from them; usually, you have to build prototypes, collect detailed feedback, and do many iterations of that. Throwing away most of your work over and over again because it doesn't do what users want is part of the job.

    I'd say that 90% of software development is figuring out what needs to be done--getting the specs. So, do your job.

  36. Specs in my job by nevali · · Score: 1

    The way I have to work is that I produce a spec from client meetings and discussions, which then gets sent off for approval. The client knows the the approvals process is important, because anything that deviates from the spec (when it's down to them getting it wrong, not us) will cost them extra.

    We value the spec because it's what we work to, the client values the spec because it's their bottom line. As a result, we work together to ensure the spec is right before we start.

    1. Re:Specs in my job by Anonymous Coward · · Score: 0

      And this makes all the sense in the world in such a scenario as it sounds different then one developing in house. In house development OTOH can be pretty harrowing as well depending on the nature of your bosses or those that you are writing the code for. I've had amazing luck in certain settings getting the jist of what was needed and understanding how things worked. However, there have been others where it was like pulling teeth.

      A recent modification to an in house application was a perfect example of how an initial interpretation of the needs presented to me ended up being way off. And even after having "the client" (if you will) come to see the work on 2 seperate occassions, it changed dramatically two days before it was due.

      While it's ultimately going to be up to you figure out how to work in a given setting, it still pays to get as much knowledge about how the system works in order to come to a good understanding of what a person is after when they say "I need X, Y, and Z".

      Cheers,
      A.C.

  37. Organisation sounds interesting by Bearhouse · · Score: 1

    You are a programmer / app developer, who reports to a Sales Manager, and have to write an Accounting app? But the users can't explain what they do? Easy - look for another job. More seriously, plenty of good advice has been already given. My 2c. 1. Map out the process flow wih the users. NOT what they THINK happens, but what really DOES. Also at this time collect key information such as volumes, number of users... 2. Determine how it could be improved, even without some kind of IT support. 3. Then, map out how a system could help (your job here is to make users aware of possibilites & constraints) Keep it as SIMPLE as possible. Go for the minimum functionality required to do the job. 4. Prototype your work & data flow, then you can work out your DB structure, core logic and I/O. 5. Storyboard it, with dummy screens & reports (suggest you do not waste time writing any code yet). 6. Once everybody has signed off, you can get to work. Keep the users involved regularly, (once per week). Keep asking &checking "is this OK"? But avoid scope & function creep. Finally, dont forget to select tools & architectures that make it easy to add function later, & for easy end-user reporting. The ones you select will depend on your experience & environment, of course...

  38. Re:And parent comment is right, too. MOD PARENT UP by walt-sjc · · Score: 4, Insightful

    Domain knowledge is what makes you really valuable to a company. As suggested above, go and work with the users to figure it out, and then implement it. If anyone wonders what is taking you so long, be prepared by documenting exactly how you spent your time learning the procedures / formulas. That kind of documentation is useful come review / raise / bonus time. Seriously, it can take years to gain high levels of domain knowledge.

    One example I can bring up from my past is designing industrial test equipment used for calibrating mechanical metering devices. I spent a month where I worked side by side with the people who would be using the equipment, 9 months developing prototypes (including all the hardware and software) and ended up with a product that cuts a 15 minute procedure down to 2. Again, I had to work with the users to see how they used the prototypes, and refine the hardware / software to real-life conditions. I even had to consult with a physics professor at the local university to help with some of the complex flow equations (physics is not my specialty, but I know enough to be dangerous... :-)

    Could I have ever expected my users to develop detailed specs? No way - it's not one of their core competencies.

  39. Re:A lesson learnt by KillerBob · · Score: 1

    You're an idiot. Different skillset doesn't mean that somebody is necessarily stupid. Being able to sell the product that you're making is a very important skill... it's what actually puts food in your stomach. Somebody in sales may not be able to write code, but then, how good are you at dealing with the customers? Most of the engineers I know have really shitty social skills, and their sale rate would be a lot less than somebody who specializes in the task.... You might have the satisfaction of saying that you never had to deal with a salesman who didn't grok what you're actually capable of with the code, but at what cost?

    If you have a communication problem with sales and it's causing unrealistic expectations and project goals, then the problem is in part your fault: you're not communicating with them effectively enough to pass the message that something's not possible. Personally, I've never had any problems dealing with sales: most of them get pissy when you say "no. that's impossible." but understand when you say "no, that would be extremely difficult, here's why. it's possible, but not within our current timetable."

    --
    If you believe everything you read, you'd better not read. - Japanese proverb
  40. Direct interaction with actual users by theonetruekeebler · · Score: 1
    Meetings are bad, m'kay? E-mail exchanges headed "I need the specifications for the app" are even worse.

    What you need to do is interact, one-on-one, with (a) the people putting information in, and (b) the people taking information out. If it's the same people, so much the better. But don't go into a stuffy room with a whiteboard -- not yet. Find key users (not managers!) and start by asking them two simple questions: (1) What do you do all day? (2) Can you show me? Every time you see something, discuss it with them until you understand it well, then write it down, right then right there. Ask them what's tedious. Ask them what's important and why. Ask them what happens if a particular step is omitted.

    Take all this back to your own desk and start doing mockups. Take these back to the users for round two, complete with observations like "I noticed that you spend a lot of time matching the numbers on this sheet of paper to the numbers on this other one. It looks like we could merge them together right here." Be prepared to have your design ripped to shreds, but have

    Failing that, call your grandma on the phone and tell her that the users are writing "terrorist accounting software." The CIA, who is tapping your phone, will abduct them and fly them to one of those countries Amnesty International is always talking about, where a Haliburton sub-contractor will gather requirements for you. Six weeks later a New York Times reporter will discover the users wandering a dusty third-world street. The reporter will piece together the whole story into a five-part series that eventually wins the Pulitzer Prize. Part three of the series will be all the sordid details of the software, obtained from an anonymous whistle-blower at the Justice Department. The following spring a book called The Best Reporting of 2007 will be available in paperback, peaking at #237 on Amazon. Buy the book along with Karl Weigers's excellent Software Requirements, Second Edition so that you'll qualify for Super Savers Free Shipping. Using the two together you'll be on your way to award-winning software, but after the awards ceremony, don't accept offers of free rides in unmarked vans, even if they say they have a Wii console in there.

    --
    This is not my sandwich.
  41. There are two types of Software Developer by mrphewitt · · Score: 1

    Type 1 : insists that the user provide them with specifications for their system. They sit waiting for this document and when it eventually arrives they ignore it and the users and write something that doesn't meet the requirements anyway. Eventually these software developers either get put in a corner and ignored or sacked. They usually moan that users are a pain.

    Type 2 : they discuss the requirements with the users and draw up a spec themselves. In constant dialog with the users they convert the requirements into code that implements a system that approximates to what is required. Its never perfect but it does the job. These software developers get respect from their user community and get promotion. These software developers while finding users a challenge to deal with, actually like helping them.

    My advice is to do what your boss suggests and write the spec yourself and talk to the users.

    When I interview software developers I have some major turn offs. The first is developers who complain that users are a pain and those that complain that the system failed because there was no spec or it was badly written. As an employer you need software developers who are pro-active and talk to their user community. Ones who wait passively for users to make up their mind are not worth hiring.

  42. End users, rubber light bulbs, and bare hoses by whitroth · · Score: 1

    1) FIRST: DO NOT INTERVIEW MANAGERS. Interview end users. I can't remember all the times I've seen software that was spec'd by managers who allegedly knew it all, and the end users did everything they could to not use it, or get around it, because it was so hostile, and did *not* work they way that they needed it to.

    2) Sit them down, one by one, in a chair, and bring out the rubber light bulbs, and bare hoses, and beat them around the head and shoulders until you find out what it is they actually need as a result, *not* how it should be done. They used to teach one design method called HIPO charts: get what comes in, and what they need to come out, from them. *YOU* are the software professional; how you get from a to b is *your* job.

    Lest you think I exaggerate in 2), there was a time, at one job, I had a chemist come in and ask me to convert the (dBase) files he had on a disk to ASCII, so that he could massage the data to create a report. I brought them up in dBase, then beat him about the head and shoulders, until he admitted what it was he was trying to produce. Then I asked him how long it would take, if I converted it, and he told me two or three days. I looked at him, and asked if he'd like the same report in two or three *hours*. The tables were perfect. All I had to do was create the query, and format the output.

    So, remember, you get the rules, but *you* have to figure out how to get from here to there.

            mark

  43. the specification didn't say i needed to define a by djmagee · · Score: 1

    yea, nothing new here, the other replies seem to have summed up every way i know of dealing with this problem, but i will say, be thankful you never received such mock-up input screens via fax machine, that can be extremely painful.

  44. Next stop, the unemployment office by Anonymous Coward · · Score: 1, Insightful

    How are you still employed? The users aren't your enemy, they're your customer. How would like it if you went to a tax accountant and he treated you this way just because you hadn't done all of the hard work before you brought your information to him?

    Ignore this poster. He's probably "between jobs" right now.

    If you really want detailed specs from your users then create some forms for them to fill out with specific questions about the aspects you are unsure they need included (like calculations to be performed at certain steps). Better yet, if you give them a proposed workflow diagram with adequate explanation of each step and let them crtitque it you'll end up with a much better idea of what they're asking for. You'll get the added benefit of getting the user to start thinking about how things work outside of their own little specialty. You may learn something in the bargain as well.

    I would have to agree with a previous poster that anyone who expects to only have to do coding after someone else has done the spec gathering should not be surprised when they get notice that their job has been moved to Mumbai.

  45. Not going to happen by Viking+Coder · · Score: 1

    "How do I convey to the users that, in order to develop the software they want, I need detailed, accurate specs?"

    You're absolutely right that it would be a lot easier for you to do it right the first time, if you were handed detailed specs.

    But very, very few companies are willing to pay the expense of getting the specs so correct that developers will build it right the first time.

    So, what do you do? You iterate. A lot. You try to identify the hard parts, and try to get them as clear as you can. If your users could describe the behavior they wanted exactly, they would just code it.

    That's just what a software engineer does - turns desired behavior into a specification so clear that a moron could do it. The computer is supposed to be the moron, not you. Your users are going to give you specifications that are not as clear as you would like, and you are supposed to turn them into specifications that are much more clear (i.e. source code.) That is literally your "value add," and it's why you have a job.

    --
    Education is the silver bullet.
  46. Re:A lesson learnt by TheLink · · Score: 1

    It doesn't matter whether a saleperson has an IQ of 40 or likes wearing polka dot everything. If the sales targets are exceeded and the money is pouring in[1], anything short of significantly criminal is usually forgiven by management.

    It is actually much easier to measure what Sales does, and if a salesperson doesn't meet targets, well it's usually bye bye time. Sometimes it's not even their fault - it could be they are made to sell a crap product (produced by crappy developers ;) ).

    In contrast sysadmins could be reading slashdot all day AND that could be a sign of them doing their job properly - nothing goes down, and anything that has problems doesn't fail immediately warnings get sent in advance, and hardware/software fixes are scheduled.

    [1] The salesperson is selling to people who actually pay. There's a very significant and important difference between people ordering your stuff, taking "delivery", saying they will pay, vs them actually paying.

    --
  47. Never give users a choice. by Jester998 · · Score: 1

    Never give users a choice. They invariable choose the wrong one.

  48. No degree of SE by mgblst · · Score: 1

    Let me guess, you never did a degree, or took any Software Engineering classes. Only programming.

    Working out the specs is one of the hardest processes you will have to face.

    Meetings, meetings and more meetings with the customer (the person who you are designing the app for), asking loads of questions.

  49. Interesting spec writing experience by RPGonAS400 · · Score: 1
    I started a new job in June 1998. After I was there a bit I was told that the software that scheduled ALL production was going to hit a brick wall soon because it was written in "Business Basic" by a former employee and would stop working correctly 70 weeks before Y2K.

    My first exposure to the rewrite of this code was in a large meeting where all the bigwigs were present for a presentation by a consultant who rewrote the PC based software into an AS/400 based system like the rest of our software. After the presentation, the scheduler, who was the main user of the software, cut down the consultant personally and told him his software was crap! Soon after this, I was brought in to be a mediator between the scheduler and the consultant. They hated each other so much that they didn't even meet together anymore. All communication went through me. They didn't even refer to the other person by name, rather using eupemisms like "your friend".

    Here is the kick - the consultant told me when he started on this, he sat with the scheduler for 2 hours and then the scheduler got all huffy and said "I don't have time for this!!! Just write something and if we don't like it we can change it!"

    This was SO different from the job I had prior to that where most users were extremely computer literate and helpful with writing specs. They considered the IT department to be a competetive advantage and not just a necessary evil.

  50. Re:A lesson learnt by Anonymous Coward · · Score: 0

    You know, for a salesman, there were remarkably few spelling errors in there. And I'm pretty sure you didn't write in crayon. You must be the manager of the sales department!

  51. Get a magic button! by RPGonAS400 · · Score: 1
    Once we were in a conference call defining the brainchild of a user who had just come from another company. When we were a few hours into getting the definition of the needs, he blurts out, "Why does this take so long? At my last job we just pushed a button and it was done!"

    For many years the IT department would always suggest getting one of the magic buttons to the delight of all.

  52. Move fast, keep the modules small by plopez · · Score: 1

    Why? If it takes you more than a few months capture requirements for design the business rules will change. You really, really need to have respect for and make the best use possible of the people in 'the trenches'. Don't rely on managers or analysts, they often don't know how work *really* gets done. If there is more than one site, interview people at *all* sites. Different sites often have different needs or business processes.

    Small modules allow 'proto-typing' and feedback. This is a good way to discover hidden business rules.

    If a legacy system exists, reverse engineer it and see what works and what doesn't. In fact, if you reverse engineer the legacy system and find it works well *do not* throw it away. Instead try to find a way to enhance it. Old does not mean useless, it may just need a better UI.

    Be humble, because you are ignorant.

    --
    putting the 'B' in LGBTQ+
  53. knowledge acquisition by israel · · Score: 1

    Depending on the functionality you are trying to implement, this can be a hard problem. This has been addressed seriously in the AI and expert systems arena, where attempting to reproduce processes performed by an expert in some domain or endeavor can be very challenging.

    A number of techniques have been developed to address this problem of acquiring the proper knowledge of a domain expert. These include things like watching people do the task while thinking out loud and analyzing their actions, as well as structured and less structured interview techniques.

    Your problem may not be as detailed or complex as an expert systems implementation, but the issue of acqquiring good requirements is universal, and if you can't get it specified at requirements time, then you need to get it interactively from people that understand the problem.

    Look at the literature in the area of "Knowledge Acquisition Techniques" for more information.

  54. Quickbooks? by dhartshorn · · Score: 1

    In an effort to have some body text, I'll just ask one question:

    Is your task accomplished by simply using off the shelf software?

    OK, and one comment framed as a question:

    Does anyone believe that you could write reliable accounting software without intimate knowledge of accounting rules?

  55. Deja Vu ideas. by Anonymous Coward · · Score: 0

    "The correct approach is a very loving one. You try to discover what would make their work easiest, and make the software do everything software can do. Most jobs require that a person turn himself or herself partly into a robot. That's wrong. If a machine can do it, a machine should do it. "

    Good thing someone wrote an article about it. The reactions are a hoot though.

  56. Re:Use a project model - step out of your dev role by vodhner · · Score: 1

    While it's useful to generate a prototype that your customers can respond to, remember that they will think it's real. So if it seems to work, you may be moved on to another task and leave an inefficient, unsupportable prototype in place as "the real thing". That can be very bad. Might be good to add lots of artificial delays in the prototype. Then you can keep explaining, "this is just a mockup, powered by squirrels running on treadmills; when you like what you see, we'll re-write the whole thing for speed."

    I agree with those who are saying, effectively, that software development is an interactive service. If you want to code no-ops to the hard metal based on rigorous specs, you have to get a job in aeronautic or space navigation software. Anything else is developed impulsively based on customer whims, and you have to learn to enjoy that process.

  57. Don't forget to sit with the end users by UNIX_Meister · · Score: 1

    I was brought in on a large project for a major moving company (you would recognize the trucks on the interstate) where performance problems were killing the business. The shipping industry is very complicated, and the rules and regulations required by the states and by the federal government easily fill several inches of books stacked up. How to codify all those requirements? Anyway, the end-users were seeing such bad response time that they had to add additional shifts in the off-periods to be able to get all their work done. Since it was a very complicated multi-tier environment (db, application servers, citrix, WANs, etc.) I thought I'd sit with the users to see what they were seeing. As the user went through the process of inputting a form from a piece of paper that was filled out by an agent at the customer's home, I was astounded at one point when the user opened up her drawer and pulled out a slide-rule like device that she then did a calculation on just to type it into an input field! Whoever had done the systems analysis of this application had done a really poor job! That really made an impression on me.

    (The performance problem was due to a DBA insisting that he didn't need to pin the SGA of the database in memory).

  58. Accounting Software- Aagh!! by sciop101 · · Score: 1
    You are diving into an abyss.

    Accounting rules do not follow the logic you have been using as a programmer, especially under a full moon during Daylight Savings Time in an presidential election year(Bad Joke).

    Find an accountant you can easily discuss what others tell you. Let him discuss and work with the other accountants about discrepancies. You should concentrate on the product!

    --
    The only thing new in this world is the history that you don't know.[Harry Truman]
  59. Re:And parent comment is right, too. MOD PARENT UP by Bastian · · Score: 1

    As suggested above, go and work with the users to figure it out, and then implement it.

    I take that a step further - don't just go work with the users. Take some time to do the users' work. This is the absolute best way to get an understanding of their workflow - observing is good and also needs to be done, but when you sit down and do all the tasks yourself it becomes much easier to see which parts of their job are annoying, which parts can be sped up, etc.

    At my last job they actually had me doing production work with the people I was designing software for a large portion of the time. This was huge, because it meant that on top of getting a better understanding of how the software I was assigned to work on should behave, I was also able to see spots where new software would be useful and began initiating projects on my own.

    Having had that experience, I'm convinced it's the only way to design software. Otherwise it's a blind men and the elephant problem. People who don't know much about software development can't really provide a decent spec because they probably don't know a thing about software design. People who only hack on code can't provide a decent spec because they only have the a foggy, secondhand understanding of the problem domain. Users and programmers getting together for meetings is an improvement, but only a marginal one because there isn't a whole lot of overlap among their knowledge sets, which is a huge barrier to communication.

  60. You don't by msuzio · · Score: 1

    Congratulations, grasshopper. You are on the path to enlightenment.

    You have to immediately forget whatever you were told about specifications. The real world doesn't work that way, where you get elegant descriptions of exact useful functionality. You're either going to get 100 page documents with way too much detail and a laundry list of features that won't really get used, or what you have right now -- which is, basically, nada.

    The key to fixing this is iterative development. You have to give people something to react to -- then you'll draw out their real needs. Start small, be prepared to throw a few false starts away entirely, and you can build up from there. You don't need the full eXtreme Programming bit of having a full-time customer advocate and specific two-week/three-week/whatever iterations, but those concepts are good ones to model your process on.

    Try reading the Creating Passionate Users blog for suggestions on how to get people actually interested in your project. Once you do that, you'll get the feedback you need, and as you deliver on those suggestions, you'll build confidence from them that will give you the carte blanche you need to start dictating the evolution of this project on your own. Once you're "the goto guy" on "The Project", you're in the sweet spot and basically can't lose.

  61. Re:And parent comment is right, too. MOD PARENT UP by tepples · · Score: 1

    The real world requires every one of us to be a sociologist, or be out of touch with what's happening. What hope is there for people born with miswired sociology circuits?
  62. You need an nteraction designer by puck13 · · Score: 1

    The notion that one person can collect (useful) end-user information and then implement it technically is analogous to asking the same person to design and then build your house. It's possible, but unlikely to be successful for larger projects.

    You need someone who is trained in collecting the user behavior data, understanding what that means, and using that to guide the design (from a user standpoint) of the end product. They will gather information by interviewing and observing the users. This may include asking them what they want, asking them why they want it (what are the actual goals, not just features), observing the work they do, and understanding the greater context in which they do their work. Once they have an understanding of the needs, they will probably create many generations of cheap (perhaps on paper) prototypes that they can use to quickly acquire and integrate user feedback. Once that process has mostly defined the product (or aspects of a product) it can be turned over to you to figure out the technical implementation. (Of course the earlier on in the process that you are involved the more input you'll have on the final design.)

    People who fill that role (or subsets of it) are commonly referred to as interaction designers, user experience architects, information architects, usability specialists, etc. They should be trained in accurate data collection, cognitive psychology, interface design, and a number of related skills. "Web Designers" frequently have a background in graphic design and don't have the rest of the training to make them the right person for this role. Accept no substitutes.

    For more information on what this role is about, check out sites like Cooper, Boxes and Arrows, and OK-Cancel.

    Good luck!

  63. Do you need complete ideas upfront? by Anonymous Coward · · Score: 0

    I use Compendium and Freemind as part of the software development process.

  64. What's your job title? by darCness · · Score: 1

    If it's "software developer", "software architect", "systems analyst", or something of that sort, it's your job to figure out and document the requirements. Talk to your users, watch them work, etc., then write use cases, user stories, or just plain old lists of what the users say the system should do and translate that to specs.

    If you're "just a programmer", then you need to convince them to hire one of the above (or get a new job).

    If you're actually both, which in many companies is the case - then do all of the above.

    There's endless books on the subject, from CMM in Practice to Extreme Programming Installed and everything in between. Go read some.

  65. open format data by Anonymous Coward · · Score: 0

    Did your chemist flagellee by chance want a general solution that he could apply again and again, without firing up dbase and typing in queries again and again? Did you solve the problem or fight the fire?

    Getting data in an open format is very important to getting real work done.

  66. Rapid Contextual Design by typidemon · · Score: 1

    Look it up, the results are astounding. At least compared to crying on slashdot that you have to do requirements.

  67. Re:And parent comment is right, too. MOD PARENT UP by Hognoxious · · Score: 1

    I'm not sure what use sociology would be in designing accounts software. Care to enlighten us?

    --
    Confucius say, "Find worm in apple - bad. Find half a worm - worse."
  68. Mike Cohn by JeremyR · · Score: 1

    I second Mike Cohn's advice. I haven't read his books, but I've heard him speak on multiple occasions, and I find his approach to be eminently practical.

  69. Re:And parent comment is right, too. MOD PARENT UP by walt-sjc · · Score: 1

    I take that a step further - don't just go work with the users. Take some time to do the users' work.

    As you see by my anecdote, that is exactly what I did and hence my original statement implied that. "Work with" can also mean "doing the same work." Note that trying to do the users work without knowing how to do it is going to get you nowhere, which is why you need to work with the user to do the work. How else are you going to learn? Read about it in a book? Search the internet?

  70. Agreed, but... [Re:he's right] by k31 · · Score: 1

    Actually creating technical specs is worth a book in itself; check the article on Joel on Software.

    You can learn the process... and the mockups are actually a good start. You just need to go further and develop the app. by thinking "what happens behind this fascade". Also, if you don't have any formal accounting qualifications yet, get your boss to pay for them, since that's the type of work you're doing... five years later you'll probally be glad you have then when you're... making more money than you can count, or whatever.

  71. Nice niche if you can get it. by Bright+Apollo · · Score: 1

    Unfortunately, in-house software dev rarely rates a usability engineer or whatever rarified form of analyst you propose. I understand the basic issue here, though: the original writer never received the kind of indoctrination you get in a more professional shop. This is not really a knock as much as it is praise for the long-gone development team of AT&T, for example, that had excellent day-one training for new hires.

    We are almost out of analysis for the first iteration of a major internal project, global in scale and scope. We have over 1200 user requirements, and we're going to get more over time. The requirements gathering is always the easy part. The hard part is analyzing them and trying to figure out if we understand what they said a week later. Now try to get consensus among four continents, and you can see that it's really just communication and facilitating discussion. It's no wonder people fail to do it, because it's so diametrically opposed to CS course study.

    That actually sparks a thought (take note!): what if as part of your CS course work you had to take a class that involved lots (and lots) of interviewing people? Would criminal justice departments or psychology departments have that? We could sure use a re-orientation around the human elements of requirements and analysis.

    -BA

  72. Something I struggle with as well-Change. by Anonymous Coward · · Score: 0

    That's what I like about languages like smalltalk. The ability to tweak a running system.*

    *Naturally you have to be careful not to break anything, but that's always been true about any running system. Just keep a copy of the original image and you're ok.

    You may want to give these tools a try as well.

  73. Comment removed by account_deleted · · Score: 1

    Comment removed based on user account deletion

  74. what is your function, exactly? by wikinerd · · Score: 1

    If you are a programmer, you have to have specs. If you are an analyst or architect (or a consultant), you must engage in requirements gathering and business analysis, finding out what your client wants and how they do their work right now. If you work as an employee, consult your job description. Note that requirements gathering is a specialised process, and is very difficult if you have to design software for professional or scientific use (such as accountancy software or engineering applications), so it would be a good idea to cooperate with a specialist (e.g. an accountant) or read some introductory books about accountancy so that you can understand what your clients does right now. Oh, and good luck!

  75. You're lucky... Sort of by GWBasic · · Score: 1

    Your users don't really know what they want. Chances are they view you as some "smart computer guy" who "has all the answers (tm)". They're primarily talking to you because their boss told them to talk to you.

    If you had someone generating requirements for you, (like I have in the past,) he'll become disconnected with reality and give you a document that really isn't useful. You'll build a machine that has 4 tires and a steering wheel, but it won't be a car... He'll assume that a major task is trivial, or that a computer has some magic AI, and thus add requirements that have very little ROI.

    You're lucky, in a way. You have the oppertunity to do rapid prototypes! You can put a prototype rather quickly into your users' hands. By putting a prototype into their hands, they'll be able to give you feedback like, "I need a button to do this," or "this is too confusing." It'll give your discussions a frame of reference, and help quickly prioritize the most important features for success.

  76. Go and see how things are done now. by Anonymous Coward · · Score: 0

    Well, I would go to each area you are writing an app for, and see what the current process is. Ask people if they have any ideas for improvements. If it looks like some info is the same on nearly every form, ask if they'd like some sort of shortcuts for the most commonly used entries. Ask if there's any part they wish was faster and see if you can help that out Then, I'd hack up a prototype with ruby on rails or something -- no security yet, but also ugly and unpolished so some PHB isn't tempted to put this insecure version of the app into production. Show this to the people that'll have to use it, point out it's ugly, but have them test-enter a few points into this (while also using the "old" method) to see if it's workable. Find out if it'll really do what people need. Then polish it up, or rewrite an app that behaves similarly using your preferred language(s).

              Were I work, we get in 100's to 1000's of PCs a week, pull and 3-pass wipe the hard drives, put them back in the machines that are worth it and sell them. Our highers up want full tracking of PCs as they come in matching them to department and ID tag on the computer (despite there being no tracking before they come to us anyway..) We haven't done this yet, it'll require scrapping the POS system (which is written in Access 97, so it probably should be anyway) and installing a system or 2 where machines come in, which we are being given no budget to do. The hard drives themselves are tracked though.. the system is quick and elegant. It's using a web form, php, and mysql. Once the drives are 3-pass DOD wiped, the brand is scanned off a sheet of paper with bar codes for each brand (or typed in if it's a weird brand like Imprimis -- yes, we've gotten drives that old), a 2nd sheet is scanned for size (or typed if it's odd), and then the serial # is scanned off the drive. About 10 keys are remapped to tab so the user can kind of thwack any key in one corner of the keyboard instead of specifically having to aim for tab. At this point, a label printer spits out a label. This is attached to the drive. The highers up seriously were expecting us to this by hand.. yeah, hand-writing 20,000+ digits per week into paper forms sounds awesome.

  77. Re:And parent comment is right, too. MOD PARENT UP by Bloke+down+the+pub · · Score: 1

    Users just want their software to work.
    The problem is, they're incapable of defining what 'work' means. Usually, it equates to ESP or DWIM or both.

    [YACA] Think about a car, it actually has very few features. Press that pedal, the engine speeds up. Move that lever and the ratio between engine speed and road speed changes. I'd reckon less than twenty variables describe it - not counting accessories like the radio and aircon. What's more it's familar - most people can drive, or they've seen someone do it. So for a car, we know what it means when we say it works. [/YACA]

    Any non-trivial software is much more complicated in functionality terms. Especially to a programmer who's trying to build something he's never 'driven'.
    --
    It's true I tell you, feller at work's next door neighbour read it in the paper.