My dad has asked me several times in the past, "What makes a good software engineer?" I don't think he completely understands what programming is, or what skills make you better or worse at it. But he does wonder how some products are better than others; some products are clearly more stable, evolve much quicker, and are easier to use. He also sees that the quality of work coming out of India isn't as good as what is done here. So why are some engineers better than others?

I always explained to my dad that writing a computer program is like solving a puzzle. Most people can do it, but people will take different approaches and different amounts of time. Outsourcing something to India is like giving them the puzzle to solve. You'll get a solution back, but it might take longer or not be as optimized.

I've been working on a very difficult feature for Final Cut Pro. I've literally been pulling my hair out for the past couple of months. About 3 weeks ago I was hitting some major issues and was very frustrated. But instead of pushing on and dealing with each crash or bug one by one, I took a step back and wondered if my original design was correct. I was actually able to come up with an entirely new design, throw out maybe 20-30% of my work, but end up with something much more elegant and stable.

For this same project, I have one more hairy piece I need to code. I've been dreading it since I designed the feature months ago. One of the problems with software engineering is once you have a puzzle (feature) in your head that's bothering you, it's hard to stop thinking about it. I have been constantly running through user scenarios in my head, trying to come up with different solutions to my problem but finding holes in each.

I was just on a short flight from LAX to SJC and I knew I would need to tackle this engineering problem soon, once I got to Apple. Then I had my eureka moment. I came up with a solution that avoided all the hairy Final Cut Pro code I was afraid to touch. I came up with something that's little code, very simple, easy to maintain, and only makes one small compromise. Overall it will be the difference between a buggy feature that's a month late, and a rock solid feature that will leave me with enough free time to do even more.

This is why I love writing code. You're solving puzzles, and sometimes you come up with these amazing ways of doing something and it feels great. You design something well so that it's bug free, efficient, and easy to maintain in the future.