RichardOnRails wrote:
Hi Marnen,
have too much pride in my work to sell them a clunker that will be in
the shop all the time. I’m not willing to compromise on quality – and
test-first development helps ensure that I can develop high-quality
What you’re claiming is that to not employ formal testing is
tantamount to shoddy work.
No; my point is a bit subtler than that.
Let’s go back to the car analogy. If you want to make sure that you’re
not building your car with substandard materials, you have to have some
way of knowing that the materials you’re using are within spec. How do
you do that? You establish guidelines for the materials you will use
(purity, breaking strength, whatever), and then you assay the materials
to make sure they meet these guidelines. The assay is crucial: without
it, you’d never be able to guarantee that the materials were within
spec. You might get lucky and have the purest, strongest material in
the world, but then again, you might have garbage – and without the
assay, you wouldn’t know till it broke at 60 mph.
And so it is with software. You might have the best code in the world,
but without tests, how can you be sure of that? More importantly,
without tests, how can you refactor reliably?
But the proof is in the pudding.
Actually, you mean “the proof of the pudding is in the eating”.
I never
would have survived as an independent computer consultant for decades
if potential clients suspected I did shoddy work.
Just because your clients don’t suspect it doesn’t mean it isn’t
happening.
They always new
what my previous engagements had been and I’m sure checked to their
heart’s content.
Which tells them very little. If they understood enough to check over
your previous projects really thoroughly, then they wouldn’t need to be
hiring you in the first place, because they could do the job themselves!
And I was always constrained to use the client’s chosen programming
language though I’d often wished I could use something better.
Introducing foreign ideas like writing tests while no visible repairs
or new functionality emerged would not fly.
I don’t buy it. The client is hiring the developer to produce the best
possible software within the constraints. “No tests” is never a
reasonable constraint.
Finally, the fact that I
didn’t use formal testing regimes does not mean that I did no testing!
Good.
That doesn’t impress me without knowing more about the organization and
his role there. Too many big organizations don’t understand the 'Net.
So you think a guy with the title Internet Architect in a national
organization in constant computer communication with in multiple
cities in almost every state in the U.S. might just be boob when it
comes to the Internet?
In a word, quite possibly. I mean no disrespect to your son by saying
this; it’s simply a sad fact that title inflation is rampant in this
field.
Do you think he might also be a jerk even if
he graduated college summa cum laude from an accredited university
might be unsophisticated.
Yes. I’ve met people whom that would describe.
And that he’s developing through me an
expense tracking system for two private schools he owns and operates
might not have a clue as to the impact of code I/m writing.
Yes. If he knew the impact of the code that intimately, he wouldn’t
need you to write it, now would he?
Generally speaking, our field is one where formal credentials are too
easily obtained by the undeserving. I’ve seen post after post on forums
pointing out that the English major who fell into programming because he
loves it is often a better developer than the guy with the shiny CS
degree.
I work on this for two reasons. (1) To help my son reduce the burden
of managing a small enterprise.and (2) after toying with Ruby and
Rails for years in retirement, to finally dig in to these technologies
and hang out my shingle again offering web development services for
small business.
Those are both excellent goals, and I wish you best of luck in both of
them. That’s in fact why I’ve been harping on the importance of doing
things right.
Waiiiiiiiit…so it’s up to your client to tell you whether you’re
hacking? WTF? How is he even in a position to know?
YES. And I hope you think I’ve answered the second question. He’s
written a ton of Java and WSDL and Unix and Linux and Windows and
plenty of other stuff I know nothing about, like those packages for
administering large organizations.
But the development is your responsibility, not his. Unless something
got lost in the translation, it sounds like you’re trying to foist off
onto your client concerns that are properly your responsibility.
But I’m a version of the earlier
you. So, like you, I get to Agile-land. But, like St. Augustine,
I’ll give up sin, but not right now
Are you sure you want to model your behavior on a fairly hypocritical
line?
Shucks, Marnen. I thought that last line was the best one in my
entire reply.
I agree.
BTW, as I mentioned to Colin, I’ve been playing around with unit-
testing today.
Yes, I saw. Good luck!
I feel like writing a generator to populate views when
columns are added/renamed/dropped from a DB table. It annoys my that
there’s no tool to do that.
You can use the scaffold generator, or (for a more sophisticated version
of the same thing) ActiveScaffold. But in most cases, this task is
beyond the scope of a generator: it needs actual human thought and is
not that susceptible to automation.
Best wishes as always,
Richard
Best,
Marnen Laibow-Koser
http://www.marnen.org
[email protected]