Sunday, February 24, 2008

SofSW: The SW Basics (1/6)

You never know exactly where you are as you leave a train. You know you’ll be standing on the platform, but the way to the station might be in either direction. I stand with my luggage on the platform lost for a moment. Once I reach the right state of mind I start looking for the right station of mine. I have two choices, the escalator or the elevator. I see the elevator to the left of me and head towards the group standing in front of it already. These half-a-dozen strangers were on the same train as I just a moment ago. Half-a-dozen travelers equals five suitcases; three on wheels, two being carried; and one backpacker. The elevator arrives and the six suitcases and one backpack enter it with their custodians.

A pair of girls discuss the trip ahead, but everybody else is quiet. We don’t know each other, we need nothing from each other, there’s no need to communicate. In fact, we all seem to prefer not to communicate at all. I certainly don’t need any distractions now, I know exactly what I am to do and how I am going to achieve it. I need to get to airport terminal as directly as possible. I am in no hurry, but there’s nothing else to do here either. When seven people are crammed into a closed space and five of them don’t want to signal anything, not even accidentally, the results are hilarious from any outside observers. We try to find something to look at that attracts our attention, but isn’t human. Some of us look at the ceiling and the digital display showing a one changing into a two. Such excitement, who would have guessed that as the elevator ascend from level one to another level, it would be called level two? Some of us turn our heads downwards trying to catch glimpses of shoes or luggage or whatever that could hold our imagination without seeming completely awkward. I choose to look at the luggage of my closest standing perfect stranger. His suitcase is black, with a grey band going around it under the handle. It seems to have a three-digit combination lock. I can’t quite make out the numbers, but I can’t help wondering if the combination would open the lock. I try to remember to shuffle the numbers of my suitcase when it is closed, but sometimes I forget. The mystery of the combination lock won’t be revealed to me and I feel like somebody’s staring right at me.

The feeling is very strong, but as I turn my head upwards, I can’t see anybody looking at me. Did that man in the corner just avert his eyes or has he been looking past me all the time? Behind me there’s the metal-colored wall of the elevator, nothing special. He doesn’t seem to be thinking, although that is hard to tell from outside. He seems to be looking at something, but there’s nothing behind me. Why would he stare at me? Is my collar funnily, do I have something on my face? I made some notes with a ballpoint pen, maybe the ink leaked to my fingers and maybe I’ve rubbed my face with the hand and didn’t notice that it is smeared blue. I check my hands. There’s no ink anywhere. I’ll have to check my face in the mirror. I could have rubbed all of the ink on my face. That would be the worse case. Not having any evidence to suspect it, but having a maximum amount of ink on the face. That would be embarrassing.

After an eternity of uncomfortable silence, with only two girls talking about ordinary, everyday things, the elevator arrives and the large metal doors open. The elevator regurgitates its passengers in one deep sigh and the race is on. Everybody wants to go the terminal as straight as possible and there’s no need to slack behind. I take my part seriously and overtake a few of my ascended acquaintances in the first curve out of the elevator. The roar of the suitcase wheels echoes in the hall. More suitcases and people stream in from the escalators. Overpacked suitcases make ear-screeching noises as the bearings on the wheels are subjected to extreme pressure as the cases are being dragged by their owners. A man with a green overcoat and stripy pants cuts in front of me and I have to stop to avoid a collision. A pink cap just wobbles one side to side as the man’s back moves further away from me. I speed up again to not let anybody else take the advantage and fill the empty space behind Harlequin Huey. I think I see the Staring Man to the right of me, but I can’t be sure. We all reach the Airtrack terminal.

