That's not all, folks

March 12th, 2007

Today I got introduced to the process we have to go through to for international shipments. If you got through my previous long post on the shipping process, I won’t deliver another and equally tedious description. Suffice to say that all that business about the difference between shipments, packages, invoices, orders, and so forth–well, all of that is repeated, independently, for international orders. Along with the standard paperwork, international orders require another set of paperwork, and as it involves different languages and different customs (pardon the pun) and large, long distance shipments, much more is at stake.

The system we must use for international shipments is based of off an Oracle platform. It is generally known as “Oracle” at Acme, and it is the new corporate standard that will eventually come to our site. This system was recently implemented at another site, an international site, and the result was an absolute confusion of orders that managed to hit twice, at the end of January and again quite late in February.

If we try very hard not to think about that, to think positively instead, we can hope that implementing the Oracle-based system at our site will eliminate the need for redundant papework. That would be nice. A small mercy, though, because from what I saw today, the Oracle system shares a weakness with our current system. In both cases, if you want to peform a routine, defined task, you have to go through far too many different screens. The process is so badly coordinated that you must remember to copy a number from one screen so that you will be able to paste it into another. Sheer interface idiocy!

Okay, time for a preschool lesson. The reason why the Windows operating system is part of what most people consider a normal computer is not because Windows has an inherently better underlying structure. It’s because any task that the developers could imagine people doing was carefully orchestrated by a “wizard,” a guided set of screens that bring you from the start of a task to the end with a minimum amount of effort by you, the user. Windows has always had some useless wizards and always lacked one or two, but overall the strategy of making routine tasks easy for most people (sorry, IT guys) pays off big.

Bad Oracle! Go home!

To be fair, Oracle may not be to blame. Oracle is basically a big robust engine. If you take a robust automobile engine, you can set it up for an SUV, or a work truck, or a sports car. You can use the same six or eight-cylinder engine block for a lot of different purposes. Oracle has to be adjusted to its purpose, and I don’t know who designed or delivered Acme’s package.

But the IT department had a jolly time getting it set up on my PC, because despite the fact that it is the Chosen One, there is no standardized or documented end-user setup procedure. Oh, and while they were trying to set it up on my particular PC, the whole national system was going down. That didn’t help much.

It is not too late for our Oracle system to be further adjusted, especially before it is set up at our site. In fact they did ask for improvement suggestions recently. Then they made an improvement that made one of the most routine and critical queries run drastically slower.

O brave new world, that has such systems in it!

The Shipping Enigma

March 5th, 2007

Consumers like I once was think that a shipment is a box with an address. You have a product, you put it in the box, you put the address on it, and you put it on the truck. If things were that simple at Acme, I would not be working twelve hour days to try to come up with the data to prove to other people in the factory that we have shipped everything that we are able to ship.

Important clients are upset with our on-time delivery. Important corporate initiatives to reduce money tied up in inventory are frustrated with the piles of inventory that remain on the books at critical accounting junctures. What is going on here?

Let’s start with the customer order, made up of line items. A line on an order is a single item and quantity. The same item can appear on multiple lines of an order. An order can be made up of any number of lines (I am not sure if this includes zero or not). A shipment can be made up of any number of orders, and any number of lines from those orders; perhaps half on the lines on Order 123 and three lines from Order 456, and one more line from Order 789, provided they all have the same ship-to address.

Since an entire order may not go out on a single shipment, there is also an invoice, which is the intersection of an order and a shipment. So a shipment will have many invoices if it has many orders, and an order may have many invoices if it was shipped at various times.

Then there is also the bill of lading, which tells each truck what they have in a general way, and a report that tells us what we shipped in a given day.

The contents of the shipment are described completely only by the pick/pack. The pick sheets are used by the factory workers and the packing sheets are sent on with the order. Their different uses give them slightly different formats; the picking sheets are sorted and grouped by item location, and if the same item appears in multiple places a single order line can be split into two or more pick lines that do not even appear on the same sheet of paper. The packing sheets, which serve as invoices, must keep distinct orders on distinct sheets, so sometimes what fits on one pick sheet must be printed on two pack sheets.

