Truck

In November of 2006 I leased a Scion xA for 24 months to be my commuter car for work.  I live approximately 24 miles from work.  The final lease payment was November 11th, so my wife Laura and I decided to trade her 2000 Olds Alero in and buy the Scion.  We spoke to the dealership and worked it all out.  They got the paperwork all together for us to sign and we made plans to go in and take care of it the Saturday after Thanksgiving.

The Friday after Thanksgiving I was getting ready to go hunting.  I started my Jeep to let it warm up while my dad and I loaded our gear up.  We hopped in and as I was about to put it in gear it shut off.  *poof* Like I turned the key.  After checking some obvious things I got my scanner out and plugged it in – no link.  My scanner could not link to the ECU.  Nuts.  We promptly moved our gear to my dad’s truck and went hunting anyway – priorities you know.

I tried in vain to get the part but no auto parts stores in the area carry it nor can they get it.  The closest Chrysler dealership wanted $656 for the part and $400 to program assuming I save myself $100 by installing it myself.

Saturday morning we arrived at the Toyota dealership to give them the Olds and title for the Scion.

Saturday afternoon I was driving my new 2008 Toyota Tundra SR5 double cab 4×4 with TRD off-road package and 5.7L iForce V8 in Desert Sand Mica.

Obviously my Jeep wouldn’t start and we estimated $125 to tow it from our house to the dealership.  So, I swung by my mom and dad’s house on the way home and borrowed his draw bar, then stopped at the U-Haul store and rented a car dolly.  We went home, winched the Jeep onto the dolly and used my new Tundra to tow it to the dealership.  I’m sure that was a first for them.  I’m also pretty sure that our sales rep earned salesman of the year for moving a pick-up in this economy.

I did my part to stimulate the economy.

Cheers,

goody

Over my head (Cable Car)…

Everyone knows I’m in
Over my head
Over my head
With eight seconds left in overtime

–The Fray

My wife works at a college (soon to be university I think) - Mt. Union College.  She’s worked there for about 5 years, and as one of her benefits, she, I, and our sons can take classes for “free” (not completely free – there’s a tax implication at the end of the year, but near enough).

Laura has been working on finishing her B.A., off and on when the class schedules suit her needs, which is good for her.  Unfortunately for me, I already have a B.S. and Mt. Union is a private traditional liberal arts college.  The college’s focus is on traditional students, and doesn’t offer much of anything in the way of evening classes.  That generally means that it has nothing for me in the way of academics.

This semester though, there’s a math class offered from 12:00-12:50.  Throw in a few minutes drive time to and from class, and I can fit it in by taking a 90 minute lunch.  Cool.  I decided, literally, the day classes start (today) that I’d like to take the class.  It was one of the most impulsive decisions I’ve ever made, but it seemed innocuous enough at the time.  I emailed Laura, she checked into it, and after some wrangling,  got the professor to admit me to the class as an extra (did I mention that the class was full?)100_2523

I need Calculus II, which I’ve never taken, for my M.S. in C.S. at Kent State.  I did take Calculus I at Kent State, but that was about 15 years ago, so I may be a little rusty… maybe.  I tried to take Analytic Geometry and Calculus I at Kent this past spring as a refresher, ultimately so I can take the Calc II class that I need.  I took the class on the premise that I would sign up for tuition reimbursement from NEC.  Unfortunately, due to my work-related travel I had to drop the class at the last possible opportunity, which is disappointing because I was doing really well until I missed too much time traveling to Japan and Dallas.  It was a bit frustrating as well because I didn’t get a refund for dropping the class or tuition reimbursement, so I basically paid $1200 out of my own pocket for what amounts to tutoring.  This time I saw an opportunity to take the same class at MUC for $free and avoid the downside if by chance something happens again like what happened during the spring semester.

Laura decided that she would take two classes this semester too.  One on Monday evening, and a second on Wednesday evening (interestingly, she didn’t mention that until Friday).  It really doesn’t have a big impact on me if she takes the classes other than I need to know so I can pick up the twins from pre-school after work those evenings.

That’s when it hit me.

Laura won’t be home until 9pm on Monday and Wednesday.  I’ll be taking Calc on M, T, H, and F.  The intersection of those schedules means I have to go in early on M and W – I can’t stay late.  I hit the treadmill in the mornings and the weights in the evenings.  That’s nuked.  Yeah, it’s only calc I, I won’t have to study much, especially after taking the “refresher” in the spring, but there will still be copious amounts of homework and quizzes.

