Eric Liu: |
Software development |
For my research projects, I've employed a variety of very useful resources:
I say "current" because this is subject to change as I learn more about the field.
I think if you ask developers what the worst part of development is, they will most likely say, "Modifying someone else's code." Notice that most developers have no trouble with creating new software. The problem perhaps lies in the way programming is taught -- syntax and techniques are emphasized, but maintainability is rarely taught. Teaching programmers to comment their code makes it more readable, but not necessarily more understandable.
Making code understandable is extremely important:
Software rarely stays stagnant (fixes, patches, new versions)
so chances are high that you will end up having to modify someone
else's or your own code. Have you noticed that even if only two
weeks have gone by, it still takes some effort to re-understand
what you wrote? :-)
How do we make code understandable? I'm constantly learning more about this. A good start is to read up on XP, Refactoring, and Design Patterns. XP advocates that code should be as simple as possible and no more. Refactoring gives techniques and ideas on how to rework code so that it remains understandable. Design patterns provide the terminology to describe the way your objects interact with each other. All these strive to make intentions clear in the code.
Do you have to use OO? As long as your code is easy to understand, who cares? There is an appropriate place to use each tool. OO is especially useful in larger systems at least as a packaging mechanism. Polymorphism is an added bonus. Procedural programming still lives -- many times, I think of the code within a class to be procedural (is this accurate?).
I hear this many times -- in literature, students read a variety of essays and novels. From this process, they pick up hints of what constitutes good and bad writing. In software, students rarely get the opportunity to read code. That's not entirely true... I think most people can pick out badly written code, but there's little agreement on what is well-written. If I had to pick the characteristics of well-written code, I would pick code where (1) the intentions are clear and easy to grasp, and (2) the code is reasonably efficient.
References:
Eric Liu
Last modified: January 05, 2002