Welcome to Software Development on Codidact!
Will you help us build our independent community of developers helping developers? We're small and trying to grow. We welcome questions about all aspects of software development, from design to code to QA and more. Got questions? Got answers? Got code you'd like someone to review? Please join us.
Should asking about book recommendations directly connected to software development be on-topic?
Context
We have recently received a suggestion to allow questions about recommending books directly connected to software development.
The way I see this now (pros and cons)
Pros:
- allow more questions that help software developers
Cons:
- tend to be open-ended, unless there is not a vast domain (e.g. Java development)
- tend to be opinion based
What do you think? Should we allow such questions?
I respect Alexei for opening a discussion on this, and Lundin for providing hard-won real world experience. I would lik …
2y ago
Are we talking about questions asking for book recommendations, or for a way to share/compile book recommendations? A q …
2y ago
As someone who spent a lot of time trying to get this to work on Stack Overflow, I would advise against it. Some …
1y ago
Are books special? When I see a question like this, I naturally transform it into a more general question about resou …
1y ago
Disclaimer: I am new here, I have not understood the overall policy of the site (yet), I can offer no moderator perspect …
2y ago
>To be a "better" site with helping people learn and grow and figure things out for themselves (instead of only giving t …
2y ago
Here is a slightly different suggestion, that may avoid the problems with open ended book recommendations. Book lists …
2y ago
7 answers
As someone who spent a lot of time trying to get this to work on Stack Overflow, I would advise against it.
Some background story of my merry adventures with book lists:
The story starts around here: Delete the list of random books? Back in 2015 I stumbled upon a list of random books not necessarily even about programming. It was such a clearly bad and off-topic post that I thought it would be no big deal to delete it. I quickly got quite significant community consensus of around +75 score to back me up. Several moderators had correctly tried to get rid of it over the years too, only to get some deletion rollback. SO staff overruled moderators at several occasions. In the end, I could only conclude that the list of random books was important because it had lots of traffic, even though it was blatantly off-topic.
A couple of years later, a moderator decided to merge all post in a similar book list regarding C programming specifically. This list was far more on-topic and I had initially supported it and contributed to it. But after the list was merged, it was no longer clear who was recommending what, which recommendations that had been up-voted and so forth. It was no longer a list of recommended books, but just a list of books. It was also highly subjective and poorly maintained.
Taking it to meta again, I posted The C book list has gone haywire. What to do with it? Again community consensus was reached, the post was deleted and that ought to have been the end of it.
Then some year later, staff (again) does a rollback undeletion, unaware of the previous consensus to delete it. Just because a high rep user has urged them to undelete it. Again, I had to explain that it was still a mess, a list of random books neither sensible nor actively maintained by the community. The user who had insisted to undelete it said that they would organize active maintenance of the post and they have since then done a little bit of that, although not nearly enough.
Another year later, not much had happened. I posted this, arguing that if we were to keep the book list, we had to severely step up the quality concerns. I made some suggestions for a quality criteria, including a proposal to add shockingly pedantic requirements such as "you shouldn't recommend a book unless you have actually read it". This post didn't get much attention and so the whole thing remained in "status quo", where it remains to this day.
Many years later and these two horrible book lists are still there. Even though they are explicitly off-topic for SO and of very poor quality, recommending things at a whim, including bad books. Making the Internet a worse place, one recommendation at a time.
Lessons learnt
Since book recommendations are subjective by their nature, people's opinions about how to maintain the book list are also similarly subjective.
Including:
- What scope should the book list have?
- How should the book list be maintained and by whom?
- What criteria should there be for adding a book?
- What criteria should there be for removing a book, if any at all?
- Should anti-recommendations be allowed or not?
Codidact perspective
Ok so Codidact isn't SO and at least we don't have to worry about some company goons undeleting things that were bad but rendered precious site traffic.
We do also have a little bit experience from other Codidact sites allowing recommendations: Outdoors - Gear Recommendations and Photography & Video - Gear Recommendations. Ignoring imported SE posts, these have mostly been well-received, or at least not heavily down-voted.
Overall, I think the spirit of Codidact is to have a higher tolerance about posts that address important topics even though those topics may be on the opinion-based side of things. So maybe recommendation-like questions work better here than on the big SE sites. There do exist smaller SE sites dealing exclusively with recommendations and those seem to be doing ok too.
A need for trusted recommendations still exists
With crappy Internet/Youtube tutorials becoming increasingly common, it can't be denied that a canon of actually good learning material is more important than ever. And as shown by the previously mentioned book recommendation lists, there's no shortage of really bad books either.
Just yesterday, I went up against some C programming book on SO, verifying that yes indeed, you are right to question this book, because it is wrong. It's valuable to mankind to have a place where confused students can verify that their books or teachers are not a source of learning, but a source of confusion.
However, and this is probably the biggest argument against it, I don't think Codidact has enough domain experts to maintain quality of any such book recommendation lists. On SO you might have some 10-20 leading experts in any given topic, proof-reading what you write. Meaning that the site can actually do things like confidently questioning the correctness of authoritative sources like programming books or compilers.
Although even with expertise in place, SO has repeatedly failed to provide useful book recommendation lists... There are some which supposedly are ok(?) like their C++ list, but I haven't read enough C++ books to tell.
My conclusion
There may be a place for programming book recommendations here, but unless we can definitely guarantee quality, we shouldn't attempt it.
0 comment threads
I respect Alexei for opening a discussion on this, and Lundin for providing hard-won real world experience. I would like to put in a "pro", on the grounds that "I read this book and I'm a better programmer for it" is information that directly supports the codidact mission of helping each other learn. It's related to the old observation that bad IT people have walls full of certifications and good ones have shelves full of books. A fair question is how to maintain adequate quality and I'm short of concrete suggestions at the moment. Lundin's attempt to limit recommendations to things the person posting has actually read seems like a reasonable minimum.
Are we talking about questions asking for book recommendations, or for a way to share/compile book recommendations? A question doesn't have to be the vehicle for the latter.
A question like "what are the best C++ books?" is likely to yield results that are haphazard and hard to manage. It would probably be more productive to focus on questions of the form "I want to learn more about X and have the following background and constraints; what is a good resource for self-study?". Notice what I did there: it's not a general-recommendation question, it's not meant to be the place for a whole topic, and it calls for context. (This is the approach that the "(something) Recommendations" sites on SE use.) This means we might end up with a bunch of questions about the same general topic, but approached from different angles. It seems like, with proper tagging, that could work, especially if these questions are in their own category.
But if the goal is to share knowledge, not ask a question (what I gather happened on SO, though I wasn't there), the community could instead use articles -- either general resources like Languages & Linguistics is doing, or a blog where a single author writes an article and there can be multiple articles on the same general topic. It sounds like you're not looking for the general-resources approach of L&L, but a blog approach could still work. You can set rules for blog posts, and community voting would provide signal.
1 comment thread
Are books special?
When I see a question like this, I naturally transform it into a more general question about resources. Printed books aren't necessarily the best way to learn about programming concepts; web pages may work much better. Some people like video tutorials; I personally have found they're usually not very good and that letting someone else set the pace doesn't work well. However, fundamentally I don't see a big enough difference between "recommending a book" and "recommending a Youtube video" to give them different policy treatment.
Beyond even that, I would classify resource requests the same way even if they aren't educational. Looking for a library to handle certain types of programming task, is currently deemed off topic on Stack Overflow - with all the same rationale as the questions about books etc. But in my view, a place that sees value in recommending one should see value in recommending the other.
With appropriate focus, sure, why not
The scope of Software.CD has already been established to be broader in some regards than Stack Overflow; in particular, we accept design and architecture questions that the Stack Exchange network would definitely see as a better fit for softwareengineering.SE, cs.SE, langdev.SE etc. I feel like if we're including those sorts of things, then "softwarerecs.SE for programmers" (i.e., recommendations for libraries, linters, IDEs etc.) fits naturally, and therefore so do the book requests.
However:
-
This cannot be permitted in the main Q&A space. Fundamentally we are talking here about requests for someone else's opinion, or to seek a discussion of pros and cons. This does not fit a Q&A format, which fundamentally is a way of presenting objective material (like a FAQ on a website, or a children's science book with horribly contrived questions about potato batteries). It should be in a separate category - possibly using the Wiki category type.
-
Posts need to have very specific requirements. If someone is looking for a library, it should be for a task (or a set of clearly related tasks) that is well enough defined that only a few libraries make any sense to recommend. Perhaps only one. A request for a book can't just be "a book to use to learn Python"; it should have some constraints on the target audience (People coming from other languages? Complete beginners? People targeting a specific type of development once they've learned the fundamentals?).
-
We should try to minimize follow-up discussion about individual resources. If someone tries to follow a video tutorial and runs into a specific problem, then that is either a specific problem that forms the basis of a Q&A that is not really about the tutorial, or else it is off topic entirely. The most we should say about the resource is (implicitly) that it is fit for the specific purpose for which it is being recommended, and any other specific information that people should have before considering it (e.g. availability and likely cost range for physical printed books; the license of a library; etc.). Ideally we don't get into anything more subjective than "worked for me" reactions (which for a book could mean "I have this book and I learned something valuable by reading it").
-
I do agree with trichoplax that we shouldn't entertain explicit requests to compare two resources for a particular purpose.
0 comment threads
Disclaimer: I am new here, I have not understood the overall policy of the site (yet), I can offer no moderator perspective, more a user and regular (unpaid) documentation contributor perspective.
The current answers mix a lot of different approaches together and the question was not specific in which approach should be pursued. Maybe instead of saying no, the goal should be to find a solution which is managable, not "authoritative" list with random books of questionable quality.
I would like to respond to the initial question how I understand it: Questions asking for book recommendations on a specific topic (e.g. getting started with python, clean code etc.) or even if a more complex topic can't really be answered or should be answered with book (or online resource) recommendations. It is not about "A question about a specific book" or comparing 2 books. Also, I am not sure about the collaborative community maintained authoritative answer. Why not use the ususal answer format and get the best answers upvoted?
I would be pro questions asking for recommendations and answers with (ideally) annotated book recommendations (where the recommendation is explained) because:
(1) A large flaw of Stack Overflow is IMHO offering too much fish and not enough teaching how to catch fish. If you ask for a book recommendation or how to get started as beginner or how to increase knowledge on specific topic or how to debug and troubleshoot, the question will (usually) be closed. But trivial RTFM or copy-paste beginner questions are heavily upvoted.
To be a "better" site with helping people learn and grow and figure things out for themselves (instead of only giving them the answers, ready to copy-paste), it is my wish the site offers more help for "how to learn something" and "figure things out themselves" and maybe not less but less prominent "how to do xyz".
(2) IMHO, some questions should not be asked, especially if they would be self-answered by taking a good book or online tutorial or online course and learning for an hour or even a week. But, as a beginner, it is very difficult to figure out what a good resource is. Help make it easier to rely on and strengthen good learning resources (be it in books, online, videos or whatever) instead of effectively replacing them. And offer something only where these fall short.
Example: Not programming related example for trivial beginner question and docs drowned out by forums in search:
- search for "exit vim". The documentation is drowned out by the forums in the search results. In the documentation, this question is answered. If the explanation in the docs is not sufficient, I would attempt to improve the documentation, not ask and heavily upvote a question about it on Stack Overflow. The same goes for many Git questions, JavaScript etc.
- Another example: The Apache web server documentation online is free and excellent. Yet many people insist on asking trivial questions where the answers are literally copy-pasted from the docs.
Book recommendations will not entirely solve this. But they are a start and a commitment to fostering learning.
To be a "better" site with helping people learn and grow and figure things out for themselves (instead of only giving them the answers, ready to copy-paste), it is my wish the site offers more help for "how to learn something" and "figure things out themselves" and maybe not less but less prominent "how to do xyz".
That would be a site I'd be inclined to visit often.
0 comment threads
Here is a slightly different suggestion, that may avoid the problems with open ended book recommendations.
Book lists? No
I'm not entirely against opinion based questions, but I am against opinions that are not attached to any meaning. It doesn't help me to know that one book has more votes than another. Some of the most misleading books in existence are very popular. Similarly, some excellent books are very popular but irrelevant to what I need to learn. I don't need to know how many people the book is useful to, I need to know what type of people the book is useful to: their prior experience, specific aims and requirements. Otherwise I have no idea if a good book is good for me personally.
In a book list question, even an answer that only contains one book is no use - the votes tell me that some people who know about software like that book. But people working in software may have very different ideas of what makes a book good. If they work in a field I know nothing about, the book may be too advanced for me. If they have fond memories of the book from when they first started out, the book may be irrelevant to my current understanding.
Specific book questions? Maybe
A question about a specific book can have answers that give reasons why that book is useful, and specific areas it is relevant to or not. Then votes won't be for the book, but for the answer that best sums up who this book is good for.
A book is not good or bad, it's fit for a specific purpose or not. The question should ask about a specific book, and not ask "is this book good?", but instead explain in detail why the question author is considering the book: what they have heard about it, what they are looking for, what is their background, what is their aim?
New post Category
Even having said this, I'd still question whether it is a good idea to allow book questions in amongst software questions. Is it worth considering a separate Category? If so, would that Category be for book questions, or for questions about general educational/reference materials?
I'd like to see a different term introduced, to replace "book recommendations". Although accurate, it also brings expectations of judgement of the book as good or bad, rather than as suitable for a specific set of needs. Maybe "book suitability question" would work - or perhaps someone can come up with a catchier Category name that gets the same point across - possibly not restricted to just books.
An advantage of a separate Category is that it can have a separate tag set, which might help people searching for specific fields, tasks, backgrounds or experience levels. I'd expect some of these tags to be problematic to introduce to the main Q&A tag set. Moving from language A, or moving to language B, might be useful tags in a book Category, but would probably just be noise if people start using them in the Q&A Category.
Strict focus
If this Category is introduced, I'd want questions to be closed unless sufficiently detailed. Not just mentioning a field and a few words describing experience level, but specific examples of what kinds of work has already been done and what needs to be learned.
This would not be a book review site. It would be for specific questions each from one person seeking a solution to match their individual circumstances - much like the Q&A Category.
One book per question
There will understandably be people who want to ask a question comparing 2 similar books, or asking for helping narrowing down from a shortlist of 5.
I would recommend putting in writing at the top of the Category page that it is strictly 1 book per question. This way the answers focus on the question author's requirements and current understanding, rather than tending towards spotting the differences between 2 books, where those differences may not be relevant. This also avoids the problem of voters rewarding the answer that favours their preferred book (voting for the book) rather than the answer that best addresses the requirements of the question author.
Potentially multiple questions per book
Personally, I would not necessarily consider a question about the same book to be a duplicate if it describes different requirements or a different current understanding/background.
0 comment threads