just the facts
April 27, 2006
In some detective stories people always tell the truth. They get to the point. The private eye just has to get beat up a couple times and connect the dots. But in real life people often shade the truth, and not just because they killed someone. People have their own stories to tell, often not the one you want to hear. You have to piece the narrative story together yourself. When developing a new system, or even modifying an existing one, figuring out what the requirements are is detective work. People can’t just tell you what they want. People have a hard time describing what is already there. They are not necessarily being difficult, though sometimes they are. Communication is hard. Communication is not like conversation, which can meander and backtrack, where your friends can ask questions. I can tell you about my part of the process, the rest is hearsay, but the English language does not have a robust system to denote the authenticity of a statement. I may not understand my process very well. Processes have a way of existing because of historical accident, not because it is the best possible way to do something.
People may have an agenda. They don’t want to sound stupid or ignorant. They may fear this new system will take their job away. They may fear that the new system will make them look stupid. They may not want to tell you something because their boss told them to or they don’t want to admit that they follow procedures that aren’t allowed. They may not know and make stuff up–it’s amazing how many supervisors do not know how their section really runs.
The analyst has to play detective. This is quite fun. But it is not the straight forward ‘just the facts’ process the textbooks suggest.
use cases and the art of systems analysis
April 20, 2006
Programming is fun. Programming is solving puzzles. Programming is making things without getting dirt under your fingernails. Programming is craftsmanship were you can be quite proud of the finished product. The act of programming is intense and focused. You get into the Zone. I’ve written code while in that state and looked at it later and think, wow, how did I figure that out?
For professional programmers, you do not get to program about something interesting. You program what someone is willing to pay you to program. Mostly accounting systems and other business stuff. Move data from this pile to that pile. So most programming is not about something you would care to know about on your own. So people have to tell you what something is. But they speak a different language. Translating those requirements into specifications one could code from is called analysis.
It used to be called systems analysis but now it’s usually called business analysis. It used to be systems analysts were a higher form of programmer but now business analysts are a lower form of end user. The whole process of analysis gets no respect. How hard can it be to write down what you want?
But communication is hard. Expressing yourself clearly is hard. Listening is hard. Figuring out what to do is hard.
I have the suspicion that programming attracts people who aren’t especially social to begin with. If I would rather not talk to you on general principles, I’d really rather not talk to you day after day digging in to get a deep understanding of some problem domain.
So why don’t you just tell me exactly what you want? Just tell me how you use the system. What could be simpler? You know how to use the system. Right? Write me a case of use. A use case.
Next, when dinosaurs roamed the earth: life before use cases.
Backstory: September 30
April 18, 2006
I am writing this entry rather after the fact. Because of certain agreements I won’t detail where I worked or with will obfuscate some with whom I’ve worked. I’ve been a programmer-analyst for a little over twenty-five years. Almost all of that time at this one company. Before that I worked for a software house. I switched jobs with the intention of finding out what in-house programming was like. And then after a year I would go back to consulting.
For various reasons (do I need a reason?) I stayed. I worked on a variety of systems over the years, mainframe COBOL IMS applications, telecommunications front-end systems running on personal computers, voice response systems, inventory systems using bar code scanners. I took on a variety of roles, programmer, analyst, unix system administration. I got used to running my own projects though I was never officially a project lead. The last five years I concentrated on systems analysis for one project. I wanted to concentrate on analysis for a number of reasons. Partly because I think it’s hard and I like challenges. Partly because I had gotten a little tired of having to come up to speed with a yet another programming language.
The project itself was way too big. There were too many business rules to translate into code. The programmers had been working full tilt for years and were exhausted. The end-users were cranky. I was thinking of getting out.
When I started programming I had made a vow to myself that when it stopped being fun I would get out. Programming wasn’t my life. It was a job. Something to pay the bills. That it is fascinating and fun and doesn’t require an advanced degree or a license was a bonus. But it wasn’t fun anymore.
I had stayed at this place long enough that I could take early retirement and get a pension. I’m cheap enough that I could conceivably live off it. Or anyway, I would always get another job. I decided to plan as if I would quit at the end of the year. I needed to figure out what my realistic options were, to figure out what my finances looked like.
On Friday September 30th, K called me and asked me to meet him. [Names have been altered to protect the innocent but also because it sounds more Kafkaeque this way.] But not in his office, in someone else’s office. Not a good sign. I went over there and the secretary had an odd look when we exchanged greetings. K had a person from human resources in tow. So I knew I’m getting laid off. We went into a neutral office. K told me that my position was being eliminated as of the end of the year. He was really sorry, blah blah blah. I asked if I still had to go on that business trip to Birmingham next week. Hm, yes.
K ducked out and left me with the HR person. I talked briefly with the HR person. I would get an enhanced retirement package, five points added to the years worked (WooHoo! No, seriously this was a nice thing.) I didn’t really have any questions. I’m not good at thinking on my feet like that.
Then my project lead and I talked a little bit. He assured me it had nothing to do with my work performance. He said the entire analysis team was being disbanded. Some of the programmers were axed as well. We were over budget and the client wanted cuts.
Most of the team was out that day. They had just delivered a production release of the system. That was why I was going to Birmingham, to show the flag when the system came up on Monday. The programmers were having a well deserved day off. There weren’t many people who knew what was going on. So there weren’t many people to talk to. I noodled around a little bit, practicing being whimsical, then decided to call it a day.
R called that night. He was still at work. He’s probably my best friend at work. I can tell because he’s the only person I feel comfortable enough to razz all the time. I think he was more upset than I was. Of course, I was still somewhat numb and perhaps in denial. Now, I had been thinking of retiring for some time now anyway. The project was really toxic and I needed to get out. I was tired, burned out. T, the lead programmer on the project, and I had had private conversations about being burned out and becoming librarians in our next life. So in a way this was a good thing.But work is very much your life, very much your self-image. And there is a difference between planning on something and having someone else do it for you (or to you).
Sunday, I flew out to Birmingham. The trip was very strange, as if everything were ending and crumbling apart at the last minute. I was checking in at San Francisco. The airline self-service kiosk was kind of cranky and someone had to help me. The kiosk said the flight out of SF was delayed but I still had over an hour between flights. So OK. I check my luggage. Most people don’t anymore but I don’t like to shlepp luggage around airports. The ticket person looked at the tag and said this isn’t going to work. I didn’t have a hour and a quarter between flights. I had five minutes.
Another agent volunteered that the computer was screwed up. So it was GOOD to have a person in the loop. [Everything has a lesson to teach an analyst. Don't trust the computer. Include feedback loops. Let humans insert themselves into the process.]
The agent called around and got me rebooked on another airline. Oddly, I was booked onto a flight I had originally passed on because it was so expensive. Anyway, I fly to Dallas and find my coworker Bernardita in the lounge waiting for our connection. [OK, so maybe I'm giving up this Kakfa thing.]
So, has she heard the news? What news? She’s part of the analysis team. Since it’s disbanded she’ll be reassigned to some other team, some other project lead, some other task. She’s affected too, and no one told her?
Bernardita was taken completely unawares. As she later retold the story, I dropped the bomb on her then walked off to get something to eat, while her jaw drops to the floor. Sounds about right. Bernardita later found out who the others were. In my typically selfish way, I hadn’t pressed to find out who they were, I was concentrating on myself and my own predictament.
I wanted to use the trip as an opportunity to say my goodbyes to the clients. I had grown rather fond of them and liked the idea that I could take my leave in person rather than over the phone or through emails. There were complications even to that, which I’ll relate next time.
Starting and Ending
April 12, 2006
I plan to write about retirement, or getting laid off, depending on that way you want to spin it; and systems analysis. Intermezzo is the music between movements. While thinking about a title for this blog I rather liked the idea that although I would write about retirement, this is not going to be about the end of my life but a transition from a work-life to something else. I’m not sure what else, yet. So intermezzo sounds appropriate, if maybe too musical.
I was getting burned out at work and thought about getting out. When I first started computer programming I had made a pact with myself that I would only do it as long it was fun. I had not planned on a career in computers, I wanted write novels and screenplays. But programming paid the bills and it was fun.
But toward the end it became not fun. I was at a point where I could seriously think about early retirement. Or at least, use an early retirement package from this company to finance winging off in a new direction. And then they fired me anyway. But, since I got the early retirement package anyway (you can tell it was a gummit agency can’t you?) it was like a kick out of the nest, but with a parachute.
So my plan is to describe what it was like to leave, write about stuff I’ve learned since.
The systems analysis mentioned earlier is a separate theme. I found I like systems analysis more than programming. For non-techies, programming is telling a computer how to do something. Analysis is figuring what that something is. Roughly, programming is like flying an airplane. Analysis is figuring out you want to fly it to Cleveland (!??!).
While it is slightly “easier” in the sense of slightly better hours, it is very different because analysis is all about communication where programming is all about telling a computer what to do. But analysis doesn’t give you the high you get while programming. But anyway, it seems like we don’t do much analysis, we try to jump straight to code. There aren’t nearly as many books teaching analysis as teaching programming. And this is alarming. For reasons I hope to get into later. I was thinking of writing a book on systems analysis. And this would be the draft version. Or maybe I’ll write a blog about it. Something.
I have a bunch of notes to convert to entries here. In the future I hope to settle down and make entries at least once a week.