473,404 Members | 2,195 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,404 software developers and data experts.

OT - Book about software project definitions and the pre-coding phase

i lead a small development team (based on some of my posts that might cause
some people to choke themselves, but have no fear, i am NOT the lead
developer, the people on my team are great - i'm just the manager) for my
company. although we attempt to use good practices for development, we have
no real experience in documentation of a project _before_ it's coded.

Are there any great books out there on how to document a project before we
code. For example, i actually hear that some people write classes off of a
master document that lists all properties, methods, events, etc. We
basically just survive on notes, meetings, and the "code like hell"
methodology - which will kill us in the long run.

I have some great books on management, like the mythical man-month and
others, but I am interested in a book on documenting a software project
before the coding starts.

Thanks

Nov 20 '05 #1
4 1972
Hi Josh,

I appreciate that you have recognised your "problem" and have the energy and
committment to undertake further training to attempt to resolve it... but
are you serious?

Flag the books.... just go buy the skillset you need. Sack/demote your "lead
developer" if you have too in order to afford an SA. He/she is just an
imposter if they are prepared to lead a team with no solid architecture.

"Coding like hell" will just get you nowhere faster.

You need to identify a suitable methodology such as UML, and work from
there, but that will obviously require your "team" to learn the methodology
as well.

If you've "grown" the team into this situation then congratulations are in
order... but do yourself a favour and get the right people with the proper
skills doing the right job, right now. Dont diddle about with books as a
cheap substitute for a flesh and blood professional.

Software projects are like children, they require different people with
different skillsets at different stages of their lives, otherwise they tend
to grow up with all kinds of weird and wonderful disorders that make it
really hard for them to play well with others and make their own ways in the
world.

If all this sounds a bit harsh then dismiss it, after all its your future
not mine..... and the smart arse within me is saying "Thank God"!

;)

hth
Richard



Nov 20 '05 #2
Richard, I appreciate the honesty of your post but you have to understand
where we're coming from. i'm not some great programmer who has 2 degrees in
technology. like many others, i drifted to IT after making some wrong life
choices (that's my assessment) and i'm here because i really like the stuff.
i'm a great dba but a mediocre application coder. i've been at this company
for a while and had the ability to hire some young people who also like to
code and collectively we make good stuff.

perhaps you're right that i don't need a documentation book, i need a uml
book. i can't take a week off to attend a class so i gravitate towards
books because i can read them in the car (not while driving), plane, beach,
bed, etc. what everyone in my group needs, scratch that, needed was to work
a year for some big company that has big documented projects so we could see
how it's done but we didn't. we're just collectively good software people
who missed some fundamentals and now at least have the smarts to recognize
that we want to do it better. i don't want to fire anyone.

thanks for your help on my datatable/dataset post too.

J
Richard Myers wrote:
Hi Josh,

I appreciate that you have recognised your "problem" and have the
energy and committment to undertake further training to attempt to
resolve it... but are you serious?

Flag the books.... just go buy the skillset you need. Sack/demote
your "lead developer" if you have too in order to afford an SA.
He/she is just an imposter if they are prepared to lead a team with
no solid architecture.

"Coding like hell" will just get you nowhere faster.

You need to identify a suitable methodology such as UML, and work from
there, but that will obviously require your "team" to learn the
methodology as well.

If you've "grown" the team into this situation then congratulations
are in order... but do yourself a favour and get the right people
with the proper skills doing the right job, right now. Dont diddle
about with books as a cheap substitute for a flesh and blood
professional.

Software projects are like children, they require different people
with different skillsets at different stages of their lives,
otherwise they tend to grow up with all kinds of weird and wonderful
disorders that make it really hard for them to play well with others
and make their own ways in the world.

If all this sounds a bit harsh then dismiss it, after all its your
future not mine..... and the smart arse within me is saying "Thank
God"!

;)

hth
Richard

Nov 20 '05 #3
Yeah well fair enough.

Sometimes i do get a little fired up. Somone once said to me to lay off the
caffine. Perhaps they were right but i can type soooo much faster after a
couple of cans of Redbull. Please tell when i'm full of sh*t. I like to
learn too.

;)

