Design Documents For CodeProject Apps
-
Does anyone bother to do full blown design documents for personal projects?? Or is it better to just go ahead and start coding. The reason i ask this is that unless I'm at work and getting paid to write the design document and then code the project, i find that the design document kills my development. By the time i'm done with that document i've lost all desire to even code the project. Granted refactoring or design as you code is horrible in the real world where money is involved and the project must be done on time, but what about when you are doing a hobby project. Seems like part of a hobby project should be fun, not killed writing boring design documents that nobody will force you to use anyway. Just wondering what all of you do for these codeproject applications? Full blown design docs or some notes on a paper with some ideas?
-
Does anyone bother to do full blown design documents for personal projects?? Or is it better to just go ahead and start coding. The reason i ask this is that unless I'm at work and getting paid to write the design document and then code the project, i find that the design document kills my development. By the time i'm done with that document i've lost all desire to even code the project. Granted refactoring or design as you code is horrible in the real world where money is involved and the project must be done on time, but what about when you are doing a hobby project. Seems like part of a hobby project should be fun, not killed writing boring design documents that nobody will force you to use anyway. Just wondering what all of you do for these codeproject applications? Full blown design docs or some notes on a paper with some ideas?
Most of my personal project start out of necessity. I throw together some code for a specific purpose...and then it just starts going from there. If I actually want to write a project (like that front end I wrote to the book database my mom made in Access [I upgraded it to MSDE] that hooked up to the Amazon web service), then I start with a design document. And that project went fairly well...she was happy. :)
Quantum materiae materietur marmota monax si marmota monax materiam possit materiari?
-
Most of my personal project start out of necessity. I throw together some code for a specific purpose...and then it just starts going from there. If I actually want to write a project (like that front end I wrote to the book database my mom made in Access [I upgraded it to MSDE] that hooked up to the Amazon web service), then I start with a design document. And that project went fairly well...she was happy. :)
Quantum materiae materietur marmota monax si marmota monax materiam possit materiari?
Would you be willing to post the design doc?? I'm just curious how in depth it is there are really no good examples of non-professional design docs out there that aren't hundreds of pages and take weeks to complete. Thanks Visit my development blog[^]
-
Does anyone bother to do full blown design documents for personal projects?? Or is it better to just go ahead and start coding. The reason i ask this is that unless I'm at work and getting paid to write the design document and then code the project, i find that the design document kills my development. By the time i'm done with that document i've lost all desire to even code the project. Granted refactoring or design as you code is horrible in the real world where money is involved and the project must be done on time, but what about when you are doing a hobby project. Seems like part of a hobby project should be fun, not killed writing boring design documents that nobody will force you to use anyway. Just wondering what all of you do for these codeproject applications? Full blown design docs or some notes on a paper with some ideas?
Depends. A small project doesn't need a document, you can keep it all in your head. Open source (linux) developers contend that large changes do get documents. I've seen a couple of them, so I know it is done. Basicly for a large change you need the document to make sure you are not getting into trouble. Although normally the document is not as formal was what I'd write at work.
-
Does anyone bother to do full blown design documents for personal projects?? Or is it better to just go ahead and start coding. The reason i ask this is that unless I'm at work and getting paid to write the design document and then code the project, i find that the design document kills my development. By the time i'm done with that document i've lost all desire to even code the project. Granted refactoring or design as you code is horrible in the real world where money is involved and the project must be done on time, but what about when you are doing a hobby project. Seems like part of a hobby project should be fun, not killed writing boring design documents that nobody will force you to use anyway. Just wondering what all of you do for these codeproject applications? Full blown design docs or some notes on a paper with some ideas?
nlecren wrote: Does anyone bother to do full blown design documents for personal projects?? What's design document? Just kidding! Actually, whether it's for work or personal, I find design documents to be pretty useless for the work that I do. Most of the time the customer can't figure out how to say what it is that they want with any level of detail, and then when you show something to them it gets changed drastically. Well, that's the world I work in. So instead, I rely on a solid framework (which I've written about), and then whatever the project is becomes "implementation details", which are easily changed. Occasionally I'll do a really high level design to figure some stuff out that's not handled by the framework. And I've found that declarative programming fits really well into the incremental design/implementation/revise method of working. And I don't find it any more costly either. A detailed design can be a waste of time because it's out of date by the time you start writing the first line of code, or shortly thereafter. Now, if I were writing a mass market commercial application, then yeah, I'd do a full design, story boards, mock screens and workflows, etc. [edit]Oh, and I think design documents are very useful when working on a team, but not as useful as a stand-alone programmer[/edit]. Marc MyXaml Advanced Unit Testing
-
Does anyone bother to do full blown design documents for personal projects?? Or is it better to just go ahead and start coding. The reason i ask this is that unless I'm at work and getting paid to write the design document and then code the project, i find that the design document kills my development. By the time i'm done with that document i've lost all desire to even code the project. Granted refactoring or design as you code is horrible in the real world where money is involved and the project must be done on time, but what about when you are doing a hobby project. Seems like part of a hobby project should be fun, not killed writing boring design documents that nobody will force you to use anyway. Just wondering what all of you do for these codeproject applications? Full blown design docs or some notes on a paper with some ideas?
My process is as follows: 1) Open Visual Studio 2) Type:
static void Main()
{
}- Think: Ok, now what should this app do? Charlie if(!curlies){ return; }
-
nlecren wrote: Does anyone bother to do full blown design documents for personal projects?? What's design document? Just kidding! Actually, whether it's for work or personal, I find design documents to be pretty useless for the work that I do. Most of the time the customer can't figure out how to say what it is that they want with any level of detail, and then when you show something to them it gets changed drastically. Well, that's the world I work in. So instead, I rely on a solid framework (which I've written about), and then whatever the project is becomes "implementation details", which are easily changed. Occasionally I'll do a really high level design to figure some stuff out that's not handled by the framework. And I've found that declarative programming fits really well into the incremental design/implementation/revise method of working. And I don't find it any more costly either. A detailed design can be a waste of time because it's out of date by the time you start writing the first line of code, or shortly thereafter. Now, if I were writing a mass market commercial application, then yeah, I'd do a full design, story boards, mock screens and workflows, etc. [edit]Oh, and I think design documents are very useful when working on a team, but not as useful as a stand-alone programmer[/edit]. Marc MyXaml Advanced Unit Testing
-
Does anyone bother to do full blown design documents for personal projects?? Or is it better to just go ahead and start coding. The reason i ask this is that unless I'm at work and getting paid to write the design document and then code the project, i find that the design document kills my development. By the time i'm done with that document i've lost all desire to even code the project. Granted refactoring or design as you code is horrible in the real world where money is involved and the project must be done on time, but what about when you are doing a hobby project. Seems like part of a hobby project should be fun, not killed writing boring design documents that nobody will force you to use anyway. Just wondering what all of you do for these codeproject applications? Full blown design docs or some notes on a paper with some ideas?
I first start with Notepad. List out what basic features it will need and then maybe a bit more detail on each feature. Since most of my work nowadays is web applications, here is an example for a mailing list:
Requires:
Database -
Subscriptions
{
ID
EmailAddress
CreatedAt
IsValidated
}Functionality -
Subscribe Page
Page to Sign up
Get signup information and send email for validation
Page for Validation Message SentValidation page
Check if valid validation code and subscription as validatedUnsubscribe Page
Page Prompt for email address and confirm deletion
Delete from databasePost Page
Input text and cycle through all subscribers sending the emailsThat is about as detailed as I get starting a project. After it is complete to the point I listed, I will run through it and see if there is ways to improve it or make it more user friendly. Rocky <>< www.HintsAndTips.com - Now with GMail Queue www.MyQuickPoll.com - 2004 Election poll is #33 www.GotTheAnswerToSpam.com "We plan for the future, we learn from the past, we live life in the present!"
-
nlecren wrote: Does anyone bother to do full blown design documents for personal projects?? What's design document? Just kidding! Actually, whether it's for work or personal, I find design documents to be pretty useless for the work that I do. Most of the time the customer can't figure out how to say what it is that they want with any level of detail, and then when you show something to them it gets changed drastically. Well, that's the world I work in. So instead, I rely on a solid framework (which I've written about), and then whatever the project is becomes "implementation details", which are easily changed. Occasionally I'll do a really high level design to figure some stuff out that's not handled by the framework. And I've found that declarative programming fits really well into the incremental design/implementation/revise method of working. And I don't find it any more costly either. A detailed design can be a waste of time because it's out of date by the time you start writing the first line of code, or shortly thereafter. Now, if I were writing a mass market commercial application, then yeah, I'd do a full design, story boards, mock screens and workflows, etc. [edit]Oh, and I think design documents are very useful when working on a team, but not as useful as a stand-alone programmer[/edit]. Marc MyXaml Advanced Unit Testing
Marc Clifton wrote: Most of the time the customer can't figure out how to say what it is that they want with any level of detail, and then when you show something to them it gets changed drastically I was doing a flowchart the other day for a business process workflow. Then I thought, wouldn't it be cool if I could design the workflow in MyXaml and then have the flowchart generated for me. What do you think :-D :-D Michael CP Blog [^]
-
nlecren wrote: So instead, I rely on a solid framework (which I've written about), Do you have a link?? I think Marc is referring to the work he did with the The Application Automation Layer[^] which lead to this article[^] which lead onto all this[^] The MyXaml MvC[^] pattern is very useful as a framework as is the workflow stuff[^] Michael CP Blog [^]
-
nlecren wrote: Do you have a link?? Part I of IV.[^] The other 3 parts are on CP, as well as several other articles on architecture and advanced unit testing. The AAL project (a C# rewrite of something I've been using for years in C++) got supplanted by MyXaml[^] which incorporates many of the abstraction and plug-in concepts by its very nature (declarative programming vs. imperative). A high level diagram of what I use is here[^]. Marc MyXaml Advanced Unit Testing
-
Does anyone bother to do full blown design documents for personal projects?? Or is it better to just go ahead and start coding. The reason i ask this is that unless I'm at work and getting paid to write the design document and then code the project, i find that the design document kills my development. By the time i'm done with that document i've lost all desire to even code the project. Granted refactoring or design as you code is horrible in the real world where money is involved and the project must be done on time, but what about when you are doing a hobby project. Seems like part of a hobby project should be fun, not killed writing boring design documents that nobody will force you to use anyway. Just wondering what all of you do for these codeproject applications? Full blown design docs or some notes on a paper with some ideas?
I disagree that "refactoring or design as you code is horrible", and leads to time overruns. While it is good to have a high-level design of what you plan on doing, it is perfectly workable to have the design evolve as you progress. The trick is to follow a test-driven development style. Then, when you have to refactor (and you will), you will find it amazingly easy. In addition, a side-effect of test-driven development is that the code becomes strongly decoupled, which is one of the design goals of almost any program.
-
Marc Clifton wrote: Most of the time the customer can't figure out how to say what it is that they want with any level of detail, and then when you show something to them it gets changed drastically I was doing a flowchart the other day for a business process workflow. Then I thought, wouldn't it be cool if I could design the workflow in MyXaml and then have the flowchart generated for me. What do you think :-D :-D Michael CP Blog [^]
Michael P Butler wrote: Then I thought, wouldn't it be cool if I could design the workflow in MyXaml and then have the flowchart generated for me. Indeed. I'd love to use something like Visio or other drawing package as a designer (diagram to state/workflow/event/MVC model), and back again to reflect manual code changes. I wish I had the time to do that! I used to work with Visio a lot, and it was really cool. Other packages are probably similar (hopefully not as complex as Visio though). However, my next MyXaml task is getting it to run with VS2005 and .NET 2.0 Marc MyXaml Advanced Unit Testing
-
My process is as follows: 1) Open Visual Studio 2) Type:
static void Main()
{
}- Think: Ok, now what should this app do? Charlie if(!curlies){ return; }
Charlie Williams wrote: static void Main(){} You mean:
namespace IAmGoingToHaveFun
{
class WowIamAlreadyProgramming
{
public static void Main()
{
//Enough typing for today - I'll get back to it tomorrow
}
}
}
My programming blahblahblah blog. If you ever find anything useful here, please let me know to remove it.
-
Michael P Butler wrote: Then I thought, wouldn't it be cool if I could design the workflow in MyXaml and then have the flowchart generated for me. Indeed. I'd love to use something like Visio or other drawing package as a designer (diagram to state/workflow/event/MVC model), and back again to reflect manual code changes. I wish I had the time to do that! I used to work with Visio a lot, and it was really cool. Other packages are probably similar (hopefully not as complex as Visio though). However, my next MyXaml task is getting it to run with VS2005 and .NET 2.0 Marc MyXaml Advanced Unit Testing
other drawing package Have you taken a look at the Whitehorse (Class Designer) tools in VS2005? It sounds like what you're looking for. If there was a way to plug into that, that could be what you're looking for.
Quantum materiae materietur marmota monax si marmota monax materiam possit materiari?
-
Would you be willing to post the design doc?? I'm just curious how in depth it is there are really no good examples of non-professional design docs out there that aren't hundreds of pages and take weeks to complete. Thanks Visit my development blog[^]
I actually wrote the application a long time ago (meaning: I've completely lost the documentation for it ;P) and it was solely for the purpose of explaining to my mom how I was going to go about doing it. It was mostly just a Visio diagram showing pretty shapes and a few short paragraphs as to what the form would do. What Marc says, down below, makes infinitely more sense anyway. For single-programmer projects, whereno end-user input is necessary, the design doc is almost unnecessary. What you really need is his MyXaml stuff...that's shweet. :cool:
Quantum materiae materietur marmota monax si marmota monax materiam possit materiari?
-
nlecren wrote: So instead, I rely on a solid framework (which I've written about), Do you have a link?? I think Marc is referring to the work he did with the The Application Automation Layer[^] which lead to this article[^] which lead onto all this[^] The MyXaml MvC[^] pattern is very useful as a framework as is the workflow stuff[^] Michael CP Blog [^]
-
Does anyone bother to do full blown design documents for personal projects?? Or is it better to just go ahead and start coding. The reason i ask this is that unless I'm at work and getting paid to write the design document and then code the project, i find that the design document kills my development. By the time i'm done with that document i've lost all desire to even code the project. Granted refactoring or design as you code is horrible in the real world where money is involved and the project must be done on time, but what about when you are doing a hobby project. Seems like part of a hobby project should be fun, not killed writing boring design documents that nobody will force you to use anyway. Just wondering what all of you do for these codeproject applications? Full blown design docs or some notes on a paper with some ideas?
It all depends on the project.. Sometimes it necessary especially when you have a team of programmers with you.. If you are solo - you can cut down alot on the documentation since you are the only one that will understand it.. Aside from that - its rather IMPOSSIBLE to gather good requirements from most clients.. since most have no clue abotu software or technology.. just that they want to make there "stuff" easier.. if you ask themn for details.. they will give you a 1 paragraph summary.... sometimes you can shoot from the hip - which turns out into a total mess if you arent careful.. it almost borders on the evolutionary model which as we know is used when there no requirements or requirements are unknown which in the real world is typically more often the case than not.. would be nice if could follow those steps in a real life scenario - or have others outside the development process - which have the patience to let it flourish.. Danny!
-
other drawing package Have you taken a look at the Whitehorse (Class Designer) tools in VS2005? It sounds like what you're looking for. If there was a way to plug into that, that could be what you're looking for.
Quantum materiae materietur marmota monax si marmota monax materiam possit materiari?
David Stone wrote: Have you taken a look at the Whitehorse (Class Designer) tools in VS2005? Cool. I'll take a look at it. Marc MyXaml Advanced Unit Testing