Programming on Purpose - Essays on Software Design, by P.J Plauger
HN user
gashaw
This is probably the best (and most effortul) way to aquire the knowledge initialy. I did it a lot back in school, then few months upto a year later I would forget most of the material all the same.
I'm already rereading the most valuable books and it does help to retain their knowledge. I guess doing spaced repetition every x time would help even more. I feel that rereading and to a larger extent spaced repetition are very wasteful.
I am. About 70% are technical books related to my job (SWE) and the rest are combination of textbooks and popular science in fields that I find very interesting.
If for some reason I lose interest in a book then I just stop reading it and don't mind if I don't remember anything from it.
Of course you are.
Exactly.
How can you prove something about yourself before first proving your existence?
I know it sounds outlandish but it does point the gap in your proof.
I think consciousness is one of those things that is not defined well enough for us to understand it. Until there is a breakthrough in the understanding of consciousness itself there won't be any real conscious ai.
It's like when we learned to fly, we needn't understand how birds' wings work. We had to understand the principles of aerodynamics or what is flying itself.
That's why I think imitating the brain won't work, (deep learning etc.) just like the early attempts to fly didn't, even if we'll know the function of every single neuron.
You can't prove even that. If you examine it closely, the argumnent only proves that "it" thinks. "It" is not necessarily an "I", for what restricts the thinking to an I (i.e a part of reality)? It could be the whole reality that does the thinking as far as the argument goes.
Sorry.
I used it few times, it's as good as the others. I don't think there ever will be a silver bullet, what works for some companies won't work for others. The real issues are people issues.
Release it! by Michael Nygard has lots of good info on design issues related to production systems and operations/devops of such systems.
I highly recommend "The Secrets of Consulting" by Gerald Weinberg.
On the project and management level read Rapid Development by Steve McConnell. On the detailed technical level read Code Complete by same author.
Then read some blog posts on agile, scrum and kanban only to get familiar with the jargon.
Don't you mind having 5000+ LOC model? Methods being redefined because the class is huge and the developer didn't notice the existing method?
Direct your learning by what you need for your work. You can watch videos on the frameworks and tools you're using, read blog posts on issues you might have etc.
After you have some more experience (and confidence) start reading books. Your first one should be Code Complete 2.
Ruby is great, Rails is good enough.
The main issue with Rails (it's the same with other frameworks) is that it discourages from doing proper design. The only design decision you make is where to put a piece of code, which is ridiculous ("Fat models, skinny controllers" is a bad design heuristic.)
Following Rails conventions works for small (simple) applications, but over time you arrive at a point where no one understands the whole thing. At this point someone suggests moving to microservices, and all hell breaks loose.
Prepare a few questions for each trait you care about and then ask all candidates the same (or sample of) questions.
Grade the candidate on each trait based on how well they answered the related questions and pick the best one.
Because you know the questions you can prepare and not be intimidated to ask someone more senior.
For instance:
How to design an app that feeds from two radically different apis? (no need for detailed code)
What perfomance practices they used in library/framework/their own code and why?
What test cases they would write for (a simple) given spec?
Ask them about instances were they mentored/helped/coached teammates.
Good luck.
Growing Object Oriented Software Guided by Tests. So far I didn't learn anything from it, and it's hard to read more than ~10 pages without falling a sleep.
Next on my list are Software Architecture in Practice and Programming Pearls.
What about cases where "good enough" is not enough? code that handles money comes to mind.
Meditations by Marcus Aurelius, A Guide to Rational Living by Albert Ellis, Feeling Good by David Burns - changed the way I see and cope with things and people that used to "cause" me lots of stress in the past.
Behave by Robert Sapolsky, The Social Animal by Elliot Aronson, Thinking Fast & Slow by Daniel Kahneman - we are animals shaped by evolution. The human brain isn't perfect and makes lots of silly mistakes. I learned not to belive everything I think.
I read the first one, "essays on software design".
Programming on Purpose - best book I read on software design so far.
Behave: the biology of humans at our best and worst - explaing human behavior from many points of view, well written and mind blowing.