đŸ’Ÿ Archived View for dioskouroi.xyz â€ș thread â€ș 29364892 captured on 2021-11-30 at 20:18:30. Gemini links have been rewritten to link to archived content

View Raw

More Information

-=-=-=-=-=-=-

Books that changed my career as a software engineer

Author: julianogtz

Score: 608

Comments: 275

Date: 2021-11-28 00:07:19

Web Link

________________________________________________________________________________

ChrisMarshallNY wrote at 2021-11-28 10:56:20:

The one thing that I find is not helpful, is the “litmus test” approach.

i.e. “You are a bad programmer/engineer/scientist/person, because you did not read this book, or know this technique.” Thing.

I see this frequently. As a [mostly] self-taught software developer, I’ve been on the receiving end of a lot of this behavior.

In my case, I have a real “Oh yeah? I’ll show you!” streak. I became expert at stuff, simply because some e-bully told me I was bad at it (because they were the only ones fit to judge others).

Not everyone has that kind of stubbornness. I suspect that a hell of a lot of truly gifted folks never realized their passions, and that our industry has been robbed of significant talent, as a result.

Maybe I’m looking at the past with rose-colored glasses, or I was fortunate to run into the people I did, but I don’t recall encountering a lot of this behavior, when I was getting started. I needed a lot of help and nurturing, when I was younger, until I reached the confidence level required to have an “Oh yeah?” response. I’m grateful that I got it.

_"A new idea is delicate. It can be killed by a sneer or a yawn; it can be stabbed to death by a joke or worried to death by a frown on the right person's brow."

-Charles Browder_

ignoramous wrote at 2021-11-28 13:16:34:

> _"A new idea is delicate. It can be killed by a sneer or a yawn; it can be stabbed to death by a joke or worried to death by a frown on the right person's brow." -Charles Browder_

Not just ideas, people have lost their careers to unkind jibes. Here's English Cricketer Monty Panesar explaining the unexpected course his life took after a retort by Australian cricketer Shane Warne that "Panesar hasn't played 33 matches, but the same match 33 times" in a damning indictment of his uninventiveness and inadaptability:

https://www.theguardian.com/sport/2021/nov/28/monty-panesar-...

A relevant comment from a thread on CalyxOS:

https://news.ycombinator.com/item?id=28101853

rzzzt wrote at 2021-11-28 14:12:56:

"I fear not the man who has practiced 10000 kicks once, but I fear the man who has practiced one kick 10000 times." - Bruce Lee

So now I'm thoroughly confused, which one is better?

solarmist wrote at 2021-11-28 17:47:09:

I'm pretty sure Bruce Lee would agree that the one kick needs to be employed in many contexts and situations for that to hold.

I don't think the concept was as well known. There was less chance for robotic/fragile implementation of things in the past.

mattcwilson wrote at 2021-11-28 17:43:22:

The intentional one.

ChrisMarshallNY wrote at 2021-11-28 15:12:09:

_> A relevant comment from a thread on CalyxOS:

https://news.ycombinator.com/item?id=28101853

_

Ooh... that's ugly.

headmelted wrote at 2021-11-28 12:11:57:

Fun story I like to tell people about exactly this.

A little over a decade ago I was working a gig at the software subsidiary of a fairly large non-tech multinational. It was a lot of mostly nice people and a mix of skills and experience as you’d expect.

Anyway - there was a manager (M) on a project I was on who was.. unpleasant. They had quite an ego, and were very much the type to pass blame down the chain.

Regardless, there was a student on one of their projects who was struggling - I had spoken to this person a few times and they seemed eager enough to learn and had a friendly manner. I never worked with them directly so couldn’t comment on their capability - but even then, they were at the start of their career and still learning so obviously you would have tempered expectations.

Anyway, one day M comes in and people ask if newbie is out sick or is coming in later that day. M proudly exclaims that they won’t be coming back as they had a heart-to-heart the day before and M let them know that software development was not the career for them, that they didn’t have the right skills for it, and that they should pursue a career doing something else instead.

M was saying this with a grin, not out of malice, but as if they’d just saved this poor soul from wasting their time trying to succeed at a career that this expert of the craft could tell they were unfit for.

I was utterly dumbfounded that someone could be so incredibly conceited as to think they could possibly make a determination like that of someone just starting out that was getting no support from their boss.

I left soon after in no small part because I actually felt nauseous being around the person after that. I don’t think they stayed around for long but I heard from long-term folks in the same place that the distaste of this individual was fairly widespread.

tldr; we’re all just bags of meat, eating and pooping on a ball of rock flying through the cosmos. Be kind to people, and pull your head out of your ass.

ChrisMarshallNY wrote at 2021-11-28 12:31:23:

Thanks for sharing that. It makes me angry; just hearing this, thirdhand, and a decade later.

I was a manager at a company that paid “competitive” (i.e. “low”) salaries.

A significant part of my job was identifying “diamonds in the rough,” and helping to train and nurture them; then, encourage them to stay.

I feel that I did fairly well, here. When they finally shut down our team, the person with the _least_ seniority had a decade.

These were senior C++ developers. They could have gone anywhere.

nelc wrote at 2021-11-29 05:54:45:

As a young kid on one of those "competitive" jobs, I've always wondered about this. Do you genuinely encourage them to stay, or do you secretly wish them to move on to better work as well? Surely getting stuck there for a decade isn't the best thing for their career.

ChrisMarshallNY wrote at 2021-11-29 10:11:07:

Yes, and no. A few did move on, and had well-paying careers, but it took them a long time to find happiness, and they tell me that they never found a situation that was as comfortable as when they worked in my team. The final team members have moved on to do fairly well, although it took a while. They are brilliant engineers, and will be a credit to any organization that hires them.

The pay wasn’t awful, but I was a good manager, and worked hard to accommodate things like family obligations, and, in a couple of cases, serious medical issues. The company had its flaws, but, for the most part, treated its employees well. As time went on, that became less and less. By the time I left, I felt as if the company had become quite rapacious, in its HR policies, and that made me sad.

The pay may not have been that great, but the work was very interesting. We were a marquee brand imaging corporation (which is why they felt they could get away with mediocre pay), and the technology was pretty awesome. We regularly worked with some of the top engineers and scientists in the world. It was an excellent line in your CV.

I have come to learn that money isn’t everything. There’s a tremendous amount of cynicism in our industry, and that is really pretty discouraging. Money has been quite corrosive to the joy of software development, in my opinion. Real damoclean sword.

Aeolun wrote at 2021-11-28 12:29:11:

