Wade Curry wrote:
I don't deal with large projects, but I still modularize stuff. I
do it because it's easier to re-use, but also for others to see
what I'm doing a little easier (I hope).
I'm not sure though what "grunt work" you are thinking of that
wouldn't be there regardless of modularization. What do you mean
by that?
Or, maybe I should ask, what do you have to learn in order to
program above your limit?
Automated tests are the big one.
This is a double whammy. You need some way to know that you didn't
break old stuff when you wrote new stuff. You also need some way to
communicate your intent and design. Automated tests do both.
Many smart programmers just test a couple cases by hand and leave it at
that. What happens is that the corner cases get forgotten as the system
grows. This means that you start doing more damage than good as you add
code. Eventually this reaches the point where you can't fix without
breaking something. At this point, smart programmers tend to give up
and start talking about "needs a rewrite".
No, it doesn't. It needs tests and bug fixes. But that's not fun.
Once I realized this I moved from being a talented, but erratic, hacker
to being a very good programmer. Instead of having to always handle
coding myself, I could actually hand it off and let other people help.
There are other things: build systems, version control, modularization
(as you point out), choosing to be clear rather than clever, etc.
-a
--
[email protected]
http://www.kernel-panic.org/cgi-bin/mailman/listinfo/kplug-lpsg