

How companies should hire developers  - acangiano
http://antoniocangiano.com/2008/09/22/how-companies-should-hire-developers/

======
biohacker42
_2) Be “true believers” in Agile methods, including story carding, pair-
programming and test-driven development._

I am a true believer in TTD, continuous integration and weekly team based code
reviews, but pair-programming is crap.

Plus, A LOT of very good developers who also love TDD and a lot of Agile/XP
practices feel the same way about forced pair programming.

Demanding it is a good way to lose a lot of great talent. But how could, lets
say, demanding TDD ever cost you talented programmers? It won't, ever.

There's a lot of great stuff in Agile/XP (that's also in the Mythical Man
Month), but don't drown in the cool-aid.

~~~
menloparkbum
_But how could, lets say, demanding TDD ever cost you talented programmers? It
won't, ever._

This is wrong. TDD may or may not be useful. I'll give it the benefit of the
doubt, but in my experience it has been used in a "cargo cult" approach to
programming. The last startup I spent significant time at was eventually
destroyed because they hired an "Agile/VP" of engineering. He then hired a
bunch of guys who could do "TDD" but didn't actually know how to write
software.

~~~
biohacker42
But that's not because of TDD, it because of people who couldn't write
software.

Imagine if those people were also bad at math, would you say math is only
occasionally useful?

Obviously I agree about "cargo cult" programming, the worst of it is when
someone has a religious affinity for pair programming, but thinks testing is a
waste of time.

~~~
ardit33
I think I am a good programmer, and I think TDD is aweful. Using unit testing,
has its place, especially when working with parts that have clear input/output
ranges, or in large systems, where your piece of code has to be integrated
somewhere else, so you want to make sure it works before committing it.

BUT, programming according to Tests, is not a good idea. Tests are not the END
RESULT, not the ultimate user of your code!!! Instead of tests being for what
they are: testing your input/output, they are being used to design systems.
So, you are designing your programs according to tests, and not their ultimate
functionality.

Here is another thing that I think: Weaker programmers prefer TDD. It is like
they want validation b/c they are unsure of what they are writing.

~~~
biohacker42
Working on large and complex application becomes near impossible without
extensive unit test coverage.

If you're using unit test of all things to guide the design of your
application, you are off the deep end. That makes you a bad programmer, it
doesn't make TDD bad.

~~~
silentbicycle
Part of the problem in discussions like these is that people aren't really
clear whether they're complaining about testing or TDD in particular, whether
they're arguing about the benefits of TDD specifically, unit testing, or
testing in general, and everybody involved may read the wrong thing into any
ambiguity.

I, for one, would not argue with unit testing (particularly for libraries) or
regression testing, but I think that an insistence on TDD can be excessive.

~~~
wildwood
That's a good point, I often catch myself conflating TDD with general unit
testing.

I definitely ascribe to TDBF (Test-Driven Bug Fixing) more than TDD - if a bug
shows up in my production code, adding a test to the suite to make sure that
bug never comes back gives me a great deal of peace of mind. And it helps if I
have enough of a testing framework from initial development (such as data and
mock object setup) to add new tests quickly. But I definitely don't do enough
testing for it to qualify as TDD.

~~~
silentbicycle
Oh, yes, absolutely. I think few people would argue with that, though they may
not have formally articulated it as "having a test framework". (To my
understanding, what you're referring to as "TDBF" is more commonly called
"regression testing".)

As is often the case, most arguments are about extreme positions.

------
known
One word. Passion.

Hire developers who are passionate about programming.

------
marcoberi
Great post!

