Quick initial thoughts:
* It's good and valuable that you can be a domain expert, and understand
the boots-on-the-ground workflows, plus have software systems background.
* Documents that are potentially much more complicated to support well,
like contracts and court filings that you develop, are *not* within the
scope of this work, correct?
* I might normally start with asking about what you envision, and
current workflow and tools, and raise examples to compare&contrast with
(e.g., how does a DSL you envision compare with LaTeX document classes,
or structures available in the tool that is used for other documents).
The output is a better understanding of concept and requirements, as
well as a start on analysis-level static and dynamic object models for
the larger "system".
* A big question is exactly how much do you want the system to
understand about documents you receive from outside the system? (That is
potentially not only a large amount of software in itself, but also
multiple fields of ongoing research.)
* Usability by the all people who will be using it is important, of
course. You might want to bounce sketches and mockups off them, and
maybe you even end up doing "Wizard of Oz" simulated system usability
exercises. And a DSL that might be ideal for you might turn out to be
surprisingly disliked by some other lawyers/paralegals/secretaries.
(Example: For a DSL, you might like S-expressions, Scribble, or
SGML/XML, but it might turn out most of the users like something closer
to Markdown, or a document-type-specific plain text format, such as one
that can infer the addressee of a letter in markup-free rapid typing of
plain text, or something closer to a WYSIWYG word processor, or
something closer to a form, like the email header fields of an email
composition window.)
* Your application might have an advantage for DSL acceptance by
non-programmers, in that many people in law offices have education that
emphasizes logical reasoning. But don't underestimate the difficulty of
skills familiar to programmers, if you try to get conceptually
nontrivial. You can get most anyone to recognize concepts like
Addressee, and you can tell/train them not to misuse semantics (e.g.,
don't put instructions to the mail carrier in the wrong semantic field,
simply because you know it gets printed on the envelope). But
non-programmers might have a surprising unfamiliarity with composition,
abstraction, modularity, declarative/imperative distinction,
kind-of/part-of, etc. I have anecdotes from industry and from research
about this. (Someday, universal basic education in program design, with
descendants of HtDP, will help. :)
* Would this software also be the canonical place where objects like
Case, Account, and Contact are defined and stored, or is there another
software system for that, with which you'd want to integrate?
* Do you use a time time-tracking tool for this, and do you want to
integrate with it (such as indicate to the user when the case(s)
associated with the document they're reviewing disagree with what the
time tracker thinks). Or do you want to implement a time tracking tool
as part of this work.
* You mentioned querying for overdue tasks. How far do you want to get
into project management -- like work breakdown, task dependencies,
ordering, and resource allocations?
* Once you know what to build, the sophistication of the resulting
software might mostly be simple. The wins for working smart might be in
the analysis&design, and then (if appropriate) clever "force
multiplying" uses of Racket features, to build it rapidly and
sustainably, with little resources. (It's also easy to imagine dozens
of people building something like this, but that's probably not want you
want, and they might have a harder time getting the "what" as right as a
small team could.)
* This might be the kind of thing that one organization with domain
knowledge develops in-house for its own use, and then productizes for
similar organizations. Sometimes those businesses go huge. If you're
thinking that route, then you might want to do market research and
competitive analysis early on. (I might be able to consult
professionally on a funded commercial effort, beyond what I can do as an
off-the-cuff community-sharing email.)
--
You received this message because you are subscribed to the Google Groups "Racket
Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to racket-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.