I was really hoping for some karma in this story, but it wasn’t there :(

mjburgess wrote at 2021-11-28 12:31:33:

I can't speak to this story itself, but I wonder about the general principal underneath these sorts of objections.

That is: we should just be naively encouraging of people to pursue whatever they happen to be trying to pursue. This seems born of a boomer-era "be yourself" world view in which "anything is possible". I think this cheats people a great deal.

When physics is demonstrated in schools and TV as some game, it shouldnt take until Masters to figure out it isnt. Programming likewise.

What I see in this culture of "be yourself" is really an admonishment for not "trying to be successful", in the narrowest sense, ie., blindly pursuing programming even though you're not suited to it.

People shouldn't be hoodwinked into careers they arent going to like on the basis they "should like them" because presumably "anyone can be successful" and "everyone needs encouragement". Underneath this ideology is a very narrow notion of success, and a very concerning lack of empathy.

"Encouragement" isnt a neutral good; it's an instrument to develop people -- often in one's own image. There's a lot of people "encouraged" into career's that depress them.

thewakalix wrote at 2021-11-28 12:40:35:

Maybe some people take to programming like a fish to water, but plenty of others struggled at first. Knowing when to give up is important, but part of that is knowing when _not_ to give up. That is a complicated and individual question; an ignorant gatekeeper who discourages anyone who's not immediately successful isn't helping here.

mjburgess wrote at 2021-11-28 12:47:49:

The gordon-ramsey (army coach, sports coach, theatre director, ballet director...) school of "encouragement" prescribes the opposite.

That is: if you arent passionate enough to overcome discouragement, you arent passionate enough to excel.

Of course, we dont need excellent programmers en-mass. However, it is interesting to observe that this "egotistic troupe leader" is a fairly common form of small-group excellence-seeking human organization -- and appears to work.

It gets more-and-more common when looking at how the best "troupe-sized" groups in the world are organized.

I'd be interested in research on this area.

headmelted wrote at 2021-11-28 16:40:43:

So I’ve thought about this in the years since.

Here’s the thing though: the person in question was already struggling, as a new person in an office of people with experience, without assistance from their manager.

For their boss to tell them some variant of “you’re not cut out for this” in that vulnerable of a position when you have no frame of reference (and when it’s from the same manager that was supposed to have been helping you) is _wildly_ different to hearing that from an impartial peer.

closeparen wrote at 2021-11-30 14:43:26:

In several of those contexts, quitting is going to be even more painful than perseverance (in terms of both social shame and punishment). You don’t need to worry about alienating captives.

ChrisMarshallNY wrote at 2021-11-28 13:00:29:

Well, it also has a lot to do with whether or not you want good _teams_, or good _individuals_. The "Marine Bootcamp" methodology is hundreds, if not thousands, of years old, and is how we make good teams.

Teams are how we _make_ awesome stuff, but individuals are how we _conceptualize_ awesome stuff.

I've found that the best products come from hybrids of the two.

mjburgess wrote at 2021-11-28 14:12:53:

I think this is a really helpful remark.

If you look at where this works, the team simply needs to execute -- largely not think creatively. I can see, then, why this is a comparatively rare form of organisation in programming teams.

I wonder if there's room for it in programming training. Imagine being drilled to produce the same algorithm in a variety of languages over-and-over. Would this be useful? (I use to drill myself in writing dynamic dispatch MVC frameworks as a teenager; I could produce a whole framework and app in a 1hr technical interview -- is this useful? I dont know).

I raise this because I've become increasingly interested in rationalising the Ramsey-esq autocrat, as its always been a part of myself I have been most self-critical of; because I am at once very sensitive to upsetting people but also "brutally attentive" to their (and my own) failure.

I have recently been asking myself: is this brutality actually useful? How much? Does it really require the humiliation a Ramsey or drill-sarg engages in?

Recent western cultural mores are aimed at ameliorating ego-injuries. Is there value in causing ego-injuries? Is there value in humiliation? Clearly there is -- it works in some cases.

Its a weird question to ask though: our culture is so preoccupied with preventing ego-injury... it seems immoral and absurd to suggest causing them.

pm90 wrote at 2021-11-29 00:15:47:

I don’t think there is value in humiliation. I feel like it will attract a certain kind of personality. Maybe you want that in a group of Marines who make life and death decisions. Most programming jobs luckily don’t involve those kinds of choices (the exceptions may be medical devices, manned rocket software etc).

Importantly you are discouraging a whole bunch of folks who might have much to contribute but have been chased away by the distasteful practices in the industry.

baranoff wrote at 2021-11-28 13:02:34:

So true. Direct feedback is way under appreciated.

pydry wrote at 2021-11-28 15:35:21:

Litmus tests are how git has managed to get away with having such an abysmal UX.

Osiris wrote at 2021-11-28 02:49:22:

Is it just me or do other people struggle to read these kinds of very technical books?

It's not that I don't comprehend, it's that my brain finds it boring and hard to focus. I think I have trained my brain so much on rapid skimming of websites for useful info, while throwing away most of the content, that I tend to do the same with books, which really doesn't work well.

Has anyone found alternative ways to consume this information for brains that work like mine?

andrewzah wrote at 2021-11-28 03:07:52:

Deep, focused reading is a muscle that you need to work on. There isn’t a real answer other than practice, and focus on delayed gratification.

We skim websites/articles because there is so much information out there, and not all of it is useful. I skim articles and then go back to fully read them once I make sure they’re actually worth the time. Same with some books, but books generally are worth it since they went through the publishing process, etc.

sriku wrote at 2021-11-28 09:29:46:

This is right, however we also need to acknowledge the prevalence of books which put forth some good ideas, but which perhaps can be summarized in a page or so. Instead they choose to labor on and on around the same point(s) without adding much.

A book that _definitely_ wasn't in the category I described above (for me) was John Ousterhout's Philosophy of Software Design -

https://www.amazon.com/Philosophy-Software-Design-John-Ouste...

. I haven't run into software design/tech books like that very often.

baranoff wrote at 2021-11-28 13:06:50:

Second that book! I have read dozens of technical books, but none come close in practical wisdom. If you have been in the industry and worked on large projects you will find it very relevant. I hope it is also as relevant and easy to understand for people who do not have many years of experience already.

janto wrote at 2021-11-28 11:51:58:

From the reviews it sounds mainly from the OO/Java and heavy design up front paradigm and not very Agile / test driven. Is that fair? I'd really like a philosophically minded book that integrates these relatively newer approaches.

sriku wrote at 2021-11-28 13:08:09:

The book came out of Ousterhout's course on software design where he reviews student code as they work on a significant problem - building a text editor. There is _very_ little (if any) material out there of this nature that goes much beyond personal opinion (usually under the guise of experience) and sloganeering. This one though, is a hearty dive into the delectable details of design.

benji-york wrote at 2021-11-28 12:23:32:

I consider myself very agile/test-driven-leaning and I got a lot out of the book. It provided nice restatements of many things I've vaguely thought over the years and some nice new ideas.

underdeserver wrote at 2021-11-28 10:57:25:

I actually find the opposite.

Many books belabor the point and take a chapter to explain what a paragraph could.

It might sometimes be useful - for example, to explain a scenario to a newbie who can't relate from their own experience - but for someone who's been in the industry for a while, most of that information is just not useful.

_n_b_ wrote at 2021-11-28 11:48:53:

Relatedly, but I've always wished there were a series of books like, "I'm Already a Programmer but I'd Like to Learn ____"

Trying to pick up a book about a new programming language that is trying to explain the concept of an 'array' or whatever is annoying--I wish there was something to just lay out (still in a thoughtful and guided way) the concepts I needed to understand for that language based on already knowing several others.

rasfincher wrote at 2021-11-28 12:00:07:

It would be nice if the table of contents marked where to start if you're already familiar with programming concepts.

boppo1 wrote at 2021-11-28 12:09:28:

Learnxinyminutes?

pastage wrote at 2021-11-28 11:32:35:

Called US writing style over here, just being overly verbose. Course literature, e.g. Calculus, suffers from this. It is a style in which you wax on and drive home the point by repetition.

This style is popular nowdays and finding books that succintcly describes a subject is hard. This is mostly because you need to have common ground, and writing for the smallest common denominator is better.

underdeserver wrote at 2021-11-28 15:16:38:

I actually think Calculus textbooks are justified in being long. he material is just so hard to grasp for newbies that giving you more and more examples sort of provides you with more time to digest the ideas in the background. Many students need that at that stage in their studies.

zatkin wrote at 2021-11-28 04:35:20:

I had this exact problem.

I set a single New Years Resolution goal to build this muscle: 12 books in this year. I’ve read 22 now.

What compels me to keep reading is the Reading Insights Streak feature in Kindle. It’s like a little reminder I can always check on to see if I’ve read today or not.

nsomaru wrote at 2021-11-28 05:51:43:

It seems like if you need to remind yourself if you’ve read today or not you aren’t doing “deep reading”.

Schopenhauer’s essay “On Reading” is instructive here. He recommends reading fewer books but going deeper into them.

zatkin wrote at 2021-11-28 06:26:58:

While listening to Derek Sivers and Shane Parish talk about reading, I found Derek's comment to be, what I think, is a way to 'go deeper': assuming you've made highlights in a book, when you finish it, spend time thinking about each highlight. Take unnecessary words out of the highlighted text. Get to the core of the words that really triggered you to think different. I've yet to do this.

sanderjd wrote at 2021-11-28 04:27:50:

Honestly my problem with books like the ones in this list is that they _aren't_ very technical. It's similar to business books and self help books for me, I feel like there isn't any concrete information, just anecdotal stories that I only find semi-interesting. I find myself zoning out while reading them. And I'm not saying the advice isn't good! I just struggle to stay engaged with it.

wokwokwok wrote at 2021-11-28 04:57:51:

You don’t need to read these books end to end.

The a builds on b builds on c style of learning is only _one way_ of learning things, and in many cases, the foundations (a, b) serve you no real value.

Just jump to the sections that interest you (c) and go back to previous sections if you feel like you’ve lost track of what they’re talking about.

For example, the first 20 pages of ‘Remote’ cover why remote working is good. It is intended for people who are considering _if_ remote working is suitable. If that’s not relevant to you, do not waste your time reading it.

Of course, you still have to actually sit and read the chapters that interest you
 but, if you struggle with that for the chapters you’re _actually interested in_ perhaps a more project based (do a thing, use references from book) approach, or notes based (treat book as study text, rewrite it as your own notes) might work for you.


but, don’t feel bad. These are super boring ass books with a few interesting parts to them.

criddell wrote at 2021-11-28 12:36:04:

Books have been written on how to read a book.

Often, it’s some variant of starting with studying the table of contents then doing a fast first pass of the text. That’s usually a pretty good way of figuring out where to start.

playpause wrote at 2021-11-29 09:52:30:

> doing a fast first pass of the text

Does that mean reading it end to end?

criddell wrote at 2021-11-29 14:11:27:

Sometimes yes but not always. It depends on the book.

throwaway1988-5 wrote at 2021-11-28 09:19:37:

Found out that I have ADHD. Never managed to read any books about programming, after a few pages my brain starts making up excuses to do other things and I start rereading the same paragraph over and over again.

No issues doing the actual programming, could sit for hours on end without any issues.

One nifty thing about my ADHD is that something that was super interesting can become dull as hell. For no apparent reason.

Issues with focus, staying on task and motivation are generic issues that everyone has. Just like everyone gets sad or down sometimes. When it becomes a constant problem that affects your life, that's when it becomes a depression and needs treatment. ADHD is similar, except that it doesn't really come and go but is more of an undulating constant.

chrsig wrote at 2021-11-28 19:38:10:

I've had similar experiences in my dealings with ADHD. I've found resources like khan academy and 3b1b to be miraculous in helping me stay engaged. or atleast letting me rewind and watch multiple times.

w.r.t. books on programming - I've found that ones that offer a hands on project really aid in staying engaged with it. That's usually enough to give you a solid primer on a topic, where other literature starts to become a bit more accessible/less of a drag/less overwhelmed with unknown terminology

throwaway1988-5 wrote at 2021-11-28 09:21:39:

A little trick for technical articles that I've found is to use screen readers.

loves_mangoes wrote at 2021-11-28 09:40:54:

Screen readers work great, for me it's my phone. On my desktop I'd be getting distracted and bored in about two paragraphs. Even if I try to come back to the article, there's invariable 3 other things that I'm switching between.

On my phone I've read 250k word books cover to cover, same books I could never read on a PC. Attention is weird like that.

Another trick is getting your dopamine* externally. There's an association between ADHD and substance abuse, and I can see why. Pharmacology is a cheat code: a few hours of infinite motivation, will power, and attention.

Unfortunately, when people start needing a substance just to feel normal, that is the definition of an addiction.

(* More complicated than just Dopamine or Serotonin, both seem to play a role. Medecine has not solved this one yet.)

chrsig wrote at 2021-11-28 19:46:37:

> Unfortunately, when people start needing a substance just to feel normal, that is the definition of an addiction.

Disagree. What is 'normal'?

A better definition for addiction is the brain no longer produces the neurotransmitter without the presence of the drug (or is doing so at a highly diminished rate). There's no evidence that such occurs with the amounts prescribed for adhd.

For that matter, people needing an external source of a substance to feel normal is unavoidably part of being an organism. We need water, or we wont feel normal. We need vitamins -- and plenty of people have vitamin deficiencies, are they addicted to said vitamins?

amelius wrote at 2021-11-28 10:32:22:

> Unfortunately, when people start needing a substance just to feel normal, that is the definition of an addiction.

If they would otherwise not feel normal and there are no negative side effects, is that a problem?

loves_mangoes wrote at 2021-11-28 10:42:18:

That's a tough question to answer, and I think people should make that decision for themselves, with all the information they have about their particular situation.

Negative side effects of note with usual ADHD medication (amphetamine salts) include increased cardiovascular load, development of a tolerance (you need higher doses to achieve the same effect). Sometimes amphetamines induce small changes in personality, rarely full blown psychosis (this has happened at therapeutic doses!).

In general you should apply the same sort of risk-benefit analysis we use for every other drug. If you don't experience any side effects so strong you want to stop, and you believe you're aware of the risks, great.

If you're taking them without a script, I'd advise you to find a steady-state dose that works for you and stick to it. Don't let yourself increase the frequency or the dose without a conscious decision. That's how many people have spiraled.

Finally, I think it's important to have a lot of respect for psychoactive chemicals. Nature doesn't care very much for human overconfidence. If you start being careless, chemistry will do what chemistry does.

boppo1 wrote at 2021-11-28 12:14:52:

>there are no negative side effects

I'm a prescription-attention-drugs person and specified drugs do not exist.

lordnacho wrote at 2021-11-28 10:07:39:

What are the go to options?

lordnacho wrote at 2021-11-28 10:10:36:

Those concentration drugs that you hear about, do they work? I've heard that a lot of students use them, but I'm a little bit wary of using something like that.

andrewsouthpaw wrote at 2021-11-29 16:31:22:

They can work, they work wonders for me. There's also no "magic pill" and they have their downsides. For me, the pros vastly outweigh the cons, and I've tried several times to make a happy life without support of medication and it's just not as good. (Even with trying a more alternative lifestyle, not being in an environment where I need to sit and focus all the time, etc.)

But also, every body and mind are different. Consult a specialist. There's many different types of ADHD medication out there now.

chaosite wrote at 2021-11-28 10:30:07:

Why are you wary of using something like that?

I use one of them, and it has been a great help for me for studying and for work. I don't take them during "off-time", i.e., weekends and holidays, and I don't feel like I need them for my hobbies, where part of what makes it fun for me is that I can take my time, shift my focus constantly, and define "progress" by my own internal metrics.

lordnacho wrote at 2021-11-28 11:17:52:

> Why are you wary of using something like that?

I don't know how to evaluate the risk, basically. Medical stuff tends to have a lot of noise.

1ibsq wrote at 2021-11-28 10:31:27:

They do. If you don't have a diagnose, be careful with it. You want to be able to execute challenging mental tasks without it. You will still be able to do that after trying such medication, but you will always know, there would be a easier way to do it and that can become a mental block.

chrsig wrote at 2021-11-28 19:33:07:

There's no evidence that they actually help people that don't have adhd. it'll just make them _feel_ like they're doing better, in spite of any objective measure.

Aeolun wrote at 2021-11-28 12:36:52:

That seems very unlikely. At least compared to the chance of the drugs having an unmitigated positive effect.

lordnacho wrote at 2021-11-28 11:18:22:

Ok so how do I give this a try?

1ibsq wrote at 2021-11-28 11:53:05:

With the same attitude like any other drug, I guess. It's very likely less harmful than other drugs. If you're mindful about it and you really want to try it, then ...

chrsig wrote at 2021-11-28 19:34:40:

consult a doctor. they're probably controlled substances in your area, and people trying to get them illegally makes it all the more difficult for people that actually need them to live a healthy life.

rileyphone wrote at 2021-11-28 14:13:52:

I would recommend trying something like l-theanine, or other any of the other supplements which have purported effects on focus.

rmk wrote at 2021-11-28 05:10:11:

None of these books are very technical in nature. Some of them are, in fact, as far as you can get from technical, e.g., Explain the Cloud like I'm Ten.

If you can't read books, then you are missing out on a lot. It's important to be able to read books (and work through large portions of them). Start reading books by reading fiction, then transition into nonfiction books (that are closer to fiction at first, e.g., history), finally transitioning into long-form technical books. If your budget permits, buy a long-form book on a technical topic and commit to reading it instead of just jumping on a website. For example, if you want to learn Kubernetes, just buy the Kubernetes book written by Beda et. al. I doubt any website will be better than that, and you will spend perhaps a week or two on a shallow read of the book, but you'll have found that you have a much better appreciation of the subject matter than you would have had you just glanced at a few website articles.

pkrumins wrote at 2021-11-28 03:31:20:

I agree that many of these books are hard and super boring to read. That's why I always recommend books that are written in easy and accessible style, such as The Little Schemer, The New Turning Omnibus, and Programming Pearls (not Perl but Pearls by Jon Bentley). Or, books that are written in problem-hint-solution style, such as The Little Book of Semaphores and To Mock a Mockingbird. These are so fun and easy to read.

cinntaile wrote at 2021-11-28 04:04:29:

Those are completely different books than what the blog post focuses on. Yours are solely focused on learning tech/maths.

DocTomoe wrote at 2021-11-28 08:27:53:

Reading attention is a skill that can be trained ... and forgotten.

When I was a kid, I read books by the meter, regular at the local library. At age 35, after life happened and after I was immersed in quick internet articles, I realised I haven't finished a book in ages. Which made me slowly read more, having that extra page after "mental exhaustion", slowly working my way up to a while chapter ... trying to get back into the habit.

Now at age 41, I read long stuff again - best decision I've made. But I am under no illusion that I won't fall back into bit-sized consumption if I would stop keeping it up.

crossroadsguy wrote at 2021-11-28 07:58:03:

I honestly think it’s alright. After spending 40-50 waking hours with tech in a week the last thing I want is extend the tech, or professional aspect, of my life more.

I love reading literature though. Hours, engrossed.

This might just be me. Tech is just a means to pay the bills for me - there’s no passion, hatred, love involved here.

ZeroGravitas wrote at 2021-11-28 08:59:07:

It doesnt detract from your general point but I dont think any of these recommended books would qualify as very technical.

Pragmatic Programmer for example could be thought of as a very curated list of blog articles. Great book, but also not intimidating or deeply technical in that sense.

mohoromitch wrote at 2021-11-28 15:58:02:

I personally think that it goes deeper than just the ability to read and absorb. You to ask, and understand the motivations _for_ reading something, otherwise it's going to feel like a chore. I just finished "How to Take Smart Notes" and it seriously changed how I view readings like this. Where it's not for a short term gain, but rather an incremental increase in my knowledge base.

The content may not be super relevant immediately, but the book and (really simple) methodology of taking notes on these readings and graphing relationships between concepts means you're slowly building a network of knowledge that grows and becomes more powerful over time.

I used to but now it feels like a fun game to me.

liam_odo wrote at 2021-11-28 09:15:53:

Not a dev, sysadmin, but I agree, I find technical books exceptionally boring.

My example is from the Windows Internals books, it’s a great book, but I don’t think the authors could write it in a “gripping” way, that’s just technical books.

What I do however be it books or video is chunks, takes MUCH longer to do but I find for me it sticks, so if in my learning season (I do bursts of learning, burn out leave it for a couple of months, rinse repeat),

- Read a section or chapter

- Make quick, rapid notes in my notes app (or notebook, I use bear but whatever suits yourself)

- Once I’ve done, go to sleep (I normally study at night, my brains more in a learning mode then for me)

- Maybe at dinner time (at work) I go through my notes, if it’s something I feel may benefit my colleagues I make a brief PowerPoint, I try to translate it into a less technical write up, not everyone is super technical, it’s just a job to them!.

I have a terrible memory for learning, I remember things long term great, short term not so much, so I reference my notes a lot, it’s essentially my mind map/bank.

Video learning is very subjective, I’m currently learning Cisco Umbrella and it’s very boring to me, the creators voice is very mono tone and boring to the point I’ve nearly fallen asleep, but other creators (mostly in the Microsoft MVP zone) are very lively, a good mix of demos and theory that keep me engaged and actively want to learn, Pluralsight is the same, keeps me awake and motivated, I found CBT a little on the boring side in comparison.

aesyondu wrote at 2021-11-28 09:36:39:

Same. What I did was to limit (minimum and maximum) myself to 1 chapter/section per day of a singular book that I decided to focus on. That way it becomes a habit.

Minimum means that I need to finish it that day no matter what.

I put a maximum because I found through trial and error that if I push myself too hard, even if a topic is interesting, I burn out quickly and procrastinate, sometimes for months, before continuing reading said book. And that is worst case scenario for me.

d0gsg0w00f wrote at 2021-11-28 15:48:14:

I don't know why but I've always loved reading technical content cover to cover. It started with cereal boxes when I was a kid and I would read ALL of the text. In my teens it was MaximumPC and 4Wheeler magazine that I would read cover to cover. Now I buy random tech books for things I want to know about like Hadoop, KVM virtualization, Code Complete, etc.

goodpoint wrote at 2021-11-28 12:14:13:

Don't blame yourself if a book is verbose and tedious. Most books (and youtube videos) are 10% information and 90% padding.

pkukkapalli wrote at 2021-11-28 03:56:34:

Yeah, I'm the same way. I've gotten better at it though by "practicing." For me, it's the same process as strength training. You need progressive overload. Start with easy to read attention capturing books, and slowly progress to harder and harder books.

TeeMassive wrote at 2021-11-28 05:43:23:

I have the same kind of problem. It has gotten to the point that I couldn't even read sentences that make more than two statements.

What helped me to go back on track was reading novels and constantly asking myself: did I understand the last sentences that I've just read?

criddell wrote at 2021-11-28 12:42:42:

I love William Gibson novels, but I have to read them twice. The first time I’m too confused. Only on the second pass do they make much sense to me.

analog31 wrote at 2021-11-28 15:43:46:

I admit that I got through a lot of technical books by learning things in a classroom. I don't subscribe to the "children have different ways of learning," but I don't think I would have survived my college majors (math and physics) had I tried to learn them on my own from books, even good books.

On the other hand, I taught myself electronics and programming from a combination of books and just trying things. Maybe trying things is a different kind of classroom in a sense. Certainly a different teacher: Mother Nature, who takes no crap from cocky teenagers.

wiseowise wrote at 2021-11-28 09:24:10:

> I think I have trained my brain so much on rapid skimming of websites for useful info

No, your brain just tricked you. It trained you into thinking that you're doing rapid research of useful info, while it just looks for path of least resistence.

b3morales wrote at 2021-11-28 19:27:06:

Something to try is to accept the lack of focus, and when it happens, just switch to skimming. One of two things will happen: you'll realize the information isn't that important or interesting, or something will catch and you'll become re-engaged. In the first case, you can always revisit the material in the future, if you come across a situation where it seems like it might be useful.

archsurface wrote at 2021-11-28 16:46:08:

I suspect you didn't look at the article - I was caught off guard, they're not technical. It's not a list I would go near.

phendrenad2 wrote at 2021-11-28 05:12:51:

My trick is to keep a stack of these books around, and when I have some downtime I flip one open to a random page and read. I also keep a few in my car and on my desk at work.

dgellow wrote at 2021-11-28 08:16:07:

Have you tried audiobooks? It helps me a lot to do something boring, like cleaning the kitchen or emptying/filling the dishwasher, while I consume content. Somehow when my body is doing something in automated mode I can focus well on my thoughts or audio/video content. Audiobooks and podcasts are perfect for this, videos are a bit more difficult as you’re likely to miss something, and text content is not adapted at all.

moffkalast wrote at 2021-11-28 11:47:09:

Some people seems to find audiobooks and podcasts fantastic, but I think it's somewhat correlated with your multitasking capability. If I go on a walk listening to a podcast or have it on in the background while working on something else I absorb only like 5% of it because I can't focus on it. As such it's useless for me unless I literally lay back in bed and listen to it. At that point I might as well just read something.

dgellow wrote at 2021-11-28 17:23:12:

Interesting, I have the opposite issue :)