The Airtrack is a small train taking passengers from the train station to the airport for free. There are two trains and two tracks. The tracks are suspended on fifteen meter high pillars and the trains are hanging from the track. Hence the name Airtrack. The trains are always moving to opposite directions on this 7-minute track. There are thirty seats on the train and room for another thirty or so standing. I wonder if all of us will fit into the next train. The train arrives and, sure enough, fifteen people or so are left waiting for the next train. This one idiot in a white cotton suit and white leather shoes wants to absolutely fit in with his two large suitcases and his enormous backpack. Pushing and shoving he almost gets caught in the automatically closing doors but eventually they close. People standing in the aisle are holding on to the nooses from the ceiling and they have to adjust themselves to fit the Great White Traveller better. The train starts and a backward surge goes through the passengers. Nobody falls and the mass of perfect strangers desperately look for something interesting to gaze at. The Airtrack is generous in this regard. There are windows through it in every direction. The scenery changes, there’s a motor-way to the left of it and some fields to the right of it. As we turn to the right, the motor-way is replaced by a parking house and the fields covered by airport buildings. There’s catering services, some large oil containers, hundreds and hundreds of parked cars. Now the runway comes into view with some helicopters parked near the fence on the grass. An airplane is rolling on the runway gathering speed and before it has time to take off it disappears behind the terminal building. The train comes to a halt, the automatic doors open and the crowd manages to leave the train in a more or less orderly fashion, one by one.

Labels:

Monday, February 18, 2008

SofSW: The Basics (2/2)

The bearded man returns to his seat. Five minutes ago he left his seat and went to the restaurant cart. I can deduce it easily from the 15 centimeter long sandwich he is holding. He sits at a distance of about a meter and a half from me and I can smell his fresh bread. Suddenly I’m hungry. I fight the urge to go to the restaurant cart, I don’t have the time anymore. I planned to eat at the airport and according to the schedule it can’t be more than seven minutes now. But we were seven minutes late at the last station, if the train hasn’t managed to catch up at all, it might still take fourteen minutes or more. Nobody has ever starved in less than half an hour.

The airport is located 45 kilometers from the previous station and the travel time according to the timetable is 27 minutes. With a piece of paper and a pen I make the average speed of the train to be exactly 100 km/h. The train has 15 carriages, each about 20 meters long and there’s the engine. Assuming it is as long as each carriage, the whole train from the front of the engine to the end of the last carriage is 315 meters long. Assuming that there’s a meter of empty space between each carriage and the engine, we’ll need to add fifteen meters so the total length of the train is 330 m. Let’s say that you’re standing at a platform and looking at a beautiful girl on the next platform across the railway. She’s absolutely fine looking in her short skirt and tight shirt. She has long hair that shines in the sunshine and you’re sure that if you could see her eyes, they would turn out to be perfect in a perfect face. If she saw you staring and at the same time the train would go past on the track between the platforms without slowing down with an average speed of 100 km/h, she would have only twelve seconds to run away and disappear. She should really hope for a train that was stopping.

The basic measurements of the physical universe are simple to use and understand. They help to grasp the nature and its phenomena around us, but what about the immaterial universe? Now I don’t mean the spiritual world, which only exists in the imaginations of people, I mean the world of software. It is a strange universe of ideas and reality, of formlessness and function, of thought and implementation. In the world of software, immaterial ideas are turned into programs, which can produce extremely tangible results in the real world. What do we have to help us grasp this mostly mental meta-world of mind-artifacts? Not much.

Software as an industry has been around for less than a century and is one of the youngest areas of industry. It has evolved a lot since the first computers and every now and then there have been great revolutions so that a new generation of programmers has started making its journey on fresh ground with new thinking and considerably more power than the previous one. The situation now is that the reigning programming languages have been around roughly since the nineteen seventies. Clearly the most popular programming languages is called ‘C’ and the object-oriented languages of today - C++, Java and C# - are really offshoots of C. But I don’t want to think about programming languages. Not at the moment at least. I want to think about the basics of software. What would be the equivalent measurement for size in the real world? Software doesn’t have a mass, but is there something equivalent to the concept? What about time?

A program is usually written as text in stored in a file on a media readable by a computer. The text has a specific form that it needs to have in order to work as expected and all that is defined in the programming language definition. That matters not at the moment. The text files written in the programming language form the source code of the program. There has to be at least one file for a program, usually there are several. Biggest programs consists of thousands and tens of thousands files sprinkled in the branches and leaves of a complicated folder structure. Just finding the right source code file is sometimes challenging, but the challenges truly start when we start looking in the source code files themselves. Each file consists of lines of text, which many tools like compilers and preprocessors need to read and process. The tools aren’t important yet.

