If it turns out that developers must write these tests, then take
care that the developer who writes the test is not the same as the developer who
implements the tested feature.
--
But the real reason these tests aren’t redundant is that their primary function is
not testing. The fact that they are tests is incidental. Unit tests and acceptance
tests are documents first, and tests second. Their primary purpose is to formally
document the design, structure, and behavior of the system. The fact that they
automatically verify the design, structure, and behavior that they specify is
wildly useful, but the specification is their true purpose.
--
Design experts have been telling us
for decades to separate our GUIs from our business rules.
==
Most software is created by teams. Teams are most effective when the team
members collaborate professionally. It is unprofessional to be a loner or a
recluse on a team.
--
We didn’t become programmers because we like working with people. As a rule
we find interpersonal relationships messy and unpredictable. We like the clean
and predictable behavior of the machines that we program. We are happiest
when we are alone in a room for hours deeply focussing on some really
interesting problem.
--
One of the worst symptoms of a dysfunctional team is when each programmer
builds a wall around his code and refuses to let other programmers touch it.
I have been to places where the programmers wouldn’t even let other
programmers see their code. This is a recipe for disaster.
--
Professional developers do not prevent others from working in the code. They
do not build walls of ownership around code. Rather, they work with each other
on as much of the system as they can. They learn from each other by working
with each other on other parts of the system.
---
199
130
No comments:
Post a Comment