The Lounge is rated Safe For Work. If you're about to post something inappropriate for a shared office environment, then don't post it. No ads, no abuse, and no programming questions. Trolling, (political, climate, religious or whatever) will result in your account being removed.
Because in my current job, starting in 2013, I've been gradually downgraded from a cube with 5'6" walls, drawers, and lockable shelves, to a triangular desk area with 8" dividers, to a rolling table 5'6" by 3'. My books are currently stacked almost 3' high on one corner of the table to create some semblance of a visual blind. Big over the ear head phones help with the auditory distractions.
It's "collaborative" space.
I bet the idiots who designed this format don't have to use it.
I managed to get moved to the hardware lab. It took an extensive testing of a very noisy electrical motor (it had to be controlled by the software and I'm the hardware communication man in the company since apparently I'm the only one who does it reliably) which had seemingly random errors after thousands of runs.
*GROOOOOAN* *CHUNK!* *GROOOAAAN* *CLANG!* for weeks 8 hours/day and suddenly my request to be moved got approved. After 5 years I was asking.
It had programmable firmware (via logical blocks on the programming interface) running in parallel with commands from the outside. The OS that run the firmware had race conditions with the commands received and the input so after thousands of tests the only solution was to scrap the firmware entirely and controlling the unit completely from RS232 (9600 baud, eternal) including safety stops and level photocells. [Note: safety not towards humans but towards other components of the machine, safety towards humans was managed the hard electrical way]
Also it had an encoder... on paper. Actually it counted the clock cycles the enable was "1" so if the STOP_PHOTOCELL was ignored (it happened because of the aforementioned race conditions and the fact that the photocell emitted a pulse when active and then returned to idle state) and the engine arrived to the hard stop, that is a 10kg steel block) the so called "encoder" kept counting in the direction of the movement forever and kept pushing or pulling the load against the physical block.
Funny, I always start with Google search, but almost 99% end up in StackOverFlow. May be I should just go there directly. Perhaps because Chrome let user search by typing query directly at the URL bar.
I certainly grew up BG. Furthermore, friends label me as a squirrel, stuffing away nuts everywhere.
Then: I am surprised myself how often I go down in the bookshelves in the basement to dig up some information - quite often because I have mentioned some mechanism or algorithm or architecture or tool to a younger colleague, one that was developed and used long BG, and little information is available on the Internet.
Today, I am using Google heavily, but it certainly is best suited for reference information, stuff that you more or less know in advance but need the API details etc. You don't learn the philosophy of a paradigm by googling, not even architectural concepts. You find no wisdom in Google, only facts.
So I still buy books, to more easily "see the big picture". But, just like others are dissatisfied with online tutorials, the art of writing good textbooks is also deteriorating. I frequently wish I had an electronic, editable version of the book I am reading so I could remove all that chitchat that expands 200 pages of useful info into an 700 page monster. Remove all the references to how it is done in this and that old system (which I never used), comparing it to how it is in this system. Adding a few explanations about why you would use this and that mechanism, and for what.
I am really dissatisfied with most modern textbooks: They are extremely wordy, poorly organized and not very good at giving you "the big picture". Yet, for subject I do not know at all, but need to learn thoroughly, they are still a lot better than a google hit count of 2.3 million, where you still miss out a lot of good references because you are so new to the subject that you do not know which are good search terms.
One specific problem: Those who have recently learned a new technology well enough to write a book, too often write as if the reader has lots of experience with older technologies. E.g. you buy a book to learn WPF, and the athor makes hundreds of references back to Windows Forms, essentially describing the differences, not giving an independent description of WPF as it appears to a reader who never worked with Windows Forms.
Or, athors who have been deep down in the inner workings of the lower layers, assuming that every reader has a comparable background. Like explaing the semantics of C# mechanisms by referring to the CIL constructs generated by the compiler. I did not know CIL details until I "had to", to understand this author's explanations, but I have seen several similar intermediate languages, so to me, it was OK. But a reader who has never been inside a compiler, I guess this would be a barrier.
Hmm. I may be a crotchety old fart here, but I still keep my books. My active library here at work includes the following titles:
The C Programming Language by Kernighan and Ritchie The C++ Programming Language 3rd edition by Stroustrup Pro C# 2008 and the .NET 3.5 Platform by Troelsen Pro WPF in C# 2008 by MacDonald Encyclopedia of Graphics File Formats by Murray and VanRyper Internetworking with TCP/IP, volumes I, II, and III by Comer and Stevens The Bar Code Book 3rd edition by Palmer
plus a collection of the O'Reilly pocket guides/references. I keep these books because some of the them are out of print or current editions have omitted information I still need. In all cases I still use them. For example, I recently spent a couple of months with Internetworking with TCP/IP volume I open on my desk while I was debugging the TCP/IP 'stack' in a piece of embedded software.
Besides, the monasteries will need paper books after the Singularity and the monoAI has taken all programming information into itself.
When i was in tech support i learned from a guy who was about to retire. I used to ask him how they did the job before google, but he'd always shut me down with an angry "Hey!" like he didn't want to talk about it.
My 10c worth: We expected to, and were expected to, know not only what to do, but why to do it exactly that way. Or stated differently: We knew the inner workings of the mechanisms we used. Always make sure that you are familiar with the layer immediately below the one you are working on! (You can't go all the way down to the transistors, but go at least one level down!)
Of course that required resources and efforts (and use of books with thorough explanations), but it paid back: We made much more "good" and "correct" use of the mechanisms offered.
Younger colleagues are usually very good at telling me that "the second parameter should be 4". So what does that 4 mean? Why not 3 or 5? No idea, but that's what is used in this code snippet I found when googling, and it works with 4, not with 3 or 5! ... I am never satisfied with that kind of "coding by trial and error", but I see a lot of it around me. If it works, don't ask how it works! When my younger, "helping" colleague has left, I start searching for explanation of that second parameter - if necessary, I buy a book.
This is of course not a real example. Real examples would be like how OO languages have implemented abstract classes, multiple inheritance etc. How interrupts work. Locking mechanisms. Switch statements...
When you know the inner workings, by heart, to a much larger degree you need not google up that code snippet to tell you "for some reason it works with 4". You would know why 4 is the right value.
About 25 years ago, I participated in an EU project focusing on "Just In Time learning": If information can be fetched when you need it, you need not spend time learning it. We can save lots of resources spent on educating people that way. People may be deaf and dumb if we can give them what they need when they need it, more or less as list of detailed instructions. ... Obviously, the EU project didn't say that they wanted people to be deaf and dumb, but that is what I saw in their philosophy. (So why was I in that project??) That project never made a great success, but Google more or less provides information in the way that the EU project was talking about.
Pick up some information about Bloom's model of learning (usually referred to as "the Bloom Taxonomy"), structured in levels from plain repetition up to critical assessment. Information you fetch through google doesn't go very high on the Bloom ladder: You see information reproduced and rephrased, but even the level of comprehending it is poorly supported by google. You can see small elements of application of knowledge (like code snippets showing that it works if the second parameter set to 4), but that doesn't count as "applying knowledge" when there is no comprehension. Forget about the analysis, synthesis and assessment levels; you could in principle find elements of it by googling, but that's not how people google.
(You might find some on the Internet, such as the TED talks and publicly available university lectures, but that is something else than googling!)
So I am a little worried. My generation considers an "expert" to be someone who master even the highest Bloom levels of his field. The Google generation are experts at the two lower levels, and they handle the third level reasonably well. ... Of course: University graduates fare reasonably well at level 4 and 5, at least in subjects they treated as students. But for new subjects, I see them revert to level 3. We did not, because we didn't have google, so the only way to do level 3, applying, was to get a textbook that also gave us strong elements of the analysis and synthesis levels, maybe even assessment.
I'll use WPF as an example of why 4" thick programming books can still be useful. I bought and read one when first learning WPF to get an understanding of all of the features. However, while coding it's quicker to find a snippet online than it is to look it up in the huge tome. If I hadn't read the book, I wouldn't know what to Google!