If we compare two programs, and especially their source code, there are obvious differences. The lines in the files are different, with a few exceptions probably, even some files maybe duplicated between the programs, but mostly the source code files are unique. We could perhaps use the size of the source code files as a basic measurement in the software world. Let’s try that. Let’s define that a length ‘l’ refers to the size of a source code file in characters. Characters are the atoms of text, they are indivisible, the smallest ingredients of text. In that sense this definition would actually be closer to the definition of mass ‘m’ than length ‘l’. Mass could be defined as the sum of the atomic masses of each atom present in the object. Length refers to its one-dimensional shape. It doesn’t work that well. Good. Failed ideas can work as seeds for new ones. Once you realize an idea won’t work, you can discard it and move to looking for the next idea. It’s bad to try and work with an idea not realizing that it won’t work. The longer you keep banging your head against the wall, the more likely it won’t work properly later.

Maybe the level of abstraction is wrong. Maybe the physical dimensions of a source code file have no meaning. But that can’t be. Two files, one twice as long as the other, both implementing the same functionality are different. Yet they are the same. We need to have a unit that shows that. The simple idea is to use one unit for the size of the file and another for the intellectual content of the source code file. These can either be two different units or two different dimensions. Is code one-dimensional, two-dimensional or three-dimensional like Matrix wanted us to view it?

For now, I’d like to separate the concepts of material size and intellectual size. Let’s use length ‘l’ to refer to the material size, or file size, i.e. the number of characters in it. The intellectual size would be equivalent to mass ‘m’ and let’s call it ‘mental-mass’. It refers to the number and size of ideas implemented in the file. We’ll have to define it more carefully later, but for now let’s imagine that each statement in the source code file is part of an Idea and has some mental-mass. A whole idea will have a mental-mass that is the sum of the mental-masses of all the statements that comprise it. Now we can say that two programs can be equal in mental-mass but differ largely in size. This is a start.

There’s no more time to think further, the train is arriving at the airport station. I pack my stuff, put on my jacket and leave the train. I have to squint a little as the platform is bright in the sunshine and my eyes are used to the dim indoor lighting of the train.

Labels:

Wednesday, February 13, 2008

The Story So Far...

A two-week contract was signed with a large telecommunication company in San Diego and as Qualiteers officially started on Wednesday 1-Feb-06, I was on my first ever American trip by Friday 3-Feb-06. Two weeks later, it was announced that the site would suffer massive layoffs, unrelated with the training sessions, I’m sure. At that time Qualiteers only offered 3-hour training sessions (we call them QuickTick nowadays.) and every now and then there was one participant who just didn’t get it. It irritated me that out of eight people one didn’t appreciate the method enough to even try it during the three hours. Later on I’ve realized that three hours just wasn’t enough and there needs to be more theory, more examples, more structure in the exercises and more attitude.

A couple of months later I managed to secure a one-week gig in Paris, France. This came through an old Nokia acquaintance who I happened to meet at CeBIT exhibition in Hanover in 2006 and who introduced me to the CEO of the company. So in May, Qualiteers went to Paris.

The next months were my first real experiences in sales. It wasn’t easy and it still isn’t. Now I can look back and see that there are many successes behind us and acquiring customers is possible. It is possible, because we have a good product, which we’ve managed to make even better this year by focusing on the 1-day long DayTick sessions. But I digress.

By fall 2006 I had the first Finnish companies lined up to train. The training sessions went well. Proof of this is that Vertex Systems called me back in early 2007 to train the rest of their personnel. We must have done something right.

It was in year 2006 that I had my first writing published. I had pitched an article in May already, but it was already September when editing started and the piece “Happy Are the Software Engineers...” appeared as Last Word in the December 2006 issue of Better Software magazine. I almost couldn’t believe how well everything had gone.

In 2007 I turned my focus towards research and sent a theoretical paper on Tick-the-Code to Software Quality Professional journal. The first peer review round rejected the paper with much needed criticism. I took the opportunity to improve my writing and went through all the remarks noting especially the misunderstandings of the reviewers. Because the method is innovative, it requires an unusual way of thinking, which the reviewers weren’t accustomed to. The misunderstandings were crucial, because I knew my writing needed to improve. The paper called “Tick-the-Code Inspection: Theory and Practice” was published (with a few annoying typos) in the June 2007 issue of SQP journal. I had officially joined the inspection professionals of the software trade.

The summer was relaxing and July gave us the possibility to visit Russia for the first time ever. In October I went to present my second paper on the PNSQC conference in Portland, Oregon. By the end of the year we scored another country, Sweden in December. The country tally went up to six and the number of trained software professionals had reached 461.

