Another Baby Photo

We were in CT and our friends have a lovely daughter.

I have 2 more photo shoots to work on and some more thoughts on CMMI and Agile to get together. I must admit, I’ve spent these past few days, between jobs, enjoying the outdoors. Now that this is coming to a close, I’ll be certain to return to my regular posting schedule

Another photo of Kai

Why yes, I’ve been wrapping up one job and preparing to move to another – and that is why I haven’t had time to make many substantial posts of late. However, I’m hoping some photos help make my limited management/engineering blogging a little easier.

Wait, I'll free you ... oh wait I can't

More cuteness

In other words, I haven’t had a chance to post my thoughts on Agile and CMMI. Therefore – cuteness (and more photos added to the children gallery)

A cute placeholder

I am planning a few posts on CMMI and Agile together but in the meanwhile, a photo of my son from the other day

I love the morning light that hits his room. I can get some amazing shadow play, well when we aren’t getting visited by the great delude 2010 (for those not in the Boston area, when we had 14+ inches in March, and we were on the lower end). I also like that this image shows a few key things to do when taking a photo of someone:

First, get to there level unless you are looking to convey power (shoot from below) or weakness (shoot from above). For kids and babies, shooting from their height really gives an image a lot more impact. I’m actually a little under so he looks a little more powerful than he is.

Second, use light. I try to let my light create depth and angles. When I use flash, I rarely, unless it’s a snap, use a flash on the camera and point it at the person. I’ll bounce, hold the flash aloft, use remote triggers or use studio lighting. I want to create something with feeling.

Third: hang around. This is really true with babies. You need to work fast, get them interested, and make them happy.

Kai on a Swing

My son is a great model, I’m going to try to post a few more photos of him here as time goes by.

I can almost hear him say: Mother, you shall regret putting me into this infernal contraption. Oh yes, you will pay …

Bellydancer gallery now up

I finally filled out all the side galleries. I’ll be adding some older work as time goes by (and some newer work too!). For now, if you like bellydancing, or bellydancers – you should click on the gallery. Or the image below.

Coders who become Managers – Lessons Learned

For the better part of my career I’ve been either a lead developer, architect or manager. For an even bigger chunk of that time, I’ve worn those hats at the same time. This is the nature of small company life. However, there are a few things I’ve learned along the way; things that separate good managers from bad.

First, read this post, I think it’s apt to what I want to talk about. Have you read it? Good. Now the first lesson, and most important, as a coder turned manager that I can impart on you is to trust your employees to get shit done. They can, and will do it better than you (or at least different). You, as their manager, are not their to micro manage their every move, critique their use of memory, or otherwise spoon feed them their work.  They are the ones who will do the work, who will architect the software and who will make the product sing and who will make mistakes. The manager is there to gentle guide, provide motivation, act as a sounding board, be a den mom, act as protection from those above and below and generally make the developer think life is great and who the heck needs a manager anyway?

This falls into the second thing I learned. When I’m in a hybrid manager/coder role – I can never be on critical path. In fact, the farther away I am from the main line the better. This allows for two things. The first is my sanity. If I have a 5-10 person team, the most coding time I’ll get is 10% – and most of that time will be after hours (heck it will be after dinner). Therefore there is no way I can be near critical path. I should be doing grunt stuff that keeps my developers moving. My time during the day will get eaten up by meeting, keeping developers happy (free therapy!), planning, scoping, budgeting, and other general tasks.

Now you may be saying as manager I should be architecting too. To this I’d say you should be involved in the discussions but you should not be the lead architect. What you should do is make sure everyone is designing to the right interfaces and that the designs fit the requirements (and yes Virginia, there should be requirements). However as a manager you simply will not have the time to be the chief architect and keep an engineering team on track and focused (and happy and productive).

The other thing to remember is that not everyone is like you. Your co-workers may have different motivations, they may have different styles, they may not be as good, though hopefully, if you hired right, they are better than you. This means you’ll need to remember that scheduling for them is not like scheduling for yourself. Also you will need to remember that personal interactions are now really important. Is that senior person getting the right type of freedom and challenges? Is that junior engineer getting mentoring and getting the chance to solve some hard problems on her own? Does that developer desire more learning? Does everyone have a mentor or sounding board? That average developer, even though he’s not as good  as you were, are you able to step back and see that he’s getting everything done and maybe just needs a little firmer guiding hand? These  are your new worries. And let me tell you, when you start getting these right, when you start seeing people become not only more productive but happier, you will get one of the greatest feelings of accomplishment there is. Only to be topped by seeing the product you are working on reach the market (success makes a lot of problems go away - Guy Kawasaki is right about that too).

Being an engineering manager, after being a coder, means you need to let go and trust. If you can do this two things, there is a really good chance you are on your way to being a good manager. To become great takes more, but that’s something I think we all strive for (even those who we think are great still strive to be better, and that’s part of what makes them great).

Robotics and Picking up Embedded Dev. Sort of

