Tuesday, January 30, 2007

Observer Lecture

I could summarize today's lecture with one word: fast! I thought that it'd take longer when I prepared it. I hope that you all were with me the whole way and that you'd stop me if you weren't.

I REALLY liked the discussions we had about alternative designs. There are always many ways to approach a problem. Learning to visualize those alternatives and weigh their costs and benefits is a skill that distinguishes average engineers from great engineers, so I'm happy to have those discussions. When we take those side routes, do your best to stay with us and keep asking questions of me and your colleagues until you see the alternatives and the issues we are weighing.

One other comment about weighing choices. There is rarely a choice that is best in all situations, so the debate is normal. When your colleagues (or your professor) take the opposing position to yours, it doesn't mean you're wrong - it means we are looking at all of the alternatives. As the semester progresses, I expect many of you will have alternatives you'd like us to explore. Do that with an open mind and don't get defensive when the discussion heats up. In real life, those design debates are critical the resulting quality of the system. The more eyes on the issues, the better the result will be.

Similarly, I've had a number of people ask: why don't we do this with a different language or with a different tool set. The principles we are studying hold for all object oriented (and most top down) design situations. We're using Java and Eclipse because they are tools I'm sure you all know so we can focus on design, not syntax details. I have never said that Java is the best language for all situations and, in fact, I choose to use other languages for some situations. There is no "best" language; focus on the principles and use them with whatever language you choose.

No comments: