This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
todo [2014/11/13 21:16] djo [Agile] |
todo [2017/07/11 22:26] djo |
||
---|---|---|---|
Line 2: | Line 2: | ||
Articles to write; things to consider doing. | Articles to write; things to consider doing. | ||
+ | |||
+ | ===== Why Clojure / Learning Clojure ===== | ||
+ | |||
+ | - Clojure isn't about FP, but: | ||
+ | * Data fundamentally takes a few core shapes and programs generically manipulate those few core shapes of data | ||
+ | * What? | ||
+ | * Sequences (lists, vectors) | ||
+ | * Maps | ||
+ | * Sets | ||
+ | * Simple data types (numbers, strings, etc.) | ||
+ | * Examples | ||
+ | * clojure.java.io/input-stream - Set of input types | ||
+ | * map/reduce (flatmap) have exactly one implementation in Clojure and will never need another one | ||
+ | * (Contrast with Scala where every collection needs its own map/flatten/flatmap implementations) | ||
+ | - Separating the customer's perspective/vocabulary from the program's | ||
+ | * Concerns | ||
+ | * Customer has one vocabulary (Objects formalize that vocabulary into protocols that make it impossible to process data generically) | ||
+ | * Programs want to process data as generically as possible | ||
+ | * These two concerns tend to be intertwined in OO programs. Lisp gives us tools to separate those concerns. | ||
+ | * Internal DSLs | ||
+ | - Compile-time type inference/checking with Specs | ||
===== Scala / FP ===== | ===== Scala / FP ===== | ||
Line 13: | Line 34: | ||
* LazyParallel | * LazyParallel | ||
* ThreadPool | * ThreadPool | ||
- | |||
- | ===== Agile ===== | ||
- | |||
- | Document [[EclipseWay]] Agile process | ||
- | * Record of success **DONE** | ||
- | * Values | ||
- | * How it works with other Agile processes | ||
- | * References to important articles / presentations (bibliography) | ||
- | |||
- | ==== Values ==== | ||
- | |||
- | * Modular architecture enabling distributed development | ||
- | * API | ||
- | * (Interview people about API?) | ||
- | |||
- | * 6-week release cadence versus 2 week sprint and specific deliverables | ||
- | * Themes, not specific deliverables | ||
- | * Enough time to do interesting work | ||
- | * Good for research topics, when there aren't hard deliverables pre-committed by management | ||
- | * Good for contractual work, with mature teams who have measured their velocity and management that has built a pad into the schedule to account for unforeseen events | ||
- | |||
- | |||
===== The Cloud ===== | ===== The Cloud ===== |