🧠 Meta knowledge and fringe sciences of programming, general cognitive abilities and theories, 💡 big ideas and visions, all these can help us become better programmers.
Name a book that you think has made you a better programmer. It should not be about programming directly, though.
Let's discuss 🗣️!
Top comments (134)
I suggest Deep Work by Cal Newport.
Essentially it is about focus, something hard to do when working at a computer!
This is the book that came into my mind when I read the title. Great book, very useful for anyone.
All of Newport's books are great if you haven't read them. Deep Work is probably the most relevant, though.
Thanks, Leon. I will have a look.
This book changed how I work. Forever. A must-read
Hi Sebastian,
I'll add The Checklist Manifesto by Atul Gawande.
This book explains the use and impact of Checklists and Checkpoints in industries such as construction, aviation and health. If you take the learning from his studies and apply them to building software, you get some great insight in to why runbooks and lightweight checkpoints can actually make a team more performant. And it's a fascinating read too :)
It's on my list now. Thank you, Russell. That's a very interesting suggestion. I appreciate you sharing it with us. 👍
Atomic Habits by James Clear
I only just started.......Ok, re-started (<--- see, I need build the habit to finish what I start :/ ). But it seems like really good and actionable advice for building up any skill or habit.
I thoroughly enjoyed this one! If you're like me and tend to want citations and references, he actually has them in an appendix in the back (something I didn't realize until I finished it), though he doesn't include citation numbers or anything in the main text.
Another classic: "Gödel Escher Bach" by Douglas Hofstadter.
(basicbooks.com/titles/douglas-r-ho...)
A book about consciousness, about self, about "self-referentiality". It tries to answer the question: How can consciousness come about from non-consciousness? This sounds like a very formal and theoretical endeavor, but it lives on its many well-picked exemplifications (in music, art, maths, and other areas). If you like finding patterns in seemingly unrelated things, if you enjoy abstractions, then this book is for you.
I feel most of my more advanced work was inspired by Hofstadter work.
What is the relationship between mathematics, art and music?
What does this tell us about human intelligence?
Douglas posed the right questions. This is the key to any deep understanding of ourselves. We are getting closer to the answer to these questions but they elusive, complex and intertwined in ways we have not yet understood.
I could not say that my work is derivative but Douglas Hofstadter profoundly inspired me early in my career.
Very well said 👏. There is something profoundly convincing in Hofstadter's work. I agree, once you read him, he will follow you through life.
Have you read other works by him?
No and I wish I had. He has a brilliant mind. I see a reflection of his talks about strings in my 80's work which is a functional view.
Yet Numenta's work is neurologically based making use of strings (of bits) again. An NN technology.
Academic discussions of flattening dimensions also seem right on point with Hofstadter's musings.
It seems endless, physics has a view of retaining info on the surface of blackholes as a hologram. Which at least makes a point.
As diverse or obscure as these all are, even emergent, they exist or are defined at a much lower level as strings and functions.
So that's how Douglas influenced my view of AI. Yet that doesn't even touch that very human aspect of art and music and their subtle relationship to mathematics.
Hofstadter has convinced me. It's turtles all the way down... and up.
I have always been convinced that if music might get it's tempo from our hearts, it is more deeply tied to linguistic communication. And the desire to do so. Dialog being a sort of canonical case.
Oh! I would love to hear your take given your linguistics background.
I can add my linguistic point of view, but I'm afraid it will only stir up more questions.
The linguistics community (and I explicitly include here anyone who gives language a thought, their background being irrelevant) has (in the past decades) seen innateness at the core of language. It was there, an organic ability, if you will.
Then innateness has been thrown off its throne and been replaced by higher (general) cognitive abilities, where important parameters were set during one's (especially young) life.
Then parameters were thrown over board and language was suddenly thought of as no different from general human cognition.
Whatever one's stance, there are always rules at play, structures to base linguistic utterances on. And, not to forget, a lot of fuzziness at the fringe areas to various other sciences.
What is interesting to see is the fact that certain key ideas have always been very prominent, namely recursion, combination and generation.
Well sir, being the devil's advocate I am going to have to say that all three are true at once.
There should be a novelty bias or fallacy somewhere. We love to discard what we already know.
And thanks of course. We seem to share similar views. I have encountered your's before.
Sir, in modern times, how would you explain the linguistic pattern that allows any combination (sequence) of verb, nouns and object in languages?
Without any concrete examples in concrete languages it is a bit difficult to answer this one.
In general, languages can be arranged along a scale from 'completely free word order' to 'completely fixed word order'.
Languages make use of word order (syntax) to express grammatical categories and functions. But then, these can also be expressed through the structure of words (morphology) or through other means.
Generally, the less fixed the word order of a language, the more it relies on different means to express said functions (e.g. morphology).
A prominent example being Latin, which had a rather free word order. To make up for this, it made use of strict morphology to express things such as subject vs. object.
What language does your question refer to exactly?
Actually it was broad question that confuses me.
(Excuse my lazy searching,) a short "blurb" from:
montgomeryschoolsmd.org/curriculum...
(I mangled) referring to UG states:
'Some languages have a basic Subject Verb Object (or SVO) structure...
75% of the world's languages such as English, French, and Vietnamese use either this structure or Subject Object Verb (SOV) including Japanese, Tibetan, and Korean.
While others prefer Verb subject object (VSO) such as Welsh or Verb Object Subject (VOS) such as Malagasy.
Some languages, such as Latin, appear to have free word order, but even here, SOV is very common.
OSV is very rare but you will find an example in the speech of Yoda, in Star Wars “Weak in the linguistics I am.”'
.
There are very few ways to account for this and I am not really happy with anything I have been able to conceive.
"The Elements of Style" by William Strunk, Jr. and E.B. White. As a professional author, I go back to it over and over.
Valid point! The programmer inside of me says: Yes, writing style guides are important. Any form of reflection and convention is.
Then comes the linguist inside of me objecting: But the prescriptivism! 🤪🤣
I find this is usually a fairly hollow argument, although I don't blame you for it.
Grammar and style rules are not "prescriptivist" by the (inappropriately negative) connotation modern society attaches to it, any more than coding syntax is. It's impossible to communicate thought consistently and reliably without a shared grammar, and the only way to have a reliable shared grammar is to formalize one! Even those who like objecting to the "constraints" of a formal grammar use formal grammar while constructing their objection.
A good writer knows when to break with a rule of grammar and style to most effectively communicate their meaning, and The Elements of Style is fully compatible with that mindset. The important part is that a good writer can objectively justify their departure.
At the end of the day, the entire responsibility for clearly communicating a thought is on the author (or speaker). If a specific revision of a rule of grammar or style is needed to communicate that thought most effectively, it is justified. The formal grammar becomes explicitly revised, instead of implicitly discarded.
This is how the evolution of language occurs: explicit (although oft unstated) specific revisions occur to grammar, style, spelling, meaning, or other language constructs. These are propagated through regular use and either explanation (quite often!) or through contextual inference. Someone had to teach you, for example, what the acronym "BRB" means, although you probably don't remember the very brief explanation that almost certainly occurred. So, even while these revisions to language are seldom written down, and certainly aren't voted upon by a panel of linguistic experts who institutionalize the language, they are still explicit and specific. The geosociopolitical reach of this propagation is how dialects, slang, and other cultural artifacts of language occur in the first place, ergo why "Bless (your/her/his) heart" is a Southernism, while "Dontchaknow" slips into Minnesotan dialogue.
By contrast, the societal claim that "grammar is bad because its prescriptivist" is not rooted in linguistics so much as in the trend of modern illiteracy (or perhaps better, "malliteracy"), where many individuals, especially the younger texting-oriented generations, resent the need to put forth effort into communicating clearly in writing with formal grammar, especially in academic and professional circles. "we ned 2 tak b4 meetin" is not appropriate business communication, not because of arbitrary rules enforced by evil grammar Nazis, but because it requires considerably more effort to distill meaning from; the overwhelming majority of this informal communication renders the message cryptic at best, and altogether illegible at worst.
One more point: failure to use a socially accepted and situationally appropriate formal grammar and style is actually a form of discrimination, as it assumes that the audience is homogeneous and of the same culture as the speaker. The purpose of formal grammar is to create a single system which everyone has equal opportunity to learn, and which all can use regardless of their particular cultural dialects. Nearly all English education employs the same formal grammar system, so that system is the only means of ensuring that the message is (reasonably) clear to audience members who are English as a Second Language, lack higher education (e.g. college), are from a different generation, or otherwise are familiar with a different English dialect. Via the internet and other public resources, curriculum, materials, and tools for learning and practicing formally are equally available to everyone, at all skill levels. No equable collection of resources exists for any informal dialect or distortion thereof.
Even if some of the meaning in the message may fail to translate across such cultural gaps, the majority is clear, and the remainder can be worked out with a bit of contextual inference and/or a few clarifying questions.
That long ramble summarized: formal grammar is the only means of communicating clearly, consistently, and effectively to a diverse audience. Changes to that grammar are specific and explicit, and can be learned over time, but claims that formal grammar and style are "prescriptivist" are really (usually) veiled rebellion against putting forth effort in employing the formal structures of language that are essential to effective communication.
I am sorry, Jason, I am sure you mean very well, but I'm not here to fight any fights.
Suffice it to say that many of your premises are (from a linguistic point of view!) unfounded, some biased. But let's not get into this here. This is not the time nor the place.
Again, thanks for your input. I appreciate your comment and I do not mean to step on anyone's toes here. I have fought these kinds of arguments often enough, I'm tired of them.
Though, I wouldn't mind taking these things up in a private conversation. I take it we can both stick to the factual and, at worst, agree to disagree.
Not particularly interested in a long debate on PM, honestly. What I said comes from an academic background in intercultural communication, and two decades of professional writing, speaking, mentorship, and community management. In those twenty years, I've developed a solid opposition to the anti-grammar movement because of the fallout I've observed first hand. That's why I'm passionate about it.
So, you don't have to agree—I'm fine agreeing to disagree—but I don't have the time or interest to debate it, especially off in a PM where it won't do any good. I said my piece, and there's nothing more I could have to say.
That's fine. One thing, though: The idea of prescriptivism that you portray here (being against any form of norm or rule, frankly) has nothing to do with the linguistic objection to prescriptivism (and hence my objection 👆 up there).
As a linguist, my only interest is to describe what language really is like, not what it SHOULD be like (from whatever standpoint).
Standards and norms exist, and they have their place, though they are not "God given" and have little to do with natural, authentic language use.
Besides, there is never ONE standard or norm, there is always a competition among many. Even, and especially, for English. (Just look at the many different style guides and prescriptive grammars that exist).
That's a huge difference.
Ahh, well then, you've actually reinforced my position. From wikipedia (with citations for this there, see original page):
Therefore, we're in complementary positions that do not contradict each other. You're describing "how people speak in group X", whereas I'm referring to "how people can effectively communicate with people in any group." I never said that understanding how language is used is not important — in fact, I spent a good part of my post reinforcing the point that formal grammar and style evolve, and how that is complementary, not antagonistic, to formal grammar.
So, we're not in opposition, and The Elements of Style is proven useful. As I said, a good writer knows when to deviate from a rule, and more importantly, why.
Yes, agreed. Plus, as a (descriptive) linguist I don't judge, I don't follow prestige thinking, I see value in any and all form of language variation: old or young, formal or informal, spoken or written...
However, in academic discourse I value and follow norms and standards as much as you do in your profession, though I know these are normative means to an end, and there are also other, no less valid norms.
If you read my original post, you will see clearly that I too find value in language variation; what I do not find is effectiveness in the context of communicating to a diverse audience. While one may use a dialect, and welcome to it, among other individuals familiar with that dialect (or in a position to become familiar with it), such a dialect is often insufficient for communicating with individuals lacking the cultural foundation to understand it. That is the chief point here: a formal grammar and style provides a common foundation upon which to build any dialect or other departure from the language. The norm provides a common tongue from which all others may be derived in distinct and consistent ways, as you describe, but it is not helpful to then discard that common foundation as having no merit.
You also must surely see that some especially modern informal language variations habitually lack clarity and effectiveness, even among their most fluent users, "text speak" being among the chief examples here. While sufficient for transmitting simple ideas, communication in these variations breaks down when attempting to express more complex thoughts, wherein one must fall back on the earlier formal grammar that the dialect derives from in order to best convey meaning.
I am not being judgmental in this, and I believe the accusation of "prestige thinking" is both unfounded and wholly beneath you. It is neither judgmental nor discriminatory to recognize inefficient communication habits that have become commonplace in our culture. The problems I originally described do not relate to cultural differences, but to a lack of care and attention that is not tied to any one culture group; it is the same lack of care which leads (say) a college student from an affluent background to substitute a limited collection of filler words in for over half of their message, and then demand that their listener somehow wring meaning from their obscure manner of speech. Adherents of that trend often bandy about accusations of "prescriptivism" — indeed, they're the most common users of that term in my experience — when they are urged to adopt some formal grammar and style to aid the listener, and it is that trend which I am addressing. In fact, they are abandoning the constructs of language itself, even from the perspective of the most forgiving descriptivist.
We clearly do look at the world from totally opposing perspectives.
As I said, standards and norms have their place and merits. But they are always only one of many existing standards and norms, none intrinsically better than others.
Also, don't forget that your language (whatever standard or non-standard you adhere to, on whatever level) is a dialect (a variation) as much as any other dialect. It's never just your language vs. other dialects, there are only dialects and variation, there is no global standard.
That, and only that, is an accurate description of reality.
I'm well aware there's no "global standard", but you of all people should know that dialects all have family trees, and that they often have many commonalities based on those family trees. Virtually, all English dialects, for example, terminate their sentence with a punctuation mark, usually a period (.), interrogation point (?), or exclamation mark (!); rare dialects may have dropped this convention for some particular reason. Failing to mark a question with a
?
will almost always obscure meaning in virtually any dialect.I think the point that I'm wanting you to understand is that, while your points have some intrinsic academic merit, that will be lost on the average reader. We do have a strong cultural push to eschew language structure altogether, and that has detrimental effects on interpersonal communication in modern society. Many of your points, if taken out of the context of linguistics, can be misinterpreted to lend license to this wholesale abandonment of language structure—something I know you are not advocating for, but could nonetheless be interpreted by a layperson as saying.
But I will leave it at that.
Again, I am not against standards and norms entirely. In certain highly formalized settings, they make sense (my personal opinion).
But linguists see the bigger picture (spoken language comes first, written language is secondary). What I do not agree on is saying that without any prescriptive norms language becomes unintelligible. It does not. Language works perfectly, and has done so for thousands of years, without prescriptive norms.
Such norms are primarily a way concerning written language, and there they function as gatekeepers and exclude speakers. They do so in the same way that you criticize dialects for: Certain people outside of such dialect have a hard time understanding things.
That might be true, but dialects don't follow a gatekeeper agenda. This is one of the things that I want to point out.
Well, that may be true, but all I can speak from is my practical experience both observing and repairing ineffective communication. I will grant that is primarily written...but then, as this started because I recommended The Elements of Style, I'm really not sure where y'all drifted to verbal communication; dialect appears in written communication too, and that's what I was primarily to. I choose to believe that was an unintentional drift, and not a deliberate moving of the goal posts.
In theory, language works "perfectly" without prescriptive norms; I'd argue in the case of verbal, that's mostly true, but largely because of the support of paralinguistic communication such as tone, body language, and facial expressions, which are instinctual and universal cues among humans. Those paralinguistic cues enable a listener to construct meaning from otherwise unfamiliar phrases and structures.
However, in practice, without some shared understanding of the structure of language, especially written, a lot of miscommunication and misunderstanding occurs, even in verbal communication. History shows plenty of that, as I'm sure you know as a linguist. This happens most often in written form, however, because of a lack of paralinguistic cues.
I wholly disagree with your statement about grammar functioning as a gatekeeper, especially in the context I've been talking about, and once again find it hollow, but I don't feel it's worth discussing, especially not here.
I would point out that linguists don't have a monopoly on the bigger picture here; yours is not actually bigger than that of this communications major, it's just coming from a different, equally broad, equally objective, and equally factual angle. Be careful not to confuse the two.
Anyway, this prescriptivism vs. descriptivism debate is easily centuries old. We're not going to settle it in a comments thread on DEV, and as it is ultimately a known false dichotomy (as I keep trying to assert), it's not resolvable anyway. So you can respond however you like. I'm leaving this off here altogether and moving on. Lack of a response from me herein doesn't constitute agreement or concession, just not particularly caring to continue.
Agreed, thanks for the discussion. 👍
Oh man, now that takes me back to high school.
And is a really really good suggestion.
Either The Lean Startup or Peopleware. The former teaches about startups and the importance of developing an MVP before then iterating to eventually get to an MMP. The latter is more of a discussion on the social element of software engineering - from management topics to things like the effects of a quiet workspace.
The Jean Startup will sound cheesy, it's a book people love to hate. But if you try to capture the spirit behind it, it's invaluable!
The Lean Startup is awesome. Will have to look at Peopleware!
The Lean Startup is new to me. But Peoplewate I have come across before. It's in my library, but I haven't read it yet. Great suggestions!
Art and Fear: Observations on the Perils (and Rewards) of Artmaking
by David Bayles and Ted Orland
The Icarus Deception: How High Will You Fly?
by Seth Godin
Both are about art and not programming, but I think they hepled me to get into a healthy mindset when doing software projects. Especially if they were sid-projects I did without other people involved.
I think software development is a bit more rewarding than regular art, because you can make good money from it, even if you average, so becoming a professional artist is much harder than becomming a professional programmer, but many devs struggle with the same problems.
Very exciting connections between art and programming. And I'm sure there's a lot of wisdom and insight to be gained from as a dev. I have added it to my list and will check it out. Thanks, also for the links 👍 Highly appreciated.
Jaroslav Hašek: The Good Soldier Švejk - how to survive in a system, where the management is completely dumb.
The Wikipedia article on it looks very interesting. Certainly written from a one-of-a-kind perspective given the circumstances of those days. It's now on my radar, thank you.
I have one, that had been read by a lot.
It is a book about living a simple life I'll say ! It really helps my with the vision I had of my projects and tasks.
Right now I am in the midst of reading Computional Thinking, basically gives a brief overview of the sub disciplines of Computer Science and how Computional Thinking can enhance the way we solve problems and generate algorithms.
Who is the author? There are a dozen books by this title.
I have the same authored book as Sebastian
Good point. Denning/Tedre (MIT) is on my (Kindle) shelf.
Also still on my shelf awaiting to be read. 🙈
Zen and the Art of Motorcycle Maintenance by Robert M. Pirsig.
(I'm probably showing my age, but then someone else has put Gödel, Escher, Bach which - I've just checked - is going almost as far!)
Why?
Because it's a book who's most obvious message, at least, is about how to fix things by understanding them, which can only be good and is the difference - in my experience - between okay programmers and good programmers.
On the other hand, learning how to program shared code and how to make your own code understandable to others can most often involve NOT going off and forging your own route - and in many ways is probably the converse of the message in this book; but is something different and important that you need to learn as a programmer, too.
I like the idea very much. I'm surprised at all the great suggestions people come up with here. I will put this one on my radar, even though I'm not a biker 👍 Thanks, Mike
My software engineering professor suggested this to me, and it really does have some great lessons.
My suggestion: Emergence - by Steven Johnson.
Why? Because it shows the importance and relevance of bottom-up systems that show interesting and intelligent behavior based on the reciprocal inner workings of simpler principles. Great read!!
The Black Swan: The Impact of the Highly Improbable. By Nassin Taleb
Because it deals with unforeseen scenarios that occur in everyday life. It can also be seen in projects.
Unrelated to the OP, but Skin in the game is another awesome book by the same author.
The Charisma Myth by Olivia Fox Cabane is a really good book on leadership and communication. It's like a modern "How to Win Friends and Influence People."
So many of the best people to work with are great communicators, this book really helps with that.
I would suggest Attitude is Everything. It will help you to see things from different angles and to have a better view over multiple problems.
Love this one!