Session:Education--Discussions
From WICSA Conference Wiki
Please use this page to capture ideas, thoughts, reactions, opinions and so on about the content of this working session.
Contents
|
Key ideas
(key ideas, how papers relate to each other and support the session theme)
- key idea 1
Discussion questions
It would be of interest to extend the discussion to more than just university curricula. A few interesting extensions include:
- How can the curricula that exists be extending/modified to better fit the professional community?
- Are there alternative delivery channels that could make university courses more viable for practicing architects?
- If "architecting" is a combination of strategy, technology, leadership and consulting, can an interdispline approach be adopted that adequately covers the broad challenges that an architect faces?
Pre-session Discussions
In industry, there has traditionally been a focus on developing designers with in-depth knowledge in a particular technology. These are then called e.g. "J2EE architects". We recently did a small survey in our company, asking managers to name the architects in their teams. Over 90% of the staff listed in the response were such technology-dependent "architects". As complexity and size of software projects grows, there is a growing awareness in industry of the need for more technology-independent architects. This requires development of two distinct skill-sets: 1) technology-independent architecting techniques and 2) leadership skills. I think there is an excellent case for cooperation between industry and academia for developing such skills; industry can deliver plenty of real-life-size cases. --Eltjo 15:19, 6 November 2005 (EST)
Here is a link to Architect Competency Framework by Dana Bredemeyer http://www.bredemeyer.com/pdf_files/ArchitectCompetencyFramework.PDF. The framework combines technical skills with non-tehcnical competencies such as leadership, strategy, politics, etc. I found it to be very useful in mentoring pricticing architects. --Art.akerman
Session Minutes
Initial Discussion Questions
- Challenge to show complexity
- Getting the right students into courses
- Lack tools and examples for showing architectural styles
- How to make a stand-alone course (sufficiently interesting)
- In scope
- Practical aspects
- How can you design a curriculum that provides a good flow to position software architecture
- How to effectively cover programming in the large
- What are appropriate formats for teaching this material (Should you learn architecture in a class or is it experience)
- Courses?
- Several integrated courses?
- Something else?
- Is problem-based learning appropriate for teaching
- Bring students from multiple courses to serve different roles
- Formal training for practicing architects
- What should a practicing architect know
- What should someone do to get this knowledge to architects
- Is formal education really what's needed?
- How do you select the appropriate material for the kind of students
- What are the extra technical skills (People, leadership, advisory, etc.) and how do you get them?
- How do you solve the current crisis
- 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
- If I only have one software engineering course, which parts of software architecture are most important
- How to be lead by an architect
- How to understand and appreciate the role of an architect
Key Issues
- How to make an architecture course realistic (How large should the examples be?)
- The place and fit of an SA course in the curriculum (one course, set of courses, etc?)
- How to grow architects beyond universities?
- How to teach extra competencies (leadership, management, politics, etc.)
General Session Notes
- Do you need a large system to teach software architecture?
- It needs to be large enough to demonstrate why you need a high level of abstraction
- What is the objective of a software architecture course?
- Be employable now and continue to learn as the field changes
- Be aware of the role of architecture and architects
- Everyone needs to understand architecture because it's part of a larger system
- If the maintainer is aware of the architecture and its importance, will it be less likely to deteriorate?
- Developers must be capable of understanding an architecture
Extra technical skills required by architects
- Can't just teach technology because technology changes
- Teach "attitudes" principles?
- "technical attitude" of abstraction, hiding, etc
- "extra-technical attitudes: leadership, communication, coaching, etc
- Can use examples to introduce some of the real-world issues (e.g. Harvard Business Review article)
- Can analyze what makes people successful (Architect competency framework)
- Inspire people by example rather than dictating
Architecture Examples
- Tangible examples needed but time is limited
- Separate project course
- Students may disregard "the book" and just implement a solution
- Standard examples exist in other fields
- If we could find standard examples (perhaps a book), here's the example, here's the design. Open source projects? This can help save time because students already understand the problem.
- There is danger in showing only a small number of examples.
- Example: project course with real corporate customers, large enough that it requires several students. Students need to have a common understanding. Phase I, prototype. Phase II, another group continues the design/implementation -- learn by good and bad examples. (40 hours/week, 20 weeks)
- Reverse engineer Linux to determine its architecture
- Handbooks/Libraries
- Can be helpful by providing both good and bad examples, and also which solutions work for which problem. The examples should be critiqued.
- Companies can send in their favorite architecture
Are complex artifacts required?
- What is the goal?
- Have students realize that the answer depends on the circumstances
- Tie the theory to practice. Focus on what the market needs.
Audiences
- One course for software engineers
- Majors
- Professionals
Key Issues
- How to make an architecture course realistic (How large should the examples be?)
- The place and fit of an SA course in the curriculum (one course, set of courses, etc?)
- How to grow architects beyond universities?
- How to teach extra competencies (leadership, management, politics, etc.)
How to Grow Architects Beyond Universities
- Use the matrix for curriculum
- Immersion, seminars, courses, non-critical industry projects performed by students
- Apprenticeship program
- Need to create incentive for both participants
- Students can work side-by-side with a practicing architect (Internship)
- How to avoid photocopying work
- Coop programs, possibly with government support (e.g. NSF)
- Long-running course projects with industry collaboration
- Certification
- Architects could use the matrix to plan their career development
- Involvement of senior people in industry collaborations
- Motivate management to support further education for senior industry people
- Difficult to combine industry work with education
- Professional Doctorate
Remaining Issues to Consider
- Normalization
- Categorizing the topics list
- Be specific about what the numbers in the table mean. (Bloom Scale)
- What are the most important competencies of an architect?
Conceptual Content Matrix Prototype
| Topic | CS Undergrad | New Programmer | New Architect |
| Basic Software Engineering Skills | | | |
| People Skills | | | |
| Business Skills | | | |
| Architecture Techniques | | | |
| Requirements Engineering | | | |
| Software Project Management | | | |
| Programming | | | |
| Platform Technology | | | |
| Systems Engineering | | | |
| Architecture Documentation | | | |
| Reuse and integration | | | |
| Domain Knowledge | | | |
| Mentoring | | | |
Matrix Discussion
The values in this table are to be interpreted according to Bloom's Taxonomy at [1]
- Could use the values on the page 1 in the matrix
Bloom's taxonomy include three learning types; Attitude, Knowledge, and Skills. For each type there is a progression scale. The scale used for the matrix above is the Knowledge scale, even though I believe that the group discussed all types during the sessions. A suggestion for future work would be to present three matrices. J Andersson
Just trying to clarify the column titles. The matrix was mentioned having two purposes: guiding the building of a curriculum including software architecture (possibly only in one course) and helping (to be) architects in their career planning.
- CS undergraduate = someone with BSc degree in CS
- New programmer = someone with MSc (?) in CS
- New architect = someone with MSc in SE with software architecture focus OR in addition to that some industrial experience
Should we then also have an Architect, or even Chief / Senior Architect, as one column to indicate what ultimately are the skills of an experienced architect. The university curricula could be planned based on the three first colums and the last would be more relevant to architecture career planning.
Conceptual Content Matrix Prototype
- Topics, Depth of understanding, different sheets for the above categories (Stage of career), checklist.
- Example: "Code Complete"
- See Bloom taxonomy
- Carrer Stage
- CS Undergraduate
- New Programmers
- New architects
- Topic Area
- Basic Software Engineering Skills (Programming, decomposition, version control, ...)
- People skills: Leadership, teamwork, communication, negotiation, accepting direction, mentoring, consulting...
- Business
- Architecture Techniques (Large-scale synthesis, ... )
- Complexity Management (Abstraction, Decomposition, ...)
- Synthesis
- Analysis (Patterns, ...)
- Evaluation
- Requirements Engineering
- Software Project Management (Deployment, Process, Estimation, ...)
- Programming
- Platform Technology (Databases, networks, embedded, enterprise, integration tools)
- Systems Engineering
- Documentation of Software Architecture
- Reuse and integration
- Domain Knowledge
- Mentoring
Attendees
Note: This was transcribed from handwriting, please correct the spelling of your name or affiliation if necessary.
Mary Shaw, Carnegie Mellon University
Hans van Vliet, Vrije Universiteit, Amsterdam
Tomi Männistö, Helsinki University of Technology
Ivica Crnkovic, Malardalen University, Sweden
Judith Stafford, Tufs University
Regis Fleurquin, South Brittany University, France
Wahab Hamou-Lhaoj, University of Ottawa
Anton Jansen, University of Groningen
Joao Sousa, Carnegie Mellon University
Art Akerman, Capital One
Jesper Andersson, Vaxjo University, Sweden
Eltjo Poort, LogicaCMG, Netherlands
Adilson Marques da Cunha, Brazilian Aeronautical Institute of Technology
Wesley Coelho, University of British Columbia
Laurens Blankers, Eindhoven University of Technology
