An Interview

The guy that leads my team asked me whether we could accomplish all our tasks on time. I told him we needed either 1 more senior developer, or 2 mid level developers. He said he would arrange for us to get more people on the team.

Later my team lead asked if I would be available to go to our company home office on Friday. I told him no problem. Apparently they had found a candidate for us to interview. On Friday I left our customer's site a few hours before the interview.

I went to get some good lunch. Then I headed out toward my company home office. I confess I had never been to the main campus of company headquarters. The drive there was fine. But when I got there it got confusing. We have a lot of big buildings there. Each has a name, but the buildings themselves do not have labels.

So I tried to park in an outside lot, asking the attendant whether I got the right building. He told me I was off by 2 buildings. So I parked in the parking garage. I asked another guy where the interview building was. He had no idea. Finally I found a couple other employees who gave me great directions. I got to the building and found the interview room. There must have been a company sponsored lunch there before. The food leftovers we still on the table.

My team lead came by with the interview candidate. He left the two of us alone. The guy seemed nice enough. But he was not a GUI application developer. It seems he also lacked Oracle database experience. That was all I needed to hear. This guy was not right for the job. I told him about our project, then handed him over to the team lead to interview. I then reported to my manager's office. This was the first time I met my manager since I had joined the company. He said he was very busy. I asked him a couple questions, but assured him that I did not need much guidance. He knew this since I had worked on the project for a very long time before this company won the contract. My team lead came to meet us and concurred that the interview candidate was a no go. I guess we are going to have to continue the interview process.

Got my ThinkPad

My new company gave me an IBM ThinkPad for work. Unfortunately I cannot do much real work on this thing. It is just for company email essentially. I must wait to get another computer from my client to do my programming.

So that my first week did not go to a full waste, another developer let me borrow his computer at work for an afternoon. My job was to port some legacy Visual C++ 6 code to Visual C++ 2005. At the same time I was upgrading the database code from the Oracle 8 client to the Oracle 10g client.

So far I have had a little experience analyzing what it would take to do upgrades like this. In other words I was more prepared than most. However I did run into a number of things I was not familiar with during the Visual C++ 2005 move. Specifically it seemed strange that the new compiler deprecated most of the old C string library. Now we are recommended to use the secure versions of those functions. For example strcpy should be replaced with strcpy_s. And wouldn't you know it? They changed the interface to the function.

Having brought my laptop home, I connected it up to my wireless connection. And I found that there was a lot of e-mail waiting for me. This included a number of warnings that I had not submitted my time sheet electronically. Hello? I am filling it out on paper since I am new. I also found that I was scheduled to attend more training next week. I have mixed feelings over this. Since I have a lot of work to do, training may get in the way. Plus the training is on the other side of a traffic gridlock town. I still plan to go though.

All in all I am pretty pleased with my IBM ThinkPad from work. I sure hope I get a computer to do my actual programming at work soon. It is getting pretty old sitting around while lots of tasks are being assigned to me.

Maintenance Fire Drill

My new job has me reporting to the client's site every day. This particular client has some visitor parking. But it is limited and runs out quickly. There is some paid parking in the area. But it is expensive and a longer walk to the job site. So I get in early every day now.

Today I got in early as usual. One of our customers warned me that a high priority trouble ticket was issued in production. This is my third day on the job. But when a customer says something is high priority, I get right on it. I called up the sys admin at the site where they reported the problem. Users were getting kicked out of the application due to some Oracle errors.

The nature of the errors sounded like a database problem. Specifically I thought that the database itself may have gone down. But I have no computer so it is difficult to make progress. I thought I knew the phone number of the DBA lead. But when I tried to call him, I just got a message that said I should call the Help Desk. So I try the Help Desk phone number instead. I was surprised to hear the development manager answer the phone. I told him what was up, and he said he would get the DBA lead to call me back. I got that return call quickly. The DBA lead was getting ready to come in. He gave me some contacts at the production site that could check the status of the Oracle database listener. I found a developer who actually has a computer and has e-mail, so I shot off an e-mail to some production DBAs.

