So there you have it, a fairly typical rundown of what my work day is like. Today was slightly atypical in that I didn’t have has many meetings as I would normally have. Other than that, it’s pretty standard and clearly not-too-exciting.
I have an office staff meeting that I have to attend, and then I’m off to the gym to do a cardio workout. Then home, dinner, bed, and the cycle starts all over again tomorrow.
Those interested can view the entire thread of related “A typical work day” entries here.
The updated data model is now completed. I have to upload it to the project site and then send an email to some people letting them know that the model is available if they want to look at it, but it went pretty quickly (I did the updates in about an hour).
Because I have gotten this much done, I can begin to plan what I need to work on tomorrow. At this point, I think the bulk of the day tomorrow will be spent on the preliminary integration of the Projects database with some other corporate systems, in particular our financial system. I now have access to BusinessObjects which allows me to build some test queries against the financial system. The plan is the pull the necessary data from the other systems into our system in a bi-weekly automated synchronization process. I’ve got a pretty good understand of what is needed and I can probably get that done tomorrow. Once that’s done, I need to begin work on some interface enhancements, including a better search mechanism.
At this point, I’m getting hungry (I didn’t eat lunch, remember) and I need to eat something since I’ve got a cardio workout after work today. I didn’t pack my lunch today because I didn’t get to the grocery store this weekend, so I’m going to run downstairs and grab something to eat.
Back to work. I managed to read for half an hour and then slept for close to half an hour at lunch, which is about average for me. That mid-day nap makes a big difference in my energy level for the rest of the day. I’ve been doing it for years and years now, and I am able to fall into a pretty deep sleep almost instantly. I would highly recommend it to anyone who has the ability to do it.
While reading Lunar Prospector, I read how they divided up the technical documentation of their proposal and I thought that, with some modifications, that same organization would work for the technical documentation for a software project. (The modifications accounting for the fact that we don’t have to fly our software through space.) I jotted down a note on my small whiteboard to remind myself to investigate organizing the Conference Services Project documentation this way.
When I checked email at 1 PM, I found a message asking if it was okay to cancel our weekly project meeting tomorrow for the Projects database. There is a gap of a few weeks while the sponsor of the project is out of the country and we can’t roll the prototype into a working production environment until he is back, so the delay makes sense. It also means I gain a usable hour tomorrow! I replied that I was fine with that, but that we should get some confirmation on the budget we submitted, as it was not non-trivial (close to $40K, through the end of December, most of which was for my time and several days of a tester).
I point out these last two items as examples of how things like email messages and ideas I get from my reading can impact a typical day and ultimately, my week. The idea for organizing technical documentation will add to the work I have to do on the CSP, but will ultimately result in better technical documentation. The cancelling of the weekly Projects DB meeting tomorrow gets me an hour of time back, which is always good when I am as busy as I have been.
Finally, I have to send my boss (who is out this week) an email message suggesting that one of the new developer positions for which we are hiring be located here in the Washington office. There are some space constraints in the Santa Monica office and it might be a good idea to have another team member out here (there are no such constraints here). I know his concern will be that the person will be unsupervised but that is not true. I can both supervise and mentor the new hire if they work out of this office. I need to get that message written and sent off sometime this week.
But for now, back to the real work…
Okay, the bulk of the changes related to the employee ID are now complete. I just ran a quick test and was able to pull up a project summary in the web interface, which is a big step with regard to these changes. The last major step was to run a SQL script that would convert all of the old identifiers to the new identifiers. This made me a little nervous because even tough I was working with prototype data, it is still a chore if the data has to be reloaded because of a bug in my code. I therefore tried to run a few simple test, before running the actual SQL script. Second, I more or less guessed at the script in order to perform the fasted possible conversion. What I ended up with was something like this:
set ID = (
WHERE IRKey = ProjectStaff.ID)
WHERE ID = ID
NOT ID LIKE 'a%'
That last LIKE clause was to eliminate the test cases I ran. When I finally pulled the trigger on this, all 350+ records were updated within milliseconds, and skimming through the data afterward, it looks as though they were all updated correctly. This means that this afternoon can be spent doing two things related to this change:
- Finding any more references to the old PersonId values in the code and changing them.
- Updating the data model.
Someone stopped by my office a little while ago to see if I could get some software set up on three people’s machines so that they could test the work order part of the Conference Services (conference room scheduling) application. I hadn’t planned on doing that this afternoon, but it looks like I’m going to need to set aside some time to do that now.
Incidentally, I did get the Apple Store and got my case for the new iPod (a very sporty one that has some additional attachment, for instance, an arm band!). I also picked up a Universal Dock and a USB power supply. It cost me $100.
It’s close to lunchtime, so I’m stopping for lunch. I had a bagel late this morning so I’m not hungry. Just going to read more of Lunar Prospector and perhaps nap if I get sleepy. It’s been pretty quiet on the email front, but that’s because my boss, and three of my co-workers are out today. In any event, it’s been a fairly productive morning. Back for more later.
Sometimes, software development is like surgery. I am in the middle of code changes that will allow the use of the proper employee ID as the main identifier for people. There are multiple steps involved. First, I had to change all fields in the database that referred to PersonID and were integers to the new EmployeeID and set them as varchar(10). Then I had to identify each place in the source code that referred the old value and replace it with the new value. Finally, I had to make changes to database stored procedures that referred to the value. I have completed this cycle once, so far, and have several additional stored procedures and code functions to update. In the meantime, the application is not working because all of my changes must be in place for this to work. So at this point, I’ve cut open the chest cavity, and severed some arteries. Now I need to reconnect those arteries to the new attachment.
In the middle of all of this, I paused to submit my expense report for my trip to Pittsburgh last week. We have an online system for doing this and it took me about 10 minutes to complete the process and submit my hotel receipt. I am owed just over $300 for the trip, which I expect I will get on one of the next two paychecks.
I also decided that once these identifier changes are complete, I’ll need to completely update the data model document for the application so that the entity-relationship diagram matches exactly what is in the database. I’m supposed to send a copy of the data model to some of the customers anyway, so that they can evaluate some of the fields of the database in order to answer some of our technical questions regarding security. So once I’m done with the current “surgery”, the next step is to update the data model.
In the meantime, it’s just after 10 AM, which means the Apple Store is now open. I need to run over there really quickly in order to pick up a new case for my new iPod (the old case won’t work for it). Forunately, the Apple Store is in the mall above which my office building sits so it will take only a few minutes.
9 AM. I spent the bulk of the last two hours in a meeting and now have time to get started on the conversion of the ID number in the project system. I usually check my email once an hour, on the hour, rather than keep email open throughout the day. This prevents distraction and interruptions in “flow time”. So I checked email and was pleased to see that I had no mail upon which I had to act. A co-worker gave me an article on some good “soft skills” interview questions and so I’m going to spend a few minutes updating our wiki site for technical interview questions (we are in the process of hiring for 4 new developer positions within our group). Then I can get some real work done.
It seems that a lot of people don’t really have a good idea of what it is I actually do at work, so in the spirit of the Day-in-the-life series of entries I did back in August, today I am going to write about exactly what I do here at work.
First, some background information. I am a software developer. Some people like to use the term software engineer, but to me that is an insult to those people who have worked hard to get an engineering degree. Other people like to call themeselves software “architects”, but I don’t like that either, for similar reasons. A software developer is the simplest description of what I do. I work for the “Applications” group within our IT organization. The “Applications” group is responsible with internal application development and implementation with the company.
I am currently working on two projects. The first project, and the one on which I spend the bulk of my time (75%) is building a project tracking system for one of our large research divisions. Currently, much of the project “meta-data” for this division is tracked on Excel spreadsheets. They would like a searchable, web-based database of this data which would help them in seeing what the state of various projects are, in addition to providing them with an easily accessible source of information when putting together future proposals. The project is being done in three phases. The first phase was to build a prototype system. That was completed several weeks ago. We are into the second phase now, which is to harden the prototype into a usable application, and integrate it with other corporate systems. The third and final phase involves quality assurance. We are taking a “rapid application development” approach on this project. This means we are focusing less on design documents and more on getting the code written and the application up and running. We then show what we have to the customer and make changes based on their suggestions.
The second project I am working on is a project to develop software that will make it easier for staff members to reserve conference rooms and related services. I am working on this project in an advisory capacity. I have been overseeing the quality assurance (testing); I also worte the code that integrates the off-the-shelf product we purchased with our work order system. And I am supposed to be developing the information and metrics reports. I spend about 15-20% of my time on this project.
Today, however, I am spending all of my time on the Projects database. And the first order of business today is to convert the internal identifer for people from one value to a more standard value. This will make it much easier to integrate this system with other corporate business systems. You see, right now I have stored the ID numbers for staff captured in this system as integers, not the actual employee IDs we use here. There were good reasons for doing this when we started the project, but now that the prototype is complete, these integers needs to be converted to normal employee IDs. This involves two steps.
- The existing data must be converted to the employee ID
- Certain parts of the code must be rewritten to use the employee ID going forward
One that is done, the next step is to begin the design of an integration between this project database system and our financial system. I am hoping to make good progress on both of these things today. But sometimes, reality rears it’s ugly head (in the form of meetings and other interruptins). So let’s see how things go.