I’m working on a syllabus for an extensive course on web architecture. This will be for experienced programmers looking to become architects.
Like all of my work about architecture, this covers technology, business, and strategic aspects, so there’s an emphasis on creating high-velocity, competitive organizations.
In general, I’m aiming for a mark that’s just behind the bleeding edge. So, I’m including several of the NoSQL persistence technologies, for example, but not including Erjang because it’s too early. (Or is that “erl-y”? )
(What I’d really love to do is make a screencast series out of all of these. I’m daunted, though. There’s a lot of ground to cover here!)
EDIT: Added function and OO styles of programming. (Thanks @deanwampler.) Added JRuby/Java under languages. (Thanks @glv.)
I’m interested in hearing your feedback. What would you add? Remove?
-
Methods and Processes
- Systems Thinking/Learning Organization
- High Velocity Organizations
- Safety Culture
- Error-Inducing Systems (“Normal Accidents”)
- Points of Leverage
- Fundamental Dynamics: Iteration, Variation, Selection, Feedback, Constraint
- 5D architecture
- Failures of Intuition
- ToC
- Critical Chain
- Lean Software Development
- Real Options
- Strategic Navigation
- OODA
- Tempo, Adaptation
- XP
- Scrum
- Lean
- Kanban
- TDD
-
Architecture Styles
- REST / ROA
- SOA
- Pipes & Filters
- Actors
- App-server centric
- Event-Driven Architecture
-
Web Foundations
- The “architecture” of the web
- HTTP 1.0 & 1.1
- Browser fetch behaviors
- HTTP Intermediaries
-
The Nature of the Web
- Crowdsourcing
- Folksonomy
- Mashups/APIs/Linked Open Data
-
Testing
- TDD
- Unit testing
- BDD/Spec testing
- ScalaCheck
- Selenium
-
Persistence
- Redis
- CouchDB
- Neo4J
- eXist
- “Web-shaped” persistence
-
Technical architecture
- 8 Fallacies of Distributed Computing
- CAP Theorem
- Scalability
- Reliability
- Performance
- Latency
- Capacity
- Decoupling
- Safety
-
Languages and Frameworks
- Spring
- Groovy/Grails
- Scala
- Lift
- Clojure
- Compojure
- JRuby
- Rails
- OSGi
-
Design
- Code Smells
- Object Thinking
- Object Design
- Functional Thinking
- API Design
- Design for Operations
- Information Hiding
- Recognizing Coupling
-
Deployment
- Physical
- Virtual
- Multisite
- Cloud (AWS)
- Chef
- Puppet
- Capistrano
-
Build and Version Control
- Git
- Ant
- Maven
- Leiningen
- Private repos
- Collaboration across projects