Treadmill?  Weights?  Me-time?  Family-time?  Uh, Fantasy Football, hello?!

In order to take the class and pick up my boys on time on Mondays and Wednesdays, I’ll have to be at work at 7am.

I’ll have to get up an hour earlier on Mondays and Wednesdays to fit in cardio – that makes it about 5:15am wake-up (that’s the same time we got up in Army basic training, incidentally).  In order to keep my daily weight routine though, well, that’s a bit tricky.  My weight routine is Monday, Tuesday, Thursday, Friday.  My workouts last roughly an hour to an hour and fifteen minutes.  I’m already getting up an hour earlier Mondays.  I can’t go to the gym on Monday or Wednesday evenings.   Hmm.  If I tack on the time for a morning workout, then I have to get up 2 1/2 hours earlier on Mondays and Wednesdays – that puts me back to 3:45am.  Um, the gym isn’t open then.  I’ll figure something out – worst case scenario there’s an Anytime fitness near here

Moving along.  We signed Connor and Logan up for “small stuff” football at the local YMCA this fall (self so proud). That’s on Wednesday evenings at 5:30-6:45 for six weeks from September 10 through October 15.

None of this takes into account homework, work-related schedule snafu’s, recreational activities, holiday “stuff”, etc.

In short, I’m going to be a bit busy for the next 15 weeks.  No, I didn’t really think about it at the time.  I absolutely refuse to get beat by this schedule.  That’s just how I roll.  That means that I have to work out something for my gym schedule, cut WAY back on non-important things like *cough*TV*cough, and adjust my schedule a lot by getting as much sleep as possible.  Somehow, someway, I will make this work well and fluidly for everyone involved.

I think the hardest part for me will be keeping my head clear and not getting distracted.  I have a strong tendency to ruminate on things – work, health, family, etc.  This is going to be a big challenge for me to focus on one thing at a time and see it through before moving on to the next item.

Ah, the sacrifices we choose make.  I guess champions get up.  Even when they can’t.

Wish me luck.

Cheers,

Goody

Code reviews

Code reviews, the sanity check of software development.  They're a software engineering best practice initiative.  That's what a bullet point on my job description says, anyway.  Microsoft even calls them a best practice and has a slick how-to for C and C++:  http://msdn.microsoft.com/en-us/library/bb871031.aspx.

In a nutshell (a small nut) the idea is, you write some code, when you're done let me know, and then I look at it to see if it makes sense and is is free of glaring flaws.

We do code reviews all the time where I work.  I do at least one a week, and I ask other people to review my code… when I'm writing code not Word docs, all the time.  I get the occasional "why not just do this", and I occasionally I get to give it right back.  It's good.  It's a sanity check for the code.  It makes the software better; makes everyone (hopefully) better developers thanks to good feedback; and keeps maintenance costs low.

Now, here's the gaping hole: Code reviews are a sanity check on the code you wrote, not the code you didn't write.  See?  Makes perfect sense to me. 

When I look at code during a code review I'm looking at the code that you wrote.  I'm not necessarily looking for the subtle piece of logic that you left out that makes the whole feature work like the functional spec says it will.  For that matter, I may not even know what feature you're working on.  All I need to know is, what is this piece of code supposed to do, not what the entire feature consists of.  Code in and of itself does not a feature make.

Code reviews can not, nor should they, substitute for good testing, QA, and verification and validation (V&V for you software engineer types).  You still need to have some black-box testing mechanism in place to ensure that the final software does what it's supposed to do.  Code reviews can not always catch the missing logic or missing piece of code that makes sure there's money in the account before debiting it (disclaimer: that example is obviously obvious purposefully on purpose).  Having a test plan and having good QA is the only way to ensure that the software works (mostly – see "good enough").

 

Cheers,

Goody 

It’s just semantics

"Specifics, Bob."  One of my favorite scenes from any movie is the scene in Phenomenon when John Travolta is being interviewed by Brent Spiner (Dr. Bob) to assess his intelligence.  

