Talk:Session:Education--Discussions
From WICSA Conference Wiki
============== Jason Smith =============
I'm disappointed that I was unable to attend this session - it looks like it went exceedingly well.
One question I would put to the group is: "When is it appropriate to start teaching design?" I ask this because many in industry and academia tend to treat teaching software engineering as distinct stages.
Generally a student will learn simple programming, then more complex programming. Only after a certain level of complexity is reached do most educators even attempt to teach design issues - the only problem is, the students have already been trained to think in a particular way: focus on the local level. Design is, if not an afterthought, then seen as a 'higher-level' of programming.
While this is generally true, at UNC we've been investigating teaching programming and design concurrently, by demonstrating to the students that every relationship in code is a design decision, using the Elemental Design Patterns Catalog as a teaching tool. The EDPs are extremely low-level and concentrate on the very simple concepts that a new programmer will encounter during the task of learning programming in general. The shift in thinking makes them consider even small projects as an interconnected web of simple concepts, each of which has its own constraints, tradeoffs, appropriate use, and related solutions... the same thought processes that a software or systems architect has to use. They're just learning them in a much smaller sandbox.
We haven't had the experience with tracking students through their academic or industry careers to map the long-term effects of this, but anecdotally, these students have a much easier time absorbing the standard design patterns literature concepts than their counterparts that have been taught more 'traditionally'. This indicates to us that they are learning to be designers and nascent architects from the very beginning, and scaling up their abilities in tandem with their experience. There doesn't seem to be the conceptual disconnect when the level of abstraction increases that happens with the more usual education approaches. This may go a long way towards meeting some of the stated goals of the WG:
- Everyone needs to understand architecture because it's part of a larger system
- Developers must be capable of understanding an architecture
- Have students realize that the answer depends on the circumstances
In addition, it also seems to address some of the concerns brought up surrounding the teaching of highly abstract concepts by starting the students from Day 1 in a more limited environment, but giving them the proper thought processes to carry them forward:
- Challenge to show complexity
- Are complex artifacts required?
- How can you design a curriculum that provides a good flow to position software architecture
- How to effectively cover programming in the large
- How do you select the appropriate material for the kind of student
- How do we find examples that motivate students and select material that will inform them of what they need to know to become software architects
Of course, being an architect has many facets other than the design of the system, and this is only one, but it is the one that I can speak to. Jason Smith
============== Joao Sousa =============
I attended this session, and I would like to reiterate my challenge to the general feeling that architectural knowledge is mostly reserved to senior people who take major technical decisions.
I believe there are big advantages in extending operational competence of SA to junior people. Specifically that competence (Bloom's "Application" level) would enable them to:
- Understand and propagate the decisions of senior architects into the implementation – maintaining architectural integrity in the implementations is a very serious problem today.
- Take advantage of modeling and verification tools at the level of their work (detailed design and implementation) which is not normally reached by senior architects.
There seems to exist an opportunity/challenge to give a role to SA in undergrad curricula that we, as a community, should not overlook. Joao Sousa
