Step Back

Today I found some e-mails asking me about the status of a particular trouble ticket from our customer. It was strange that somebody was asking me. Our bug tracker showed the ticket was assigned to another developer. Then it hit me. I was asked to join a trouble ticket conference call with the customer. Let me tell you about that debacle.

The customer had a list of outstanding trouble tickets. They started with the first ticket and asked the attendees what the specific problem was. This question was followed by silence. I thought this was a total waste of time. So I jumped in, quickly scanned that problem details, and explained the bug in normal English. I then proceeded to do the same for every other trouble ticket on the list.

Now that I spoke up about the myriad of trouble tickets, it seems that I have been associated with the tickets. We have a team of about 7 developers. All of us are working trouble tickets. However I was the only guy that stood up and spoke at the meeting. So now I get the benefit of being a point of contact for some of these that still have not been resolved.

To speak up at the meeting is the responsibility of the team lead. I am not the team lead. The team lead was actually pretty quiet during the meeting. This has happened a long time ago in the past. My reward for stepping up was becoming the team lead. It took a while to shed that responsibility. I don’t want it. Perhaps it is time to remain quiet during any more meetings I get invited to. Otherwise I will just have more work to do, along with more responsibilities. I am not looking for that. There is no financial benefit to it.

What's Hot

The Gartner Group has come out with a Top 10 list of hot technology for next year. It comes as no surprise that cloud computing tops the list. I find it interesting that security is right up there near the top as well. Long term I plan to beef up my knowledge in the security industry.

Mobile appliances ranked well too. I thought that only counted for iPhone apps. When I read that social computing ranked high, I could only elicit a yawn. In fact I would think that social computing may be hitting its peak.

Virtualization was listed in the Top 10. However it also seems like yesterday's news. I think I will give the future some thought and come out with my own Top 10 of tech for 2010. That has a nice ring to it. Here a is preview: Java and .NET will not be on my list even though I want to learn them well.

Unwilling Participant

Somebody asked me for some source code from our system. Luckily I no longer had access to the back end code. Therefore another developer on the e-mail responded with a copy. This caused the requester to determine that there were problems with the code. It was a set up if I ever say one.

So my manager asks if anybody knows about these problems. Like a fool I answered that yes, it appeared that our team did not do the yearly update we were supposed to do. Another team manages the code. They are supposed to make this happen on a yearly basis.

Much discussion ensued. The a plan was formed. I was tasked with doing some initial research so all the requirement could be gathered. I asked my boss about this research that had been assigned to me. Another bad move. After getting clarification, I found that I then needed to fix all the problems. I should learn to just stay quiet, even when I know some information. On this project you get the bonus of doing more work if you pipe up. Normally that would not be a problem if I were twiddling my thumbs. However I am oversubscribed. Now I just won myself some more unpaid overtime. Weak.

The Closer

Yesterday as I was leaving work my team lead called me. He directed me to focus on a certain customer problem that was about to be our project's high priority. I made a note and left anyway. That night two of our top guys started looking into the problem.

When I got in the next day, I put this problem at the top of my list. My team lead called me up. He said that some guys started working the problem, and that I should pick up where they left off. I told him that one guy should be assigned the problem and take it to closure. At that point I definitely became that guy.

So I called up the customer. I had some ideas. The customer gave me some information. So did one of the other guys who worked the problem. I had the customer runs some tests. Then I logged into their database and figured out what was going on. The customer wanted some more tests run. And they wanted details on how some new parts of the system worked. When that was done, the problem was solved. I am like your 9th inning relief pitcher in baseball. Call me in when your starter is worn out. I will close out your top priority problems with expertise.

Source of Failure

I just read an article in Software Development Times. It talked about the continual failure of big software projects. This article had some authority as it included quotes from Grady Booch. It called attention to the fact that despite all kinds of new technologies, projects continue to fail at a critical rate.

Failure is defined broadly. The project may be late. It may cost more than anticipated. Or it may not contain everything that was needed. Given this definition, most software projects are probably failures.

What are the causes of such failures? It might be requirements problems. Specifically teams are not validating requirements. There may be programmers who do not follow the designated architecture. Or there might be poor contingency planning. We continue to fail, and don’t learn from our mistakes. There is a lack of best practices being used in the industry.

Here is a pattern for disaster. Keep adding requirements piecemeal. Then try to deliver a system that implements them all. Fail. The overall source of software project failure is human communication errors. Here is how you tell whether your software project has high quality. Check whether the software does the job it was required to do. Furthermore, test whether it does this correctly. If not, you can add you software project to the list of failures.

Microsoft Tech

My customer has paid for some type of Microsoft membership. I think it might be an MSDN subscription. I have been so busy at work that I forget what I got. One of the benefits of this program is that I get a subscription to the print edition of MSDN magazine from Microsoft. My first issue came this week.

I have not been keeping up with Microsoft technologies for a number of years. Instead I am focusing on the business needs of my current customer. So it was tough to get through a lot of articles in the MSDN magazine. There were a boatload of acronyms – WCF, WPF, and WF. All I could say was WTF.

WCF stands for Windows Communication Foundation. This is a piece of the .NET framework. It is used for building SOA applications. WCF defines the communication of web apps. It uses XML as the protocol.

WPF stands for Windows Presentation Foundation. It is the graphics subsystem of Windows apps. This initially was shipped as part of the .NET framework. It is based on DirectX technology. Developers employ the XAML markup language to describe the UI.

WF stands for Windows Workflow Foundation. Like WPF, WF was first released as part of the .NET framework. It helps developers define how long running programs operate and store their state. Another similarity with WPF is that workflows in WF are defined in XAML.

If I want to get back to staying current with Microsoft technologies, it looks like I got a lot to learn. This is difficult as Microsoft is continually coming up with new technologies to learn. It will be like chasing a moving target.

Bitmap Filtering

Today I got a call from my team lead. He needed help. We have functionality in one of our apps to filter out spreadsheet rows based on values in the columns. He added a new column. But he could not get the filter working.

I got a couple files that were changed. However I could not get the software to build. There were additional files missing. I kept iterating between getting the new file changes, compiling, running, and finding I was lacking more files.

Isn't this what source control is for? By the end of the day I got the latest code. This was partly an exercise in assuring that all the file changes got checked in. The filtering was still not working.

I started to make some code changes to try to get it to work. No luck so far. After putting in a couple extra hours, I decided to give up. Normally I am focused on solving problems. But this task seemed boring. Some dude coded some stuff that did not work. It got reassigned to me. If we were not in such a hurry, I would have thrown out the broken code and started from scratch myself.