The pick and pack sheets are printed out on two printers that sit side by side, and they have to be collated together by a worker who understands both the location codes and the parts. Since spare parts are picked right off of the assembly lines and the assembly lines are designated by number, but without any particular segregation, you have to know which assembly line is in which area. But sometimes the location code is very generic and you have to simply recognize the part as a Type A tool part or a Type B tool part. Anyway, the pick/packs need to go into the slot for the appropriate picking action.

Parts can be located in the stockroom, possibly in several places, and on the assembly line, or several assembly lines, and although the pick sheet will suggest a location to pick from it will also list the alternative locations for your convenience. Some of the locations may be completely obsolete. The count at any given location is very likely to be off, and even the total count does not have a very satisfying accuracy rate. So the pickers have to go on their experience and their persistence to track down some spare parts, and they risk being told by the assembly line managers not to take the parts because they are needed for production.

If the order is for spare parts and finished tools, the spares pickers need to hand of the order to the tool pickers. If the order includes any tools or spares from the special sub-factory, it has to be given to them before any of the standard tools or spares are picked.

Some spare parts can go in plastic bags. Others need to go in bubble bags. Some require moisture-absorbing pellets and others don’t. Some customers require special treatment for their parts. Sometimes the work is done by temporary workers who have no prior knowledge of the parts or the locations or the special customers.

Tools come off the assembly lines in boxes, but they have to be put inside other boxes for shipment. The choice of exterior box, or sleeve, depends on the type and quantity of tool being shipped. Some of the permutations and the resultant sleeve are spelled out on a packing instruction card, but certainly not all; and they refer to box numbers, that is, the number of the tool’s box, and some of the boxes do not have the tool number printed on them.

I never used to understand why places like Amazon seemed to have only one or two box sizes, but it makes perfect sense now. You can save a lot of time by knowing which of two boxes to use without a moment’s hesitation.

The picking sheet is a white sheet, part of which is custom-cut stickers, designed for getting jammed in printers. The pack sheet is colored. Unless this is an order going to another facility in the company, in which case the two different sheets are used for opposite purposes, because nothing is done the same for orders going to other sites in the company. They exist in a parallel universe, theoretically, which causes great problems in reality, since both kinds of orders compete for the same physical products.

There is an ID number that appears on the pick sheet and on the pack sheet (unless it is an inter-company order, of course), and as you might be able to guess, this is the basic unit of information in the shipping department. It does little good to speak of orders or customers or products or even carriers without knowing what the shipment in question is.

When an order is all packed up and ready to go it is run through our Shipper software, which records the shipment ID number along with other data like shipment weight and carrier tracking number. The Shipper software feeds this information back to our primary Manufacturing software, and that’s how our primary software knows that the shipment is complete.

Now, pay attention here: the shipment ID is generated by the Manufacturing software. Got that? And the manufacturing software will not allow more than one shipment ID to be active for an order at any given time. If there is only one little part on one line of an order available for shipment at 8:00 am, that is the only thing that will drop for pick on that order at that time. If the rest of the order, for hundreds of tools let’s say, becomes available at 8:02 am, it cannot drop for pick until the previous shipment ID has run through the Shipper software.

Since that exclusivity is enforced by order number, a different order for the same customer may have been consolidated to the same shipment ID by the Manufacturing software, perhaps an order that takes a long time to pick. So the one little line on that big order will hold up the entire order until it gets all the way through the picking and packing process.

Once that shipment ID is fed back to the Manufacturing software, it is a simple matter to look up that shipment in the future. But if the shipment has printed out and has not yet been successfully run through the Shipper software, it takes the Manufacturing software that generated the number a good solid ten minutes to come up with a list of possible shipment ID numbers for a given order number. If you already have the shipment ID number, the Manufacturing system can bring up the details of the shipment in a blink of an eye; but if you only know that some part of a given order is somewhere in the process of getting shipped, the system will have to check and see all the different shipment ID’s that have been associated with that order, at any point in time; which could be a long time, if a part has been out of stock for a while or a customer placed an order with different due dates on different lines for the range of a month.

