The End of Dr. Dobbs

Recently I subscribed to Dr.Dobb’s Journal. In the second issue, there were some strange announcements from Editor-in-Chief Jonathan Erickson. He wrote that they were changing to Dr. Dobb’s Report, which would be a section of Information Week magazine. However the section would only run once a month. There were some other comments about expanding their online offerings.

There was no statement that came out and said the Dr. Dobb’s was going out of business. It sure felt that way though. I actually already subscribe to Information Week. So I saw the part of this week’s magazine which was the Dr. Dobb’s Report. However it was not the same as Dr. Dobb’s Journal. The last issue of Dr. Dobb’s Journal that I received had a lot of great articles on Cloud Computing. Perhaps they made it an especially good issue given it was the last.

This is not an isolated event. Computing programming magazines have been going out of print left and right. I can’t think of one that still exists in a stand alone print edition. The closest thing I see on the magazine rack are magazines for Linux system administration. I guess everybody gets their information online these days. I personally prefer reading a physical magazine. Perhaps I too am partially to blame as I did not subscribe to the programming magazines for a while.

I do recall Dr. Dobb’s Journal from the old days. Somewhere I read that it was 30 years old. It was probably one of the last print magazines of its kind. I don’t know about anyone else. But I for one will miss it.

All Nighter

Another guy at work needed some help solving a high priority problem. So I sketched out the design for a solution and gave it to him. The next day he asked that I review his stuff. He had written a script that did not compile. And it did not get the business rules right.

Our manager told the guy to report to my office and work with me. I advised him to scrap his script. We got down to some pair programming. I first wrote out the program in all pseudo code. Then I wrote the code, filling in stubs for the functions and procedures we needed to write. We filled those in later.

Earlier that morning I had written a script to generate test data. I had also written another script to run some automated unit tests. I figured I had now provided the tools needed for my coworker to solve the problem. He called me late at night telling me the fix failed test. Now the unit tests were failing. I quickly found that the problem was due to bad test data.

Next the tried to run the tests in the production environment. The code did not run fast enough. This was somewhat expected. We wrote the script for correctness and not speed. There was no initial time for optimization. Finally I spent about an hour rewriting the script to be fast. I spent the rest of the night working with the production people to get the new script run. I hate it when I need to step in and take charge.

Developer Fighting

One developer on our team got tasked with coding some new features. It was taking longer than expected. So the team lead decided to implement some of the logic himself on the back end. However the original developer wanted to do everything in the front end. These guys are always fighting so I did not think anything about it.

The team lead told me he needed to go on a vacation. However the management wanted these new features done first. So he asked me to see if I could figure out how to call his stored procedures from the front end code using OLE DB. That seemed like a trivial task. We even have other code examples in our system that does this.

It was then that I found out what the real problem was. These guys could not agree on anything. There were a lot of emails containing a battle of wills between the two developers. I just came in on the weekend to see if their code could talk. The team lead has some mismatches between his PL/SQL package specification and body. And the front end was not passing in some strings correctly. Aside from that, the code seemed to work with a minimal amount of things left to do.

I believe it is time for management to step in and get these guys straightened out. There is always time for a lively debate between developers. That’s how you arrive at good design decisions. However when it is all out battle, the whole team suffers. Right now I have a little of the pain because I need to work the weekend to deal with some of this nonsense. But I got some concessions for my extra work so I am not too displeased. We will see how this episode ends.

Developer Rewards

Joel Spolsky wrote an article in Inc. Magazine about rewarding developers. He called attention to the difference between intrinsic and extrinsic motivation. Intrinsic motivation is what drives you regardless of the reward you get for doing so. Extrinsic motivation is some sort of compensation tied to the things you do. He postulates that “extrinsic motivation displaces intrinsic motivation”. In other words, if you give developers bonuses for certain types of behavior, it may sap their underlying desire to get things done.

This was a very thought provoking article. Like all other developers, I think I am a top notch one. As such I expect some extra rewards from my employer. Maybe everybody else on the project thinks the same way. What is an employer to do in such a situation? And even when some developer does shine and seems to deserve something extra in return, is it right to give them that big bonus or some other rewards?

I will say that I have received a lot of bonuses in my career. And when the bonus was missing or embarrassingly low, I was not a happy camper. That being said, a low or high bonus never seemed to diminish my desire to write and maintain software. This is my intrinsic motivation. I like write coding. Strangely enough, I even like debugging tough software challenges. I also think it is a better setup when I get lots of money for doing so.

