Know how you work. The "Art" of Computer Programming. The "Art" of Software Engineering. Hmmmm.
For coding alone, two heads are certainly better than one. Either person can spot immediate difficulties and if one mind gets a bit stuck the other often knows immediately how to progress. Less reworking of the code is needed later as it has been designed (and reviewed, and agreed upon) by two heads.
As well as facilitating the coding process to go forward at a fast pace system knowledge is spread throughout the team. If we had two people from our team to ask about a particular area of the code it is certain one or other would have some experience there.
With pair programming you are pushed or pulled up the learning curve by your partner. It is quite an excellent tool and the best method I have found for getting up to speed on any area of the project. Whether just starting on the project or in different areas as the project progresses. Within one week of any of us joining the project we were all sitting down pairing on tasks. Within one more week we had tasks of our own.
Other most useful part of XP? The test system. Full suite of automated unit tests that must all be passing before any checkin. 100% code coverage. Use of peer pressure to enforce project conventions.
Other XP practices we implement are as vital: Short iterations, iteration planning meetings, detailed design/iteration planning done by smaller teams. I think it could be useful if we did keep design documentation (iteration planning emails/stories). Some iterations it is not that easy to break tasks down small enough.
xp gentle intro
wiki?ExtremeProgramming
New Methodologies
Software Engineering, from Nothing, to Monumental, to Agile.
eXoftware xp
xp and cmm
Back to Basics, Shlemiel the painter, XML, malloc, .... About the effect implementation has on performance. Relates to DontCreateGarbage. Also very important: FirstRuleOfOptimisation, we definately needed this on MyrIAD. We had fun merging today. Probably there's a simple way to express something like this: ExtremeProgramming leads to ContinuousIntegration and CollectiveCodeOwnership so RelentlessTesting is needed.
What's this guy Larry talking about?
Reputedly the most common pattern of design of Systems:
Big Ball of Mud
Architecture/Design of Systems will often reflect the
architecture of the development teams.
e.g. multiple site locations, good/bad communication
So architecture of end system depends alot on process used.
OpenSource/Bazaar vs Cathedral, Agile processes vs Strict
Methodologies. So really important design decisions are driven not
by requirements but by what happens during development.
How do you define
software architecture anyway?
The Programmers Stone "Software Engineering is distributed Programming" The Hacker FAQ
TUNES Reflection OS/Programming Language
Why a New OS?
1
2
Fractint, open source contributions and
Stone Soup.
Open Source model
ESR writings:
The Cathedral and the Bazaar,
Homesteading the Noosphere,
The Magic Cauldron.
wiki wiki web Lazy/Minimalist Programming
QualityPlateau
ExtremeProgramming
LazyProgrammer
EinsteinPrinciple
DoTheSimplestThingThatCouldPossiblyWork >;)
KISS?
MinimalMethodologies
Carnegie Mellon Software Engineering Institute:
The PSP Strategic Initiative,
CMM
v1.1
From Omaha SPIN,
The Capability ImMaturity Model
The Immaturity of CMM
Critical Path: Applying the Capability Maturity Model
"My current, professional suspicion is that no one, at this time, is capable of writing a precise process for software creation that will work as written. Too many unexpected things come up. Projects succeed because people break out of the prescribed process to make sure the system delivers, or because the process is deliberately vague, allowing people to do whatever is necessary."
"People are non-linear"Design patterns: Big ball of mud
Jung MTBI - ENXP (E6 I4, S6 N14, T10 F10, J7 P13)
Thomas Jefferson: ``he who knows best knows how little he knows.''
Incompetent People Really Have No Clue, Studies Find.
They're blind to own failings, others' skills.
Pity the clueless, try and educate them. Hmmmm.