I haven't written anything in the last week because I have been slammed at work. I moved to a new team and I am doing more development work. This is good because eventually I want to be a full time programmer. Right now I am working in the high level languages like Perl and Python but I do have C training and I think I would like to do more lower level stuff.
I also am getting my first taste of what it means to be a programmer. Being a system administrator is fun because you can program when you want to - if I ever got bored of a script I was working on I could do something else. Its another story when your primary role is to write that script. Getting bored? Too bad finish it.
My first project is a Perl script about 2,000 lines long with lots of mySQL interactions. This also marks the first time I have worked with databases in any meaningful way. Took me about three or four days to get to the point where I was comfortable writing SQL queries. The Perl DBI layer makes a lot of this easy.
I am also now writing code that other people depend on which is a lot different from the system administrator scripts I usually write. Now my code needs to do the right thing under a variety of circumstances. I am making liberal use of Perl's eval statement so I can have some sort of deterministic behavior.
Recently I read a Damien Katz blog entry called Error codes or Exceptions? Why is Reliable Software so Hard? which really spoke to me on my current plight. I am doing a combination of his three error handling styles - including the travel back in time one (I have rollback queue that gets poplulated with the actions to undo a step, in the case of an error I just run through the queue and have gone back in time)
Writing a Perl script this big has really made me appreciate Perl more in its flexability but has also made me yearn for Python more for its cleaner syntax and excellent exception handling.
At this point I am on the fence whether I want to be a full time programmer but this experience is a great way for me to get my toe in the water without jumping in.