January 2008 was filled with marketing and sales activities only to be slightly interrupted by the second anniversary of Qualiteers. Thank you to all supporters, customers, partners and friends alike! There’s still much more to be expected!

Labels:

Friday, February 08, 2008

SofSW: The Basics (1/2)

We’re waiting for the train to leave the station any minute now. I glance at my watch and notice that we’re three minutes behind schedule. I know that because the display on the platform is clearly visible to me and it is showing the details of my train. Three minutes isn’t much, but when you have a complex network of trains and other forms of traffic, air planes, trams, busses, and in this network you have individual people with their dependencies, it all hangs together. Some of the dependencies are critical and some can be adjusted. There are trains that will wait if a connecting train is arriving slightly late. Some things, like airplane schedules are however not under the control of the railway company. In order to keep everything in sync, everybody wants to stay on schedule. Time passes relentlessly and the train is still standing on the platform. Five minutes late. I see no reason for the delay. Most importantly, there is nothing I can do about it. So, I leave it.

Time is one of the basic properties of the universe we live in. Time is one of the most important concepts there is in physics. You cannot explain time with other means. It just exists and affects the world. Its unit in the International System of Units, Le Système international d’unités, short ‘SI’, is second, abbreviated with the letter ‘s’.

In the beginning of time, or more specifically, in the beginning of time measurement, people used to be concerned about the seasons. It made all the difference for survival whether you sowed in the spring or in the fall. In addition to seasons there were other interesting periods. The period of the moon waxing and waning gave us the month, and the sunset and sunrise define night and day. As science progressed, sundials became all the raze. They measured the apparent time during the cloudless daytime. It took several hundred years before mechanics had advanced far enough to allow for pendulum clocks. It was not until the seventeenth century that a seconds pendulum was first added to a clock. All the time the definition of time depended on Earth’s rotation either around its own axis (day and night) or its rotation around the Sun (seasons). Astronomical observations were the basis of time.

The name ‘second’ comes from ordinal numbers. Already in the thirteenth century a medieval scientist called Roger Bacon expressed times of full moons with hours, minutes, seconds, thirds and fourths. The other fractions have been mostly forgotten, but hours, minutes and seconds stick. Second is so short a time that it is a secondary unit in practical life. It finds use in sports, but even there more accuracy is needed. The second comes second in almost everything these days, only as the official unit of time it gets its worthy first place. Nowadays, the definition of a second has moved from the highly imprecise astronomical observations of large systems to the extremely small world of atomic clocks. A second is defined as a certain number of vibrations of a particular atom. Even that measurement isn’t infinitely accurate, but for all practical purposes the second is defined far too well for its insignificance in use.

Seven minutes late the train leaves the platform. I still don’t have a clue as to the delay. Maybe we were waiting for a connecting train, which is behind another train on this large station. When you have sixteen or more track it’s hard to keep track of each one.

Now that the train is moving, I can feel the acceleration in my back. I sink in my seat as the speed of the train grows from the initial zero to 20, 30, 50, 76, 98, 123 kilometers per hour. The display in the carriage shows the current speed every minute or so. Now that the speed is constant, there is no more pressure on my back, the acceleration is gone. In fact, we have reached quite some conclusions already. We should back up a bit to start from the beginning.

Distance between two points, or the length of an object is another basic property of the universe. We use the meter to measure it in Europe, although the strange island folk in Britain insist on their own peculiar system of inches, feet and yards. They are peculiar because they aren’t decimal. In the metric system, almost everything is divisible by ten. One meter is ten decimeters, one decimeter is ten centimeters and one centimeter is ten millimeters. On the other hand a kilometer is thousand meters and so on. But if you take an inch as your basic measurement of length, you’ll have twelve of them in a foot and thirty six of them in a yard, which gives you three feet in a yard. There are two yards in a fathom, which is equivalent to eighteen hands. As you can see, there are many different names for the units and the conversion factors are all different. It seems totally incomprehensible if you have learned the metric system first.

