Hi all,
This is my first post on this list, so let me introduce myself. My name is Shlomi Fish, I am an Israeli software developer, essayist and writer, and you can learn more about me about from my homepage - http://www.shlomifish.org/ - and about my involvement in wikipedia and other wikimedia and non-wikimedia wikis here:
* http://en.wikipedia.org/wiki/User:Shlomif
(My Wikibooks user page is as expected - http://en.wikibooks.org/wiki/User:Shlomif ).
I am the main author of the http://en.wikibooks.org/wiki/Optimizing_Code_for_Speed E-book, which I've written instead of my usual "write-in-DocBook/XML-or-HTML-and-publish on my "personal web-site" as an experiment. In any case, I finished writing most of what I wanted to say there, and a few days ago split it into individual pages to follow the wikibooks convention. There may be some relatively minor changes I'll integrate there in the future, but I consider it a finalised project.
To get to the point, someone added a template there that "This book requires that you first read http://en.wikibooks.org/wiki/How_to_Write_a_Program ". However, "How to Write a Program" is crudely written, extremely short, lacks enough coverage of most main "how-to-achieve-software-quality" methods and methodologies and I wouldn't recommend that anyone reads it in its current form, whether they know a thing or two about software engineering or not.
I tried to improve http://en.wikibooks.org/wiki/How_to_Write_a_Program a little, and worked on:
http://en.wikibooks.org/wiki/How_to_Write_a_Program/Before_you_start
However, the later chapters proved to be more difficult, in part given that they don't match my personal software development style and because they written in monlithic paragraphs.
I eventually had decided to start writing this book as an alternative: http://en.wikibooks.org/wiki/How_to_Achieve_Software_Quality which aims to be a more well-rounded coverage, but it: 1. will naturally take some time to write, and 2. At time seemed like it would be too heavy a reading material before my optimising code for speed essay.
To add more to the confusion, a few days ago I added this:
http://en.wikibooks.org/wiki/Optimizing_Code_for_Speed/Introduction#Intended...
Reading it, it seems that either the "How to Write a Program" pre-requisite is not needed , or should be replaced by the resources I pointed to over at http://teachingopensource.org/ . I admit I'm the primary author of the wiki page I refer to there (but not of the book they are working on) so I may be a bit biased.
I'm reluctant to simply remove the pre-requisite because I hate deletionism and similar vandalism (however good-intentioned), and because a good coverage of software engineering philosophy should be considered as a pre-requisite for a book about code optimisation.
Now, I've also written http://www.shlomifish.org/philosophy/computers/high-quality-software/rev2/ (CC-by and DocBook/XML - should be easily wikibookable) which aims to answer the question "What Makes Software High Quality?" but also covers some ways to actually makes them so. Personally, I am on the opinion that if your program is of high quality, then how this quality was achieved is not too important, as long as it did not take too much time, cost too much money, cost in too much unhappiness, etc. I know for a fact that some teams with poor or no software engineering can often achieve decent results.
Therefore, if we agree that a programmer should just be aware what makes a piece of software good, rather than of the myriad of ways to attempt to achieve it (which have been a topic of ongoing research and publications for many decades now, and are a topic of a lot of debate.), then we can just wikibookify and polish my "high quality software" article and make it a prerequisite.
What are your thoughts?
Regards,
Shlomi Fish