Then I went to another coworker to see if we could replicate the problem. This guy did not have any of the applications installed on his computer. That seemed wrong since he was an application developer. So I helped him install the apps. They gave an error. I asked him whether he had installed the Oracle 8 client. He said no. I tried to start the install of the Oracle 8 client on his machine, but gave up when the install started having some problems. By that time I spotted another developer that I used to work with. She had both the applications and the Oracle 8 client installed on her machine. She let me try to log into production. I did not find any problems with the application working in the production environment.

At this time I got a call from the development manager. He said he spoke to our sponsor in the customer organization, who relayed the fact that the problem was no longer happening. The production DBAs were going to close out the ticket. Our responsibility was to research why this problem happened in the first place. I determined that this was a job for our DBA Team. By this time in my career, I am used to fire drills like this. It comes with the job of doing software maintenance. But things are especially painful to me because I do not have a computer yet. I chuckled all morning when people came in late, and started asking around whether anybody addressed the high priority problem yet.

In the afternoon, application development had a team meeting. We were told how the duties for our team would be distributed. I was informed that I would be in charge of production support, with one or two developers acting as my backup. Could this be a reward for jumping on the high priority problem this morning? I don't know. But I do know I will be adding great value in production as soon as I get that computer.

Getting Fingerprinted

I got the word from our Help Desk that I was scheduled to be fingerprinted. And I was directed to not be late. Another guy who started the same day as I did had a similar appointment. We decided to show up together.

Now I got the address where we were to be fingerprinted. I assumed we would drive there. So I packed up my briefcase and went to meet my coworker. But when he showed up, he said we could walk there with no problem. I found out that this guy has a lot more stamina than me. Plus I was lugging around my heavy briefcase. I made it there, but was winded.

I should have known we were in trouble when I called the two points of contact, but nobody answered their phone. So I waited in the lobby of the fingerprint building. After a while somebody came out and told me to fill out a form. I complied. However the person came back and said they did not receive my paperwork, and that I was not on the list to be fingerprinted that day. Now this seemed a bit odd. Somebody from their office received the paperwork and scheduled me for the appointment. I got in touch with my sponsor at the client site. Luckily he still had the original forms. He faxed them back over and I was able to get the fingerprinting done.

It was actually a good fingerprinting, if you ignore the hours I spent waiting to get the missing forms resent. The new machine does not require and ink. It is a "live" print, in that a computer senses my print and creates an image digitally.

Not all things are going smoothly at the new job. I got no clue about the organizational structure. And I have yet to meet my manager. All I know is that there are 2 people who I am supposed to call up and report to. These guys are busy. One of the points of contact at my firm told me I was going to get a laptop. Later he said that a subcontractor had to take my reserved laptop for some emergency work. So it might be a while until I get a computer.

Hey I don't mind too much sitting around until I get a computer. But I do get concerned when people expect me to actually code up some fixes without a computer. A manager on our team asked me about the status of all outstanding trouble tickets. So I asked around to see if anybody from the company had done any work on the maintenance work. The answer was no. And since I had no computer, the status was that there was no progress at all. This alarmed me. But I guess the customer understands that the company has taken over the contract, and it will be a while until we get on our feet.

First Day New Job

Today I started my new job. The morning was spent in new hire orientation. I got to the meeting and was surprised how many new people were starting today like myself. There must have been at least 25 people there, if not more. I guess this is standard for a company that has 20,000 people.

The orientation room was full of Type A personalities. My new company is mainly full of management consultants. I chatted with some people sitting at my table. It was strange. Not many of them knew exactly what they would be doing. But they all shared the perception that we were working for an awesome company.

I had a different outlook. To start with, I knew exactly which project I would be working for. And me and other developers had pegged employees of my current company as "the suits". They dressed very well. And they seemed to show up a lot to meetings. This may be good work for a management consultant. But that is against the code of the programmer.

The orientation went pretty smoothly. I guess they have a lot of experience conducting orientation. But once I got to my job site, it seemed like mass chaos. A lot of people were glad that I was there. However I had a hard time getting settled. My first order of business was to find out the codes I could charge my time to. Then I found out (second hand) that I did not get the right information about where to go today. As a result, I could not pick up my computer. I hope things get better tomorrow. And by hook or by crook I plan to get myself a computer.

