Getting Accurate Specifications for Software? 147
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?"
he's right (Score:5, Insightful)
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.
Re:he's right (Score:5, 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.
Daniel
Re:he's right (Score:4, Interesting)
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.
Re: (Score:3, Interesting)
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
Re: (Score:2)
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 p
Re: (Score:2)
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
Re: (Score:2)
Devon
Re: (Score:3, Insightful)
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 f
Re: (Score:2)
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
Re: (Score:2)
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.
Re: (Score:2)
Re: (Score:2)
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 I
Re: (Score:2)
Re: (Score:2)
If there were a once-per-year +20
Re: (Score:1)
Re: (Score:2)
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
Re: (Score:2, Insightful)
Re:he's right (Score:5, 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.
And parent comment is right, too. MOD PARENT UP! (Score:5, Insightful)
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?
Re:And parent comment is right, too. MOD PARENT UP (Score:5, Insightful)
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.
Re: (Score:2)
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 product
Re: (Score:2)
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?
Re: (Score:2)
Re: (Score:2)
The problem is, they're incapable of defining what 'work' means. Usually, it equates to ESP or DWIM [wikipedia.org] 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
...and prototype (Score:2)
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 poste
Re: (Score:2)
Re: (Score:2)
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.
Re: (Score:3, Insightful)
Re: (Score:2)
Parent should know the difference between requirements (spec) and design.
an unrealistic ideal (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
Re: (Score:1)
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
Re:an unrealistic ideal (Score:5, 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.
Re:an unrealistic ideal (Score:5, Interesting)
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.
Re: (Score:2)
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...
Re: (Score:2, Informative)
Well... (Score:2, Funny)
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!
Systems Engineering (Score:5, 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.
Re: (Score:2, Insightful)
Re: (Score:3, Insightful)
No, it's not necessarily your fault; however, programmers should become familiar with at least one area i
Something I struggle with as well (Score:2, Interesting)
Re: (Score:2, Insightful)
Re: (Score:2)
Get the user
accurate specs (Score:4, Funny)
Force them to say What, not How (Score:5, Informative)
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.
Re: (Score:3, Informative)
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 spe
Re: (Score:3, Insightful)
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 progra
Impossible (Score:5, Interesting)
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
Yes. This is hard. (Score:3, Interesting)
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
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
Re: (Score:2)
Re: (Score:2)
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'
Re: (Score:2)
I was at a client once, not directly connected with it but they w
Re: (Score:2)
Re: (Score:2)
Re: (Score:2)
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 rathe
Re: (Score:3, Interesting)
You even mention him
Become an analyst, and hire programmers (Score:5, Funny)
123. This is a major requirement.
123.1. This is a minor.
123.01A.1. Please refer to 782.5.1¾.1A.
123.5.1.A. This is a MAJOR requirement.
78.a7.A. A history should be kept for all items. Never should any item be permanently deleted.
342.8. Wullywuz must always be permanently deleted.
Re: (Score:2)
Re: (Score:2)
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
Forget it (Score:4, Insightful)
* 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!
Re: (Score:2)
It's a dialogue. Not a tasklist (Score:1)
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 elephant
Use a project model - step out of your dev role. (Score:1)
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
Want a nice introduction to OO Design & Analys (Score:1)
http://www.oreilly.com/catalog/hfobjects/ [oreilly.com]
Fairly simple, fun to read and far more useful than it appears at first sight.
Build a prototype (Score:3, Informative)
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.
Re: (Score:1)
Re: (Score:1)
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 f
Re: (Score:2)
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
Re: (Score:2)
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.
Re: (Score:2)
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 deliv
Re: (Score:2)
You want accurate specs? Write them! (Score:1)
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
You boss is??? (Score:2)
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 earnin
Re: (Score:2)
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
Haha.. welcome to the real world :) (Score:3, Informative)
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.
Re: (Score:2)
User stories (Score:4, Informative)
We've found that writing User Stories [extremeprogramming.org] 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.
Do their job (Score:2)
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.
Maybe try a Scrum/Agile approach?? (Score:3, Informative)
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
Illustrations of the process (Score:2)
http://www.monolithic.com/pres/tree_swing/treeswi
http://www.jroller.com/resources/behrangsa/softwa
Face it. You'll never get decent requirements (Score:3, Insightful)
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.
Do you need a complete spec upfront? (Score:2)
but in many (possibly most) environments, this idea that a large system can be specified entirely upfront [wikipedia.org] 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 [wikipedia.org] are usually brok
Story Based Development and Agile (Score:3, Informative)
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 [amazon.com]
Agile Estimating and Planning by Mike Cohn [amazon.com]
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.
Mike Cohn (Score:2)
Requirements Solicitation (Score:3, Interesting)
Re: (Score:2)
Re: (Score:3, Interesting)
you're being lazy (Score:2)
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
Direct interaction with actual users (Score:2)
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, di
End users, rubber light bulbs, and bare hoses (Score:2)
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
Not going to happen (Score:2)
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
Never give users a choice. (Score:2)
No degree of SE (Score:2)
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.
Move fast, keep the modules small (Score:2)
Small modules allow 'proto-typing' and feedback. This is a good way to discover
You don't (Score:2)
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 so
what is your function, exactly? (Score:2)
You're lucky... Sort of (Score:2)
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,
Re: (Score:2)
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.
Re: (Score:2)
Re: (Score:2)
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 co
Nice niche if you can get it. (Score:2)
We are almost out of analysis for the first iteration of a major internal project, gl