How to Design Programs (2023)
htdp.orgThis has been submitted many times before. Most substantial discussion is on these submissions.
* https://news.ycombinator.com/item?id=35784167
* https://news.ycombinator.com/item?id=35478871
After more than 30 years of professional software engineering experience, I have to say that the software model described by this document is applicable and/or useful to only an extremely narrow subset of software in general. I would not recommend taking this advice too seriously.
This is a textbook for the introductory programming course, the first programming experience for many students. Maybe it would be better titled, "How to solve the programming exercises in an introductory course"
I see a lot of value in this. It gives a step-by-step method that students can follow, which often works. The prevailing alternative seems to be, "Look at a lot of examples, pick one that looks similar to the exercise, and change it around by trial and error until it kind of works." This does not generalize to professional level programming either.
At this initial stage, the goal is to build the students' confidence that if they work systematically, they can solve problems. As their education and experience continue, they can take on more realistic problems and methods.
Which narrow subset in particular, and why do you say that?
What would you recomend to someone starting at this area?
John Ousterhout's "A philosophy of software design" and Fred Brook's "The design of design"
Any other resources you recommend?
John Ousterhout's "A Philosophy of Software Design". But this does prompt the question: If these two books about software/program design are so different then which is correct and why is there such a gap? In my experience (like kiitos above) I don't see much scope for HtDP for most industry programming and I have worked in few different domains.
How would a working Software Professional find the time to read a whole book like this?
If there is any profession that is built on the assumption that its practitioners constantly put aside time to stay up to date it is every profession that is even remotly connected to engineering.
Maybe many software devs don't view themselves as engineers, but engineers can be held liable if their work doesn't live up to the current technological standards.
I would say, regardless of what you do, sometimes you have to take some time for introspection, unless you plan to live with the consequences of not doing it. And reading books is part of that.
If your employer is smart they consider that. If you are smart you also consider that.
Option 1: Have a good employer, who values learning and having highly qualified developers.
Option 2: In lack of option 1, I am afraid one will have to spend ones free time on it.
Option 3: Take a "sabattical" or whatever it is called.
Option 4: Quit job and find an option 1 employer.
Easy: Stop reading HN until you finish the book.
If you really care about learning, carve out time from your daily routine and progress little by little in chunks.
8 hours free assumming you work 1/3 and sleep the other.
*smallprint: Assuming that no eating or other recreational activity is required. Also faint echoes of "sleep a little faster" motivational speech
Well, one can also get through a book by reading a quarter of an hour a day.
How about non-coding-related hobbies, not to mention a family...?