Wednesday, November 21, 2007

Mass Effect or Rock Band?

That is what I said to myself when I got home from the store yesterday.

Decisions, decisions...

I started with Rock Band -- we had a full band waiting to play (myself, husband, sister and brother-in-law). I needed to set everything up before they came over. (i.e. I wanted the drums all to myself)

Having 4 friends rocking out is really a blast! My sister thinks we should dress up and do a show on Thanksgiving for our family. I'm not sure, will they appreciate our musical talent?

Can someone tell me how to stop playing the same songs over and over again? If I have to sing In Bloom one more time...

My sister and her husband went home after a few hours of rocking and it was on to Mass Effect. It looks great! Only problem... How do I play? KOTOR is one of my favorite games of all time and so far this game feels more like Halo than role playing... Need to work on using powers better... I figured out the equipment screen though!

I couldn't agree with Penny Arcade more :P (read all 3)

Whatever happened to sustainable pace?

Who practices sustainable pace?

Development is an art. Its a mental challenge (emotion if you pair). As a day goes by, an individuals definition of quality changes depending on their mood and energy.

Over short periods of time a team can keep up long hours; especially if there is positive momentum or results in sight.

But permanent hours to get more out the door? Does this really work with out sacrificing quality and practices?

How many times are corners cut to meet a deadline? Was it ever too much to write that test first? Was code copied without refactoring to remove duplication? Is there spike code in production cause it worked?

Is that our risk to take?

Can a person control burnout or realize the compromises they make? People have an amazing ability to adapt to any situation. In a bad situation, we forget, we lie (mostly to ourselves), we ignore and we accept things we shouldn't.

Tuesday, November 20, 2007

Morning Scrum -- Remote Style

This is what life at Oxygen looks like in the morning (from the comfort of my home):

the joy of pair programming

I started speaking about pair programming because I didn't like it and I needed to understand this practice better.

Sometimes I still don't.

But, I admit this:
Pairing is a great practice.

Great, but surprisingly difficult.

The ideal pairing situation requires both people to be expert developers. They need to be open to the other person's idea. And in this case (expert developers with good, strong opinions), its likely to bring pain.

If the pair is not parallel in skill (which is often the case), the stronger person must slow down and take on a mentoring role. Being a mentor when you want to be as productive as possible is frustrating. Many developers are poor teachers, but communication and discussing ideas is key to creating a great solution.

Every person you work with is different and you create a unique pair. You will go at different speeds, create different designs, even make different jokes.

Pairing is a good mechanism for teaching, but the real strength is in design and code. I have seen no other practice keep every team member familiar with every project, design and decision.

The whiteboard is rarely used because the pairing session isn't about code, its about creating. The design decisions are made when the pair needs to make them. Any previous design or decision may not be the best solution when (and if) its needed.

If discussion can be avoided, don't do it. The best way to be productive is to keep coding and evolving. Focus on small steps to deliver functionality quickly and ensures CI success.

With pairing every moment is a code review. If the team switches pairs and owns the code, everyone is familiar with everything. No reviews, no whiteboards, no documentation.

Imagine the possibilities.

Wednesday, November 7, 2007

Working remotely

For the past few months, I have been working for Oxygen remotely. We learn better ways to adapt to the environment everyday, and overall it has been successful. Ken has posted plenty of pictures of our remoting adventures and the worst part is that I miss everyone.

I love working from home, however, it takes a lot of discipline -- and not just for me. My teammates need to be aware that they need to speak a little louder or stand by a camera and I need to stay away from halo during the day :P

Personally, I find it easy to stay in a work mode while I'm at home. Pairing is quite effective remotely. I tend to keep better focus while I'm remoting with a pair than in person.

Meetings are a lot more challenging. Good microphones and video feeds are a must if you are to have any chance of "being" in the meeting. When I first started working from home, I wasn't able to participate in meetings at all, but with help of some additional media equipment, I can go to every meeting in my pajamas :)

If you are working from home, here is some advice:
  1. Have space dedicated to work. This helps you stay focused and keeps you from working too much. If I setup shop in my den, chances of me working extra hours while my husband plays xbox is dramatically increased.
  2. Be honest and open about communication limitations. Its better to interrupt if your call drops off or someone is too far from the microphone than miss something.
  3. Respect your coworkers during meetings and while they're talking. Just because they can't see you surfing the web while they are talking about some deployment doesn't make it okay.
  4. Take breaks, walk the dog, get some exercise. Believe it or not, its easier to sit on the computer during lunch than in the office. Its just as important to walk around when you are at home. And stay away from the snacks in the kitchen!!
  5. Get a really good espresso machine.
  6. Visit the office. Even if you don't have to come in, its good to keep the bonds strong with teammates. If you are too far to come in on a whim, try to work something out with your company that lets you come in not just when you have to, but when you want as well.