Hacker News new | ask | show | jobs
by eru 4534 days ago
What's the point of learning UML and Design Patterns? (Especially, if you can't program?)

What were students supposed to be able to accomplish that they couldn't do before?

1 comments

> What's the point of learning UML and Design Patterns? (Especially, if you can't program?)

It was for the BIS program (http://www.rmit.edu.au/programs/bp138). You can get an idea of the program for graduates.

I look at coding as a way of programming but not all programming needs to be done by writing code. There are other ways to program a computing device: a.k.a alter the behavior of a program.

> What were students supposed to be able to accomplish that they couldn't do before?

I don't recall the ILO's (Intended Learning Outcomes) of the class but I do recall one was being able to apply Design Patterns in their analysis and design.

I'm not saying I agree with people designing software systems without also having an ability to code but I do think people can think critically about solving problems using tools like UML without having to code out the solution.

Thanks for taking my somewhat flippant questions seriously. Thinking about design seems useful.

Learning about the `classic' design patterns seems silly. They are basically workarounds for shortcomings of OOP. And if one can not program, one does not need to know about workarounds.

Did you include a study of the Mythical Man Month?

Design patterns are just that: common patterns that we see occurring within our designs. Just in case you don't know about it, the usage of Design Patterns within computer science were influenced by Christopher Alexander (http://en.wikipedia.org/wiki/Christopher_Alexander). See http://en.wikipedia.org/wiki/A_Pattern_Language.

Design patterns exist within all programming methodologies including functional programming, structured programming, etc. In some cases, the pattern is incorporated within the methodology, some within a specific language, some are incorporated within the framework and others are used at the domain level.

Just because a design pattern has become so ubiquitous we don't even know we are using it doesn't mean the pattern does not exist. The iterator pattern has been weaved into languages for both functional and object oriented programming. Java has implemented it at the framework level. Maybe it should not have been done there.

In all cases, this really has nothing to do with shortcoming of OOP (or any programming methodology for that matter). It has to do with allowing us to recognize common patterns of design within software.

> Did you include a study of the Mythical Man Month?

Yes. But not in the above described BIS class. It was in another class in the CIS program.

Oh, yes, lower-case design patterns are fine. I was just frustrated with the Design Patterns (in capitals) movement.

By the way, mutable state is also a design pattern. But it's sort-of invisible in Java.