Live data from Hacker News

The Programmer's Brain

manning.com

61–70 of 104 posts

Re: The Programmer's Brain

#61
post #2

are Manning books any better these days? They always used to rush the most awful poorly edited and planned content to market to be the first ones with a book on $NewTechnology

Yeah, Manning books have generally been in the "better than nothing" category for me. Don't know about this book though, it might be an exception.

Re: The Programmer's Brain

#62

Interesting that it specifies "speed reading". I think speed reading for code is actually an anti pattern since it is encouraging your biases and guesses instead of actually reading the damn output. If you ever wondered how people ended up programming stochastically and just making random changes I'd say speed reading is part of it

Disagree, I can only speed read. I have dyslexia and I can’t read “normally” I basically read in blocks. My brain does the rest.

That can't work well for anything non-trivial to read. Ever tried going through a math book like that? Did it work?

Re: The Programmer's Brain

#63
post #49

Earlier quoted context omitted.

The best code is the code that doesn’t need to be read at all. This takes a lot of skill in abstraction. For example code a “user data cache” with lots of user concerns and people will be reading that code a lot. Code a “generic cache” and test the hell out of it and it’ll never need to be read (or rarely) There will need to be code that deals with users but it can interact with the cache so where business logic ends…

Of course it will have to be read, what makes you think you can guess what people will have to read? This seems such an anti-pattern, instead of writing readable code that lives inside the domain where its used, you make an unnecessary abstraction. This is exactly how redundant complexity gets made and you wind up with 16 abstraction layers where each is used just once and a completely unreadable mess.

this.

While it is important to separate concerns where applicable (might be user related functionality and caching) generalization most of the time just adds complexity.

Re: The Programmer's Brain

#64
post #49

Earlier quoted context omitted.

The best code is the code that doesn’t need to be read at all. This takes a lot of skill in abstraction. For example code a “user data cache” with lots of user concerns and people will be reading that code a lot. Code a “generic cache” and test the hell out of it and it’ll never need to be read (or rarely) There will need to be code that deals with users but it can interact with the cache so where business logic ends…

Of course it will have to be read, what makes you think you can guess what people will have to read? This seems such an anti-pattern, instead of writing readable code that lives inside the domain where its used, you make an unnecessary abstraction. This is exactly how redundant complexity gets made and you wind up with 16 abstraction layers where each is used just once and a completely unreadable mess.

The advantage of good abstracting is you can unit test one layer and make it super solid, then build the next layer with less mental load.

I am not advocating making “unnecessary” abstractions.

I’m not even advocating abstracting from the get go: sometimes you need to see the messy to appreciate the abstracted.

This is modulo all common sense trade offs!

Re: The Programmer's Brain

#65
post #2

are Manning books any better these days? They always used to rush the most awful poorly edited and planned content to market to be the first ones with a book on $NewTechnology

I read the first few pages. It was riddled with problems. 1. Section 1.1 shows an APL program "1 2 2 2 2 2 ⊤ n" and says, "The confusion here lies in the fact that you might not know what ⊤ means.". Nope. The confusion is that I don't know what any of the symbols do or how an APL program is structured. I expect this is the case for most readers. 2. There are 3 examples here. The discussions of the examples are not ne…

The "mian" thing is not an error. It's there to make a point about how the brain interprets code, depending on your familiarity with the language and problem. She explains it not much later on.

Re: The Programmer's Brain

#66

Earlier quoted context omitted.

Disagree, I can only speed read. I have dyslexia and I can’t read “normally” I basically read in blocks. My brain does the rest.

That can't work well for anything non-trivial to read. Ever tried going through a math book like that? Did it work?

It does, but I will say that I had to learn how to block read math. So I couldn’t read until the 6th grade because of how bad my dyslexia is. I taught myself speed reading before I knew what it was (I called it block reading). I knew that my brain could recognize symbols and words without reading it so I took it to the extreme. I started glance reading; looking at the text and looking away and see what I comprehend. Eventually I was able to read whole sentences without reading each word or using a finger. I kept doing it so I could pass the reading comprehension tests in school. I got to the point where I could look at the page and flip it over and answer the questions. I wasn’t comprehending anything, I was just able to keep the entire image in my head and my brain gives me the answers. Kind of how it works for me know. I more absorb text than read it.

Re: The Programmer's Brain

#67
post #18

The most important skills i wish someone had taught me when i was a young developer was how to interact with people in all areas of the organization, and how to deal with the politics. I was (as a young person), strongly against really wanting to know about these aspects, and instead wanted to be purely technical, but in the end that will mean more for your career than anything else, unfortunately.

> but in the end that will mean more for your career than anything else, unfortunately.

I strongly disagree. In my organisation engineers have higher salaries than "people persons" like managers, product owners etc. Maybe it is something Eastern Europe (Romania) does better. In my country, people become managers when they don't know what to do in life, when they have not mastered any skill in 12 years of mandatory education + higher education. People who can't code at the end of the CS curriculum have three choices basically: HR, PMO or do a Master in a totally unrelated field to increase your employability. Do you really see yourself the "acting" leader, answering to phone calls all day like a secretary and asking people about the status of their tickets? I hope not. A "people person" is easily replaceable, a good engineer is not. When the financial crisis comes and the line is drawn, engineering skills remain. That is not to say that soft skills do not matter, quite the opposite, just don't make it a day job, you will become vulnerable.

Re: The Programmer's Brain

#69
post #18

The most important skills i wish someone had taught me when i was a young developer was how to interact with people in all areas of the organization, and how to deal with the politics. I was (as a young person), strongly against really wanting to know about these aspects, and instead wanted to be purely technical, but in the end that will mean more for your career than anything else, unfortunately.

Not sure i agree with this one. Plenty of places where purely technical people are appreciated, you just have to be willing to move around companies until you find a good fit. That is not to say that you won't interact with other people within the org but politics will be less relevant.

I think HN is a place that is quite focused on fast-growing tech companies and those are often (counter-intuitively perhaps) terrible places when it comes to workplace politics. This is because:

1. The fast growth creates demands for management and "senior dev" positions and since hiring is difficult these positions are often filled from within. This means that those positions will be filled with people who may not be ready for them yet, and who cannot properly control the politics that develop to compensate for that ("Oh person X is difficult? Just ask person Y instead, it'll be fine")

2. The fast advancements (with often come with large monetary rewards) also creates internal competition amongst employees on who will get to be promoted to the newly created position. This can seriously hamstring the company as teams of competing managers subtly sabotage each other.

3. Hiring from the outside is no panacea either, because this means that whoever felt they were "next in line" for a promotion is now faced with a newly minted superior who won't move away themselves in at least the next 18 months or so. This means that, if they want to progress in their career, they need to find another position either in another team within the company or at another company. The first option creates increased internal competition (see point 2), the second option creates increased turnover which costs money and causes loss of institutional knowledge.

4. Finally, just "being a tech company" can give the impression that workplace politics should be absent since "the tech is all that matters". This is untrue, devs are people too and ignoring interpersonal dynamics in favor of technology can be super problematic.

Re: The Programmer's Brain

#70

Earlier quoted context omitted.

That can't work well for anything non-trivial to read. Ever tried going through a math book like that? Did it work?

It does, but I will say that I had to learn how to block read math. So I couldn’t read until the 6th grade because of how bad my dyslexia is. I taught myself speed reading before I knew what it was (I called it block reading). I knew that my brain could recognize symbols and words without reading it so I took it to the extreme. I started glance reading; looking at the text and looking away and see what I comprehend.…

Very interesting. Sounds like how some machine-learning algorithms would work!
Post reply on HN