To be a good programmer is difficult and noble.
The hardest part of making real a collective vision
of a software project is dealing with
one's coworkers and customers.
Writing computer programs is important and takes great intelligence
and skill. But it is really child's play compared to
everything else that a good programmer must do to make a
software system that succeeds for both the customer and
myriad colleagues for whom she is partially responsible.
In this essay I attempt to summarize as concisely as possible
those things that I wish
someone had explained to me when I was twenty-one.
This is very subjective and, therefore, this essay is doomed
to be personal and somewhat opinionated. I confine myself to problems that a
programmer is very likely to have to face in her work.
Many of these problems and their solutions are so general to
the human condition that I will probably seem preachy.
I hope in spite of this that this essay will be useful.