Being new at the job will give me a lot of write about. So look for a number of posts soon.

Last Day at the Job

Friday was my last day of work. I have worked for the company for 7 years. Two weeks ago I submitted my resignation. One reason for my departure is that my company lost the maintenance contract for the project I have been on. Another reason for my leaving is that the company seemed mixed up about which project I would work on next.

So on the last day of work, I went out with a bunch of coworkers. One coworker was staying with the company. However he was going to work for another division. He was told that an administrative assistant would come take his badge. After waiting all day, the guy just bolted. I guess the company doesn't really need the badge back.

I don't like to sit around. So I called up human resources and asked whether I needed to be debriefed due to my security clearance(s). The HR rep said no. So I wrote his name down and decided it was time to go. Then I tracked down the admin assistant who was supposed to come get my badge. I met her at the door of the building, turned in my badge, and went home.

This was an unusual way to end the day. Normally I would have thought that HR and security would conduct some sort of exit interview. The very next day I get a package from my company via US Postal mail. The letter in the package tells me to schedule an appointment with Human Resources prior to my last day of employment. The letter goes on to state that I need to speak with security services if I have a security clearance. LOL.

I know I worked for a large (100,000 employees) company. But how dysfunctional can you get? This was also not an isolated incident. There was a definite pattern of incompetence at this company. Maybe that is the way it works at all companies. I certainly hope not.

Back to the Build

Our configuration management team has a machine dedicated to building our app. It took a long time to get them set up so they could successfully perform a build. Now a new contractor is taking over the project. I got word from our CM guy that the new CM guy was having troubles. He kept getting errors from the Microsoft resource file complaining that it could not find an MFC header file.

I researched the problem. The header file is one that comes with the Visual Studio installation. So I figured that the directory which contained this file was not in the path. I also provided our CM team with an include directory that new users need to add to Visual Studio's configuration. I went home hoping that the build problem would be fixed.

Got a call the next day from the new contractor manager. He said they were still having problems with the build I told the manager that I know the full configuration for the build machine. So I told him not to worry. The new CM guy called me up. I made him verify that the required directory was in his path. He said it was. I then asked whether the include directory had been added in Visual Studio while he was logged into the machine as himself. It was not. He added the directory and the problem was gone. They got this done just in time. Today was my last day at my company. In fact, by the time the rebuild had worked, my computer monitor had be repossessed for another project, and I was walked out the building.

For some reason the new contractor has waited until literally the last hour to get the ability to do a build. There may be other things that they are behind schedule on. I hear that they are going to be working this weekend. I got the new manager my home phone number in case they run into any problems. Normally I am not this free with my phone number and time. But hey, they are giving me a job next week so I thought it was the least I could do. I am sure I will have a lot to say after I start up in my new company, but working on the same project I have been on for a long time. Stayed tuned for more stories.

Mail Auto Delete

I went into my e-mail box using Lotus Notes looking for a crucial contact from our security department. All I could remember was that they sent me an e-mail around October 2007. To my dismay I found that I had no e-mails older than January 2008.

Apparently my company has an auto delete policy where they retire old emails. I think this either has something to do with keeping the disk storage requirements low, or implementing a global policy to electronic paper trails (or lack of them). I guess I have benefited from this in that I never had to go in and clean out old e-mails because I have exceeded my mail quota.

But now I am stuck trying to recall my security contacts that were stored in e-mail. I imagine this is another way to go about locating the contact information.

Duplicate Data

I was off helping the test team duplicate a problem. Then I tried running back to my desk to help a developer with a compile problem. I got stopped in the hall by another team that was having problems. They said their job did not complete in the production environment. And they saw some errors in a log that looked like it was my code.

So I took a look at the errors. And I confessed that they were warnings that my code put out. But I wrote that stuff 2 years ago. I told them what I remembered, but said we could go to my desk and find out for sure in about 5 minutes. These guys were very happy with that. So I pulled up my code, showed them where I caught and logged the problems, and demonstrated that this had nothing to do with their job not completing in production.