The Visio has some impressive UML support built in, i remember watching a
dotNet show webcast on it.
It all seemed very worthwhile, a high level of integration between
VS/Visio/DAL/ and very accessible to the developer. The advantage here would
be you could "wizard" your team thru much of the initial learning curve and
gradually bring everyone up to speed.

If you do nothing else, you can move everyone from their own little note
taking stash, to a centralized model, that serves as an objective point of
reference. I realise there is always a gap between the theoretical text book
"holier than thou" model, and a practical working, not to mention fiscal
reality but i reckon it's false economy to skip the foundational steps of a
software development project.

If it's a really small team say 5 or less and you're all competent
communicators then i'm sure you can get away with it, but if your products
are great now, think of the opportunity cost in that they could have been
outstanding with an architect on board/consulting.

I stand by my original suggestion in that someone has to take responsibility
for this very important phase of development. If you cant take a week
off.... then someone should... bank a week tomorrow and save yourself a
month later.

I assumed you were talking about architectural documentation? Are you
building applications/class libraries/components/?

Richard
Nov 20 '05 #4
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/awdt...res/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.


"Josh Golden" <jo***@wachovia.com> wrote in message
news:40***********************@news.twtelecom.net. ..
i lead a small development team (based on some of my posts that might cause some people to choke themselves, but have no fear, i am NOT the lead
developer, the people on my team are great - i'm just the manager) for my
company. although we attempt to use good practices for development, we have no real experience in documentation of a project _before_ it's coded.

Are there any great books out there on how to document a project before we
code. For example, i actually hear that some people write classes off of a master document that lists all properties, methods, events, etc. We
basically just survive on notes, meetings, and the "code like hell"
methodology - which will kill us in the long run.

I have some great books on management, like the mythical man-month and
others, but I am interested in a book on documenting a software project
before the coding starts.

Thanks

Nov 20 '05 #5

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

0
by: Melody Droid | last post by:
I recently made some conceptual breakthroughs regarding the interval permutation pre-sorting and the pitch-class-set/scale post-sorting aspects of my envisioned symmetrical melody thesaurus...
2
by: threeseas | last post by:
Because the project is done in python and in support of FOSS http://msdn.microsoft.com/architecture/overview/softwarefactories/default.aspx?pull=/library/en-us/dnmaj/html/aj3softfac.asp ...
0
by: Rare Book School | last post by:
RARE BOOK SCHOOL (RBS) is pleased to announce its Spring and Summer Sessions 2004, a collection of five-day, non-credit courses on topics concerning rare books, manuscripts, the history of books...
6
by: OldRover | last post by:
Is "the Offical XMYSpy Handbook" (ISBN 0-7645-4964-2, second printing) a Really Bad Book? It seems to suffer from such poor organization, writing, editing, and indexing that I'm ready to give up on...
14
by: Lester Manry | last post by:
First I wish to appoligies if this is OT and should be posted elsewhere. I've done a google group search and read the Comp.Lang.C FAQ in hopes of avoiding a OT or FAQ. Please direct me to a better...
54
by: Matt | last post by:
How do we define systems programs? when we say systems programming, does it necessary mean that the programs we write need to interact with hardware directly? For example, OS, compiler, kernel,...
56
by: Paul L Daniels | last post by:
Hello All, I've been compiling a series of pages about the bad functions and mistakes that occur in C into a book, subsequently, I now have a moderate little book of about 32 pages available for...
9
by: George | last post by:
Any good book recommendattions for ASP.Net using C#? Thanks
0
by: Bob Avallone | last post by:
MetaPro Systems Inc. Visual Studio Dot Net Tips & Tricks #3 – Direct Access to Your Outlook Address Book. Project Type: VS.NET Windows Application Code Behind: Visual Basic I have a project...
0
by: cyoull | last post by:
I am working with COTS software that is Web service enabled. The software allows for jobs to be created as real-time or batch and updated to a server which then can be consumed as a Web service. ...
0
by: emmanuelkatto | last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud. Please let me know. Thanks! Emmanuel
0
BarryA
by: BarryA | last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
1
by: nemocccc | last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
1
by: Sonnysonu | last post by:
This is the data of csv file 1 2 3 1 2 3 1 2 3 1 2 3 2 3 2 3 3 the lengths should be different i have to store the data by column-wise with in the specific length. suppose the i have to...
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
0
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
0
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers,...
0
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing,...
0
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.