I started out with the idea of writing an acticle on Software Engineering and Architecture prerequisites.
However, that is too large a topic and I don't feel qualified to give a definitive set. Instead, here are
the concepts/theory that I consider important:
Software Engineering and Architecture has, in my opinion, the following prerequisite's:
Software Engineering and Architecture
- UML - Unified Modeling Language
- RUP - Rational Unified Process
- XP - eXtreme Programming
- OOP - Object Oriented Programming
- Functional Programming (misunderstood)
- Design Patterns - Gang Of Four
- CMM - Capability Maturity Model - A pragmatic approach to chart an organization's development ability in terms of its stability/ability to reproduce success/maturity/development process. Most of the world sits at CMM-0, while Microsoft/IBM sit at CMM-4, and god sits at CMM-5.
- SOA - Service Oriented Architecture - The impact of web services, and automated services across organisational boundaries.
- AOP - Aspect Oriented Programming - I don't know of a short, or cute way of explaining this -- which is a good cute to say that I do not understand it
- Refactoring - To rework an existing chunk of code/design/architecture, in such a way as to increase it's elegance/speed/quality without increasing its functionality.
- TDD - Test Driven Development

- Agile Development - SCRUMM

In the past I have used this list as a basis for interviews.
Pragmatics
- Bi-Polar development world (Open Source & Java Soup vs. Microsoft Stack vs. The Old Stuff)
Concepts: "Tao or Philosophy of Software Engineering"
- Concept: Software Economics (Lack of Scarcity, Quality-Performance-Price triangle)
- Physical Law: Heisenberg's Uncertainty Principal
- Physical Law: 2nd Law of Thermodynamic
- Maths: Godels Proof: Deterministic World Flaw (Proof?)
- Physics: Occams Razor
- Concept: Emergence
- Maths: Chaos Theory and Emergence, as applied to Software Engineering
- Concept: Quality before Performance
- Science: Scientific Method, as applied to Software Engineering
I plan to return to these themes over time, and expand or explain the theme's theory and my
personal philosophy of (Software Engineering, Software Architecture, hacking, etc ).