I cannot just sit and listen without doing anything, I need to be doing something with my body to be able to stay focus on an audio feed. I mean, I can do it but I won't be able to keep my attention on the audio content. When I bike, walk, or do laundry, no problem at all!

goodpoint wrote at 2021-11-28 12:20:26:

I've never found a podcast that is not full of idle chatter. Admittedly I gave up searching after trying some astonishingly dull ones.

The only exception was a Linux kernel podcast but the format was really unsuitable for the topic.

Do you have any good technical podcast to recommend?

dgellow wrote at 2021-11-28 17:18:51:

CppCast is awesome, even if you're not a C++ developer:

https://cppcast.com/

"Algorithms + Data structures = programs":

https://adspthepodcast.com/

Crypto Critics' Corner may be my favorite podcast:

https://cryptocriticscorner.com/

Anything from microbe.tv:

https://www.microbe.tv/science-shows/

.

They have podcasts covering evolution, microbiology, neuroscience, parasitism, virology, urban agriculture, and more. Lot of stuff to dig into, you can try and see which one you like.

Not technical, but I like to listen to Startup Therapy, I like how they openly talk about failures and mistakes:

https://adspthepodcast.com/

pvarangot wrote at 2021-11-28 03:46:31:

I tend to gravitate to pen and paper when I’m not zoning into a book and either draw charts on a notebook or write small notes into post-its I stick to the book.

nesarkvechnep wrote at 2021-11-28 05:57:13:

Are these very technical really?

wodenokoto wrote at 2021-11-28 08:17:41:

I totally agree, to the point where I’m skeptical about people saying they’ve read something cover to cover.

Someone once recommended me to start at the back of each chapter and do the the problems and only read the chapter or even parts of the chapter for problems I couldn’t solve.

It comes with its own set of drawbacks but it does help with getting through text books where the author was paid by per letter.

nevster wrote at 2021-11-28 09:32:53:

It's not that hard. I try to spend 10 minutes a day reading some sort of technical book. Just set a timer and do it. I don't always get around to it. Here's a list of the various tech books I've read cover to cover over the last couple of decades:

https://www.goodreads.com/review/list/5348644-neville-ridley...

Aeolun wrote at 2021-11-28 12:39:38:

Is not that hard, you just start at the front and make your way to the back.

For the really good books you’ll actually reach the end.

mjrbrennan wrote at 2021-11-28 04:34:38:

It's not just you. I have a terrible time trying to get through technical / programming books, they put me to sleep. Not everyone learns the same way and that's okay. I have no problem getting through huge fiction books, so it's not a "book problem".

fergonco wrote at 2021-11-28 13:13:40:

I read novels just to reduce the pace of my brain.

Maybe your brain does not need to work like that.

thecleaner wrote at 2021-11-29 05:32:03:

None of these books are very technical tbh. They usually describe principles in simple language (big plus IMO) so they could be consumed in a way you would read a novel.

As for having trouble reading difficuly texts try this - read two pages. Try to recall what you read. Then try to connect it with what you already know. You only need to do it for the fundamentals not every sentence and it will help build up flow.

exdsq wrote at 2021-11-28 02:08:10:

The thing that changed my career as a software engineer, in terms of seniority & remuneration by time and effort, was by changing my efforts from learning arbitrary tech to learning the domain I worked in. Asking useful domain-related questions gets you noticed in stand ups and helps you write the right code. I work in fintech so the best bang for my buck I’ve had was reading an entry level cert in investment finance.

