My life is becoming eerier. I worked at home Monday, and then when I wasn’t feeling well on Tuesday I ended up staying home Tuesday as well. Interestingly, I accomplished a lot of work yesterday as well.Lot of work means understanding sql, mysql and the php api’s for mysql. well, i didn’t accomplish a lot, but i got the database collection to work, and now I feel I can do anything. It takes hours to figure something out, but once you figure out you figure you will never be plagued with that problem again. That’s why you should be really wary of programmers/administrators with very little experience. They often don’t have the chance to learn the tricks necessary to get something working. So I spend a good day or two working on this stuff, and then suddenly Tuesday night, when it started to work, I felt that if only I had a few hours, I could really accomplish a lot. In programmning and system administration, one should speak in terms of milestones. Basically one remains clueless unless one can figure out how to attain that milestone. And one really can’t guess how long it will really take. Educationally, though, even though I am learning by doing, in fact all I am doing is copying code and then tailoring it to my needs. Is that what programming is anyway? I really haven’t done anything original…yet. But really, does one really want to do any original thinking in the IT world? Basically all you want to do is to copy things other people have done without having to go to any trouble. A good programmer finds ways to minimize the work he needs to do.
I frequently compare the art of programming to fiction writing. And yes, I don’t want to talk about how little writing I’ve done recently. When writing a story, there often comes a point where you get completely stuck. But to be honest–it happens much less often than I used to. Partially it’s because these ideas have been in my head for so long that they come out of the womb already formed. Well, that’s not entirely true. Ever since I was about 30, I have noticed that the writing process brings about a certain amount of discovery–it’s like Flannery O’Connor not deciding that the man will remove the woman’s peg leg until midway through the story.
But both programmers and writers write code rapidly only to change things later on. And there’s a certain time of reflection necessary before embarking on either activity. And there are long periods where one is totally unproductive.
Finally, about value. A program has a lot of value at the beginning, especially because the designer himself will use it. Well, maybe other people will use it or appreciate the application it serves, but after two years, the code will be out of date or everything will be automated to a point where it is no longer necessary. But with fiction writing, the “code” (if you want to call it that) becomes more valuable as time goes by because it gives a screenshot to a certain time period or a certain way of thinking. There is a sense that early times hold a lot of wisdom to be tapped into.
Programmers overwrite their original code with better code, and I guess writers do this as well. Revision is key to a good product.
My pet theory about programming:
To be a good programmer, you need to have:
1)an ability to find documentation about how to do things
2)a good eye for debugging
3)a sense of how to accomplish the goal most directly, without entangling your plans with anything else
4)learning how to integrate tools together and understanding how to make them work in a special set of circumstances
5)a willingness to spend hours patiently working alone
6)being able to estimate where time should be efficiently spent. In which cases is it better to use off-the-shelf code and which cases is it better to do it yourself?
7)a good way to design the series of tasks (a little bit of engineering skill here)
8)a fluency with mathematical operations and the ability to mentally compartmentalize tasks within one another
9)an ability to type fast.
Notice that I don’t include “creativity” here. Today, my boss authorized me to take home another computer. If you include my pc which is about to die and the pc I will be buying very soon, that means I have 6 pc’s i work on/with.
Does that make my life easier or more difficult?