Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Not sure it says a lot about 'architecture', but in terms of 'design', Daniel Jackson's "Rethinking Software Design" has been an absolute eye-opener: https://www.youtube.com/watch?v=cNe6g0qczxE

The premise of the talk is that while software engineering goals & processes are well-defined and well-understood, the same does not apply for software design. He sets up a framework of 'purposes' and 'concepts', which in an ideal design should be a 1:1 mapping. He points out many examples of 'design smells', where this 1:1 mapping is violated, for whatever reason (engineering reasons, product management failures, etc.)

Definitely useful not just to developers, but anyone involved in writing software/affected by the process of writing software.



I am a big fan of Daniel Jackson's approach to teaching programming, and really like his courses, in particular the mindblowing "Elements of Software Construction" [1], which is, by a mile, the best programming course I have come across, and which I believe is sadly underrated; I know there are more recent versions of this course, by a different professor, that use the more popular (at least in this forum) Python instead of Java, but IMHO with all due respect, they are a bit dumbed down and I believe that you won't get the same out of them. It is not really a Java course, it has improved my programming (and, very specially, design) in general, in any language. It completely changed the way I look at design patterns, for instance; it made me really understand functional programming and state machines; what OO really is about; how to choose a software paradigm for a given problem; and now I use JSP stream processing to model many programs (nothing to do with java JSP, it was created by his dad in the 70s, "the other Michael Jackson").

To really appreciate how much thought went into the design of this course, I recommend reading "A New Approach to Teaching Programming" [2]

As for the Concepts and Purposes you refer to, there is more on this in [3] [4] [5] in the MIT 6.170

[1] https://ocw.mit.edu/courses/electrical-engineering-and-compu...

[2] http://people.csail.mit.edu/dnj/articles/teaching-6005.pdf

[3] https://stellar.mit.edu/S/course/6/fa16/6.170/courseMaterial...

[4] https://stellar.mit.edu/S/course/6/fa16/6.170/courseMaterial...

[5] https://stellar.mit.edu/S/course/6/fa16/6.170/courseMaterial...




Consider applying for YC's Summer 2026 batch! Applications are open till May 4

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: