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:

Xeo said...

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.

Neil said...

How about:

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

Potatoswatter said...

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?

Mark said...

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.

Daryn said...

Just for fun: C++++

Anonymous said...

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.

Vipul Chawathe said...

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.

Zara said...

Effective novelties in C++

P said...

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

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

Dolazy said...

How bout "Super Effective C++"?

Leopold said...

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

Anonymous said...

Effective C++ 3

Guy Davidson said...

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.

Alastair said...

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

Gets my vote

mrslavchev said...

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

Anonymous said...

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

Aleksandr Perepelitsyn said...

My vote is "Effective Modern C++"

Ernest Zed said...

How about "Effective C++11 and beyond"?

Shafik Yaghmour said...

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

The Buzz Saw said...

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

Paul Braman said...

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

Anonymous said...

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

René van Oostrum said...

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.

Eric Niebler said...

Use a regular expression:

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

Scott Meyers said...

@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!

Nacho said...

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

Christian Hackl said...

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++".

Jason Schulz said...

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.

Anonymous said...

Effective C++1x ?

Andrei Alexandrescu said...

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

Casey said...

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.

Unknown said...

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.

Dorin Lazăr said...

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

Phil Nash said...

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.

YC said...

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.

Caibbor said...

Even More Effective C++

(:

Anonymous said...

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

Anonymous said...

Most Effective C++

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

Neil said...

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.

Sebastien.F said...

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

Anonymous said...

Keep it simple: Effective C++11 and C++14

Alex Howlett said...

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.

Alex Howlett said...

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

Alexei Zakharov said...

"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.

Andrew Magruder said...

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.

Max Kaehn said...

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

existingprofile said...

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

Olafur Waage said...

I vote for Effective Modern C++.

Anonymous said...

'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).

GregM said...

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

Hatem said...

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

Hatem said...

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

Krzysztof Kawa said...

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 ;)

Daniel Daranas said...

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.

Scott Meyers said...

@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.

Razvan Pascalau said...

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

Richard Perry said...

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

faranwath said...

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

morrowyn said...

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++ ?

Haitham Gad said...

Effective C++14

Satish Singhal said...

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

Giuseppe De Rossi said...

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.

Giuseppe De Rossi said...

Or:

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

or,

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

: )

Mantosh Kumar said...

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

David Capello said...

Effective Standard C++

Anonymous said...

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...

James MacMillan said...

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

Rick Armstrong said...

My twopence:

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

Rick Armstrong
Portland, OR

Rick Armstrong said...
This comment has been removed by the author.
Vidyesh Jha said...

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"

...

Anonymous said...

Effective C++ : Reboot

Gian Lorenzo Meocci said...

I prefer:

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

Adrian said...

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