Does that mean I am the exception to the rule? Or perhaps the development team in general suffers if I get a good bonus. It might also be the case that extrinsic motivation does not also mask the intrinsic one. This topic definitely warrants more thought. At the end of the day, I am going to be doing a good job and will enjoy doing the work I have chosen. The only question seems to be whether I will get rewarded well enough for it.

P.S. Just found out today that my company is springing to pay for a certification of my choosing. And there are no limits on the cost. Yee haw.

Knowing Too Much

One day this week I went home at the normal time. However I got a call from my team lead about a problem. He said the customer was having all kinds of problems. So I called up the customer and had them check out a few things. I asked them to e-mail some more information, and I told them I would get on it first thing the next morning. Then I turned my cell phone off.

The next morning I found out that other customers were having more pressing issues. Again I got called. But luckily my cell phone was off and I was not bothered. The disturbing part was that nobody else could figure these problems out. So the next morning the customer wanted an answer ASAP. Somehow I got on the hook for figuring these problems out as well.

It is not like I don’t enjoy solving problems. I just don’t like it when I get bothered every time there is a problem on our project. We have a 25 person staff to support this effort. These problems occurred in software that is being worked by other developers. However management wants us to look good in front of the customer. And when I get on a problem, our company looks good.

Perhaps I should count this as a blessing. In these tough economic times, you want to be the go to guy. But I feel a little cheated as there are all these other people who are on our project who don’t have to get the aggravation I get. It would be great if they could just drop one or two of the less useful people and pay me double. Yeah I know that is not going to happen as long as I work for the man.

There are a few smart people on our project who are subcontractors making some real green. They love getting calls at all hours of the night. That is because for every call they get, they get a little richer. I get paid the same no matter how many hours I work. Is this the same dilemma that all top developers face?

Meeting Mess

Our software development manager scheduled a daily meeting with our customer to support the new system startup. I dialed in when the meeting was supposed to start. All I heard from the phone system was that “the host has not yet arrived”. Then I got disconnected. Another developer asked me if we were having the meeting. I said I was going to try dialing in again. When I did call back, I got the same response.

Now the manager who scheduled this meeting is notorious for scheduling conference calls, deciding to cancel the conference call, and either never tell us or let us know well after the fact. So I did not think twice about giving up on this latest conference call after he did not start the meeting and I got disconnected.

This resulted in emails and phone calls from the manager to be. He told me he expected that I participate in the meeting daily. And he made it sound like I was at fault here. That made me very salty. So I called him up and said I did participate by calling in, but he did not start the meeting. He said he started the meeting but it started late. I told him that he could have helped by starting the meeting promptly. I also told him that he had a pattern of canceling meetings without informing anybody.

After talking with this manager some more, I found out what the real issue was. The customer asked a lot of hard questions that nobody knew the answers to. And I am a guy who would have been able to answer those questions. So I told the manager that in the future, if his meetings did not start on time, or I got disconnected, I would call him directly on his cell phone for guidance. He tried to tell me that I could check with somebody else, but I was not having any of it.

There are probably a couple lessons to be learned from this situation. The one I am taking away with me is that if you are slacking on a regular basis, you are going to lose some respect and it will bite you in the end. This guy did not do a good job with his meetings and he now has some pain he needs to deal with. That is all fine by me. But if his past performance makes him turn on me, then I am not going to back down whether he is a manager or a vice president or even god. I can do that because I am the man with the knowledge after all.

Ok. My rant is over with. Peace out.

Rapid Application Development

I got in late this morning because I decided I needed to get some sleep. This seemed reasonable as I worked both days last weekend. When I got in, there was an urgent request from my boss to write a script to help our test team. The requirements for this script were still a little fuzzy. So I made some phone calls and got a better idea of what they needed.

The script was due at 11:00am. I did not understand what was needed until a few minutes before that. So I figured I had better work in a rapid development mode. The first order of business was to get the shell of the script working. This took hardly any time. The result was that the script created some output. The output was not useful. But it worked.

At this point I decided to go to lunch. Some food in my stomach would help me get this thing done. When I got back, I started adding new features one at a time. The goal was to make sure that at any given moment, I had a script that worked and could be deployed. This was very fun. It was almost like Test Drive Development.

I wrote the script in Oracle PL/SQL as I am pretty familiar with the language. When I had completed the script, I did a quick run of it in our tester’s environment. Ooops. It bombed out there. Some of their data must have been different than I expected. I traced down the problems and corrected them.

Before passing the script over to the testers, I read through a flurry of email regarding the usage of the script. At that point I found there were some holes in the requirements I initially collected. This was not a big problem. I just continued to add the new features I saw were needed. Now the testers have the script and they seem pretty happy. The alternative to manually do all the stuff that the script performs is evil.