The Manufacturing software has a report you can run that will show you all of the orders that are currently printed for pick and what the dollar value of that pick is and when it printed. It does not show you the shipment ID number. Using this report, one can easily see that there are very valuable orders that have been printed for days that have not shipped. If one is in charge of reducing cost of inventory, one can easily use this report to become upset.

But remember, since these are orders that have not shipped, it will take ten minutes per order number to get a shipment ID number. And once you have that shipment ID number, you will have to look at all the different places in the chain of shipment to see if the order is there. Remember, too, that if you do this during the day, the shipment papers are moving around–people are out on the factor floor are picking spares, or they just dropped off the spares to have the tools picked, or they have boxed it all up and it is waiting in queue to be shipped.

If you check all of that paperwork and do not find the shipment ID, and if you are confident you did not overlook the number by means of paperwork catching on one another’s staples or your eyes crossing or you forgetting which number you were looking for, then you can reasonably assume that the system has had some kind of error. I just recently heard the suggestion that perhaps the workers are typing information into the Shipper system, somehow causing it to report success but fail to update the Manufacturing system. Of course the solution there is to tell our workers to slow down.

Now let’s say that you have let the system spend ten minutes finding the shipment ID number for you, and then spent twenty or forty minutes looking through the paperwork, and you have decided that the system made an error. If you took that shipment ID number to the Shipper software and double-checked and did not get any record of shipment, you have no proof of shipment so you have to rescind the pick status and let the order drop again.

So first you must bring up one screen and delete the shipment ID that you just spent ten minutes of system time looking up, to say nothing of time spent searching afterwards. Then you have to use a different screen and, one order at a time, adjust the quantity on each line that is picked to zero. If only part of the line was available originally, but more stock came in and allocated to that order, the system will ask you to take the time to specify how the allocation should be divvied up. Remember, a shipment can have multiple orders, so you must go order by order, line by line.

And then you can start to investigate the other orders that show up on the list as past-due for shipment.

Do not let this interfere with your other duties, by the way. One of which is investigate customer complaints to see if they are valid. The service center sends these complaints with an order number and an invoice number, but not a shipment ID. That’s relatively okay because these orders have shipped and you can get the shipment ID number fairly quickly by looking up the order number. This will bring up the whole order history, so if you want to know about just that shipment you will have to search for the invoice number, and then if you want to print out the list of what was meant to be on just that shipment you will have to copy the shipment ID and paste it into another screen.

Incidentally, this is useful if you need to validate an order by weight. Without mentioning any kind of inventory errors we might have, it is unreliable to check for shipment errors by counting inventory because product could be in the process of getting shipped out during the day, and on the system the inventory will show in location until the order in question is run through the shipper software. But the product weight on the system is inaccurate, so one has to look through a passed-around collection of handwritten, unordered, photocopied, annotated, and recopied list of tool weights, or go out and weigh a sample of the item in question, assuming there is some in stock, in the location specified.

And then add that up, and try to compensate for the weight of the stretch wrap and the cardboard and the pallet, and decide if the product in question might have been missing from the shipment.

You can see how this might be competing for your use of the system and your time in general. I should add that you are only allowed two sessions on the system–well, two on the local system where you can look up inventory and other local matters, and two on the order management system that has exclusive visibility of the shipment ID number and comprehensive order information.

So if you are trying to multi-task by taking care of customer complaints while you are waiting for one of your sessions to finish looking up a shipment ID so you can see if it even physically exists, and somebody brings you a shipment that needs to be adjusted (because this happens many times in a day), then you are out of screens to use. Or you will hastily grab the screen that you had started looking up that shipment ID a long time ago, and in one lightning-efficient stroke, faster than thought, you will blow away the report you have been waiting for so long.

But up to now we have been talking about investigating why an order did not ship after the fact. Suppose it is the end of the month and we are trying to ship out everything that is not nailed down. The system is supposed to drop the orders by itself at regular intervals, according to the available inventory. But it does not drop everything that it could. Some more orders will show up if you manually run a drop, and some will still remain that will only drop if you try to drop them specifically.

Also orders that are on hold will not drop, although inventory will be allocated to those orders to be available whenever the order comes off hold. There is also a special order on perpetual hold to reserve stock for a special client. Inventory will not automatically move from that order to the current, shippable orders for that client, so everything has to be moved manually, and then any further stock that comes in will still allocate to that order and any other order on hold, on an age basis.