I think the generic bit of this advice is to excel as an engineer is to focus on the business, not the tech.

pkukkapalli wrote at 2021-11-28 03:59:01:

Big +1. Most corporate software is pretty straightforward (the company likes it this way so that it's easier to onboard new engineers). So, you stand out by delivering something other engineers can't, deep insights into how software can solve specific domain problems.

vishnugupta wrote at 2021-11-28 06:18:09:

This has been my experience as well. Beyond a level an engineer creates value by being at the intersection of product/UX, business, and tech; by being able to seamlessly transition between them.

As a consequence if one changes jobs say every 2-3 years (different domains) then they become generalist engineers.

In my experience one has to spend 10-12 months at a company to pick up a domain by being deliberate at it. It may look like a big investment but the payoff will be significant once they have sufficient context in their head.

rmk wrote at 2021-11-28 05:27:00:

This is good advice for something like finance. But many software companies are out to "disrupt" very broad areas, and unless you intend to stick in one such area, I doubt there is a whole lot of benefit to doing that.

For example, if you are developing software at Uber, there is no "domain" to speak of. Ditto for a search engine at Google. The company pioneered information retrieval in the internet age, so what's the relevant "domain" there?

Of course, if you are writing MCAS software for Boeing, having a good understanding of Control Systems, or Aeronautics (which you can gain by attending nontraditional programs in colleges or universities) will be very helpful. Same thing for something like trading firms (where it's practically formalized and there are programs that turn out quants), accounting firms (e.g., Intuit) etc.

hiq wrote at 2021-11-28 08:04:08:

From your examples, it seems that you make a distinction between B2B (with possibly internal clients) and B2C.

The general advice that would still apply to both would be: understand who your client is and what they need in the context in which they evolve, be they consumers in a country you're not familiar with or mechanical engineers you barely know the job of.

exdsq wrote at 2021-11-28 18:42:55:

Uber:

- "Hey, I saw a statistic that females are anxious about taking taxis at night in France. Why don't we add a feature to let people share their locations with others?"

- "In London taxi drivers have to pass The Knowledge, a test on roads! Have we considered adding a similar pre-requisite test for drivers in that city?"

- "I noticed a lot of drivers on Reddit have been complaining that the tips aren't viewable on the app, but we have the data. Why don't we add that to the drivers UI?"

Etc... The sources of this information would be user channels like Reddit, taxi-related news sources in countries you operate in, and keeping up to date on legislation. Sure you might not have the ability to make any of these changes yet but if you stay ahead on these factors it's definitely the way to move into a position where you can have that level of impact.

shu15 wrote at 2021-11-28 04:41:02:

Would you mind sharing the investment finance cert you read?

exdsq wrote at 2021-11-28 18:35:45:

https://www.cisi.org/cisiweb2/cisi-website/study-with-us/fou...

I believe it was this one with a slightly different name

shu15 wrote at 2021-11-28 19:36:48:

Thanks!

agumonkey wrote at 2021-11-28 13:18:25:

And it's one of the rare good advice. Communication failure (or even slow) is so expensive, being the guy who can translate ideas clean and fast will make a lot of things better.

thecleaner wrote at 2021-11-29 05:34:50:

Take a bow. I was given this wisdom right on my first job and its the best advice I have ever received. Software is pretty useless without the business context so merely talking about software is not helpful.

dhosek wrote at 2021-11-28 02:37:22:

Exactly. Programming is ultimately pretty simple. The hard part is the specific domain knowledge of the business.

Epa095 wrote at 2021-11-28 08:20:33:

"[...] ultimately pretty simple" you mean if you ignore everything making it hard?

I must admit that this kind of attitude triggers me. I have worked in the energy sector, in engineering (but not IT) heavy companies, and many have this attitude. "its easy to learn programming", "we just need to teach the engineers python" etc etc, and I have seen MOUNTAINS OF SHIT so tall you would faint. It's easy to get tricked, because being both the user and developer at the same time can be such a boost. But the moment there are more users things get hard. The moment the code base gets so large that you can't keep it all in your head, it gets hard.

Software development is easy until its not, and it surprisingly quickly gets to the "it's not" stage. And then you get excel sheets in python.

Some "subject matter experts" make good programmers, but in my experience its not because their background, but because they are smart and have talent for it.

quickthrower2 wrote at 2021-11-28 06:12:41:

You kind of have to be a rebel to get that knowledge. Most teams don’t want developers talking to customers or spending time understanding the domain beyond their next ticket, and even in that case they’ll get a product managers distilled version. If the industry has courses/exams and a path of its own that’s helpful so you can get the knowledge that way.

sateesh wrote at 2021-11-28 08:53:15:

I don't think that is the case, or atleast that has not been my experience. Most teams would be happy if you do these, but not affecting the next deliverable. So if you are willing or can spend extra hours that becomes manageable, but one can't always be in a position to spend more hours working (priorities, family etc.). What would be best is team encourages your involvement and factors that in deciding the target date of your deliverables. This would win for both since knowing domain makes one to understand the problem better and program beetter.

rmk wrote at 2021-11-28 05:29:34:

Writing individual programs is often quite simple, but developing software products is often not. It's a combination of taste, hard-won experience, a feel for the organizational dynamics at play, and of course, raw programming ability. Note that the things on the list, other than programming, are often pretty complicated!

kulig wrote at 2021-11-28 03:22:37:

If youre doing simple stuff then its simple i guess

dorinlazar wrote at 2021-11-28 03:47:54:

I have a terrible problem with people recommending books that „changed their whatever”. And sometimes I think that it comes from an arrogant place where people being „influenced” by books is a bad place. But I do understand that sometimes books can change the way one thinks about things, and it makes sense to make a list of those.

For me, there are books that had a negative impact on my work. The GoF book is one such book, and its impact on my development is so distructive I can't even begin to explain. It's not only because it tries to codify coding as a sum of recipes, but people reading it end up with the scary idea that there is _only one way_ of doing things, and that one way has a clear name, and a single possibility for implementation. The GoF buffs are those that keep stressing the most autoerotic interview question: „describe me one design pattern, other than Singleton”.

Now worse than people who read the GoF book are people who dove deeper into the issue and learned about _more_ design patterns from other books. One such people screwed my career development for 7 years because at one internal interview he asked me out of nothing about the „half sync half async pattern”, that solves a problem that he wasn't able to describe to me. And since I failed, I was forever on their s*t list.

I think there are good books that can influence your life in a positive manner, but those are incremental changes, things that add a few things here and there. I would expect to see on lists that „changed careers” books on programming languages, like Kernighan & Ritchie on C, or Stroustrup's or Alexandrescu's books on C++. Or books on fundamentals, like Hennessy and Patterson, like Tannenbaum's Network or Operating systems, Knuth, or Cormen&al on Algorithms. But since I rarely do...

rmk wrote at 2021-11-28 05:20:59:

I think you are being unfair towards GoF. GoF came out when Object Orientation was the rage and it provided a useful compendium of solution archetypes that can be used in response to (solved, recurring) problems. That is not to cast aspersions on your personal experience. It sounds like you had an encounter with an Architecture Astronaut and ended up in a bad place, but the fact that you are writing about it is a good thing, isn't it?

I also agree that "changed my x" is a bit of a stretch; perhaps it's hyperbole and should be taken as such. There are very few "things" that change one's life. Perhaps being in a war, or a natural disaster or some such, having an encounter with death but averting it or some such event could singlehandedly change one's life, but I doubt that reading a book or a set of books is one of them.

dorinlazar wrote at 2021-11-28 15:16:07:

It's not a judgment of GoF per se, although I have some critique on the book as well, but of the impact it had. Unfortunately, a lot of people (mis)took it to heart, and GoF became just another book to learn by rote when interviewing.

Somehow related, Google right now _demands_ interviewees to prepare using the _Cracking the Coding Interview_ book. Pretty much it's like someone sells you a door and hands you a set of lockpicking tools instead of you using the key to enter.

craftinator wrote at 2021-11-28 03:55:21:

> One such people screwed my career development for 7 years because at one internal interview he asked me out of nothing about the „half sync half async pattern”, that solves a problem that he wasn't able to describe to me. And since I failed, I was forever on their s*t list.

This is a sign, that in order to solve the problem, you must move on to a job that isn't the problem.

dorinlazar wrote at 2021-11-28 04:02:43:

I learned many things from that experience, but later, when I actually got smarter about career and interviews; being introverted didn't help much either. But I'm glad I didn't make this mistake on my end, when I was at the other end of the table; I was able to hire and help grow people who would have been put down because they didn't read a recipes book.

misja111 wrote at 2021-11-28 09:45:56:

> One such people screwed my career development for 7 years

The problem was with this person, not so much with the GoF book. In present days this person might have become an FP fundamentalist and come up with some exotic category theory quiz question that he was very fond of himself.

The GoF book is now of course outdated but the idea of categorizing best practices from the industry was a good one. Unfortunately many good ideas will be abused by people who lack the common sense to know how and where to apply them.

A similar thing has happened to the agile software development movement, to microservices architecture (every service is a microservice?!), unit testing (people trying to reach 100% coverage).

educatedfool wrote at 2021-11-28 09:41:51:

I cannot second this enough.

Uncle Bob et all have done imeasurable bad to a lot past and future devs generations.

Advocating for a perverted cloudy way of overengineered sw that builds cvs and horrible enterprise sw.

There are much better ppl to read out there. Anyone actually writing long lived sw. Linus, sam neal, anyone actually DOING it rather than living off self indulgent books.

Copenjin wrote at 2021-11-28 12:32:20:

I agree and hope that no one will come here commenting in favour of the uncle&co, what relevant software have they actually written? And how much time has been lost refactoring code from people that mindlessly followed their extremely simplified recommendations and toy examples? Let's forget them please.

yblu wrote at 2021-11-28 20:47:48:

> what relevant software have they actually written

I think Fitnesse [1] is quite relevant. That said, not a lot of FOSS work from someone like him, to put the things he preaches in large and complex projects that we can look at the source and learn from.

[1]:

https://github.com/unclebob/fitnesse

Mimmy wrote at 2021-11-29 19:17:02:

Would you mind linking to something written by Sam Neal? Not familiar with the name.

iriss wrote at 2021-11-28 08:23:57:

I actually really appreciate the GoF book. I don’t use their patterns every day, but it’s definitely driven home the message of carefully thinking about which parts of the system should depend on which other parts, and examples of how you can achieve that.

I also find it useful as a reference because many of the more common patterns do show up in people’s code and in libraries and understanding what a singleton/adapter/factory/builder is, does help me in my day to day.

I think the problem are the people who can’t abstract the message of the book and instead use it as their reference for absolutely everything, over-engineering the hell out of things. When I’m asked the sort of questions you describe, I also just ask if they could instead explain the problem, because being able to solve problems is all design patterns are about. If they can’t, I would respectfully ask how their knowledge of the design pattern will then help them in their job.

bear8642 wrote at 2021-11-28 04:01:14:

>Or books on fundamentals


Abelson, Sussman's _Structure Interpretation of Computer Programs_ also good recommend - helps show that whilst it's not magic, fact everything still works _is_ magical

digianarchist wrote at 2021-11-28 05:42:01:

This has sat on my shelf for my ten year career and I've never read it. Are there any up-to-date resources to help approach the text?

sateesh wrote at 2021-11-28 06:15:56:

That is the beauty of this book, there is no need for any extra resources. Install SICP package in Dr. Racket [1] and start reading the book. Try your best to solve the exercises, and don't give up easily on the exercises. Thinking over the exercises and solving them is the best way to assimilate learning from SICP. I read only the first 3 chapters, and relied on notes from Eli Bendersky [2] to check when stuck with exercises.

1.

https://stackoverflow.com/questions/19546115/which-lang-pack...

2.

https://eli.thegreenplace.net/2007/06/19/introducing-the-sic...

mavelikara wrote at 2021-11-28 06:47:32:

The videos from a class the authors gave in 1986 are available online (

https://m.youtube.com/watch?v=2Op3QLzMgSY

). I highly recommend those, if reading the text is not your style.

tartoran wrote at 2021-11-28 16:02:24:

This is a gem!!

nesarkvechnep wrote at 2021-11-28 06:01:13:

Just install Dr. Racket and write #lang sicp at the top. What kind of resources to help you approach the text you’re looking for?

wyclif wrote at 2021-11-28 12:00:31:

Incidentally, I just installed Racket today so I can work through SICP. I was kind of confused by the choices of what to run.

michaelcampbell wrote at 2021-11-28 21:20:22:

> It's not only because it tries to codify coding as a sum of recipes

It doesn't do anything of the sort. It may try to codify some specific solutions to _SOME_ specific types of problems, in a very narrow OOP'y context, but if "codifying coding as a sum or recipes" is what you took from it there's little wonder it has colored your view, so.

Invictus0 wrote at 2021-11-28 14:14:26:

What the hell is GoF

Jtsummers wrote at 2021-11-28 14:19:30:

“Gang of Four”. It’s how the book * Design Patterns: Elements of Reusable Object-Oriented Software* is often referenced. The “four” being the four authors.

JaggerJo wrote at 2021-11-28 16:27:39:

agree. I’ve inherited codebases from new “architects” who seemingly have just read GoF.

kgeist wrote at 2021-11-29 05:33:57:

I've met such newly appointed architects myself - judging by the commit history, they were OK writing unmantainable spaghetti for 10 years, then they read a few books on patterns, got promoted to architects and started applying those patterns everywhere (ending up with unmaintainable overengineered abstractions). When arguing during architecture reviews, you'd often hear "but in book X it's written that..." like they don't have their own opinion. Fortunately, they all outgrew this phase and eventually became proper architects.

redisman wrote at 2021-11-29 06:36:08:

Haha I remember my first designs as a Jr Engineer after I had crammed the book into my brain before starting. I’m pretty sure the other devs just threw those classes into the trash when I wasn’t looking. For about a year I thought everything had to be a design pattern and making a vanilla class was a faux pas.

14 years later I don’t think I use any of the patterns anymore. Maybe facade if I’m refactoring a complete mess of a project

dorinlazar wrote at 2021-11-30 04:18:24:

My thought about this is that patterns are something I recognize in the completed code, not something I bake into my code. A useful tool for refactoring at best. But re-factoring, not factoring. :)

nesarkvechnep wrote at 2021-11-28 05:59:26:

Or SICP


euske wrote at 2021-11-28 06:31:27:

Maybe they are good books, but I found that most of these summaries are bland and generic, as in these phrases:

"The book is strictly about career development and it has a lot of insights ..."

"The book is filled with classic and fresh anecdotes, thoughtful examples, ..."

"This book is amazing to understand the corporate structure and how you should behave ..."

These generic praises aren't good enough to overcome my threshold of interest, so to speak. A better way, if I'd suggest, is to pick a choice quote from the books. Quotes can be hit and miss, but when they click, it can pique the reader's interest in a much more acute way.

balaji1 wrote at 2021-11-28 17:33:15:

I thought I was the only one who felt this way^. Dunno why this article is upvoted so much. Actually the post heading itself seemed so clickbait-y that I didn't click into this link and the comments until it reached 500 votes.

redisman wrote at 2021-11-29 06:40:27:

Show, don’t tell.

I really don’t get why this has 500+ updoots. What am I missing?

wpietri wrote at 2021-11-28 00:50:31:

Huh. Mine would be:

And something that wasn't a book but made a huge impact was Eric Ries's blog, Startup Lessons Learned, circa 2009. He correctly spotted that things like Extreme Programming are generic software development processes, but that in specific domains you could take advantage of their flexibilty to enable new business practices, as in Blank's "Customer Development" process.

Aeolun wrote at 2021-11-28 02:51:01:

I love the Mythical Man-Month, but it’s one of those books that only software engineers seem to read, and they already know what’s in it.

MobileVet wrote at 2021-11-28 03:53:50:

When I met Fred Brooks, I had no idea who he was. He was just another grandparent of a student in a club I was volunteering with. Spent some time with him on a road trip even. Such a humble and kind man.

It wasn’t until our 3rd or 4th interaction that I put two and two together. The result was a very nicely signed and personalized copy of the MMM.

lostcolony wrote at 2021-11-28 03:01:30:

Ah, but bad management likes to -claim- to have read it. Sometimes just having the reference can be leverage, i.e., "Well, as per the Mythical Man Month, not all tasks can be parallelized. We can't take three women and complete a pregnancy in 3 months, 3x as fast, after all. This is one of those cases - we won't speed things up by adding people, but we might make things worse"

alecbz wrote at 2021-11-28 03:26:56:

Sometimes I can't believe that as an industry we've failed to internalize things we've known about for almost half a century.

It'd be one thing if there were managers out there actively disputing the ideas in the book, but I don't really ever see that. Like you say, more often I find managers that claim to have read it and agree. But still, shit like "let's flag if this project is late so we can try to add more people to it" gets said _all_ the fucking time.

I think with a lot of managers, trusting downwards just isn't a thing they're able to do, and so the only move they think they have is to view engineers as miners chipping away at "man-months" of software work. Sometimes I almost think it doesn't matter to them if it actually works or not, it's just the only move they see so it's the only thing they'll do.

lostcolony wrote at 2021-11-28 03:34:05:

Well, speaking as a manager, I can tell you a LOT of that is coming from above middle management too, and the optics of adding people and failing is better than not adding people and failing.

Heck, I stepped away from my last job in part because the environment was that (really, 'leadership' was just generally so bad, and this was but one of its manifestations of suck). I kept having status meetings as we neared a due date (that had been set by product, not engineering, and which our velocity said we would not make) asking us if we'd make the date. To which I replied "Data says no; gut says maybe. If I say we're not going to make the date, what are we going to do differently?", and to which they had no answer -except- "pull people from other projects and put them on this one". Nevermind that the whole difficulty was learning the integrative aspects, i.e., communication, NOT implementation (and that was why gut said maybe; we had learned a lot already, which is what took a lot of time; we were still facing both known and unknown unknowns).

Meanwhile, the teams that were getting kudos were the ones where managers were just like "yep, we're floundering; give us more people". If they succeed, they were brilliant and knew to ask for help. If they failed, well, it was doomed, but at least they knew to ask for help. Nevermind if more people were actually helpful, and derailing other projects just to get them was worthwhile. Clearly, I was a bad cultural fit; I cared more about getting things done efficiently.

The Mythical Man Month reference there was helpful for not derailing things by having more people thrown in the mix; it wasn't helpful for avoiding blame.

wpietri wrote at 2021-11-28 05:49:35:

> a LOT of that is coming from above middle management

For sure. One of the curses of the modern business environment is the belief in management as a universal skill. That if one has an MBA one can manage anything. That all one needs to do is find the appropriate graph and make it go up and to the right. In practice it ends up being an erasure of domain-specific knowledge in favor of the naive beliefs of the powerful.

A great example comes via Poppendieck's "The Tyrrany of the Plan":

https://www.infoq.com/presentations/tyranny-of-plan/

Transcript here:

https://chrisgagne.com/1255/mary-poppendiecks-the-tyranny-of...

The Empire State Building was built on time and under budget, but they did not have a complete plan when they started. This sounds impossible to the modern ear, but that's because executives see plans as a substitute for competence.

Joeri wrote at 2021-11-28 10:07:12:

The pregnancy analogy has been incredibly helpful to explain the nature of a critical path throughout my career. People instantly get it. I’m often credited with thinking up this analogy because outside of programmers nobody reads MMM.

pydry wrote at 2021-11-28 15:43:30:

It has a tendency to rankle managers trying to boost their headcount.

It's difficult to get a man to understand something when their raise depends upon them not understanding it.

I can still remember when the CTO I argued with came into the room one day and said that he'd been given the green light to hire as many additional people as he liked. He was grinning from ear to ear. I suspect he knew it wouldn't actually fix any of our issues but he didn't really care.

analog31 wrote at 2021-11-28 15:48:25:

I've found if a book or idea doesn't come to them through their own network, then it's easily just dismissed. Especially if the book is nearing a half century old. About the saying that adding people to a late project makes it later, the simple retort was: "But we have agile scrum." End of discussion.

lovecg wrote at 2021-11-28 01:15:28:

I’ve read The Pragmatic Programmer. It’s not a bad book - I was nodding along the whole way. And that’s sort of the problem with the books of this genre. The thing is, I recognize that these are good techniques because I already spent lots of time applying them. I just don’t know if the idea of compressing years of hands on experience into a textbook works well in practice. This goes for most self-help books as well.

Jtsummers wrote at 2021-11-28 01:50:04:

It's a good book at a certain stage in your career. Before that it's too easy to misconstrue it as absolutist (it isn't) or misunderstand the guidance (like DRY, which got a major rewrite in the 2nd edition to help with that). Too late in your career and it is all "obvious" (if you're a competent programmer).

On the other hand, as a mentor I found it useful to re-read it (or, read it through properly, I'd read large portions when I was younger but never all the way through). There's a problem of becoming _too_ expert where you can't communicate with novices in the field anymore, at least not like they actually need you to communicate with them. There was benefit, for me, in re-reading it and nodding along and being reminded of the things I'd learned along the way, getting a name for them, and a discussion I could use as a basis for my mentoring.

gaws wrote at 2021-11-28 16:25:57:

> It's a good book at a certain stage in your career.

Such as?

Jtsummers wrote at 2021-11-29 03:02:35:

Journeyman level, earlier if you have a mentor that can help you properly understand the contents (particularly, not to take parts of it as dogma).

Jare wrote at 2021-11-28 08:31:24:

When I read it I too found myself recognizing almost everything it says and it all felt almost obvious... I already had most of those insights myself, am I learning anything?

The real value is that it is much much harder to pass that sort of insight along to engineers you work with or (especially more junior) manage. Books like that didn't make me a better writer of code, but I think they made me a much better communicator, engineer and manager.

WalterBright wrote at 2021-11-28 02:56:44:

Self-help books don't work if you're just starting out. This is because the books sound trite and obvious and you haven't experienced enough failure yet.

But they get very helpful once you've been in a few battles and failed miserably. You'll be able to determine where you went wrong, whereas before it escaped you. You'll then find out how to not make those mistakes again, and do it right next time.

digianarchist wrote at 2021-11-28 05:45:30:

I vaguely remember a chapter on code generation which was the only failed recommendation/prediction. The rest was spot on.

whytaka wrote at 2021-11-28 04:13:01:

As a self taught dev, the books that helped me most are:

Code: The Hidden Language of Computer Hardware and Software

The Design of the UNIX Operating System

Designing Data-Intensive Applications

They taught me that there is no magic. Everything is logical and comprehensible.

sanderjd wrote at 2021-11-28 04:30:42:

I love love LOVE Petzold's Code.

Designing Data-Intensive Applications was really good too, the best new technical book I've read in the last five years or so, though I have had trouble applying its techniques thus far.

aastronaut wrote at 2021-11-28 08:53:11:

As another self taught, my favorites would currently be something like (from low- to high-level):

- The Elements of Computing Systems: Building a Modern Compiler from First Principles

- Operating Systems: Three Easy Pieces

- Systems Performance: Enterprise and the Cloud

- Exercises in Programming Style

- The Little Typer

- Conceptual Mathematics: A First Introduction to Categories

agumonkey wrote at 2021-11-28 13:46:37:

I liked the `little` series. It's a bit slow if you already know enough circular lispiness but they really manage to make a full theory emerge from tiny innocent questions. Brilliant.

I could add Queinnec's Lisp in small pieces (for the gradual derivation of fancier and fancier interpreters, the continuation one in CLOS was cool, and the bytecode part also very very cool)

Bratko's Prolog book was nice.

I'm tempted to mention the dragon book but I only read 40%.

hidden-spyder wrote at 2021-11-28 04:18:25:

Would you please elaborate how specifically each of these helped you?

whytaka wrote at 2021-11-28 05:07:40:

CODE teaches you about how computation can be structured out of circuits and switches and ultimately transistors. I now understand the fundamental nature of electronic computation.

UNIX taught me about the how an OS deals with hardware resources and the software that run on them. I now understand the environment in which my processes live as well as the structure of a process.

DDIA taught me about the structure of data, how databases operate on data through transactions, the difficulties of synchronization across databases, and the way data streaming works.

baash05 wrote at 2021-11-28 08:02:20:

Clean code... To this day I cringe when I see methods/functions over 20 lines long.. Or when I see commented code blocks in one function..

Other have mentioned The Mythical Man Month, and I'd say it's a great book. Sadly, more often than not, it's something I wish I could staple to managements foreheads. "read this now before our next planning session"

The Rspec book was a great book, that helped me fully embrace TDD, and this has led to more sleep filled nights than I had a right to before its consumption.

1984... This one terrified me so much, that I have to include it. I write code much more securely because of it.

Strange in a Strange Land. If only because I learned what GROK means.

wiseowise wrote at 2021-11-28 09:30:03:

> Clean code... To this day I cringe when I see methods/functions over 20 lines long.. Or when I see commented code blocks in one function..

To this day I cringe when I see dogmatic opinions of a fraud taken like an absolute truth.

aesyondu wrote at 2021-11-28 09:41:48:

Interesting. This is the first time I've seen Robert Martin to be referred to as a fraud. I'd like to read an elaboration of this.

I looked around and found this video [[

https://www.youtube.com/watch?v=mb9VPWbrqmE][Uncle

Bob (Robert Martin) is a Fraud!!!]] but most of the comments are dismissive of the review.

nickelpro wrote at 2021-11-28 09:50:47:

The examples in Clean Code are bad and would never make it through modern code review.

qntm did an extensive overview of this:

https://qntm.org/clean

ptx wrote at 2021-11-28 14:54:17:

Not a great video. He starts by attacking Robert Martin for taking 10 minutes to get to the substance of his talk, but then his own video never progresses from there and never gets to anything substantial.

pydry wrote at 2021-11-28 15:53:16:

>Interesting. This is the first time I've seen Robert Martin to be referred to as a fraud.

I'm not sure if fraud is quite the right word but he gets a lot of flak on HN for being something of a religious fanatic. E.g. the top comment in this thread:

https://news.ycombinator.com/item?id=26153823

croo wrote at 2021-11-28 19:19:55:

Clean Code was the first book I read that suggested (with concrete examples and rules!) that I should use code as a communication medium to other programmers first and foremost, the orders you give to the computer comes second.

It is an opinionated book and there are some dumb rules in it but it did way more good than harm to the dev community. Definitely not a fraud...

activitypea wrote at 2021-11-29 10:27:29:

"I read it there first" != "the idea came from there"

Uncle Bob puts forth a couple of good ideas from time to time, but none of those good ideas are his.

croo wrote at 2021-11-29 19:54:06:

I never argued who thought about this idea first it's just where I met it. There is value in gathering good ideas. Could you please point me to the books about clean code before Uncle Bob? I'm interested.

Jare wrote at 2021-11-28 08:19:13:

> I cringe when I see methods/functions over 20 lines long

You may find this post interesting

http://number-none.com/blow/john_carmack_on_inlined_code.htm...

Copenjin wrote at 2021-11-28 12:35:55:

>To this day I cringe when I see methods/functions over 20 lines long..

Wait until you have to follow dozens of 5 lines methods for the sake of unrequited abstraction that could have been compacted in an easier to read 30 line method.

misja111 wrote at 2021-11-28 09:22:22:

> .. The Mythical Man Month, and I'd say it's a great book. Sadly, more often than not, it's something I wish I could staple to managements foreheads. "read this now before our next planning session"

Did you read the book? It's not about the (ab)use of mandays/months in planning sessions, it's about the huge differences in capacities between individual programmers and the importance of having some "10x programmers" in your team.

wokwokwok wrote at 2021-11-28 10:15:33:

That’s a very opinionated view from someone who’s actually read the book.

I thought the whole thing was about having a plan, and many well structured, organised teams; having a 10x programmer makes no difference at all without the rest of the things; no matter how great you are, you can’t do everything, and if you try, you’ll become a bottleneck.

I sympathise very much with wanting to staple “do you actually have a plan for how that’s going to work?” to someone in a planning meeting.

> Very good professional programmers are ten times as productive as poor ones, at same training and two-year experience level. (Sackman, Grant, and Erickson)

> Sackman, Grant, and Erickson's data showed no correlation whatsoever between experience and performance. I doubt the universality of that result.

> A small sharp team is too slow for really big systems.

^ literally a quotes from the book.

presentation wrote at 2021-11-29 16:08:57:

There is a cost to indirection, a long function can often be way more understandable than a bunch of short, overly decomposed ones.

dunemaster wrote at 2021-11-28 08:31:06:

Why the dots?

Toine wrote at 2021-11-28 09:31:40:

I thought only boomers do this.

MonaroVXR wrote at 2021-11-28 09:27:50:

>1984... This one terrified me so much, that I have to include it. I write code much more securely because of it.

What book?

magnus_blackarm wrote at 2021-11-28 09:50:12:

https://en.wikipedia.org/wiki/Nineteen_Eighty-Four

moffkalast wrote at 2021-11-28 11:54:16:

Your link seems to be broken?

deelly wrote at 2021-11-28 09:45:06:

1984

craigching wrote at 2021-11-28 04:14:50:

SICP has already been mentioned a couple of times and I agree with that 100%. What I find helps me more than anything to be a better programmer is to find those gems that take you out of your day-to-day routine and help you see programming in a different way. So a couple of other books I’d throw in with SICP are “The art of Prolog” and “The Little Schemer.” I still today admire Prolog’s declarative style so much today. Even though I haven’t had the opportunity to use it professionally, I still come back to it now and then to refresh on it.

jakey_bakey wrote at 2021-11-28 01:02:31:

I've not got through the majority, but I consider the up-to-date list on Teach Yourself Computer Science as the best one that currently exists:

https://teachyourselfcs.com/

The top 2 recommendations - based on return to learning on time invested - are:

1. Computer Systems: A Programmer's Perspective

2. Designing Data-Intensive Applications

LrnByTeach wrote at 2021-11-29 20:55:48:

I think this book would be great addition to any software engineer . I think book captured the recent modern practices ( last 10 years?) in one place .

The Effective Engineer: How to Leverage Your Efforts In Software Engineering to Make a Disproportionate and Meaningful Impact

Effective Engineer - Notes :

https://gist.github.com/rondy/af1dee1d28c02e9a225ae55da2674a...

https://www.amazon.com/Effective-Engineer-Engineering-Dispro...

orsenthil wrote at 2021-11-28 01:10:16:

Mine will be none. Only practice, coding, building, testing, exercising again and again has helped me.

GlennS wrote at 2021-11-28 01:41:48:

Have you considered trying books filled with structured exercises?

I worked through The Little Lisper when I was at university and I got a lot out of it, for example.

Osiris wrote at 2021-11-28 02:51:23:

I think this is the kind of content I need. One that presents a problem and allows me to figure out a solution.

Can you recommend any other content like that?

GlennS wrote at 2021-11-28 05:02:15:

Good question. I guess my answer is not really. I'm not sure why I haven't sought out more of this kind of thing.

Still, a couple of random things I can think of:

The Spatialite Cookbook is no longer maintained, but I think still useful. That's structured as a sequence of fun exercises:

http://www.gaia-gis.it/gaia-sins/spatialite-cookbook/index.h...

I also enjoyed Peter Norvig's Design of Computer Programs online course:

https://www.udacity.com/course/design-of-computer-programs--...

zamfi wrote at 2021-11-28 03:56:02:

projecteuler.net?

montblanc wrote at 2021-11-28 05:06:05:

Yeah this is probably correct.

Still, on some rare occasions it's so hard to get into a topic that if there's a good book I would give it a try. For example: I'm interested in Ruby internals. The codebase is very very complicated and I have no background in interpreters; in that case Ruby Under a Microscope is a life safer. I would say the same if I was looking to get into Linux kernel development.

But in general - if you are just trying to become a better software developer (e.g write clean, well tested code) you are absolutely right no book will get you there, hard work will.

abetusk wrote at 2021-11-28 03:15:16:

Archive.org has "The Unwritten Laws of Engineering" by W.J. King available (one of the book recommendations) [0].

[0]

https://archive.org/details/the-unwritten-laws-of-engineerin...

eatonphil wrote at 2021-11-28 02:39:09:

For me:


  * Designing Data Intensive Applications
  * High Performance Browser Networking
  * Google SRE Book (maybe)

a_square_peg wrote at 2021-11-28 14:32:05:

I didn't know about "Unwritten Laws of Engineering" - skimming through some of it, this is an excellent book and I wish I knew about it before.

I was fortunate enough to be around senior engineers who took upon themselves to mentor junior engineers like myself. Now that I'm in their shoes, I find that the engineering landscape has changed quite a lot (especially in software) and often find that junior engineers don't see themselves needing to be mentored and sometimes even offended by recommendations.

I think some of this can be seen in this thread as well - some are commenting about how bad these recommendations are, and some even about the general practice of recommending books (how dare you!).

Given that the OP is just talking about books that he felt changed "his" career, I think it's really not something to be challenged and disagreed in such manners.

8bitsrule wrote at 2021-11-28 04:53:35:

Commodore 64 Programmers Reference Guide.

The book for the last PC that I could completely comprehend and bend to my will. And then came the #_$__! Mac OS. Freedom into slavery. Rainbow into chrome.

mgraczyk wrote at 2021-11-28 04:00:12:

Some of the juicier bits from these books have been fairly well absorbed by engineering culture, ie "rubber duck debugging" and "DRY". Some of these books I haven't heard of though.

As somebody who didn't study CS in college, the books that most changed my career were:


  * Learning From Data, by Yaser S. Abu-Mostafa et. al. This one has video lectures to go along with it.
  * C Programming: A Modern Approach. (Definitely not the best, but also lots of hands on stuff)

Another thing I've found _extremely_ educational is to read major incident postmortems (SEV0s and security SEV1s at FB, "huge" OMGs at Google). If you ever find yourself anywhere with planet-scale infrastructure, make sure to read these write-ups. They are treasure.

8589934591 wrote at 2021-11-28 12:50:33:

For both C and Algorithms, what do you think is the best since you feel both the above books aren't the best?

anon2020dot00 wrote at 2021-11-28 01:54:02:

I'd recommend books by Clayton Christensen such as the Innovator's Dilemma and How Will You Measure Your Life.

Just the section on correlation vs causation is invaluable.

agomez314 wrote at 2021-11-28 01:28:44:

SICP made me fall in love with programming

craigching wrote at 2021-11-28 04:07:05:

Second this. I credit this book for making me the programmer I am today. Scheme is such a wonderful language having come from C/C++ before it. Of all the subjects that affected me by learning Scheme, using Scheme to implement OO as message passing opened my eyes compared to C++.

Link to a pdf of the book:

https://web.mit.edu/alexmv/6.037/sicp.pdf

pkrumins wrote at 2021-11-28 20:11:04:

Totally disagree. SICP is the most boring and hard to read book ever written and I don't recommend it to anyone.

ok_dad wrote at 2021-11-28 04:40:37:

I read The Phoenix Project a while ago, and it was pretty good to understand what DevSecOps is supposed to mean. It also convinced me that simpler processes are better and you add layers to those simple processes only if they are necessary. Sometimes you should accept that a more complex process might help track metrics better or might be logically better, but the simpler process is easier for everyone to grok and in that way easier to communicate about. It's been a few years since I read it but it was also entertaining to read in more of a story form than in the usual technical or managerial language.

Sebguer wrote at 2021-11-28 06:03:43:

I honestly found the writing in the Phoenix Project painful, but I'm surprised you're the only one to mention it since I've heard it come up a fair bit elsewhere. I think it's probably more popular in the more traditional IT world than HN's typical audience.

ok_dad wrote at 2021-11-28 06:21:10:

I'm not very particular about reading so I'll just steam ahead on even the crappiest books.

For nonfiction books I mostly put myself in the mindset of learning or conceptualizing the content in a more abstract way, like building a mind map.

For fiction, I picture the story like a movie, which distracts me from bad writing, so this book hit that sweet spot for me, personally, where I could imagine the world and the events but also conceptualize the abstract content.

I actually wish I could read more technical books that have fiction and technical concepts mixed like that!

Edit: Also, for as much as people complain about DevOps here, I'm amazed so few people have read this book. It's literally the book that invented DevOps as a term, right?

Sebguer wrote at 2021-11-28 15:52:27:

It didn't invent the term. John Allspaw and Paul Hammond maybe did, in this talk:

https://www.youtube.com/watch?v=LdOe18KhtT4

(from the comments, I guess this talk is actually referenced in the book?)

Other places credit Patrick Debois who ran the first devopsday in the same year:

https://newrelic.com/devops/what-is-devops

ok_dad wrote at 2021-11-28 16:32:50:

Thanks, my memory gets a bit fuzzy after a while.

brg wrote at 2021-11-29 07:53:41:

Reading this list was interesting, and I feel compelled to share my own. Reading these books won't guarantee a great career. But on reflection, they did shape my world view.

JackMorgan wrote at 2021-11-28 10:00:24:

My recommendations can be found categorized here:

http://deliberate-software.com/page/books/

A few in there are marked as "dangerous" - books that I've seen totally destroy productivity, but I included them since it's impossible to refute what you don't understand.

lukakalua wrote at 2021-11-28 11:32:31:

There seems to be a lot of criticism of the books mentioned in the blog and the comments. I am aware that expecting that some books are going to revolutionize a person's skills as an engineer is naive at best, but some people are even going as far as saying that following some principles/books can even be destructive. Ofc following anything dogmatically is dangerous, but is that the only concern? Just keep in mind that not everything can be applicable to every situation and we're good?

Genuine question, as a software engineer of 3-4 years professional experience, how should I approach furthering my skills? A lot of advice is just "do more, practice more, try things" and while that is going to be a significant part of it, I don't believe we should outright ignore books as a valuable source of info. How should I approach and identify books that contain "outdated" or sometimes "wrong" advice?

Jtsummers wrote at 2021-11-28 14:03:54:

Understand that most of the books are born from experience. But they represent what that author(s) learned, which may or may not have been the right lesson in every case and, almost always, is not a true universal lesson.

Some views have to be considered in context. If OO means Smalltalk to one author and C with Classes to another their statements on “OOP” will actually be about two different things, learn from them both but don’t misapply the lessons from one to the other (happens a lot).

With that in your head, read the books and question them. Experiment with their ideas where you can or run thought exercises, “What if
?”

Also, read “The Psychology kf Computer Programming” by Weinberg. He presents many different case studies (though briefly) and commentary. One of the few books where it is clear his prescription is, “Study people and their behavior” not “Do what I say and you’ll make perfect code.”

diavelguru wrote at 2021-11-28 02:25:02:

I’m so happy these comments and conversations may take place now given we as software engineers have reached a saturation point where we are made up of those who are not just satisfied with a Java book or a Ruby book; rather we are made up of a body of members who use the tens of languages that are flourishing today in our programming stack.

I love it!

BrissyCoder wrote at 2021-11-28 01:43:12:

https://www.developerdotstar.com/mag/articles/read_princprog...

https://www.mit.edu/~xela/tao.html

alpb wrote at 2021-11-29 08:25:03:

I can hardly believe the 37signals "Remote" book would've changed anything for anyone. I've read it almost a decade ago when it came out when I was early in my career and it definitely was practically a waste of time. In retrospect, it still is. I also can't tell from the blog post how it changed OP's career.

creamytaco wrote at 2021-11-28 00:31:06:

Not a single one of these books is worth reading imo.

urthor wrote at 2021-11-28 00:47:34:

I've read The Pragmatic Programmer and large chunks of the Unwritten Laws of Engineering.

They're excellent books, but they're targeted for early career developers and people struggling to figure out the office work life. It's fair to say that you're probably not the target audience, but they're really great books for their niche.

I'm also extremely interested in the idea of reading a book about remote work after reading the blog.

Maybe it's not Remote, but I should definitely read a book about working remotely, considering I do it for so much of my time.

MadeThisToReply wrote at 2021-11-28 00:34:10:

Anything you recommend instead?

Personally, I got a lot of value from _Designing Data-Intensive Applications_ by Martin Kleppmann.

loloquwowndueo wrote at 2021-11-28 00:48:30:

Omitting “the mythical man-month” under maybe the assumption that everyone has read it is a mistake. And anyone who hasn’t read it probably should - I get stuff like my company’s c-suite and directors asking for things that make it clear they haven’t read it, I really have to fight the urge to gift them a copy of the book.

quincunx wrote at 2021-11-28 00:51:24:

* Mythical Man Month (Experience)

* Rapid Development (Profession)

* Epistulae Morales ad Lucilium (You're not alone, we all share this.)

* The War of Art (At 9am, you are alone.)

* Competitive Advantage (Porter, a personal choice, it's not about the bytes.)

chiefalchemist wrote at 2021-11-28 01:59:07:

The War of Art * is a must read for anyone and everyone.

* For those who don't already know, it's a very quick read. And the type of book you'll gladly reread every one to three years.

iratewizard wrote at 2021-11-28 00:49:40:

Ask the collective:

https://hackernewsbooks.com/

systemvoltage wrote at 2021-11-28 00:57:15:

> Designing Data-Intensive Applications

Exceptional in every way.

georgeburdell wrote at 2021-11-28 01:15:37:

I don't think you meant this to be as absolute as it sounds, but as someone currently reading it, I find the asides, especially ones that focus on the nuances of a word's definition, such as "atomic", "consistent", etc. to be tedious while simultaneously lacking in clarity. I hope if Kleppmann ever does a 2nd edition that strips out some of this stuff and adds more examples, because most of his sales are probably from people like me who are job searching but lack distributed system design chops.

systemvoltage wrote at 2021-11-28 01:33:49:

I did. And it is. There is no such book out there that covers breadth and sufficient depth at the expense of minor pedantry (that you're alluding to) without losing much meaning. For most engineers, being familiar with pros and cons of technology is far more important than nuances of terminology. They can and should investigate each topic more deeply when time comes.

I repeat with emphasis: It is _exceptional in every way possible_. Improvements that you suggest should be addressed if it doesn't take away from the breadth + detail and only make it more clear.

cloverich wrote at 2021-11-28 03:55:45:

I felt like parent first time I was reading and abandoned after a couple chapters. Went back recently and read it through. Wow. Agree with you. One of the best books I’ve read, could be improved but it’s definitely in a tier beyond the majority of books in our field.

throwaway81523 wrote at 2021-11-28 00:42:35:

They do look lame. Spoiler: the 5 books are

* The Passionate Programmer: Creating a Remarkable Career in Software Development

* The Pragmatic Programmer - your journey to mastery(20th Anniversary Edition)

* Unwritten Laws of Engineering - Second Edition

* Remote: Office Not Required

* Explain the Cloud Like I’m 10

willisrocks wrote at 2021-11-28 00:48:17:

I can't speak for the other books, but The Pragmatic Programmer is one of my favorites.

unbanned wrote at 2021-11-28 01:03:43:

I agree, I'm sorry you're getting downvoted.

austincheney wrote at 2021-11-28 04:03:20:

I have no doubt those books inspire people to become substantially better developers. I have observed in the large corporate world career progression is not linked to either quality of developer or quality of product.

It is important to keep those in mind and then determine what is more important: career progression or work satisfaction.

buzzwords wrote at 2021-11-28 07:00:53:

Maybe this the best place to ask this.

Unfortunately I've ended up supporting application and not actually coding so during interviews I can't get past technical parts. I feel very embarrassed by my lack of technical abilities. Anyone else had this issue? How did you rise above it?

ok_dad wrote at 2021-11-28 09:04:54:

Try to find positions where they care more about your thought process and your past experience than in your ability to memorize facts about computers. I'm pretty good at my job and make pretty good software (I think), but I couldn't tell you how to form a red-black tree or do a bubble sort. I routinely look up simple Python syntax and how to articles on bash, but nonetheless I get good jobs, and I can reason about a problem and I can read and understand technical documentation. I started barely knowing Python and googling literally everything, like for loop syntax. I'm not going to be the next big name, but I have satisfaction in life and do ok.

redisman wrote at 2021-11-29 07:16:10:

Grind Leetcode

devwastaken wrote at 2021-11-28 03:40:10:

Amazon currently has a "buy 3 for the price of 2" for some books.

https://www.amazon.com/promotion/psp/AFPAOXML5M9KX

Looks like a lot of physical books are half off as well.

spir wrote at 2021-11-28 18:23:59:

This book changed my software career

"Developer Hegemony"

https://www.amazon.com/dp/B0722H41SG

zanethomas wrote at 2021-11-28 15:03:20:

I got my start with

o Computation: Finite and Infinite Machines --- Minsky

o The Art Of Computer Programming --- Knuth

o Structure and Interpretation of Computer Programs --- Abelson and Sussman

In that order. Everything else is syntactic sugar. <g>

pajko wrote at 2021-11-28 09:47:51:

My career shaping "book" was Ralph Brown's Interupt List

montblanc wrote at 2021-11-28 04:57:15:

Ruby Under a Microscope is the first and only technical book I will finish; if you like Ruby and are curious about how things work under the hood it's a joy to read.

You need to look for something that actually interests you. Reading some bible on design patterns with hundreds of useless Java or C++ examples often IS boring. And let's be honest it probably won't make you a better software developer.

A close second to me was Hacking: The Art of Exploitation by Jon Erikson. It's a great introduction to low level stuff and how basic hacks are formed. Really loved it though I admit I never finished it.

montblanc wrote at 2021-11-28 08:06:19:

Edit: I meant to say it's the first I have finished (which will happen soon). I'm not saying there aren't other worthy technical books out there I'm sure there's plenty.

martincmartin wrote at 2021-11-28 11:38:50:

I liked The Mythical Man-Month. What do people think of Fred Brooks' more recent book, The Design of Design (2010)?

rbobby wrote at 2021-11-28 01:09:07:

There can be only one: The Elements of Programming Style

abraxas wrote at 2021-11-28 01:15:19:

There can be only one: Structure and Interpretation of Computer Programs

JavaBatman wrote at 2021-11-28 01:09:21:

Is there a good book on object oriented programming for beginners? By beginners I mean people who code regularly but aren't software engineers.

flor1s wrote at 2021-11-28 01:18:34:

I think it's more important to find a good text book about the language you want to learn programming in, rather than a book about OOP. OOP is implemented differently by each language, and some popular languages these days completely avoid OOP.

damontal wrote at 2021-11-28 02:34:21:

As irritating as it is, the Head First book on OOP is actually decent for a novice.

nomdep wrote at 2021-11-28 01:55:49:

If your language is Ruby or Python I would recommend Practical Object Oriented Design by Sandi Metz

pcmoney wrote at 2021-11-28 02:33:17:

I agree but I wouldn’t restrict the recommendation to just if you use python or ruby but if you want to use or understand any language in an OO fashion.

abraxas wrote at 2021-11-28 01:14:07:

Depends on your language. But Effective Java is not a bad one if Java is the language you use.

avodonosov wrote at 2021-11-28 03:59:39:

It would be interesting to know more about the author's career.

tomcat27 wrote at 2021-11-28 04:38:13:

Rhetorics come and go.

dvt wrote at 2021-11-28 01:10:38:

I'm not sure how any of these books have anything to do with actual career advancement. Career trajectory improvements are generally catalyzed by high-risk business decisions (e.g. doing a startup, joining as an early employee, job hopping, etc.), or political posturing (e.g. getting promoted, gaming the stack ranking, aggressive negotiations, etc.). Being a good engineer doesn't really have anything to do with either. You have plenty of baseline engineers both starting companies and getting promoted over the studious "10x engineers."

Take the 37signals Remote book, for example: as a run-of-the-mill engineer, you quite literally have no say in what the work/office culture of your employer is. Unless you're (at a bare minimum) a VP, no one cares what your opinion is, as you have zero political capital. I don't want to be too negative, so here are some books I would suggest:

The 48 Laws of Power
    Outliers: The Story of Success
    The Black Swan: The Impact of the Highly Improbable
    How to Win Friends & Influence People

hintymad wrote at 2021-11-28 01:38:18:

I find Outliers' chapter on Chinese people and rice field preposterous. It was like reading astrology: The entire Chinese people have grit, and their grit came from growing rice because it was such a laborious job. Really? Really? Really? Did the author even know that for thousands of years, it was the Northern China that dominated the history, and Northern Chinese largely grew wheat? And the book said Chinese were good at math because Chinese digits are short to pronounce. I'm sure Apollonius of Perga, Newton, Euler, Gauss, Hibert, Poincare, and countless others are rolling in their graves. Besides that fact that arithmetic is tiny part of maths, China produced good students in the past decades because Chinese invested in modern education, believed that a nation needed to have many great scientists and engineers, and relentlessly pushed students to learn more maths and science. The Qing Dynasty was a laugh stock in front of the rest of the modern world. The entire nation of China felt the pain and humiliation for not catching up with modern civilization.

They will fuck anyone over for telling them they must lower their standards for the crap like being inclusive or no kids left behind, as if everyone can learn advanced maths. They's how they got better at maths. That's how they produce good students: they believe everyone's potential, and push students as hard as necessary. They still have catch-up to do, but they are getting closer everyday.

fargo wrote at 2021-11-28 02:18:47:

yeah that's a huge problem with all of Gladwell's work. Compelling but unsupported.

bitexploder wrote at 2021-11-28 02:23:47:

The best description of have scene of the pop psychology and pop business books is “knowledge porn”. Guns germs and steel is like that. Makes the reader feel the secret history of the world or some topic is being revealed even though it’s at least partially, or wholly, fantasy :)

nefitty wrote at 2021-11-28 02:40:48:

In my head, I consider these sorts of books more generalized models to run information through. For example, when I think about some historical occurrence I run it through evo bio, Marxism, geo determinism, critical race theory, symbolic culture, etc. Yeah, some of the origins of these models are dumbed-down, but my reasoning is that the more of these models I have, the closer I can get to that secret history :P

avl999 wrote at 2021-11-28 01:31:08:

The article is titled: Five Books that Changed _My_ Career as a Software Engineer

The operative words being "My Career". The article is a subjective listing of books that the author found to be useful in their career and at the _stage_ of their career they read them. Not an edict of what every SWE needs to read to progress in their career.

I have read 1 of the 4 books on your list (and read another partially) and haven't found them to be remotely helpful in my career progression. They may have huge impact on someone else at another stage of their career, that is the point of lists like these.

PragmaticPulp wrote at 2021-11-28 01:22:36:

> Being a good engineer doesn't really have anything to do with either.

Being a good engineer is necessary, but not necessarily sufficient, for being promoted.

There are some toxic workplaces where politics is the only way to get ahead, but they tend to fizzle out quickly as the upper ranks become filled with people who aren't good at anything but politicking and the good engineers and managers leave for greener pastures. It's certainly _not_ characteristic of a typical, successful company.

In fact, neglecting engineering skills and trying to exclusively play political games is one of the quickest ways I've seen people tank their engineering careers. The problem is that it might work at first, for a short while, but eventually the people around the person realize they're all talk and no show.

Reputations are hard to build but easy to destroy.

evan_ wrote at 2021-11-28 01:49:54:

> eventually the people around the person realize they're all talk and no show.

That’s when they pull up stakes and move to the next company.

BobbyJo wrote at 2021-11-28 01:39:03:

> as a run-of-the-mill engineer, you quite literally have no say in what the work/office culture of your employer is.

Who hurt you?

My experience has been quite the opposite. Creating a great work culture is well within the ability of even new engineers. I would probably suggest the opposite of you, in fact, and suggest that, between engineers and the VP/C-Suite level, mid or senior level engineers probably have the most sway over company culture. As an engineer, you have time, inclination, and ability. VPs don't have the time, CEOs don't have the inclination, and, frankly, no one but the boots on the ground have the ability.

gameswithgo wrote at 2021-11-28 01:54:17:

You do in fact seem to negative, and have a take on life that is a bit more cynical than reality. Completely dismissing any value in actually being a good engineer for career advancement for instance is a bit over the top. Suggesting companies always don’t care about employee opinions as well. Real life is pretty bad sometimes but not universally dystopian.

dvt wrote at 2021-11-28 02:02:30:

> Suggesting companies always don’t care about employee opinions as well.

Ah yes, the same companies that laid off mass numbers of engineers in 2000 and did it all over again in 2008. The same companies that vehemently fight any kind of unionization efforts and the same companies that insist to haze potential hires with live-coding & whiteboarding tests even though folks have 10+ years of experience. The same companies that were wage-fixing employees' salaries and had to pay out almost half a billion dollars in restitution[1]. Those companies? If you think you have any kind of influence on corporate culture as random engineer #3419, I've got a bridge to sell you.

[1]

https://www.npr.org/sections/alltechconsidered/2015/01/16/37...

wiseowise wrote at 2021-11-28 09:40:45:

> that insist to haze potential hires with live-coding & whiteboarding tests even though folks have 10+ years of experience.

Don't see any problem here. I've met my share of "10+" years of "experience".

strulovich wrote at 2021-11-28 01:25:28:

My personal experience shows to the contrary, the super talented engineers do well, and get promoted much more easily.

And I’ve seen many cases of “run-of-the-mill engineers” change cultural aspects of the office and the company.

This is all based on mostly one employer, but a very big one. I suspect smaller companies make fast promotions for talented engineers and cultural changes even easier.

(I do agree that sometimes people that look in no way special at first glance turn out to be fantastic founders)

xwdv wrote at 2021-11-28 01:27:52:

Promoted to what though? A job with more responsibility but not really a good enough increase in pay to go along with it? No thanks.

avl999 wrote at 2021-11-28 01:34:34:

Exactly, why are you chasing promotions? Isn't it ok to be happy with where you are and have satisfaction? My title is Sr Software Engineer. My boss keeps bringing up in our 1 on 1s about what we should do to carve out a path for a promotion to "Principal Engineer" but I don't care. The small amount of pay bump is just not worth the added responsibility (not to mention the hoops they make you jump for the promotion).

Tcepsa wrote at 2021-11-28 01:53:58:

Very reassuring to hear that I am not the only one in a position like that; thank you for sharing! (I am planning on stepping pretty firmly off the path to Principal Staff to substantially alleviate work-related stress and anxiety)

sswaner wrote at 2021-11-28 02:06:32:

This is a great mindset to have. I would especially recommend that you avoid management for as long as possible. The joy of building software is hard to replace once you hang it up and start attending meetings for a living.

xwdv wrote at 2021-11-28 03:51:26:

Exactly. For many people senior software engineer is a stepping stone to something more, for me, there is nothing greater. If I wanted to be more ambitious I’d start a business.

wpietri wrote at 2021-11-28 02:31:26:

Have you ever managed people? This bit does not match my experience at a number of companies: "you quite literally have no say [...] no one cares what your opinion is, as you have zero political capital".

mgfist wrote at 2021-11-28 01:23:56:

Being an engineer is just that - an engineer. It's different from being a leader. Being a "10x" engineer just makes you a better engineer, it doesn't mean you're any more capable of making a decision that would generate a company $100 million in yearly revenue. Just different skill set. Steve Jobs wasn't a great engineer, but he was a great product visionary and marketer.

dvt wrote at 2021-11-28 01:34:02:

> Being an engineer is just that - an engineer. It's different from being a leader.

I disagree. In fact, the third or fourth stage of your promotion will often be a leadership position (junior, senior, principal/tech lead). If you're okay with being a "senior engineer" until you're 45, you're going to be in for a rough time when you get inevitably laid off.

mgfist wrote at 2021-11-28 04:02:19:

I stand by my take. A good engineer is not guaranteed to be a good lead. And a bad engineer isn't guaranteed to be a bad lead. They are different roles.

Most competent companies let good engineers who won't be good leads stay in IC roles with bigger responsibilities.

hellbannedguy wrote at 2021-11-28 01:53:17:

Most guys in tech are laid off around 50-55.

I know way to many Anchor-out, homeless, or stay at home dads (Kids moved out decades a ago, or sleeping in the basement. Wife begrudging hating your unemployed, but is still civil when you are around.) who were in Computer Managment.

Save the money while you're young. Computer skills seem to mean nothing after 50. An those ass kissing people skills (Managment) are finished the moment you are laid off.

You will not be the 65 year old working Doctor, or Lawyer.

The barrier to entry is just too low, and since you guys are above unions; I hope you have a sympathetic family.

It will make you liberal though.

If you have the right attitude you will get through it though. A divorce might be necessary, but you probally knew that one was comming for years.

sswaner wrote at 2021-11-28 02:02:38:

I disagree. Reading the books mentioned by the OP are more geared towards being a better software engineer. Your list seems to be better aligned to improving the success of a software manager. As for Remote, I found the book useful for making the case for remote work, and how to succeed with remote workers in a corporate culture that was highly resistant to the ideas.

baash05 wrote at 2021-11-28 07:47:30:

I'd argue that you have near 100% control over the work/office culture of your employer. You have 100% control over who you work for, so you can control the office culture you work in. It's a 1 to 1 relationship.

If during an interview they say.. "3 days in the office" you counter with "how about zero?" They say "The best we can do is 2", you again counter with "Zero works for me." Don't take the job.

unbanned wrote at 2021-11-28 01:09:43:

There's an old adage: those who can do, those who can't teach.

There's no magic information you're going to come across to further your career in any sort of literature on software development, or indeed any sort of career in general. Any practical books are verbose versions of framework documentation, coaching books are common sense, others formalising experiential learnings - which are only realised from having that experience itself.

This makes sense; otherwise you could get any Joe Blogs to read a couple of books and become an expert immediately.

Lhiw wrote at 2021-11-28 07:21:42:

Pragmatic programmer is rather problematic for me.

I think it covers some good basics for people early in their career but a lot of its guidance can be harmful when taken extremely literally or like dogma.

marsven_422 wrote at 2021-11-28 07:13:09:

Read Uncle Bob's books.

mjfl wrote at 2021-11-28 04:55:49:

If they didn't allow you to start your own website/service or become independent then they did not change your career.

smus wrote at 2021-11-28 14:06:06:

What a narrow minded way of looking at things. You don't know other people's stories, or what their priorities are, or what situation they're in.

mkl wrote at 2021-11-28 12:02:10:

It's perfectly possible for your career to be changed without you bootstrapping your own project.