Archive for December, 2012

h1

Methode Champenoise

December 17, 2012

I thought today about doing a new twitter feed. To be clear, I kind of hate twitter, it is annoying to try to think of witty things to say all the time, feeling like I'm feeble at it, and listening to other people be at both their wittiest and whiniest.

Thus, it is a little odd for me to want to engage more with twitter. But last night I opened a terrible bottle of champange. It was such a colossal letdown. 90 points at BevMo… unlikely. I must have picked up the wrong bottle or something. Yuck. Just yuck.

I thought that this pic would be a good twitter pic along with a pithy “I've had sodas that weren't as teeth achingly sweet as this plonk.”

In fact, I could make that my profile pic. And I could promise to tweet once a day, always about sparkling wine. Usually sparkling wine under $20 because I'm too cheap to buy the expensive stuff. (But occasionally someone else buys so there are high end bubbles ocassionally.) I'd use twitter to chronicle the good and the bad.

I don't open a bottle every day. I'd need some filler material; I could share: “I find that drinking a whole bottle in a day is deleterious for working the next. Those rubber stoppers for wine bottles are suitable for retaining fizz for up to three days.”

I could take picture at Bev Mo and CostCo of the champange in a fluted bottle I keep seeing. I keep almost buying it but I want to spend money on the wine, not the bottle: “Bring that pretty bottle here to me! (Nods to @ballisticcats for their lyric).”

I could look up what the name of the wire wrapper on the cork is called. I knew it for a little while. But then I forgot. But, you know, it'd be a good tweet. And the opportunity for risqué comments about the shape of the corks… I could get a not-safe-for-work rating.

I could mention buying wine from woot: “Yay to @Woot for their Rack and Riddle fizz. Yes, it was a vertical four pack. I'm not sure why only two are pictured here. Except that they were delicious.” Because, really, they were delicious.

I really do love champagne. I'm not too picky. Or so I'd like to think. And I'd like to think that I wouldn't mention a friends almost water-like cava that she prefers. I love the friend. But I'm not letting her choose wines again.

On the other hand, here's a good pic and tweet: “Yeah, I drink champagne from a can. A pink can. What of it? I don't use the straw (usually)!”

Except for the embarrassment of having to ask “do you have champagne in a can?”, the Sofia champagne is one of my favorites. I know I'm paying for the additional packaging (a little hypocritical, maybe I will get the fluted bottle next time I see it) but the cans don't make me feel wasteful if I don't finish a bottle in under a week.

I figured I'd even do Friday haikus: “Methode champenoise / Here add seven syllables / You make me bubbly.” Ok, so that one isn't finished.

I could point out that the Etoile bottle makes an excellent Christmas or New Year's host gift. Lots of points and delicisousness. It will please the snobs and the happy lushes.

For that one, I could give my tasting notes: “This is to sweetness as freeze-dried strawberries are to spring.” One good thing about twitter is that the tweets don't have to make sense. Which is good for me. Really good, especially after a glass of champagne. Though I will admit that that tweet wasn't a compliment. But I did not pour that bottle down the sink so it wasn't a loss, just a “will not buy again”.

I could mention champagne and cupcakes. Probably on my birthday. Of course, I think I did that on my normal (@logicalelegance) twitter feed.

And champagne cocktails… I do occasionally doctor my drinks… “St. Germain's is an eidelflower liquor that tastes like the first golden light of a spring day after a week fo dark rain. Add half a shot to your flute to raise your spirits.” Punny! Plus, again, pretty bottle.

“If your champange is not chilled enough, I recommend adding a frozen strawberry.” I don't know who couldn't think up that pearl of wisdom on their own but it would totally fit into the twitterverse. (I already mentioned my disdain for twitter, right?)

I looked up the recipe for champagne simple syrup this weekend; I was considering putting it on sponge cake, ended up with raspberries and whip cream but the syrup recipe was simple… though it involves “leftover champagne”, a foreign concept. Anyway, I could send out the “heat champagne, add sugar, stir, cool, pour over steak” instructions. Again for people who couldn't figure it out on their own. And, yes, I'm kidding about the steak. I'd poor it over sponge cake. Or strawberries. Or raspberries. Add it to whip cream. Put it in truffles. Add it to jam. Put it in soda water. Oh heck, I'd pour it over steak and then lick it off.

If I doled these factoids out over a month or two, 140 characters at a time, I wouldn't seem like a drunkard. Probably.

I really do like champagne. I wonder what this one is going to taste like.

 

h1

Multiply by four and add two days

December 4, 2012

How long will it take you to complete that task? You know, that task you don’t know any details about and is just a block on the diagram that says “USB”. When, precisely, will you be finished with it?

Engineers hate schedules. We like puzzles. Hurrying us while we complete a puzzle just leads to annoyance all around. It takes the time it takes. Maybe if you stopped interrupting with stupid questions about deadlines we could focus and create a good solution.

Putting on my manager hat (oh, yeah, I totally have a hat specifically for thinking about manager-y things), knowing when software is going to get done is critical. In an embedded system, the software needs to correspond with the hardware and the manufacturing tasks. Letting everyone work at their own pace without any guidance just leads to disaster.

If you’ve never put together a schedule before, it can seem like magic. I’ll tell you how I do it. I’m pretty good at getting the project to come out when I predict.

Let’s start from the engineer perspective and then I’ll move to the project management side.

