Code Complete

by Juan 3. October 2007 10:15
Share on FacebookHola!

En el viaje hacia la oficina retome mi querido Code Complete (ya es la tercera vez), y quería compartir con ustedes un extracto del capitulo 33 (Personal Character), porque me pareció bastante interesante, como pueden ver, el libro además de tratar temas desde como hacer un buen if hasta diseño correcto de clases, también trata el factor humano de la programación.

 

Si no lo leyeron les recomiendo que lo hagan... uno no puede llamarse a si mismo programador sin haber leído este libro =)

 

http://www.cc2e.com/

 

33. Personal Character 

(…) 

Engineers in every discipline learn the limits of the tools and materials they work with. If you’re an electrical engineer, you know the conductivity of various metals and a hundred ways to use a voltmeter. If you’re a structural engineer, you know the load-bearing properties of wood, concrete, and steel.

If you’re a software engineer, your basic building material is human intellect and your primary tool is you. Rather than designing a structure to the last detail and then handing the blueprints to someone else for construction, you know that once you’ve designed a piece of software to the last detail, it’s done. The whole job of programming is building air castles—it’s one of the most purely mental activities you can do. Consequently, when software engineers study the essential properties of their tools and raw materials, they find that they’re studying people—intellect, character, and other attributes that are less tangible than wood, concrete, and steel.

(…)

33.1 Isn’t Personal Character Off the Topic? 

(…) 

Your employer can’t force you to be a good programmer; a lot of times your employer isn’t even in a position to judge whether you’re good. If you want to be great, you’re responsible for making yourself great. It’s a matter of your personal character. 

Once you decide to make yourself a superior programmer, the potential for improvement is huge. Study after study has found differences on the order of 10 to 1 in the time required to create a program. They have also found differences on the order of 10 to 1 in the time required to debug a program and 10 to 1 in the resulting size, speed, error rate, and number of errors detected (Sackman, Erikson, and Grant 1968; Curtis 1981; Mills 1983; DeMarco and Lister 1985; Curtis et al. 1986; Card 1987; Valett and McGarry 1989). 

You can’t do anything about your intelligence, so the classical wisdom goes, but you can do something about your character. It turns out that character is the more decisive factor in the makeup of a superior programmer. 

33.2 Intelligence and Humility

Intelligence doesn’t seem like an aspect of personal character, and it isn’t. Coincidentally, great intelligence is only loosely connected to being a good programmer. 

What? You don’t have to be superintelligent? 

No, you don’t. Nobody is really smart enough to program computers. Fully understanding an average program requires an almost limitless capacity to absorb details and an equal capacity to comprehend them all at the same time. The way you focus your intelligence is more important than how much intelligence you have. 

(…) 

33.3 Curiosity

Once you admit that your brain is too small to understand most programs and you realize that effective programming is a search for ways to offset that fact, you begin a career-long search for ways to compensate. 

In the development of a superior programmer, curiosity about technical subjects must be a priority. The relevant technical information changes continually. Many web programmers have never had to program in Windows, and many Windows programmers never had to deal with DOS, or Unix, or punch cards. Specific features of the technical environment change every 5 to 10 years. If you aren’t curious enough to keep up with the changes, you may find yourself down at the old-programmers’ home playing cards with T-Bone Rex and the Brontosaurus sisters. 

Programmers are so busy working they often don’t have time to be curious about how they might do their jobs better. If this is true for you, you’re not alone. The following subsections describe a few specific actions you can take to exercise your curiosity and make learning a priority. Y aca viene una lista de formas de ejercitar la curiosidad que están en el libro si las quieren leer… 

Bueno, hasta acá llegué en el viaje con este capítulo… hay más información en el libro entero…Otras secciones del capitulo: 

33.4 Intellectual Honesty
33.5 Communication and Cooperation
33.6 Creativity and Discipline
33.8 Characteristics That Don’t Matter As Much As You Might Think
33.9 Habits 

Agrego algo que lei recien de este ultimo capitulo  

Bill Gates says that any programmer who will ever be good is good in the first few years. After that, whether a programmer is good or not is cast in concrete (Lammers 1986). After you’ve been programming a long time, it’s hard to suddenly start saying, “How do I make this loop faster?” or “How do I make this code more readable?” These are habits that good programmers develop early.  

When you first learn something, learn it the right way. When you first do it, you’re actively thinking about it and you still have an easy choice between doing it in a good way and doing it in a bad way. After you’ve done it a few times, you pay less attention to what you’re doing and “force of habit” takes over. Make sure that the habits that take over are the ones you want to have.  

What if you don’t already have the most effective habits? How do you change a bad habit? If I had the definitive answer to that, I could sell self-help tapes on late-night TV. But here’s at least part of an answer. You can’t replace a bad habit with no habit at all. That’s why people who suddenly stop smoking or swearing or overeating have such a hard time unless they substitute something else, like chewing gum. It’s easier to replace an old habit with a new one than it is to eliminate one altogether. In programming, try to develop new habits that work. Develop the habit of writing a class in pseudocode before coding it and carefully reading the code before compiling it, for instance. You won’t have to worry about losing the bad habits; they’ll naturally drop by the wayside as new habits take their places.

Tags: , ,

Programming

Comments

Powered by BlogEngine.NET 1.4.5.15
Theme by Mads Kristensen Modified by Juan Manuel Formoso

About the Author

Juan Manuel
Networking
View my LinkedIn profile View my Facebook profile View my Twitter feed View my StackOverflow CV

Juan Manuel Formoso
There is a theory which states that if ever anyone discovers exactly what the Universe is for and why it is here, it will instantly disappear and be replaced by something more bizarrely inexplicable.

There is another theory which states that this has already happened.

E-mail me Send mail

Hosting is not Free

Google Reader Picks

Most comments

Cristian Cristian
1 comments
co Colombia

Calendar

<<  September 2010  >>
MoTuWeThFrSaSu
303112345
6789101112
13141516171819
20212223242526
27282930123
45678910

View posts in large calendar

Recent comments

Comment RSS

Disclaimer

The opinions expressed herein are my own personal opinions and do not represent my employer's view in  anyway.

© Copyright 2008