These guys said they believed me, but wanted to look at my code any way. Hey I got nothing to hide. So I emailed it to them. I am sure they will arrive at the same conclusion as me. Late in the afternoon I heard a ruckus coming from a cubicle down the hall. Apparently they found the source of the problem. There were duplicate records sent to us from an external mainframe job. Their software was not written to handle such duplicates. And all kinds of people were making calls to various members in our customer organization to figure out what we could do.

It was a bit funny. The lead technical guy from the customer organization was old golfing. They called his wife to see if the golfer could call us back. Then they called the number 2 technical guy who had no real authority. LOL. They talked this guy into calling his boss, and his boss' boss on their cell phones. Eventually they got through to somebody who could approve a plan to eliminate the duplicate data. Normally we are not allowed to do things like that with the production data unless the customer approves. There must have been upwards of 10 people crammed in a cubicle calling the customers to get to the final resolution for this problem. In the end they had a trouble ticket opened up on the mainframe job that was sending us the duplicates erroneously.

I guess there is a rush to knock out any problems like this quickly, because tomorrow is the last day for our company on the contract. Another company won the maintenance contract. I did my part by fixing one last bug that I had previously projected would not be done before we exited. Unfortunately the other developers on my team could not resolve their problems, so they will most likely be fixed by the next company (or languish until the next company comes up to speed).

Pity the Customer

I took part in a rather sad conference call today with our customer. It might be the last one we do on this contract. Another contractor has won the maintenance contractor. So this is our last week. That was not the reason for the sadness however. It was the fact that I had to project that my team was most likely not going to fix any of the remaining software defects that had been reported by the customer.

The real shame is that the next contractor will require a lot of ramp up time to set up their infrastructure, learn the business rules, and make any progress towards fixing problems. So I could hear the desperation in our customer's voice. I piped in that we would continue to try to research and resolve the problems. But given the progress rate, and the difficulty of the remaining issues, it was counterproductive to raise any body's hopes. After this depressing conference call I went out to an expensive steak house and chowed down. I needed a little break.

When I got back to work, I eliminated most of the distractions. And then I got down to work. The problem I was working on was most challenging. The users were stating that the system was not behaving properly. Work was all queuing up for just one user. I identified a root cause of the problem being the actions of one particular user. So I had a sys admin go find out what the user was doing. The user reported that they were following the correct procedure. So I took that at face value. But as I went through the code again and again, both running it and inspecting the heck out of it, something was not adding up. The results they were getting could not have been produced by the code I was looking at. I even got a DBA to pull the version of all the PL/SQL code compiled into our Oracle database. Still no luck.

A key breakthrough happened when the sys admin said that whenever she looked over the shoulders of the user in question, the user followed the correct procedures, and there was never a problem. That made me retrace a key assumption I had been making all along - that the user was following the correct procedure. Silly me. Then I started running a barrage of tests, simulating all kinds of bad behavior by the user. I was finally able to recreate the problem. Then I narrowed down the actions to the minimal set of steps to recreate the problem. Armed with this most valuable information, I traced down to the code that was causing the problem. Yes the user was not following the correct procedure. But our software should handle this in an appropriate manner and not degrade the system work flow.

Some analysis revealed to me that this problem was introduced in the past year when some business rules were changed. The problem was that the rules were not uniformly changed in all the paths through the code. I got the approval to push out the software fix to our users. Normally I go through our normal procedure and get my code changes peer reviewed. But we are at the end of our contract and are literally locking down our source code repository. So I opted to schedule a peer review after the fact. I went ahead and initiated a software release with the bug that I had fixed. But I made sure I did not cut any corners during my unit tests. I documented everything. Made sure I did some critical regression testing. I have a feeling that our customer is going to be happy that they are getting one last release from us that fixes at least one of their problems.

Get With Reality

