Sunday, August 31, 2008

A Matter of Change

We have seen during the first lecture, in the context of the strategy design pattern, that it was useful to isolate the part that was changing. In this way, we were able to change the behavior of an object by changing the algorithm without being able to redesign our application. Design Patterns are solutions to recurring problems that encapsulates concepts that varies giving you the possibility to adapt to changes without being necessary to redesign. For a list of the design aspects that design patterns let you vary please consult the GOF book on page 30.

Change should be part of the design but it should not stop at this level. Responding to change should be also part of the development process. Any agile software development methods welcome changing requirements even late in the development. Change is harnessed for the customer’s competitive advantage. The question is how to accommodate changes when designing new products and services? It might eventually require a new way of thinking and working.
The following book will give you some answers about how to incorporate change in the product design and reacting to the volatility of the market and customers expectation. The title of the book is "Subject To Change: Creating Great Products & Services for an Uncertain World: Adaptive Path on Design " written by Peter Merholz, Todd Wilkens, Brandon Schauer and David Verba from a small design consultancy company called Adaptive Path.

If you don’t have access to the book you can watch the following video presentation given by the of the authors to the Google employers.



Don't forget that sooner or later you will end up in the situation in which you need to sell the software that you are creating. I would specially recommend reading the book and watching the video for those of you that intend to start a company after your studies.

Saturday, August 23, 2008

A New Beginning

Since you are reading this, I assume that you are student and now you are just wondering what you have done by enrolling in a Design Patterns Course. Maybe you don’t realize that but you have just embarked on an educational journey in which I hope you will learn something about the beauty of computer science and more than everything you will realize that your career choice of becoming a software engineer it was the right one. Since you are taking this course this is a clear indication to me that you love and like programming. However now it is the time to move far beyond coding and see the big picture. It is time to grow up; it is time to be a real software engineer, a software engineer that will be desired by the most of the employers.

Give me your time and I promise that I will give you the funniest computer course that you had so far at the university. There will be several unusual teaching experiments in this course. You will surely notice them. Some of it will maybe look strange to you. Probably this blog introduction is looking already strange enough. Well this is just the beginning. More strange things and more surprises are lurking in this course. You will notice them while attending the lectures, seminars and laboratories.

Our investigation during this course will yield general principles that have specific design consequences, governing the analysis and the programming tasks. These principles will help us to identify and to explain design excellence, why some design solutions are better than others and what makes them to be used again and again. To work with design patterns is to work at the intersection of computer science, architecture, cognitive science and, not in the last place, art. Insights into the art of computer programming are to be gained, I believe, from theories of what makes excellence in these areas of human cognition.

The capability of thinking out of the box is very important for a becoming software engineer and therefore I would like to ask to treat this course as a course in imagination and creativity. The most creative solutions arise when we are abandoning our preconceptions and trying out totally new things and making unusual associations. Personally, I will do that. I will try to leave my preconceptions home and try new things during this course. I would expect that you will do the same or at least give it a try. Don’t let be intimidated by the word "pattern". It is nothing that will constrain your imagination and creativity.

I’m looking forward to our first lecture on Tuesday and now let’s embark for a one term journey in the art of programming and design.