13,213 reputation
63274
bio website lshift.net
location London, United Kingdom
age 39
visits member for 4 years, 3 months
seen yesterday

Delphi/Objective-C/C#/Ruby/Scala programmer by day, Lisper/Smalltalker by night.


Oct
17
comment Do you really have to do BDD/TDD in a test first manner?
TDD specifically means writing tests before code. If you don't like that, take it up with Kent Beck, who invented the term. Writing tests after your code might drive your code to some extent, but you can still trick yourself into believing you're driving your code design through tests when you're not. And it's harder to write those tests, because you often have to change untested code. Seen it too often to mention.
Sep
30
awarded  Explainer
Sep
11
awarded  Yearling
Aug
15
comment Method vs Function vs Procedure
foo.doSomething() closes over the foo variable. Any statement in doSomething can access foo through this or self, depending on your language. This is the very definition of "close over". Classes close over their member variables, therefore (ignoring "what is OO"), OO is sufficient. This is pretty well-known in the literature...
Aug
1
revised Why should I prefer composition over inheritance?
Minor spelling mistakes.
Jun
18
answered Determine Programming Language Used for Project Based on Source Code
May
14
comment Do you really have to do BDD/TDD in a test first manner?
Feel free to substitute "test" with "behaviour". I haven't seen anything to convince me that, at heart, there's much difference between TDD and BDD. Focus, maybe. But the core idea? Not so much.
Mar
31
awarded  Great Answer
Feb
20
reviewed Approve ansi tag wiki excerpt
Jan
30
awarded  Nice Answer
Jan
24
awarded  Good Answer
Jan
19
reviewed Approve mvp tag wiki
Jan
19
reviewed Approve mvp tag wiki excerpt
Jan
18
comment Looking for Case Studies of How TDD Improved Quality and/or Speed of Development
@user1249 TDD doesn't say "write all the tests before writing any code". It says "write a single test that fails, and a single thing to make it pass; repeat as necessary". If you write all your tests first you lose the tight feedback loop between test and production code, which is one of the very reasons to use TDD in the first place.
Jan
8
comment What do you deliver in the first couple of iterations in Agile?
"Set up the delivery process" is much harder than people think.
Jan
3
reviewed No Action Needed Service Design approach - one generic operation, and its implications
Jan
3
reviewed No Action Needed Best way to notify the client in real time that their queue (e.g. SQS) job has finished?
Jan
3
comment What is the relation between clojure reducers and loop fusion
I'm not an expert here, but I think that the reducers library take the separation of concern a bit further. Clojure reducible maps to Haskell's Foldable, but as far as I can tell, the reducing function part doesn't have a direct analogue in Haskell.
Jan
2
answered What is the relation between clojure reducers and loop fusion
Dec
24
comment In C++, how much programmer time is spent doing memory management
@gbjbaanb: I know. Isn't that what I said? When the resource-acquiring stack frame is finally pulled off the stack, C++ ensures all destructors are run. Since the resource is in use based on the lifetime of the stack frame, its lifetime is dynamically scoped.