When asked how long I think something will take, I check my gut, it gives me a number (“ahh, that will take about two hours, if only people would leave me alone to concentrate”). This number has no debugging or anticipation of uncovering lower level problems. It doesn’t take into account interruptions, feature creep, or high priority interrupts coming to clear off my desk so I have to restart the intended task. My gut doesn’t worry about documentation or code reviews, it considers the puzzle only.

So I take that number (two hours) and multiple by four, then add two days. Thus, I tell the project manager that the task should take about three days. This isn’t padding… this is planning. Everyone has a multiplier and an adder. Many managers work to figure out what multiplier they need to apply to the engineering estimates they are given. In fact, it looks like MS Project has this concept of Baselines that let the project manager figure out what the multiplier should be as time goes by.

That is just me providing one estimate of a small task. My multiplier and adder are my own. You can use them but you really need to figure out if it is an over or under estimate.

But, what about if you are stating a project and need to sort out ten or twenty tasks? You can use the same method if you know enough about the tasks but my gut reaction tends to get worse as I think about all this work. And my estimates get ever larger as my brain gets tired.

Instead, I take the list and try to break down all the tasks I can think of… USB breaks down into many parts: a driver, an interface layer, and an application layer on the device. I also need a PC program for testing. Breaking tasks down is a tough process, easier done with another person. At the end, you have sixty or a hundred tasks so it feels like anti-progress.

Don’t fear, the next step is to go through the list of tasks and decide if each is easy, medium or hard. As you go through the list, you may find you need more granularity; I usually end up with a very hard and trivially easy. Remember, if you don’t know much about it, it is going to be harder because you’ll have to figure out how to do the work before you start, bump those unknowns up a level.

Now you’ve got a long list of tasks and whether they are easy, medium, hard, very hard, etc. I’d put these in a spreadsheet. But it’s recently come to my attention that I may depend too heavily on spreadsheets. Still, go for it.

Now you need to define what easy, medium, and hard mean. Think of a few of the easy tasks… ask your gut how long they’ll take. Multiply by four and add two days (or whatever you choose). Same for medium and hard… Don’t worry about how long everything will take. Don’t worry about the goal dates or when the CEO wants you to ship. Listen to your gut. Then use your brain to correct it.

Now, go home and sleep on it. In the morning, without looking at your old values, re-do the gut check for easy, medium, etc. If the values are very different, spend some time thinking about why that would be. I am more optimistic in the morning but sometimes I’ll realize the difference in values is because I’ve marked some medium things as easy so my average was off.

Anyway, take your two values for each category and average them (or sort out the discrepancies properly). Now you can apply it all of the tasks. Is it exact? No, of course not. Is it a reasonable first pass? Yes, very much so.

Now all of your task have duration values, maybe in engineer hours, maybe in engineer days. Sum up the duration and convert to 40 hour work weeks. Now you can say “with 1 engineering resource, the whole project should be completed by X”. Someone will squawk loudly at this. It always seems like too much time. But you aren’t just pulling a number out of a hat. If they want to argue, now you can show your work, maybe get some advice on what isn’t as difficult as you currently expect.

When you add resources (aka minions, coworkers, or other people), you don’t get to divide the time perfectly in half, there is overhead with talking to a team. The larger the team, the more time will be spent communicating and making sure everyone is pulling in the same direction. I put as a multiplier on my task durations. For a 4-6 person project, I usually use 10% for integration. It isn’t an exact science… ask yourself, how many hours a week do you currently spend in meetings versus the hours spent getting things done? That is integration time.

So, there you have it. My secrets to creating a schedule.

Oh, wait there is a little more to it, isn’t there?

Priorities help… assign each project a priority (0 is low, 1000 is high…. I know 10-0 would be better but  if your data is ever going to land in MS project, 0-1000 is the way to go). Tasks that are risky get higher priorities. If you can get the high-risk tasks out of the way early, you can be more assured of the project’s success.

Precedence is separate from priority but they are linked together. For example, if I need my USB driver in order to write the application layer, the driver is a predecessor to the application. The application may be riskier and it may be highly desired by marketing so it has a higher priority. In short, you’ll really need both, priorities and predecessors. Also, some of your predecessors may not be in your task list (ahem, can’t finish the USB driver until I get some hardware to start working with).

At this point, the schedule starts shaping up…  mentally, you should have a pretty good idea of what needs to happen sooner and what can wait until later. But it doesn’t really count until you have a Gantt chart.

I hate Gantt charts.

I also hate MS Project.

But I recently did a trawl to see what I could use instead. There is a Google docs gadget but that is going away and doesn’t work in Chrome, only in Firefox (snicker). There were some Mac options but no iPad options that didn’t need the Mac support stuff. I didn’t try Open Office. And it is going to pain me to pay for MS Project when my 60-day eval period is up. And yet, the powers-that-be for this project really want a Gantt chart. And it was the only way I could show them a major flaw in the current plan.

I’m not going to teach you how to use MS Project. At this point, with tasks, duration, predecessors, and priorities, all you need to do is add resources and push level and it sorts out when things happen. (Also, swear a bit because I’m leaving a bit out.) Then you muck about trying to make sure all the people have work they are likely to enjoy (and complete) and keep pushing level until the charts look the way you want them to.

But wait, don’t stop there, now you need to go to your resources and get your easy/medium/hard initial estimates re-evaluated by the people actually doing the work. So, gone on, ask them, “How long will it take you to complete that task?”