Last week I dialed into a conference call on all the open trouble tickets in our software suite. The customer wanted to know where we were with each of the tickets since this week is the last week of the contract for our company. So I went through the open tickets, and identified those that will not be fixed by the time our contract ends. I said that I was familiar with the problems. And I am also very familiar with the level of effort required to resolve the types of trouble tickets we had. And I guaranteed that these would not be fixed before we leave.

Now I did not want to be a jerk. But I also did not want to mislead the customer. So I gave some background on the types of the problems and why they took so long to resolve. I also said that we would continue to work the problems and try to make some progress. However I was sure that we would only be in the beginning phase of research for all the problems by the time our contract ended and our company stopped working on the project. After the conference call, my project manager came to me and asked whether the customer had got back with me to confirm their acceptance of my statements. I said no.

This morning I got a call from the Help Desk of the new company that shall be taking over the maintenance contract for this project. I was asked whether the customer had approved the plan to transfer the trouble tickets to the new maintenance contracting company. I said no. But I also pointed out the reality of the situation. The problems are not getting fixed this week. The user needs these problems fixed. And their company is taking over the maintenance contract. So approved or not, they needed to get ready to work these problems.

I guess since we are dealing with a customer that is a government organization, there is a tendency to want to follow some type of process. And there is also a desire to get everything approved by the government customer. However there comes a time when you need to face reality and take action. This is one of those times. You can try to hide. But reality will catch up with you. It is better to face it and deal with it now. New contractor, you have been warned. The end user and I both want these problems to be fixed. You won the contract. Now it is up to you to get busy.

New Cable Modem

I stayed home from work today. To make sure I would call in sick on time, I set my alarm last night. I knew I was going to stay home today. My plan was to take care of one or more long term projects that keep getting put off. Today I really needed to install my new cable modem.

Let me back up a bit. I currently have high speed Internet provided by my cable company. It is great. However I rent a cable modem from my cable company. Have been doing so for years. Finally I decided to buy my own so save a few bucks. I carefully went to my ISP's web site, and printed out all the cable modems compatible with their service.

So I called up customer service. I asked whether they needed to do anything on their end for me to use a new cable modem. Josh (names changed to protect the guilty) told me no. He offered to stay online while I tried it out. So I plugged in my new cable modem. But the lights on the front kept blinking. Josh told me he needed me to hook the cable modem directly to a PC. I informed him that my old modem was working correctly with my router, but I said I would follow his instructions. Never got the lights to stop blinking on the modem. After a while, Josh recommended we make some changes on my computer. I told him I was willing to try some things. But this made no sense. If the cable modem cannot establish a successful connection with the ISP by itself, nothing done to my computer would change that. At this point Josh scheduled a technician to come out and see me. And the end of the call, I volunteered to complete a survey in which I rated Josh as pleasant, but not well equipped to resolve my problem.

After hanging up the phone, I tried a couple things. I turned the cable mode on and off. And I connected it up to my router. I started to get some progress. On my computer, Internet Explorer brought me to a new user page regardless of the URL I put in there. I decided to call my cable company back. This time I got Angie. She said that they needed to change the MAC address they have associated with my account, but that she could not do this. So I got transferred to Kelly. Now Kelly was able to take my MAC address and enter it into the system. However after that I was unable to use Internet Explorer. Kelly said that she could debug the problem if I connected the cable modem directly to my computer. I did this, but Kelly had no luck. Then I remembered that I disabled my Ethernet port in my computer BIOS. So while Kelly waited, I rebooted, enabled the Ethernet port, and Kelly was able to get my one computer on the Internet with the new cable modem.

I thanked Kelly, asked her to cancel my service call, and got information on where to return the cable company cable mode. This experience has taught me that you need to have a lot of knowledge as a consumer if you want to call any technical support line. I bet it would have been a lot worse if my girlfriend or parents had made the call. Mapping this experience to the level of software support my team provides, I can understand the pain that our customers may sometimes have. In general our software team is pretty ignorant about the customer's business. And for some reason we just don't have many people who are competent with troubleshooting. Now I have spent many years improving my ability to be an expert in our customer's business, as well as knowing how they user all of our applications to reach their goals. The real challenge is how do I motivate or train other developers to do the same? I don't want our customer to get the sorry level of service I got when I called my cable company today. Perhaps this is an impossible task. But if it is possible, no matter how difficult, I want to learn how.

