30 November 2007

On programming

Who doesn't talk to his colleagues about programming?.

Sometimes it's more interesting to talk about the human aspects of programming than about the technological issues that techies are talking about all the time (a thread here, an interface there, let's add some reflection...).

There are ideas that my most respectable colleagues agree on but that unfortunately seem to be forgotten (or unkown) by a vast number of people working in the field.

They can be summarized in the following sentences:

If you're a software engineer, your basic building material is human intellect and your primary tool is you.
A leader has the expertise of a competent programmer and recognizes that programming is only 15 percent communicating with the computer and 85 percent communicating with people.
Programming is communicating with another programmer first and communicating with the computer second.
Some creative programmers view the discipline of standards and conventions as stifling to their creativity. The opposite is true. [...]. Without standards and conventions on large projects, project completion itself is impossible. Creativity isn't even imaginable.
A programming masterpiece requires just as much discipline. If you don't try to analyze requirements and design before you begin coding, much of your learning about the project will occur during coding and the result of your labors will look more like a three-year-old's finger painting than a work of art.
By all means, get excited about programming. But excitement is no substitute for competency. Remember which is more important.

Opps... wait! I forgot to say something before you just discard this post: these sentences are not ours. They're Steve McConell's.

1 comment:

Anonymous said...

"If you're a software engineer, your basic building material is human intellect and your primary tool is you."

Amén. No creo haber leido esa frase antes, pero realmente me llegó fondo.

Ultimamente parece que el desarrollo de software se centra en torno a la tecnología en vez de centrarse en la solución de problemas; se le da mas importancia al entorno de desarrollo y lenguages elegidos que a dedicarnos a pensar y desarrollar la mejor solución para el problema en cuestión.