loading...
Cover image for Name a Non-Programming 📖 Book that will Make you a Better 👨‍💻👩‍💻 Programmer

Name a Non-Programming 📖 Book that will Make you a Better 👨‍💻👩‍💻 Programmer

lifelongthinker profile image Sebastian ・1 min read

🧠 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 🗣️!

Discussion

pic
Editor guide
 

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.

 

This book changed how I work. Forever. A must-read

 

Thanks, Leon. I will have a look.

 

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

 

This one. Ditto to this one. Amazing book. Can’t recommend it enough.

 

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.

GEB
(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! 🤪🤣

 

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

Prescriptive approaches to language are often contrasted with the descriptive approach ("descriptivism"), employed in academic linguistics, which observes and records how language is actually used.[8][9] The basis of linguistic research is text (corpus) analysis and field study, both of which are descriptive activities. Description, however, may include researchers' observations of their own language usage. In the Eastern European linguistic tradition, the discipline dealing with standard language cultivation and prescription is known as "language culture" or "speech culture".[10][11]

Despite being apparent opposites, prescription and description are often considered complementary,[8] as comprehensive descriptive accounts must take into account and record existing speaker preferences, and a prior understanding of how language is actually used is necessary for prescription to be effective.

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 Lean Startup is awesome. Will have to look at Peopleware!

 

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

 

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

 

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.

  • The subtle art of not giving a f*CK Clearly this book is awesome and all of its ideas can refer to every domains. And we all know, as Devs, that we do give too much f**ks to too much things.

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.

 

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

 

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.

 

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.

 
 

I've loved the advice from The Healthy Programmer, it has done a lot to keep me moving while working from home, and has helped me start some much better habits!

 

I have to name more than one. The Back of the Napkin and Show Don't Tell by Dan Roam and Be Bad First by Erika Andersen.

Learning how to distill ideas down to their simplest parts and communicate them are essential. We have to do that with our teams and with our compilers. Dan's books help hone that skill set.

Learning something new - or something even slightly new - can be a challenge. Learning something new is often a struggle. I tend to default to what I know because I know it. Erika's book helped me be more open to starting the learning journey over and over again many times without seeing myself as a failure. It is a good extension to the "Crawl, Walk, Run" model but allows for the stumbling and bumbling and fumbling too.

 

Thanks, Rob. I will have a look. 👍

 

It starts with why.

 

This is a great one! By Simon sinek?

 

This is kinda cheating, but Algorithms To Live By, by Brian Christian and Tom Griffiths, is really interesting. It's cheating because it's about, well, algorithms. That's kinda programmy.

Every harried renter, driver, and suitor you see around you as you go through a typical week is essentially reinventing the wheel. They don't need a therapist; they need an algorithm. The therapist tells them to find the right, comfortable balance between impulsivity and overthinking.
The algorithm tells them the balance is thirty-seven percent.

On the flip side, Don Norman's The Design of Everyday Things would help a lot of programmers, I think. It shows you a way of looking at UX problems that are all too easy to ignore, especially if your background is straight CS and you don't have a lot of real-world experience.

 

They're both on my shelves awaiting their turns 😅

 

I'm not sure if this really qualifies, since your question was about becoming a better programmer, but I think that Writing in the Technical Fields: A Practical Guide, by Thorsten Ewald is worthwhile picking up. If you're a software developer, chances are that a lot of your work is communication. I like this book because it takes something that feels fairly nebulous and organizes it into an algorithm.

 

Absolutely worth mentioning. Communication is king, so everything that makes is better communicators also makes us better programmers.

Thanks for the contribution, I will check it out 👍

 
 

Make Time by J. Knapp & J. Zeratsky

Great book to "make time" in our "busy" daily schedules for both efficiency and also for getting rid of distractions, as well as extracting "meaningful time" at the same time. It is quite an interesting read given the fact that the writers are former developers of today's big distractions: J. Knapp of Gmail and J. Zeratsky of Youtube...

 

2 ideas on this: “The Visual Display of Quantitative Information” by Edgar Tufte . This is about designing information into an interface. Things like graduating colors based on their data values, etc.

Also the 4 Hour Work Week (spoiler alert: start with a wildly profitable supplement business so you don’t need any additional income). This has made me consider whether something should be outsourced or not. It has helped me make smart decisions like “just use Wordpress” instead of taking 6 months to write a home made blogging app.

 

Measure What Matters by John Doerr

Exceptionally entertaining and instructive book on defining your personal, team and organisational goals, and how to measure your progress in achieving them. I'm a complete zealot for this book, apart from its fascinating material, it's just a rampant jaunt of entertaining anecdotes from many of the most influential people and companies in the world today.

 

The Design of Everyday Things by Don Norman

 

Yep 👍👍 Second mention here, I think.

 

JK Galbraith's "The New Industrial State" . It provides the history and context of why our industry does what it does and for whom. It explains why the majority of corporate automation is creation of an autonomous extension of the 'state'. It offers various insights, such as that the main common element between the socialist regimes of the day and corporations is the emphasis on planning, and how that leads to similar fragility, politicisation and corruption in both systems.

 

Reclaiming Conversation by Shery Turkle. When using so many chat and emails, better read the social and cognitive science behind it. It's scary, you might not like the conclusion for remote work, but it's essential!

 

The dragon book. Also known as "Compilers: Principles, Techniques, and Tools". It's really hard reading. But it's also basics about everything you use every day: languages. (and I'm surprised nobody said it)

 

Haven't thought about this one in a long while. I have always admired the front cover 🤣.

I have read a few chapters and I find the text more accessible than that of similar works. Still, this is no easy bedtime reading.

 

I would recommend "Why we sleep" by Matthew Walker. Turns out sleep is useful for improving learning rate and knowledge retention, which make you a better programmer.

 

Thinking fast and slow. Helps with critical thinking and heuristics.

I've also actually written a post about it for devs :).

Aaand, already mentioned - Atomic Habits.

 

Can you share the link to that post? Thank you 👍

 

Sure :)!
The link to the video:
youtu.be/iV7vfdiHBjs

Link to the article:
dev.to/kethmars/how-i-learned-to-t...

 

"101 Things I learned in Architecture School" by Matthew Frederick.
Some great ideas about complexity vs simplicity in design, what makes a good design solution, conveying meaning, naming things. I found it to be quite applicable to programming and designing software in general.

 

Encyclopedia of Brazilian Jiu-Jitsu (all three volumes) by Rigan Machado.

Breakdown of all the fundamental movements in BJJ. Visual representation of two humans locked in combat, progressing through the problem. What does BJJ have to do with programming? You will not find a better, more applicable approach to problem solving than jiu jitsu. The lessons from the mat percolate into your daily life, including programming, in very unexpected ways.

 

Dream Machine about the history and creation of the DARPA community and how that spawned the personal computing revolution. Understanding the roots of all this stuff will pay off.

 

Because it has such a strong influence on programmer culture that it really should be a must read (the entire series really)

Hitchhiker's Guide to the Galaxy

 

How could I miss that? 🙈 Don't panic. 🤣

 

"Please Understand Me II" by David Keirsey. Takes the Myers-Briggs Type Indicator and goes into deep study of the influence of temperament on mating, parenting, leading and intelligence. This has been my go-to manual for understanding people (natch) for over 20 years. Doesn't make one a better programmer in isolation but it can make you a more effective team member and leader, by helping you understand and play to the strengths of your coworkers.

 

Zen and the Art of Motorcycle Maintenance

Motorcycle maintenance may be dull and tedious drudgery or an enjoyable and pleasurable pastime; it all depends on attitude.

And it's about a motorcycle trip. ;))

 

I’d recommend Organize Tomorrow Today by Dr Jason Selk and Tom Bartow.

A lot of times we have to develop under pressure and do so with focus and discipline, and we feel the urge to multi task - leading to many things not being done well. This book very simply and directly shows you how to get back on track and through examples by other high pressure professions as mini case studies. I found it highly applicable to developing performant software at scale when you have many demands and priorities to juggle!

 

I have long made it my habit to not multitask. When I'm working on a project, especially when coding, I do one thing and one thing only. The phone is off, calls are scheduled, most is done via async e-mail in scheduled intervals. It was tough at first, but workmates, colleagues and clients get used to it. The benefit of this is increased productivity, quality and satisfaction -- on all sides. I highly recommend it.

 

I wholeheartedly recommend Ellen Ullman’s books Life in Code and Close to the Machine. I would love to tell you why but there’s already a superb review at robinsloan.com/summer-reading/and-... (in JavaScript, no less).
There is also a wonderful interview with her at The Verge from a few years back.

 

I would suggest "Nonviolent Communication: A Language of Life" by Marshall B. Rosenberg. It didn't make code better but it made me code better at work. In this context - actually, in most contexts - it basically changed my life for the better.

As for topics closer to code, there are some math domains that really made me think way better as a developer. Linear Algebra is one of those, and Boldrini's and Elon Lima's books really taught me well, but alas they're probably not available in English. Probability was also very important, and Meyer's book was very interesting.

 

Nice. Will check it out. Thanks for sharing, Adam. 🙏

 

Blink by Malcolm Gladwell - because we need to know when to trust our gut and when to examine our decisions...

 

I don't think that Blink actually helps anyone do that.

I feel like many Gladwell books give you the feeling that you are receiving great insight, but by the time you are finished, you haven't actually learned a lot of practical take-aways. Blink feels very much like that to me. Entertaining as hell, though.

 

I read something a while back about writers who have written great or ground breaking books. Most have spent years (or decades) becoming an expert in their field and the book reflects that.

Once the book becomes really successful, the publisher wants to lock that writer in to more books. So the writer who spent years writing the first, now has (contractually) to pump out one a year for five years and the quality reflects that.

I think Gladwell falls into this category.

Very good point. Quantity over quality 😥

 

Mindstorm - Its free to read and is about how improve learning and education using technology. It also explorers mental barriers that are erected at young stage and block children from reaching their full potential.

 

Indistractable by Nir Eyal
It's a book which focuses on how to pay attention to our work while managing every distraction in our lives, if you're one of those guys who find it hard to stay away from stuff like social media and want to make your life more oriented towards your goal, I'd strongly recommend Indistractable.

 
 

Beautiful!! Even though it is very closely related to programming. But I'll allow it 🤪🤪 Thanks, Franco!

 

In reality, it has very little to do with what programming is. It rather teaches a concept: everything is just a conseguence of what there was in the past. Nothing is created, nothing is destroyed, everything is transformed. For my developer career this has been a fundamental cornerstone.

Indeed, it looks very promising and broad. The sheer amount of love that the author has put into the web book is amazing. Plus, you can get all sorts of e-book formats, too. I can't wait to have a go at it.

 

"Just about everything you learned in school about life is wrong, but the wrongest thing is this: Being well rounded is the secret to success. When you came home from school with two As, a B+, and three Bs, you were to be just fine. Imagine the poor kid who had an A+ and four Cs. Boy, was he in trouble. Fast-forward a few decades from those school days, and think about the decisions you make today--about which doctor to pick, which restaurant to visit, or which accountant to hire. How often do you look for someone who is actually quite good at the things you don't need her to do? How often do you hope that your accountant is a safe driver and a decent golfer? [...] A woodpecker can tap twenty times on a thousand trees and get nowhere, but stay busy. Or he can tap twenty-thousand times on one tree and get dinner."

from The Dip by Seth Godin

 

Soft Skills Developer Manual which covers everything related to being a developer for soft skills.

Writting Well most of what we do requires us to write. Being a better communicator with writing is important especially when we are moving towards being a remote worker for the entire industry.

The Great Mental Models Project having a bunch of mental models allow you to tackle something that is different from what you are trained.

Which allows you to create things drawing from concepts that might not be in the industry. Like neural networks was based upon human brain thinking process. The bullet train came from observing how a kingfisher beak to reduce on the amount of noise.

 

Farnam Street has a bunch of great stuff.

 

Yup they do which is awesome.

 

I am a product manager @ Ragham, I see a lot of good developers doing amazing stuff with technology everyday.

The pattern I see is that although devs are technically competent, but many of them are having issues/fears in creating relationships with other peers in/out of the company

this is why I suggest an awesome book about communication

Ladies,and gentelmen... let me introduce to you

Everyone Communicates, Few Connect: What the Most Effective People Do Differe...
amazon.com/dp/0785214259/ref=cm_sw...

 

Nice! Great suggestion. Thanks, Mojtaba!

 

How to Win Friends and Influence People by Dale Carnegie

A book about human relationships basically. To me what it improved me as a programmer was to be able to better understand and react to my co workers and clients.

 

Essentialism: The Disciplined Pursuit of Less

If you feel exhausted by the modern rhythm of life, then this book will help you a lot.

How to find and to concentrate on the most important things. It’s about doing less, but better, in every area of our lives.


The Happiness Advantage: How a Positive Brain Fuels Success in Work and Life

It is happiness and fulfillment that makes us successful and not vice versa.

This book reveals how small shifts in our mind-set and habits can produce big gains at work, at home, and elsewhere.

 

I'm beginning to hate this thread. I used to have two dozen books on my shelves waiting to be read.

Now, that number grows by the minute 🤪🙈

 

Code complete by Steve McConnell. Classic.