Being Responsible

Our customer had opened a trouble ticket documenting times when the production system seemed to hang up. I assigned this ticket to one of our developers. He had a hunch that another developer was running performance intensive queries which caused the problem.

So we had this developer try to recreate the situation in a development environment. But we had no luck. There was just not enough data in our development database to make any queries last very long. The developer then came up with a plan to have the queries be run in production to see if we could replicate the problem. Our client had some reservations about this affecting their users, and requested that we join a conference call to discuss it.

I should have known something was wrong when I dialed into the conference call, but the developer had not called in. However I was familiar with the plan and pitched it to the customer. I took good notes. I then went to the developer and provided him with a list of action items that needed to be done to make the production test happen. Later I got an e-mail from our customer asking me to make the production test happen. Apparently the developer just e-mailed the customer and requested they do all the work to prepare for this test. I immediately called up the customer and apologized for the inconvenience, and told them I would get this developer to do all the leg work. I went to have a talk with the developer. But he had left for the day. So I went about making a detailed list of all the tasks that needed to be accomplished. And then I specifically tasked the developer to personally see to it that he performed all the tasks.

Our company recently lost the contract to perform the maintenance work on our project. We are finishing up the work on the existing contract. I think we must have had too many developers like the one who passed the buck on this production performance test. Now I understand that not every developer can be a rock star. But I expect everyone to take responsibility and follow through with work we need to do. Time and time again I have disappointed though. It is my hope that the next contractor provide better customer care.

How Slow Can You Go?

Our users had complained that sometimes the system slowed down to a halt. This problem got assigned to a developer on my team. Unfortunately the developer was out of the office for a few days last week. Tomorrow I need to provide a status on the progress made on this trouble ticket. This made me go work with the developer personally to get the research moving faster.

The developer got some feedback from a sys admin that 3 users were causing the CPU to be utilized at 100%. The developer was then trying to determine what these users we doing. So the developer sent an e-mail to the customer asking what one of these users was doing on the day when the system stopped working. I immediately saw the problem with this tactic. The user in question was actually a developer from another company. So I told the developer we don't need to go through the customer. We could go straight to the developer.

However I retraced the steps back to the facts of the matter. Yes maybe these 3 users identified by system administration might have been involved with the problem. However maybe they were not. I showed the developer some other event logs showing other users having recurring problems when the slowdown occurred. Earlier I had e-mailed the developer about this, but he just responded with some questions. Today I sat the developer down and showed him how I wanted him to generate test data to replicate this recurring problem the users encountered. When we had the data ready, we found that when certain users went to some specifics screens in the app, all users in that part of the app were frozen.

I am not sure if this is the cause of the problem. But we ran some good tests. Next step is to get sys admin to monitor the system when we duplicate the problem. We also went and talked with the other developer who sys admin says was involved with CPU 100% utilization. And we worked out a plan to have him try his work in development to see if we can replicate the problem. In the maintenance world, I have found that most developers need a lot of prodding to get them to make significant progress on trouble tickets. I am only sorry that I am the one who need to hold the prod.

H1-B Visa Program

In case you have not heard of it, the H1-B program is a specialty occupation visa. The number of visas issued each year is subject to an annual quota set by congress. Normally this quota is 65,000 visas per year. There are some exemptions to the quotas for universities, nonprofit organizations, and government research labs.

The idea behind the H1-B program seems to have some merit. We have some voids in the commercial sector that the educated foreign labor market can fill. You then provide a special vehicle for these individuals to come work in the United States. As with most things, this gets complicated real quick when you consider its effect on US workers.

To provide some recent history, here are the quota limits set by Congress during the last 10 years or so:

1998 quota 115,000
2000 quota 195,000
2004 quota 90,000
2006 quota 65,000

The problem with the H1-B program is when the high tech job market gets soft. The additional H1-B visas provide extra competition for the scarce positions. The result is wage depression. In theory, employers are supposed to pay prevailing wages to H1-B visa holders. But you can see where the advantage is all with the employer of a visa holder.

