The problem here as I see it is kind of a catch-22 situation. At least you
have recognized that you have a problem and that is the first step.
The real problem is that, while there are many design paradigms available
that you can adopt, no one here can tell you which ones are the best, or
which one fits your situation better than you can. Unfortunately this takes
some time to research for yourself. Simply adopting A development process
for the sake of adopting ONE is not really a good thing IMHO.
This entire subject is something that many people can get very 'religious'
sounding about simply because there are so many people with opinions. Myself
included.
I started a very small software company (3 developers) that struggled with
this same issue. I simply don't have the cash, nor the time to invest in
supporting something like RUP (Rational Unified Process) simply because I
don't have the money to invest in the tools it takes. I would love an
end-to-end solution to be dropped right into my lap, but quite frankly I
understand that if one was dropped at my feet it would probably not fit 'my
needs' as a developer. It would be something cookie-cutter that some one was
pushing as the next best 'thing'.
If it helps at all, here is what I did (am doing):
0) MAKE the time to set up your processes. You might think that you have
to take time away from coding to do this but you don't. Of course you CAN,
but you don't have to. It all depends on how important this is to you. If
you can't commit to taking time away from doing your projects then simply
say that you will add to your work load by adding additional time to your
day after coding to tackle the project. Hard times call for hard work and
hard decisions. This is something my wife learned long ago when I started my
personal venture.
1) Decide that you NEED a process. But also understand fully how you
would benefit from it and also what you WANT from it. Unless you see the
benefit down the line you will eventually start to not follow it and then
the entire exercise is a waste of time. Write down a set of goals that you
want to achieve and then build your own process around those goals.
2) READ about what is out there. Since you are not alone don't think that
you have to do this alone. Delegate the research to your other workers to
study fro one week, each on a different paradigm that is available (how it
works, the tools used in it, the processes, etc..) and present this to the
rest of the group. If nothing else you will be better able to see what is
already out there, what you like and don't like about each paradigm and if
you can take this from here and that from there and evolve your own.
Here are a few that I researched:
RUP
http://www-306.ibm.com/software/awdtools/rup/features/index.html
SCRUM
http://www.controlchaos.com/scrumwp.htm
XP
http://www.extremeprogramming.org/
There are many more, I could not possibly list them all here. There is a
sizable amount of overlap among them and some very definite differences as
well.
3) MAKE the first move. Start small, don't bite off more than you can
chew on. Just like the old adage "how do you eat an elephant" the answer is
one bite at a time my friend. What I did was pick one pet peeve that was
always making me nuts, code conventions. Variable naming, stuff like that
always ends up being just a bit different between developers. DOCUMENT it
down to the smallest detail. Get everyone together and agree on what will be
the company 'Best Practice' for code conventions. Then, here is the really
hard part.. FOLLOW it. Start holding code reviews and make people follow the
spec that was agreed on. Trust me when I say that starting here begins to
snowball. Once you start to realize that having this documented frees you
from having to worry about it in the back of your head a light bulb will go
on and you will start to document other things.
4) Develop a standard document format. I have seen companies argue over
the dumbest things and this has been one of them. If you have to put your
foot down as a leader and simply say 'this is the format that I have decide
we will use for all our standards documents' then so be it. But also
understand that you have to be open to change. You are not all knowing so if
someone has an idea that is good, adopt it and move on.
5) Just like using version control for code (you do use version control
for code right?) you should version control your documented processes. They
will evolve and it is always good to track that evolution incase suddenly
you see something not work and you need to go back a bit and make changes.
6) Document everything. Process documentation for a software company does
not just mean documenting software procedures. You have to effectively
communicate between yourselves and also effectively document that
communication. Start keeping meeting minutes, tracking how attends, when it
was, how long it was, what actions who took out of each meeting. This keeps
your mind looking towards process management as a whole and not just
software process management.
..
..
..
..
Boy I went off on a rant here didn't I.... Well it is as I said.. a
sometimes religious type discussion.
I hope that I have helped a bit.
If you are looking to get some ideas about the actual TYPES of documents
used I might be willing to share some of the formats and stuff off line with
you.