If you want to take some inventory from an order on hold, you can easily see a list of all the orders for that product. You can see if the order is already picked, or allocated to pick, but you cannot see if any of the orders shown are on hold, so you can reallocate inventory from one order on hold to another. In any event this is a task best done with two screens, one to see the list of orders and another to do the allocation, and that leaves no available sessions to look up the details of an order or to do anything else someone might come and request.

Owing to my cleverness and my overtime, I was able toward the end of the month to use Microsoft Access to generate a list of orders that were not filled and not on hold, and even showed available inventory–and on top of all that, were not already being picked (which, as you recall, prevents the order from dropping again until the pick has cleared). Shippable orders, in other words. A few of them were 100% fill orders, meaning that the entire quantity of a line item had to be available (and I think in some cases for all lines on the order) before it can ship, so it made sense that these did not drop. But the majority of them–I think I tested 100 out of 600–simply gave a fatal error and would not drop.

Evidently our system has developed a psychosis where on the one hand it thinks it has inventory and on the other hand it thinks it does not. In other words, one can reasonably ask why I did not ship the inventory and I cannot reasonably answer. Remember, simply saying that the order did not drop in the automatic process does not mean that the order cannot drop, as manual intervention will sometimes get the job done.

There are also the orders for the special client which, being large orders, get dropped ahead of time so that they can be sure to ship on time. Generally we try not to have these in the way at the tail end of the month, but I wound up dropping them accidentally anyway as I tried to maximize our shipments.

Alas, to no avail. I still got a report which was meant to be a list of orders that were not on hold and had inventory available and did not ship out at the end of the month. Investigation gradually revealed that the top-dollar items were either on hold (yes, despite the fact that the report supposedly excluded on hold order), or had probably been on picks already and could not drop, or did not have any inventory available on the actual last day. An erroneous report with which to incriminate me, how nice.

Now, dear patient reader, how would you like to explain that to a room full of busy people who make twice as much money as you who want to know why you had tools on the shelf at the end of the month?

The Metric Death of the universe

February 16th, 2007

If an action generates no paperwork, did it happen?

There are many actions taken every day in Acme that do not generate paperwork, but they are the illegal immigrants, the crucial illigitimate pillars of our factory. Anything which does not result in some numeric aggregate does not officially happen.

I am supposed to work 7 am to 4 pm. But there is a daily meeting at 7:40 which requires fresh information from a report that takes me 30 – 40 minutes to generate and about 10 minutes to transcribe to the set of whiteboards. Yesterday I did not put the finishing touches on this report until 4 pm.

Meanwhile I was busy. I canceled order line items which, unbeknownst to the computer system, could not be sent out. I investigate open work orders that should have been receieved at the shipping department long ago, but did not thus appear on the system. I interpreted a string of obscure e-mails, the result of which was to find that our factory was obliged to cancel some large overseas orders that were in error through no fault of ours. This took most of the day due the ambiguity of the e-mails concerning what needed to be done by us in particular, and not one of the countless other recipients of the e-mail.

I had to investigate misshipment complaints from customers, personally recieve the work orders for some special tools for special customers, collect data on why other tools would not ship on time to another special customer, participate in a conference call to express my ignorance of the cause for the aforementioned delay. I did not have time to see why an odd 475 parts had not gone out to one of our sister sites.

None of this work has a measured effect. None of it, then, happens, in the full sense of the word. You can tell for yourself that all that business is snipping out problems that have come full bloom. To justify the resources to nip those problems in the bud, I would need to have each problem fully measured and its impact translated to dollar amounts.

It is as if I am too busy beating out flames to judge the number of square feet burning, or the dollar value being consumed; and while I can easily reach the fire department on the phone, they decline to come to my aid unless I can give a rational measure of my emergency.

Six Sigma is part of the problem, I think. The program stresses measurement and statistical analysis. I assent that if we always address a problem by the guidance of instinct, we will probably spend more effort to accomplish less than if we understood the problem and dealt with it systematically. Any problem that occurs as an interruption to the daily work could very well be dealt with best with the precision of Six Sigma.

