[MUD-Dev] Starting out.

J C Lawrence claw at kanga.nu
Sat Jan 12 21:56:00 CET 2002


On Tue, 8 Jan 2002 14:31:07 -0800 
Joel Palmtag <jpalmtag at salinas.k12.ca.us> wrote:

> When one is starting work on a project such as a MUD what are some
> personal recommendations?  I've always had issues with working on
> long coding projects and here are a few of my questions:

Loosely your questions divide into three camps:

  1) How do I maintain my personal interest/involvement?

  2) How do I initiate and work effectively on a large project?

  3) What tools are useful in this?

I've discussed tools in another recent post, so I won't say much
there other than that I dedicate time periodically to tools review
and tools updating.  In my case that usually means I go out looking
few new nifty elisp for XEMacs (ie what I spent some time on last
week, and thus discovering ido.el (brilliant stuff)), writing little
tools/scripts, reading manpages on things like my Window Manager or
other bits, etc.

Maintaining interest and not wandering off or otherwise being
distracted (a major problem with me) can be a very personal problem
that requires very personally tailored techniques.

I keep a paper list of what I'm working on and what I need to work
on and I loosely order that list so that I'm assured of a reasonable
and relatively continuous rate of accomplishments.  

  The purpose of the list is twofold: To keep myself on track, and
  to keep myself interested and motivated by helping to create a
  steady sense of progress and accomplishment.

Despite the fact that I *really* don't want to do this (and thus I
regularly persuade myself to conveniently forget and thus not do
this), I try and make sure that I start and end every day by
reviewing and updating the list, with specific attention paid to
acknowledging myself for what I accomplished that day, and with
quiet note paid to what I failed to accomplish that day.

  Note: I use paper for this.  Other people use task tracking and
  ticketing systems for it, or in a few cases, a simple spreadsheet.
  As motivational tools/techniques I've found those don't work for
  me.  I use paper.  Paper doesn't particularly work well for me
  either, but it works better than electronic systems.

  I do however use the electronic systems when working out a pattern
  or required sequence and breakdown of items -- then I transfer it
  to paper.

Part of the review of the list each morning is what I expect to
accomplish from the list that day, Most of the review each evening
is noting what I didn't get done that I expected to, and any
resulting changes/additions to the list.

I assign myself goof-off times.  What times of day, how long.  Its
not terribly rote or organised (ie I'll goof off any time, but I
*try* and keep a semi-schedule), but the it helps to keep
unrestrained goof-off in check.

I make sure I don't work too hard for too long.  If I do I get dead
in the head, start making silly mistakes and oversights, and tend to
pound my head against problems that are actually easily solvable
given some external view.  Regular goof-off time helps with that.

  Most effective to least effective goof-off types: walks in the
  park, walk about the building, driving, eating, playing puzzle
  game, reading unrelated book, radio, TV, playing computer games,
  email.  Things that involve getting my arse out of the chair and
  then moving my body about tend to work better than those that
  don't.

Design.  Design up front.  Design often.  Review designs.  Correct.
Annotate.  Keep notes.  Update design notes.  Make sure you spend a
little bit of each item's time reviewing and updating the relevant
design notes.

Make sure your design notes enclude proof cases, criteria, and
detailed explanations of value judgments.  Doing the proof case head
of implementation is often a good idea.  Done too often and the
project mutates into proof casing rather than actually doing the
thing.

Try and follow a standard 7-step engineering process for every task
and sub-task.

   1) Problem determination.

   2) Discovery.

   3) Needs definition.

   4) Requirements definition.

   5) Solution design.

   6) Implementation.

   6) Implementation review.

Note taking forms the majority of the rest of my process for working
on large projects.  I use either a standard engineering journal or
an A4/legal sized notepad (preferred).  The basic pattern is that I
write down everything.  Every idea, every "oh yeah, gotta do that",
every design sketch, every bit of scribbling to help figure
something out, everything.  

That notepad then forms the raw material and the basis for the list
I mentioned up top.  

As the list gets filled with scribble-outs, orrows indicating
re-orderings (most items on the list are ~60 minute items) I
re-write the list anew on fresh paper, with all items in the correct
order.  This manual and relatively slow rewriting process (which
could be trivially done via software) seems to have a significant
effect as its also frequently a time that, "Oh yeah I forgot.." and
"You know I really need to do this >that< way" type ideas crop up.

I get very diagram and list happy in my notepads, especially when
I'm working on figuring out architectures: data model diagrams,
sketched graphs, flow diagrams, etc.  Also a great many quick noted
states of the type. ">this< must be like >that< because of >that<".

As another tool to maintain interest I make sure that I always have
at least one Great Unsolved Design Item.  Fairly simply this means
that I always have at least big problem/item that I can spend
significant lengths of time thinking about and having fun with.

Part of my daily review is noting when I got a lot done, and what
any contributing factors were.  Eg:

  Audible music generally detracts from my production, especially if
  I can hear it clearly enough to follow.  Low levels of background
  noise help.  Dim lighting helps (I'm regularly accused of working
  in a cave).  Mornings are best for discovery process.  Afternoons
  are best for design and solution reviews.  Late afternoons and
  evenings are best for implementation.  Motion visible in
  peripheral vision distracts.  Slightly cool temperatures are best.

Eat regularly.  I regularly fail to do this and then get so grumbly
that I'm forced realise (usually by people around my ordering me to
go eat (or sleep)) I entirely forgot to eat the day or two previous.
I find keeping muchies of the nuts, corn chips, herb tea, water
(lots of it), or fruit (grapes, tangerines, etc) about the desk
helps immensely and I'll typically eat it without noticing I am.

Get enough roughage.  

Make sure you get out of the house for a reasonably extended period
that involves other people and widely varying distances each day.

--
J C Lawrence                
---------(*)                Satan, oscillate my metallic sonatas. 
claw at kanga.nu               He lived as a devil, eh?		  
http://www.kanga.nu/~claw/  Evil is a name of a foeman, as I live.
_______________________________________________
MUD-Dev mailing list
MUD-Dev at kanga.nu
https://www.kanga.nu/lists/listinfo/mud-dev



More information about the mud-dev-archive mailing list