Perhaps its just my engineer-type logic that finds it so appealing and humorous.  But for me those scenarios pop up on a daily basis.  For example, today I was sending an email with a Microsoft Word document attached.  That sounds benign, except for the extension – .docx.  In case you are… uninformed, docx is Microsoft's OpenXML format available in Microsoft Office.  It's the standard format for documents created with the newest version of Microsoft Office.  Which brings me to my point.

I stated in the email that the attachment is a Microsoft Word 2008 document.  Wha?  Hold up.  I'm sending this to a person using Windows and Office 2007.  They'll likely think I'm daft if I call it that.  So, I changed the wording to say it's Word OpenXML format, which will likely trigger the "hey, that's the new office 2007 .docx format" thought.  The thing is, I created the document using Microsoft Office 2008 for Mac OS X.  So, to me it is Word 2008.  To non-Mac people – heck, to most people – it's Office 2007.  The fact is, it's neither – it's OpenXML.

This sort of thing happens all of the time, of course: Kleenex / tissue; Coke / cola; google / search; band-aid / adhesive strip; the list goes on.

The point is…. well, there is no specific point, just an observation, I suppose.  Just remember, when you're trying to explain something, no matter how trivial, to an engineer you just can _not_ be too specific.

 

Cheers,

Goody 

Managing change

Change is the only constant.  The only thing that stays the same is change.  When… nevermind, you get the idea.

I read a lot about software and technology.  Years ago I used to read books about specific topics such as programming language X or NewTechnology Y.  These days I tend to read more abstract, hand-wavy sort of books on topics such as software engineering processes, management, and business.  As my career has evolved so have my reading choices.

In the past couple of years I've read a number books related to software project management, or more precisely management of people who make software.  One thing that's certain – managing software projects is difficult.  Software is managed like an engineering discipline.  There are milestones, deadlines, metrics, things to count, things to report, things to measure.  It's a challenging endeavor to say the least.

One thing that I've noticed, but only recently become acutely aware of, is the lack of change management.  No, not configuration management.  I mean the abstract sort of organizational, management, procedural, things-are-changing-all-around-me kind of change.  The kind of change that happens when your comfy surroundings are suddenly thrown into disarray because your boss got promoted.

My company recently went through a re-organization.  We're a fairly large company with roughly 146,000 employees worldwide spread across a number of subsidiaries and divisions.   This month our North American subsidiaries all realigned  to be more effective and efficient.  It had very little, if anything, to do with the economy, and everything to do with the company's organization.  It just didn't make sense to have the subsidiaries structured the way they were.  So the company did the wise thing and reorganized the engineering, sales, and support divisions to streamline their operations.  Although our company is fairly large, the office that I work in is fairly small.  We have about +/- 25 people who work at our office at any given time.  Of course that number fluctuates slightly depending on the number of contractors we have, whether we're fully staffed, who's on vacation, etc.  

Something that I've become keenly aware of in the recent weeks is change.  Change is normally disruptive and can be positive or negative.  If the company is growing then change can be good; if it's downsizing then change can be not so good.  No matter how you look at it, or how well it's planned, change is always… well, change.  Some people deal well with change, while others do not.  What's important is how well prepared management is to manage the change process.

In all of the technical books, blogs, and essays I've read recently, I can't recall a single one that dealt with managing change.  Perhaps the closest, and thus the best, thing I've read on the matter is "Managing Humans: Biting and Humorous Tales of a Software Engineering Manager" by Michael Lopp aka 'Rands in Repose' aka just Rands.

It's quite apparent around my office that change is happening.  Processes are changing; Projects are always changing, of course; Personnel are changing; We're hiring; Promotions are happening; Job functions are changing; But, most critical: attitudes are changing.  As I mentioned, some of the change is good, and some not quite as good.  What's apparent to me though, is the lack of change management.  Some people need to be hand-held through the change process, while others can barely tell anything is different.  The key to surviving change successfully with everyone's morale, and everyone in general, is to recognize who needs the guidance to navigate the new territory effectively.  Just because someone is averse to change doesn't mean they're necessarily a burden or unmanageable, it just means they're human.  Managers need to be aware of this and be able to recognize it.

Managing change may be considered a "soft skill" but it is certainly hard work.  So bosses, if you haven't dealt with change, or you just want to continue to grow, I can't recommend "Managing Humans" enough.  If you think you're a pretty good boss anyway, try reading about the subject or taking a seminar.  As long as you're managing humans, you can never be too prepared.

 

Cheers,

Goody