This topic obviously requires additional discussion. It is difficult to think objectively when you are worried about your job being outsourced to a foreigner here with a visa. Likewise it is no fun when you are out priced by somebody who is bound by a visa which allows continued employment in the country. In general, I am in favor of letting the free market decide wages and unemployment. But this issue hits too close to home. And I contemplate whether visa restrictions can be justified to stabilize my job prospects.

Serious Note

A new person joined our project late in the game. We were getting close to the time when the project was going to end. This guy was tasked with helping us close out the project correctly. Apparently he had experience in this from other projects ending in our company.

At first all I heard was that the guy had just come off from sick leave. I assumed he was a fellow that did not have a project to charge to, so we were a holding place for him. Later I found out that he had 40 years of experience with the company. I thought I was an old timer after I received my 5 year service award.

Then at one meeting someone asked the guy why, after 40 years of service, he continued to work at the company instead of retiring. He confessed that he wanted to retire. And I think he had already started to initiate it. However he now had cancer. And he needed to be working to have the insurance to cover the expensive medical treatment he needed.

And we usually think we have it bad having to work to pay the mortgage. This guy was literally working for his life. This reminds me of another gentleman who worked for this same company. However that story is also an unpleasant one. So I will get back to posts more specific to software maintenance if I can.

Memory Stick

So I have a huge amount (8 Gig) of data that I need to move. The problem is that it is on my computer now, and I want to move it to a computer I shall get in about a couple weeks. My current computer needs to be wiped clean.

I have a CD burner. However it will take a lot of CDs to hold the whopping 8 Gigabytes of data that I have. Then I thought I could transport the data with my memory stick to some other temporary storage location. But my old memory stick only has 256M of storage space on it. That is even worse than a CD.

The solution? Time to upgrade to a bigger memory stick. Looks like you can get them in 4 Gigabyte size for around $50. That seems like a steal. Of course it will take a long time to copy 4 Gigs worth of files at a time to a slow device like a memory stick. But as long as it works, I see no problem with this. The data I am trying to store is worth a whole lot more than $50 to me. It is also worth the time and trouble it will take to preserve it.

Now if only they made some type of Zip drive that holds 10 Gigabytes worth of storage, I would be golden. Its not like I know that such a beast does not exist. But I no longer follow the PC peripheral technology like I did when I was younger. For now I am sticking with the memory stick solution. Maybe a little pun intended there.

Requirements Are Key

Recently our customer informed us that one of our trouble tickets was very important to them. I let them know that I would have a developer assigned to work exclusively on this problem. This developer was able to duplicate the behavior that the users experienced. However the developer was not sure what the correct behavior of the application should be.

I was monitoring the work on this task. And I immediately jumped in and send this to our Requirements Analysis Team. They are supposed to have all the business rules documented. The answer I got back from them was that the requirements do not state what the customer expects the software to do. So I had our developer communicate this to the customer.

The customer did some research and came back with a requirement number from the appendix of our requirements document. There indeed was a requirement that stated exactly what the customer was asking for. This was all we needed to charge forward and modify the code to match this requirement. Some people may question why this level of documented requirements is even needed. And for some instances it is not. However we often have various members of our customer organization with different ideas of how the software should be run. We also have some same individuals changing their minds based on who know what factors. This creates the need to capture requirements. Otherwise developers would not know what to do in any given situation.

It seems the only thing our team did wrong in the current scenario was not know the existing requirements well enough. If I were on the requirement team, I would know the rules inside and out. Having been on the project for a very long time, I actually do know what a lot of the requirement say. The customer is a long term one as well. They know what is required of the software better than most developers on my team. I guess this is what you would call a very educated customer. Sometimes this is a good thing.

Interviewing and Consulting

A prior coworker of mine has been trying to get me to come work for his company. He is sure I can help his project succeed. In fact, he went to bat for me, informing his managers that they need to hire me. Given my current uncertain future in my company, I arranged an interview with them.

