Future Book Ideas
These are some ideas I’ve had for future books. Do any of these interest you,
or would they interest other people you know? Please let me have your thoughts
in the
form below. Thanks!
How Do Digital Gadgets Work?
This would be a book for technical people, including "serious teenagers", who want to understand how gadgets work. It would be seriously technical, but written to entertain. There would be no equations, but lots of diagrams.
Examples of gadgets to be covered would be:
-
GSM telephone (including WAP);
-
DVD, CD, CDROM (including recordable CDROM);
-
Global Positioning System;
-
The internet - 56K modem, TCP/IP, the web, e-commerce;
-
Digital camera, movie camera
Examples of things that I think would be interesting to read about include:
-
The way the laser head in a CD or DVD player can track the surface of the disk
and follow the spiral of dots on it, which are only a few wavelengths of light
appart, while the disk is spinning and wobbling and being bounced about;
-
The way the clock on a GPS satellite has to be set to run slow because of
Einstein's relativity;
-
The way your telephone manages to cover up the fact that the radio signal path
is completely changing every few seconds, and has to be instantaneoudsly
switched as you drive from one transmission cell into another.
This would be an adult-level book for the technically minded, not a "cross-sections" type book. It would assume that the reader was familiar with basic technical concepts and so would introduce ideas quite quickly.
Please
comment on this idea.
Software: Design for Profitability
Often we read software books or go on courses, and come out convinced of
the need to do exhaustive requirements capture, do the most detailed
analysis and design, write clear and robust code at all times, follow the
best processes, write the best documents. So why don’t we always do these
things in real life - are we following inferior practices? Or is it just
possible that in fact we may be following practices that are less perfect,
but more profitable?
Quality is defined in terms of "fitness for purpose". If the main purpose
of writing software is to make a profit, then one measure of the quality
of a software product is the amount of profit it makes.
Maximum profit will usually be found at some compromise point between the
approach that would deliver maximum product quality (as measured by the
user) and downright hacking. Rather than feeling guilty about not always
doing perfect design we should find this ideal, profitable compromise,
by analysing the situation and striving to achieve the most appropriate
approach.
This book would take a pragmatic look at the specific area of software
design, exploring the ways in which good design can be used to make maximum
profit for the organisation you work for.
Please
comment on this idea.
Understanding Software Development
for senior managers
Software is a relatively young discipline, and it is changing very
rapidly. It’s likely that anyone who is a senior manager has either never
developed software, or did it so long ago that their experience is now
irrelevant or even counterproductive.
This would be a book explaining software development to senior managers.
However it would take a very unusual approach: it would get them to write some
software. There are many points to get over: Why does it take so long?
Why are the estimates so bad? Why are there bugs? Why is maintenance such
a problem? It seems to me that the only way to understand these points is
to come up against them oneself.
So I propose a book that sets out a simple programming task, and uses it
to hit all the snags we come across in real life - unclear requirements,
estimating the unknown, change requests, bugs etc. - by leading the reader
through practical exercises, making sure they are not given too much help
or they will never hit the problems (though there might be a "cheats"
section as well!). The "programming" might take the form of VBA or simply of using a spreadsheet to do a calculation - it must be something that doesn't need to be purchased.
The aim is not to lecture to the reader or make excuses, but to give them
personal experience to use as a reference for understanding situations
that arise in software departments.
Please
comment on this idea.
Mathematics For Software Engineers
(with another author)
I looked recently for a good book to brush up on my mathematical
skills. I didn’t find one. There are books about mathematics, including some
aimed specifically at engineers, but none of them seem both to cover the
basics and also to be aimed at software engineers. So I thought: why not team
up with someone whose maths is excellent, and write the sort of book that I
need?
Software engineers
use maths in quite a different way from other people, even from other
engineers, in that we implement the mathematics in code. We don't need to see
all the proofs and derivations, but we do need the equations and an
understanding of how to use them. We
especially value sample code, so long as it’s clearly written, well commented
and bullet-proof.
This would be a very practical book, using spreadsheets and code to explain and
illustrate algorithms hands-on, as well as presenting the equations. It would
cover:
-
The basics - trigonometry, algebra, vectors, mechanics, calculus, complex
numbers, matrices, probability - all with examples of their use;
-
Data containers - lists, trees, maps, hash tables, sparse matrices; tiling and
indexing
-
Specific areas of theory - sampling theory (interpolation and extrapolation;
optimum filtering), information theory (coding and compression), quantisation
and noise, control theory, Fourier, wavelet and other transforms, data
encryption;
-
Statistics and probability - probability, game theory, significance tests
-
Geometry - polygons & polytopes, area and overlaps, intersections and
tests, convex hulls. Voronio / watershed diagrams. Motion planning; shape
metrics.
-
Graphics and images - 2D and 3D line drawing; rendering; basic image processing
- filtering, line detection
-
Approximations for modelling - linear approximations, interpolation and
extrapolation, polynomials and splines, finite element methods, least squares
fits, Kalman filtering, simulated annealing, genetic and evolutionary
programming; likelihood tree searching
-
Shapes and fields - vector calculus, surfaces, shape metrics;
-
How to choose a commercial maths tool, visualisation package or runtime
library.
Code would be included (in C++), which would be well commented and made to "industrial strength". The code would also be supplied on CD or downloadable from a web site.
Pre-built versions (libraries and COM components) would also be available.
There would be a reference
section full of standard formulae and tables, cross-referenced to
the pages in the body of the book that describe how to use them.
Please
comment on this idea.
Start Writing Your Own Software
Long ago when I was learning about Electronics there was a great
book called "The Art of Electronics" by Horowitz and Hill. It covers
the whole subject of electronics, touching on the different specialist
area, taking a quite serious approach but without being boring.
I’m thinking of a similar book on software. It would be aimed not at
practising engineers but at amateurs who want to go beyond the stuff
they can read in magazines, but don’t want to read a pile of heavy
tomes delving into every intricacy of programming in a given language. It would also be useful for people who don't know if they want to buy a particular product, such as Visual Basic, and want to see what it can do for them.
It might spend 50 pages or so each on subjects such as: Office
Automation; Programming in Visual Basic; Web Sites; Databases.
Along the way there would be lots of assides and hints, for instance
OO could be explained as part of talking about components, which would
be part of talking about VB. It would not tell you each keystroke and
mouse click but would assume you can already use a computer as an
operator, and now want to know a bit about writing software.
Please
comment on this idea.
Comment On These Ideas
Please contact me at richard(at)richardwhitehead.com. I'm always interested to hear what people do and where they work!