But my situation is one of neverending problemsolving–firefighting, as we say–and in such cases it seems prudent to make great changes with the best faculties at hand, and save finessing with precision instruments for a time when breathing is permitted.

There are about three ways to look at it: either my situation is objectively not as bad as I think, which is not likely based on the general concurrence of more experienced persons; or it is relatively not as bad as I think, which is very likely based on the nonchalant ignorance or cynicysm of more experienced persons; or the situation is headed toward black disaster, which in falls halfway between the other two in probability.

The heroes and legends of Lean production or the Toyota Production System consistently speak of taking direct, immediate action when the situation is obviously bad, and relying on clever measurements only when things appear at the surface to be well off.

But when you cannot beat a problem unless you measure it, and are too busy fighting the problem to measure it, you are not positioned to succeed.

It takes one man to run a factory

February 9th, 2007

This morning at Acme we had some parts that were run wrong on the machine and needed to be fixed up. This already is a disgrace according to the standards of Lean manufacturing. But it was worse because K. D. wasn’t at the meeting to promise that he could fix them, and nobody else knew what to do with them.

As L. K. said disgustedly, “What are you going to do when that man retires?”

Well, we will find out soon enough. K. D. retires end of June. But we can already guess what will happen. We will continue to run bad parts, but when nobody knows how to rework them they will simply be scrapped. The kind of skilled reworking that K. D. does, all day, every day, cannot be taught in a short time and cannot very easily be found for hire.

Let us imagine that we could have K. D. mentor someone in the four or five months we have to work with. Still we can safely say that all is lost. The job I had now came to me when one person resigned and another retired, both long-time employees, both giving plenty of notice. I got a few days training. Then it was another full month before I was actually hired and on the job. We have been feeling the effects of that graceless transition over this past month and a half.

In my former role, as a temporary employee, I maintained a report that we used every day, and I was the only one who knew how the report worked. There were several things that I was relied on to accomplish for the daily functioning of the plant, things that I had to maintain myself or train others in after I took my full time position. But I was I temp; I could have disappeared at a moment’s notice.

Acme is not a Mom and Pop operation. Acme is international. Our little piece of the Acme pie is not the best and not the worst. But it will become a little worse this July when K. D. takes his leave, and we can no longer fix the mistakes we make.

I realized

February 7th, 2007

My job in the shipping department at Acme is to monitor the flow of product to customer and raise alarms when problems arise or there is potential for improvement.

I actually spend my time at Acme compensating for the problems that have already happened, for water that has flowed under the bridge and now must be scooped up in a bucket and carried upstream. To extend the metaphor, I have one problem which is pretty much the hole in the dam that is letting the water out. In my first month on the job I did what is in the scope of my job, to wit, identifying the problem and proposing a solution.

The necessary authority to execute such a solution is not mine, so in the several weeks since I have made my proposal I have basically run back and forth with buckets full of water.

I put something like 56 hours of overtime in two weeks trying to reign in the problem as best I could. February arrived, the person who has the authority to make changes was finally hired, and I realized that I could not be the “change agent” that the Lean books talk about, the one who comes in at a time of crisis and forces everyone to reform their self-destructive ways.

And I realized that if I could not make the change, and if nobody made the change, then my job from now on will be to run the water back upstream. To constantly nip at the buds of the problem, and leave the root alone, is such a futile destiny. It reminded me of nightmares I used to have. As a little boy I had a recurrent dream of walking alone in a store down the aisles, and some very large and ominous monster walked down the aisles looking for me. I never knew quite where he was. I knew he would find me if I stayed still, but I also might run into him around any corner.

The other dream I had a few times involved climbing high into a tree and falling out. I fell in terror toward the ground, closing my eyes at the last minute. I had a sensation of impact, and then bounced back into the air higher than before. And fell again, still terrified. And bounced.

I have had other dreams in my life that upset me, but I have decided that those are just “bad dreams,” to be forgotten on waking. A nightmare is some unpleasantness that you cannot escape, that you are doomed to repeat.

This week I am a little more optimistic about our chances for filling in that hole in the dam, a little at least. But I have glimpsed the life of so many people who hate their jobs. At Acme, a number of people have told me to leave while I’m young.