Erlang notes

tried Erlang in cyber-dojo.org on Friday, and learned a few basic things..

  • export..
  • functions can be defined several times based on single instances or patterns in parameters
  • function pattern via: “… when Parameter > 1” (f.ex)
  • function parameter: start with capital letter…
  • separate function definitions with “;”, after last one: “.”
  • for default function definition: “(_)”
  • in eunit: methods ending in _test() will be run

a few resources:

is TDD dead?

started with a series of video hangouts to discuss TDD, and the trade-offs around testing and architecture.

UPDATE: A few updates from Martin Fowler:

original note: background:

  • DHH: TDD is dead. Long live testing. “Test-first fundamentalism is …. [a]n unrealistic, ineffective morality campaign for self-loathing and shaming.  It didn’t start out like that.”
  • Kent Beck: RIP TDD “…now I need to hire new techniques to help me solve many of my problems during programming”
a few tweets from hangout 1

watching @dhh, @martinfowler, @KentBeck on #istdddead. 1st @dhh on microtesting all the things, not necessary useful (my words)

basic q: as a programmer, do you deserve to feel confident? @KentBeck (@dhh: programmer happiness) #istdddead #techsafety

i have to have a feedback loop, and the feedback loop has to be repeatable. @KentBeck not mocking much, even when tdd n/a #istdddead

the case for continuous delivery

from www.thoughtworks.com/insights/blog/case-continuous-delivery by @jezhumble (emphasis mine)

many of us are aware of the wide adoption of continuous delivery within companies that treat software development as a strategic capability that provides competitive advantage. [Amazon, Facebook, Google]
….
Still, many managers and executives remain unconvinced as to the benefits

….
Continuous delivery is a set of principles and practices to reduce the cost, time, and risk of delivering incremental changes to users.

….
high performing organizations ship code 30 times faster (and complete these deployments 8,000 times faster), have 50% fewer failed deployments, and restore service 12 times faster than their peers.

….
Implementing CD has second-order effects that reduce the costs of software development

For me, perhaps the most interesting effect of continuous delivery is the cost reductions it brings about by reducing the amount of time spent on non-value add activities such as integration and deployment. In continuous delivery, we perform the activities that usually follow “dev complete”, such as integration, testing and deployment (at least to test environments) — continuously, throughout the development process.

By doing this, we completely remove the integration and testing phases that typically follow development. This is achieved through automation of the build, deploy, test and release process, which reduces the cost of performing these activities, allowing us to perform them on demand rather than on a scheduled interval. This, in turn, enables effective collaboration between developers, testers, and systems administrators.

This change in process has extremely powerful second-order effects on the economics of the software development process.

my note:

a big part of this is due to reduced delay in the lifetime of a work item, since increased lead/cycle time for work will lead to increased amount of work for the same output, for a variety of reasons.