A few days ago I picked up a Lego NXT-G Mindstorm kit. I’m really digging it. So far I’ve just started experimenting with Lejos and I must say I’m pretty shocked to write that I’m enjoying writing Java code in an embedded environment. Of course I’m not doing anything serious at the lowest level. yet.

Expect a few videos up here over the next few weeks. The two current ideas that have my attention are controlling the robot via a wii wand and picking up on the work done at the animat lab. Now the animat lab has some special meaning for me since I took some of their navigation work and implemented/modified it for a virtual “robot” many years ago. I lost that work in the great hard drive crash of 2005 (thus my paranoid triple backup strategy these days). In any case, I’ve fallen behind on the research and those folks always produced some neat stuff.

If I get really creative (or my bruised heel takes too long to heal) I may even try to create a Twiki.

A few more gallery updates

The weather here in Boston has been lovely. The nights have been peaceful and it seems it was time to further get the photo gallery links up and running again! There are 3 new galleries on line, none of which is complete. More will be added as time moves along. For now, Travel, People and Outdoor were updated.

Gaining loyalty (aka don’t be a dick)

To be a great manager, you need to gain both loyalty and respect from the people who work for and with you. Respect can be achieved by simply doing your job well and I’ll cover that in some later post. Loyalty, however, is another thing entirely and it must be earned.In fact, if you try to cash in your loyalty chips before you’ve earned it, odds are you’ll never earn it at your current position. So how does one gain loyalty?

Before everything else, the golden rule that we all learned when we were kids is a great starting place: Treat others as you yourself would like to be treated. The more adult addendum is treat everyone how you want to be treated since its a long way down. I used to think this rule was all you needed. That was a little bit naive of me. Still, it’s a great starting place: and one that will get you about 80% of the way. This fails, though, for people who are motivated by different things. So my caveat to the above is find out how people want to be treated and then, if you can, treat them that way.

This means that one of the most important skills a  manager needs is the ability to listen. Find out what your employees want, what motivates them and ensure that they feel enabled to reach their goals. Figure out how to make these goals happen. Note these goals should, but don’t always, align with the company goals. That is ok too[1]. A great manager knows her employees. She knows who to have the weekly one on ones with, she knows who loves training, she knows who needs to be pushed into the next level or who needs some extra mentoring. She knows who needs the thanks or who needs a beer or who needs an extra day off in Montreal without HR finding out about it. Just getting this far puts you ahead of most managers. These simple things show that you are listening and that you care and that you are human. For me, it’s really simple; my employees make me shine or make make me walk the plank. If I give them the freedom to make me shine, 9 out of 10 will.

The next piece is to always be truly thankful. Every time I thank someone, take them out, or show my appreciation in some way; I mean it. When someone really goes out of their way to make something happen, I make sure they are credited – and that there effort is acknowledged. Never take anything over 40 hours for granted. Whenever someone feels that they need to talk to me, or share an idea with me; I always make time for them. I want the people who work for me and with me to come up with new ideas! Anything I can do to encourage that extra mile thinking makes for a win- win situation. I don’t want to manage mindless drones. Drones do not go the extra mile. Happy, respected, and motivated people do. Plus happy people are a lot more fun to work with.

The converse, when I tell someone they’ve disappointed me, is also extremely powerful. Typically, if I’ve gained the loyalty and trust of the employee (and vice versa since this is a two way street) this makes the admonishment go straight to the heart and i can expect to never see the same type of mistake again. It’s a powerful tool. I can still remember my mentor (and friend) showing sadness at something I did (check in code at the end of the day – just before a 3 week trip) that broke the build. Let me tell you, to this day I’ve never checked in code just before vacation – not without running every single smoke test I could get my hands on. That’s the type of impact I’m talking about.

Sadly, some people don’t get it. For example, I once worked for an extreme type A boss. He’d put in 90 hours a week and he’d expect exactly the same “heroics” from you. If you only put in 80, you’d get no credit. If you worked a weekend getting a project in shape for a deadline, well that was your job. Reading this post from Mr. Brodzinski covers how demoralizing this attitude can be. Another boss had no qualms about asking someone to come in on the weekend and would then spend the following Monday talking about her amazing weekend on the Cape. Also not really good. This is exactly how to destroy a team. Nothing is more demoralizing than putting in your heart and soul, going the extra mile, and then getting pissed on.

At the end of the day, remember to treat your employees with respect. Know what they want and what motivates them. Make sure you are there for them and that you have their back. Always listen to them. If your employees know that you will go to the wall for them, that you will help them reach their goals, and that you know, and market, how awesome they all are – you will have one amazing, and amazingly productive, team on your hands.

[1] It’s important to remember that everyone is more than their job. If you know your engineer wants to go to grad school for Political Science, work with her to make it happen. See if you can transition her work to someone else, maybe keep her on part time. This will make her transition out of the company easier, leave her as a raving fan, and give you good karma going forward. After all, being a good manager is also about being a good person.