Tuesday, February 18, 2014

Help me name my book

The book I'm currently working on is about the effective use of features new to C++11 and C++14. It covers nothing that's in C++98, other than brief descriptions where they're needed for context. The book consists of entirely new material; nothing is repeated from Effective C++, More Effective C++, or Effective STL. One of the questions I have to answer is what to call this book.

Originally, it was going to be called Effective C++11, but then I decided to cover both C++11 and C++14. My working title is Effective C++11/14, but I'm not terribly happy with that. First, there's no such thing as C++11/14. Second, I'm concerned that by 2015, a book with C++11 in the title will look outdated. On the other hand, I worry that if I call it Effective C++14, many people will assume that it has nothing in it for them if they're "only" using C++11.

An ideal title would convey these points:
  • The content is about the effective use of features new to C++11 and C++14. It doesn't rehash information about C++98, even if it continues to be valid. (For more on this, see my blog entry about the information in Effective C++, Third Edition in the post-C++98 era.)
  • The C++14 material was designed in from the outset, it wasn't just stapled onto a C++11 book as an afterthought.
  • The book isn't a new edition of Effective C++. It complements Effective C++, it doesn't supersede it.
Of course, there will be a description of the book's role and content in its marketing materials, but experience has shown that people often make assumptions about the content of books based on the title and author. Once they've made those assumptions, it generally takes a lot more than a couple of descriptive paragraphs to dislodge misconceptions. It's best for everybody if people's assumptions are correct at the outset.

My plan is to continue my tradition of using a short title that begins with "Effective", plus a longer subtitle. The title can't be "Effective C++," because that's a different book. Here are two possibilities:
  • Effective C++11/14: n Specific Ways to Improve Your Use of the Newest Versions of C++
  • Effective C++14: n Specific Ways to Improve Your Use of C++11 and C++14

What do you think? What should I call the book I'm supposed to be working on as I'm writing this blog entry? What title would be, you know, most effective? (It need not be one of the two I listed above.)

Thanks,

Scott


