I am currently publishing a book "Beginning SQL with SQLite" with O'Reilly Media. I wrote it initially pro bono to help train unemployed professionals in Dallas, but the other volunteers (many of whom are local CEO's) insisted I publish it. O'Reilly was very receptive to the book and Richard Hipp (the creator of SQLite) even reached out to help review it.
I am discovering I love sharing what I know. I am passionate about enabling people and making technology accessible to even the most nontechnical folks. After this book publishes, I am already outlining the next book to further my mission to democratize technology. I am a
Java developer and have written a lot of intensive business applications with it. I think I am going to write about that next. But I am debating the audience.
A common complaint I hear from people learning Java from books is they do not know how to apply it. They go through an encyclopedic documentation of functionalities (even with beginner books), but afterwards they do not know how to piece these functionalities together to create a practical solution. Even worse, these beginner books do not teach some very simple best practices that can save their program from severe bugs, especially in mitigating mutability with immutable designs and Google Guava 's Immutable Collections. I do not see why beginners cannot be taught to leverage these relatively simple practices and libraries that make a world of difference early in their programming success.
But that is also my paradox. Knowing how to do something well often comes from experience and mistakes. But at the same time i would like to believe preaching immutable design early on can make a difference in a beginner's success and program stability. I am not preaching they learn functional or reactive programming as a beginner, but there are simple measures they can take I wish people told me early in my programming career.
Another idea I have floating in my mind is a book that uses an underlying project to teach Java. This will solve the complaint I have heard from people and provide an opportunity to apply and integrate Java knowledge on a real business problem. If throughout the book a business problem is presented and with each chapter some code is added, a full-solutioned product will be built by the end of the book, and encompass all topics from class design to database interaction and JavaFX GUIs. This is what a lot of people want, but then I ask if this fits into a beginners book as well.
What do you guys think? Can I take all the material above and put it in a single book? Can a book have "practical" beginner material and an intensive project to apply it? Or would it be better to separate that into two books? Or should I target this as an intermediate book and not a beginner book?