When I arrived at the company for the interview, I found it strange that their visitor parking lot was closed because it was full. WTF? I know I came late in the day. But you think they would have reserved some space for me. Luckily I plan for disasters like this, and was super early. So I parked nearby and walked to the building.

I met the manager I had spoken on the phone with. He escorted me to the cafeteria, which was strange. Then he left me with a director of the company. The director said he heard about my interest. He asked briefly about any skills I possessed other than C++ programming. So I told him I do stored procedures, specializing in Oracle PL/SQL. And I said I have done some UNIX development mainly with Korn shell scripts. It appeared his question was just some small talk. He really wanted to talk salary. When I told him the amount that I needed to may the switch, he said that did not fall in the range of his development budget. However he said he could match my current salary plus 3% to 4%. We discussed some other company benefits. And I told him that if he could arrange some critical benefits that I need, we could seal the deal. He said he would find out if that was possible and would get back with me.

After my meeting with the director, I was going to go home. But he said some developers wanted to talk with me regarding some work they were doing. Mind you this was not part of the interview. But they needed some help with something that they knew I had expertise in. Since I took the day off for the interview, I agreed. I spent about an hour doing some consulting with their development team. I saw that they were somewhat lacking in a business domain for which I am a guru. These guys were all excited that I was potentially joining their team. And I was happy that they said they were getting all the latest development tools. We shall see if this opportunity turns into the right job offer for me. It may be a win-win situation for all parties involved.

Interview Tactics

I returned to interview with the project that may be my next home at my company. However I did a little homework beforehand. I reviewed some general C++ information. Luckily the last time I read Stroustrup I took some good notes. In addition, I researched the legacy system that the project I interview with was taking over.

At 11:00am I showed up to the interview location in my building. At 11:15am there was still nobody there. So I called my manager and left him a voice mail. I bolted at 11:20am. Called up the person who set up the interview. Apparently the whole team that was supposed to interview me either forgot or were busy. So we rescheduled. At 2:30pm I showed up to the interview location. By about 2:40pm my boss stopped by. I was the only guy in the room. We tracked down the guys that were to interview me. Not such a good start. I am wondering if this is indicative of their interest in me.

They interviewers asked me standard stuff, such as what my background was and what roles I play on my current project. It has been a while since I have been on an interview. But I would say I am pretty good at interviewing. One high point was when they asked me to write a C++ assignment operator on the board. I usually don't write these operators in my code. But I had studied up my Stroustrup notes on assignment operators. And since my notes on the subject were a little lacking, I had just done a study by searching for everything I could find on the web regarding the assignment operator. So I breezed through that question, nailing even the finer points such as checking whether the coder assigned the object to itself. I believe I nailed this interview when it came time for me to ask questions. I posed a lot of questions that showed I had a deep knowledge of the system they are trying to rewrite.

So far the only feedback I have received is that they are interested in me. However the last time I interviewed with this group, I got the job, until that transfer was cancelled. So I am a bit skeptical at this point. I asked my project manager to go find out where I am exactly regarding a future position on the project.

Priority Change

We are completing the work on a software maintenance contract. Our customer wants us to fix some critical bugs before we leave. The software staff is decreasing as people leave for other jobs. Therefore everyone is doing more work at the moment.

I saw an e-mail from our customer headquarters inquiring whether they should increase the priority of some problems we are working. Their goal was to get the fixes done ASAP. We had a conference call to discuss the trouble tickets. Headquarters again asked whether they should up the priority.

So I diverted the question to our contract sponsor in the client organization. They wondered how much progress we had made on the high priority tickets. I told them not much. I cautioned that increasing the priority would not get the problem solved quicker. In fact it might delay the resolution since there is more status reporting overhead when the priority of a ticket is high.

For now I have talked everyone into holding off from any priority changes. But I got with my developers and told them to drop everything and work on the high priority tasks. I have also been monitoring their progress and providing help when they need it. This is what the customer wants a team lead to be doing. My trouble in doing this is that I also serve as a developer myself, and have my own normal work to do in addition to the team lead duties. I hope we can knock out these high priority problems quickly.