73 comments:

  1. How about 'Effective Modern C++'?
    Reflects the fact that it's about the newer versions of C++, although some confusion may arrise with the 'Modern C++' book.

    ReplyDelete
  2. How about:

    Effective Modern C++:
    Specific Ways to Improve Your Use of C++11/14

    ReplyDelete
  3. Calling it Effective C++14 still suggests that it updates and replaces the previous edition. How about Meyers' Modern C++ Techniques: C++11 and C++14?

    ReplyDelete
  4. I second Xeo's suggestion.

    Effective Modern C++: n Specific Ways to make better code with C++11/14.

    Then Effective Modern C++ 2nd Edition and so forth for later revisions of the standard / formation of new best practices.

    For the subtitle, it's all about better C++ code! IMHO, this will not be ambiguous or differ from what you'll be delivering in the book.

    ReplyDelete
  5. Ironically, I was about to say that's the best funny title ever, pronounced what? "C Plus Plus...Plus Plus?" I would suggest "C++XY - Effective Methods To Improve C++"
    Since the unofficial name for -11 is 0x and -14 being 1y, I guess.

    ReplyDelete
  6. C++11/C++14 are details relevant in subtitle. The preface can tell this book is relevant to the advances made by the standard, therefore Effective C++ book becomes book series now. This will also help C++14 be recognized as C++ and older classes C++ by full ISO name as C++98.

    ReplyDelete
  7. I would advise against “Effective C++11/14.”

    Even without the slash, the title contains a lot of numbers and punctuation…

    ReplyDelete
  8. May be:
    Effective C++ 2015: n Special ways to make better code with C++11/14.
    So 5 years later, you can release another book:
    Effective C++ 2020: n Special ways to make better code with C++17

    ReplyDelete
  9. I would suggest

    Effective C++ Volume 2: n Specific Ways to Improve Your Use of C++11 and C++14

    This leaves the way open for positioning volumes against milestones in the development of the standard, and also gives you the opportunity to update items in Volume 1 (via online addenda, perhaps) if further developments change best practice for older features. Your publisher may be inclined to re-publish Effective C++ as Volume 1 for newcomers to the language.

    ReplyDelete
  10. "Effective Modern C++: n Specific Ways to Improve Your Use of C++11 and C++14"

    Gets my vote

    ReplyDelete
  11. My suggestion is:
    "Effective C++ 11++".
    This way you could cover as many following versions as you need. And it sounds interesting.
    Good luck

    ReplyDelete
  12. C++11+ seems to be called "modern". What about using that along with a sub-title about 11/14.

    ReplyDelete
  13. My vote is "Effective Modern C++"

    ReplyDelete
  14. How about "Effective C++11 and beyond"?

    ReplyDelete
  15. I also vote for "Effective Modern C++" and you can add more details in a sub-title.

    ReplyDelete
  16. I came here to make my suggestion only to discover others were already making it: Effective Modern C++.

    ReplyDelete
  17. Exceptional C++: Features of C++11 and C++14 and Techniques to Deploy Them

    ReplyDelete
  18. Dang!
    I just heard of this a few minutes ago, and even before I read any of the suggestions my mind wandered to: "Effective Modern C++" or maybe "Effective use of modern C++" but Xeo(and others) beat me to it!

    I would argue that today we say "C-pluspluseleven" in order to distinguish it from old guy. But in a few years "11" will be obsolete.

    Adam H

    ReplyDelete
  19. I don't like the suggestions that have anything in between "Effective" and "C++"; they break away from the pattern of the previous book titles. I would not put the language version in the main title, but only in the subtitle.

    For me, the ideal title would be of the form "[prefix] Effective C++: n Specific Ways to Improve Your Use of C++11 and C++14". The hard part is finding a good prefix. "Even More" doesn't sound right, "Most" closes the door for the next book on C++17. "Expanded" or "Extended" incorrectly suggest that the book contains old material too. "Novel", "Modern", "Contemporary" have a shelf life of just a few years.

    I'd say: if you (or someone) comes up with the perfect prefix, use that. Otherwise, forget about the prefix, and go with your second title.

    ReplyDelete
  20. Use a regular expression:

    "Effective C\+\+1[14]"

    ReplyDelete
  21. @Paul Braman: Herb Sutter already has a book called "Exceptional C++," so that title is off limits.

    @Everybody: Thanks for the suggestions! Keep 'em coming!

    ReplyDelete
  22. Ok, you have heard this one for sure: Even more efective c++

    ReplyDelete
  23. Why not "Modern Effective C++"? But perhaps that sounds too much like an update of the old book.

    How about "Effective C++ - The Next Generation"? :)

    Or, more seriously, "Next-Generation Effective C++".

    ReplyDelete
  24. I honestly think More Effective C++ (0x/1y) might be appropriate. It clarifies that it neither supersedes Effective C++ nor More Effective C++. It also has the working draft identifiers so people know it's focus is the modern updates to the language.

    A lot was added from 98 to 11/14 though, so I'm not sure how it will all be covered; or rather what's in the book. The suggestion may be off.

    ReplyDelete
  25. I approve of "Effective Modern C++". :D

    ReplyDelete
  26. Effectiver C++

    Mathematically, 11/14 would be Effective C++ Roughly 2/3. I think it is more sensible to use the mean however: Effective C++ 12.5.

    ReplyDelete
  27. I also vote for "Effective Modern C++: n Specific Ways to Improve Your Use of C++11 and C++14". To me, that clearly communicates the specific topic while indicating that this part of your indispensable series.

    ReplyDelete
  28. I think "Effective Modern C++:..." is the best name by far.

    ReplyDelete
  29. Personally I think you're approaching it from the wrong starting point.

    Start with the idea that you *will* fully update The Original Series for C++11, 14, 17 and beyond - perhaps calling that uber volume, "Modern Effective C++" (updated when adding C++17 etc).

    Now you're in a position to extract the deltas - similar to what Bjarne did with "A tour of C++".

    Perhaps call this book, "Modern Effective C++ Lite", and make it clear in the subtitle and associated materials that it is an abridged version of the main tome.

    After all, while most of TOS stands-up, it could do with significant reviewing to account for modern idioms.

    This approach does not preclude you writing and releasing the delta-only version first.

    ReplyDelete
  30. Simple, two books Effective C++11 and Effective C++14. Practically, mix them together will bring more confuse and will be less effective. There is a separate line between C++11 and C++14. If the user's compiler only supports C++11, why jump back and forth to read "this feature only in C++14". When user's the compiler supports C++14, they can buy both books. This will make life easier for many people, not just C++ developer.

    ReplyDelete
  31. Effective C++1x (Volume 1): n Specific Ways to make better code with C++11 and C++14

    ReplyDelete
  32. Most Effective C++

    Can also be used for any later book about C++

    ReplyDelete
  33. I'm changing my suggestion from "Effective Modern C++" because I don't think it's a future-proof name.

    Scott, assuming you stay in the C++ game beyond this new book, and I think it's safe to say that everyone hopes you do, then it seems to me that "Modern" could pose a problem for future C++17 and beyond books.

    They might have to be "Effective Post-Modern C++". :)

    I now prefer Leopold's suggestion of introducing a year or Guy Davidson's idea of Volumes.

    ReplyDelete
  34. This is what I got in mind.
    "Effective C++1y"
    "Effective C++ - 4th Edition - New items for C++11 and C++14"

    ReplyDelete
  35. Keep it simple: Effective C++11 and C++14

    ReplyDelete
  36. I really like "Effective C++ Volume 2"

    It conveys that you're adding more to what's already there. "Effective Modern C++" and "Modern Effective C++" still sound like you're covering the whole modern version of the language and not just the new parts.

    Effective C++ Volume 2: n specific ways to use C++11/14 to improve your programs and designs.

    Even "Effective C++ Volume 3" could work if you like to think of "More Effective C++" as volume 2.

    ReplyDelete
  37. You could even call it volume 4, if you think of Effective STL as volume 3.

    Effective C++ Volume 1: 55 Specific Ways to Improve Your Programs and Designs

    Effective C++ Volume 2: 35 More Ways to Improve your Programs and Designs

    Effective C++ Volume 3: 50 Specific Ways to Use the STL to Improve Your Programs and Designs

    Effective C++ Volume 4: 50 Specific Ways to Use C++11/14 to Improve Your Programs and Designs

    ReplyDelete
  38. "Effective Modern C++", "Effective C++ Volume 4"... There are already three previous "Effective C++/STL" books, why should I buy the fourth one? Can I tell just by the title of the book that I need it because it contains important guidelines on how to use C++14 features properly? No. But if I see a book on a shelf of a book store entitled "Effective C++14", I'll get interested, even if I don't know what's inside this book of even who the author is.

    I think the assumption that 'many people will assume that it has nothing in it for them if they're "only" using C++11' is not valid. What is C++14 other than just a (small) refinement of C++11? I think "Effective C++14" is a good title because firstly, it captures the essence of the book and secondly, it captures the attention of readers.

    ReplyDelete
  39. Effective C++ Now: n Specific Ways to Improve Your Use of Modern C++

    Rationale:
    1. Leverage your existing title recognition without confusion.
    2. Gets rid of all of the reasons why someone wouldn't want to pickup the book (11 vs. 14) while driving home the core point - this is NEW.
    3. Gives you license to include (or not) STL related material.
    4. The use of the word Now drives home a sense of urgency - your work is immediately applicable, even if you only read a single recommendation.

    That said, your existing books are still pretty damn timeless. They are truly unlike most "technical" books which age out nearly as quickly as the ink dries.

    ReplyDelete
  40. Next Effective C++ would imply continuity with Effective C++ and More Effective C++. Or would that make people think too much of Java iterators?

    ReplyDelete
  41. Effective C++ [11&14]: n Specific Ways to Improve Your Use of C++11 and C++14

    ReplyDelete
  42. 'Effective Modern C++: ' - I think is the best title for this case. Someone here wrote that this title will be outdated after some time, but I doubt there will be changes in style and ideology as the transition from C++03 to C++11. There will be updates and improvements, but is quite unlikely that there will be even more modern C++ (related to coding style).

    ReplyDelete
  43. Just some wild thoughts that may, or may not, lead to something useful:

    Effective C++: The Second Century
    Effective C++: The Second Millenium
    Effective C++: The New Standards
    Effective C++: The New Batch
    Effective C++: The Next Generation

    ReplyDelete
  44. - Effective C++ 2.0
    - The all-new Effective C++ (carefull, you might be sued by HTC)
    - Effective C++11 & C++14

    ReplyDelete
  45. How about keeping it simple and releasing two books instead?
    - Effective C++11
    - Effective C++14

    ReplyDelete
  46. There's "Effective C++", "More Effective C++", so this should be something like "Yet More Effective C++" because, obviously, C++11 and C++14 are yet more effective than C++98. A special bonus is that the unix/linux crowd will certainly appreciate the "Yet" word for its naming nostalgia qualities ;)

    ReplyDelete
  47. Am I in time? How about:

    "New Effective C++: Specific Ways to Improve Your Use of C++11 and C++14".

    "New Effective" relates to the previous "Effective" and "More Effective". The subtitle includes the specific versions which are targeted.

    ReplyDelete
  48. @Daniel Daranas (and everybody else): You're not too late, so keep those suggestions coming! I read them all with great interest.

    I plan to post an updated status report on the book soon, and at that time, I'll include my current thinking regarding the book's title.

    ReplyDelete
  49. Effective C++11 to 14: n Specific Ways to Improve Your Use of the Newest Versions of C++

    ReplyDelete
  50. Possibly "Emergent C++"?
    That way future iterations don't require a significant title change and can still be seen as part of the series.

    ReplyDelete
  51. I'll go with Effective Modern C++, as has been previously stated.

    ReplyDelete
  52. Effective C++: n Specific Ways to Improve Your Programs and Designs with C++XX [and C++YY]

    or

    Effective C++: n Specific Ways to Improve Your Programs and Designs

    C++XX [and C++YY] Edition


    Just drop the versioning from the title. The brand is: Effective C++.

    C++98/11/14, should be in the subtitle.

    Why didn't you name your first book: Effective C++98 , but Effective C++ ?

    ReplyDelete
  53. I think best title for the new effective book will be:
    "Early 21st Century Effective C++"
    or
    Effective C++ in Early 21st Century"

    Satish Singhal

    ReplyDelete
  54. Anything with "modern" or "new" or alike wouldn't be appropriate. A future version of the book should be "new new" or "very modern" for consistency :P I would suggest:

    "Effective C++11/14: n Specific Ways to Improve Your Use of C++".

    Without specifying "of C++11" or "of C++14" or "Newest Versions of C++", because you already mentioned the versions before and C++ is just one language. This way you make clear that you are giving advices on how to improve our coding in C++, in general, that's what you are actually doing (and that's so much appreciated) :) the "Effective C++11/14" part doesn't suggest that you are replacing the previous version, so it's fine and makes clear that you are referring to the newest Standards.

    ReplyDelete
  55. Or:

    "Effective C++11/14 Only: ..."

    or,

    "Effective C++11/14 Features: ..."

    : )

    ReplyDelete
  56. I would suggest the title
    "Effective New Generation C++".

    ReplyDelete
  57. I'm against the grain but I disagree with the use of the word "modern" in the title. The expression "Modern C++" is not only taken by Andrei's book, it has also become associated with the generic programming techniques described in it.

    I also don't think the word "techniques" is appropriate. In my opinion, I think the "Effective" series explains how to do things correctly rather than demonstrating techniques like other books do. Put another way, "Effective" contains straightforward information you apply immediately instead of patterns you adapt in your code later on.

    I'm quite warm to the idea of working in the word "volume" in the title. I think it's a good way to signify continuation and expansion to the body of work that is the "Effective C++" series. Unfortunately, it does break the pattern of "effective" -> "more effective" -> "??? effective".

    I'll throw in another suggestion because it can't hurt. Assuming the book comes out in 2015: "Effective C++ in 2015". The "in" is important because it's not "C++ 2015" we're talking about. It's about how to write effective C++ in the year 2015. That said, I'm not too keen on anchoring a book to a specific year...

    ReplyDelete
  58. Effective C++ in the Modern Style: n Specific Ways to Write Better Code with C++11 and C++14

    ReplyDelete
  59. My twopence:

    "More Effective C++", or "Effective C++, 4th ed.".

    Rick Armstrong
    Portland, OR

    ReplyDelete
  60. This comment has been removed by the author.

    ReplyDelete
  61. I think "Effective C++" brand name should not be tampered with. Further the new book it should indicate C++11, C++14 names too, to make a selling proposition.

    Based on what Scott thinks I propose:

    "Effective C++ - C++11/C++14 - New items"

    This name is future proof. For instance in 2018 you could have a book

    "Effective C++ - C++18 - New items"

    ...

    ReplyDelete
  62. Effective C++ : Reboot

    ReplyDelete
  63. I prefer:

    Effective C++14: n Specific Ways to Improve Your Use of C++11 and C++14

    ReplyDelete
  64. Beyond Effective C++: n Specific Ways to Improve Your Use of C++11 and C++14

    ReplyDelete