Speaking of programming...
I'm seriously beginning to lose the tenuous confidence I had in my ability to program things successfully.
A month or so ago my company had a major glitch in some software that I wrote, which ended up spamming lots of people with needless text messages. As in, some poor soul got 65 copies of a message. A few others got 30 something.
Fast forward to three days ago, and something similar happened. Except this time ten people got 165 messages before we realized it was happening and took corrective actions.
Customers got mad, and that made our business partner mad. As they rightly should be. The software we provided doesn't work as advertised and may seriously annoy customers. That's bad.
So, I've been spending the entire week rewriting large portions of the code base hoping to eliminate the bugs responsible with sweeping architectural changes. The maintenance window we were given ended 25 minutes ago, and we just pushed the new system live.
In short, I'm presently sitting here, mildly nauseated and terrified of what's going to happen. One of the features of replacing large swathes of code is that you introduce new bugs! We spent almost the entire day today testing it to ensure there would be no more problems, but I know there are. Jesus Christ Himself could walk into this room, point a divine finger at the code and say, "It is good," and I still wouldn't trust this system. No matter how hard we look and what we try, more bugs are going to slip past and cause massive problems again. I dread what that's going to mean.
I don't know why I can't get this right. Sure, developing and debugging is hard, but I've been making stupid and seemingly obvious oversights the entire time I've been developing this system. The first spam fest was caused by an automatic script not checking if it was already running, which caused increasingly huge numbers of the script to get backed up on the server and send duplicates. The second spam fest was caused by inconsistencies in the database tables where having a 1 in front of your phone number meant you'd get unending streams of messages. I even spammed our partner's managers by accident while testing because I didn't look at what data I was sending huge numbers of messages to.
This has been a stressful week. On top of that fiasco, I'm also a graduate student finding scraps of time to work on research. I have to give an informal presentation to some engineers at Texas Instruments regarding a graph searching implementation I produced for one of their DSPs. Guess what I discovered last night? I misread the algorithm's specification a year ago and have seriously screwed up my implementation. The presentation is tomorrow, and in short, I can't cram a year of development into the 18 hours until then.
Oh, and I've got to remove more McMalware and McToolbars from someone's computer at some point this week, because I became known for fixing computers in the community and can't say no to save my life.
And of course, let's not forget that on top of all of that, I still need to find time to work on my other job as an employee of the university's high performance computing department. You know, the one where I take Fortran 77 programs that have been developed iteratively over the past 20 years by non computer science departments and make them run in parallel using OpenMP or GPUs. Meaningful variable names and code formatting are for suckers, apparently.
It's weeks like this that make me wonder if I'm in the right profession.