Measuring length between two points is a one-dimensional measurement. The basic SI unit meter, abbreviated ‘m’. If you want to know the area of your field as a farmer, you’d measure each side separately and multiply the numbers. The unit of area, measuring the size of a plane is m*m or m squared, usually written m2. Measuring the three-dimensional volume of a rectangular object is as easy as measuring its three sides, the width, the height and the depth, individually and then multiplying the result. The unit of volume will be m*m*m* or m cubed, usually written m3.

You can combine the basic measurements to understand more from the universe. There is almost no limit to the combination you can build on top of these basic measurements of distance and time. For example, the average speed of the train is just the distance travelled in the time it took. And the acceleration I felt so clearly a moment ago in my back is just the change in speed over a certain period of time. The faster the speed changes, the higher the acceleration.

Oh, and we shouldn’t forget the third basic property of most objects in the universe: the mass.

Labels:

Friday, February 01, 2008

SofSW: The Background (3/3)

On the other side of corridor sits an old man. His beard is black with blotches of white like a negative dalmatian. His eyes are closed, he seems to be dosing off exhausted. Hid jacket is worn, not badly, but clearly used for years. His grey trousers are slightly too short for his legs and I can see his white socks. He’s been traveling long, even in his sleep he is holding on to his backpack which is on the window seat next to him. Experience I guess. I wonder for a while the kinds of adventures he must have had on his life’s journey. Did he find what he was looking for? Was he looking for something or has he just lived his life? He’s a traveller, he must have been looking for something. He has actively done something in his life. I can see from his peaceful and slightly wrinkled face that he it hasn’t always been easy. If he had a goal in mind, clearly he hasn’t reached it yet. But he seems happy with himself regardless. The search keeps him going.

The loudspeakers announce the next station and people start putting away their books, putting on their jackets and reaching for their bags overhead. Soon the corridors are filled with leaving travelers. This is a big station but it’s not my stop yet. I notice the man on the other side of the corridor rears but doesn’t wake. I hope it’s not his stop either. For a while I think of the pack of hyenas standing eagerly on the platform. I can them blocking these disembarking people for a few seconds. It is like the tide, regular, inevitable, observable but not necessarily easy to explain. If you think about it in a cool and logical fashion, it need not happen at all. Yet it does, every time the train arrives on a crowded station.

In my mind I am happy that the bearded man continues his journey. It is somehow safer to have company on this trip. I can’t explain my feeling. I’m not in danger, I have an exciting adventure ahead of me, yet the sight of a familiar face, even of a complete stranger, is reassuring. It’s proof that I haven’t driven past the final station yet. After the final station, the Terminal Station, the empty train rides on to the service yard for maintenance. Nobody’s allowed to be onboard then. I have a mortal fear of passing the Terminal Station without noticing. An experienced traveler like the bearded man wouldn’t do such a simple mistake. I’m relieved.

A boy on the corridor has problems carrying his bag. Overpacking is inexperience. For shorter trips like the one he seems to be destined for by the looks of his carelessly tied shoes and open jeans jacket, it’s not too big a mistake, but it does make traveling unnecessarily uncomfortable. You’re less likely to take longer trips, have exciting adventures, if even the shortest trips are too exhausting. Overkill in packing kills the joy of traveling. It is deadly for experience. Unless the boy learns his limits soon he is going to start restricting his life by traveling less. He’s going to be staying more where he already is. He is going to have to find the solutions of his life, his education, his job, his wife, his friends and his opinions in neighborhood he lives in. Unless he learns his limits, he is just going to limit himself more until he has no choice. Is that where the bitter old men at bars complaining about their lives come from? Even with a cool glass of beer in front of them they are complaining. It’s like it’s bitter instead of lager. Ignorance of one’s own limitations has taken their freedom and the lack of choice is slowly strangling them. You hear it in the gravel in their voices, the pressure of the lack-of-choice rope. With every glass of beer they are shoveling the gravel on their own graves. As the queue on the corridor starts moving, I glance at the boy’s face. He’s young and there is a certain something in his eyes. The glint of enthusiasm, of not having given up yet, is clear to see. If he manages to maintain it, he’ll be fine, I think warmly when he disappears from my sight forever. New passengers fill first the corridor, then the available seats and again the corridor. The train is absolutely packed and the journey continues.

I am not the first one embarking on this kind of journey, I probably won’t be the last and I’m pretty sure I will never arrive at my final destination, although I am certain that the journey will have an end.

Labels: