Archive for March, 2008

Published by nick on 28 Mar 2008

Leaving Yahoo! because of Microsoft

I’ve resigned from Yahoo!. Those that follow my blog knew this was coming, given
how outspoken I’ve been about not working for Microsoft. To make it very clear — Yes, absolutely, positively, my only reason for leaving was the upcoming Microsoft takeover. Otherwise I would have stayed at Yahoo! for many years to come.

I’ll miss Yahoo!, they are a great company, with a very smart, passionate group of people. I hope that everything goes well for my fellow Yahoos!. I’m sad to miss the people, the great culture, and the company perks. Gone are the days of free coffee, shuttles to work, tech talks, hack days, and a tremendous amount of community support. :(

But — what if I’m wrong and the deal doesn’t go through? Yep, I am willing to accept that risk. By my estimations, there is a small (less than 10%) chance that Yahoo! will avoid a Microsoft takeover. There may be a white knight or a wild card savior, and there are anti-trust issues still to be cleared — the deal may never go through.

Everyone chooses their own path through life. Personally, I don’t play “wait and see” with my career. Based on my research, I think the Microsoft takeover is all-but-inevitable. And even if they aren’t going to radically change things right away, the company will move in a direction that I’m not in agreement with.

It’s importantly for me to be passionately engaged with my work, and I’m excited to do that for a company whose values I believe in. Where am I going next? More on that soon. :)

Published by nick on 24 Mar 2008

Code reviews before every commit?

First, a little cartoon about measuring code quality.

How true this is! See the original article here:
http://www.osnews.com/story/19266/WTFs_m

All developers talk about code reviews, but most of the time, it’s one of those things that there is never enough time for, and always takes a back seat to other priorities, which means it’s easily left off.

I work part time at Wikinvest.com, and we have a policy that requires that all svn commits are code reviewed first. When this policy was first introduced, I thought that this policy was Draconian and would slow things down.

I kicked and screamed inside, thinking that it was unnecessary and was going to hamper productivity. I was told that this was common practice everywhere, which I knew wasn’t true. I went along — begrudgingly. Since I’m part time, it’s not my place to try to shape development policies.

However, now that I’ve done this for a few months, I’ve come to feel differently. Here are the advantages I’ve found in having every commit code reviewed.

  1. Less bugs — this is obvious. More mistakes are caught. The live site has less bugs. Duh. The evidence: Wikinvest.com has less live site bugs than any place I’ve worked. The time savings for this benefit alone more than make up for the total time spent fixing bugs.
  2. Higher initial code quality — Why? Hacks will be reduced. If you know that your code is going to be reviewed by someone else, you’ll take that extra time to write it well. Your name and reputation is on the line, and it will be presented to someone else for review. You know this as you are writing the code, and you’ll be encouraged to treat the project like a high quality craftsman would. Comments will be clearer. Edge cases will be more thought through. Logical flow will be enhanced. In general, developers will take more pride in their work.
  3. Enforced cross training — Every new piece of functionality, feature or fix has at least one other person that has seen it, and taken the time to understand it. This insures better code coverage across the team in case someone leaves or goes on vacation. Development managers — this will solve one of your biggest problems! When someone changes something on their own without letting anyone know, and the live site breaks, now you have at least one other person that might say “I think I know what it might be.”
  4. Developers learn from each other — I can attest that my code quality has improved because of code reviews. I’ve learned better practices, both by seeing others code closely, and by having others critique my code. I’ve been in several code reviews where I’ve told people about a better approach because I knew about some special function in PHP or I had previously solved the problem in a more elegant way. Big thumbs up here.
  5. Coding standards and conventions are better enforced — Even with the best intentions, we can miss the way the rest of the group is doing something. Perhaps we shouldn’t have that particular variable hard coded in the script, because someone else has already moved it to a configuration file. Or perhaps there is a new standard way for getting a database connection, but you missed the e-mail that announced the new practice. Code review to the rescue! It’s always good to go along with what the group is doing and adopt standards. Get two sets of eyes on the code to make sure.

When you weigh all the above advantages, the extra time spent code reviewing for every commit is easily offset by all the above benefits, and I’m sold that this is the right approach.

Here are some best practices to consider if you are implementing in your development environment.

  1. Set up a process for getting the reviews done and commits to happen quickly.
  2. Spread it around! Everyone should review everyone else’s code. Discourage silos. Remember, one of the key benefits is to have developers learn from each other. If two buddies always review each others code, you aren’t getting all the benefits from spreading knowledge across the team.
  3. Discourage any exceptions. The only exceptions are “trivial” changes like spacing or comments.
  4. The svn commit message should contain the name of the person that did the code review.

Instituting code reviews before every commit won’t be a popular approach for everyone. People will kick and scream, like I did. The chief argument will probably be time. “It will slow us down too much”. Yes, commits will be slower. But overall development will be much more efficient, and there will be less bugs. Would you rather spend less time on code reviews now or more later on bugs?

In doubt? Give it a try and see what happens to the code quality and developer engagement.

Published by nick on 17 Mar 2008

300 parody of Yahoo Microsoft takeover

This is fantastic.Steve Ballmer, Jerry Yang, Sue Decker, Bill Gates, all portrayed as the appropriate characters.

Published by nick on 11 Mar 2008

Wikinvest wins award for Best Business website of 2007

In addition to being full time at Yahoo!, another company I work for part time, Wikinvest.com, won an award at the 11th Annual South by Southwest Interactive Web Awards for best website of 2007 in the business category. See the complete list of winners

Hooray!

Shameless Plug:
Wikinvest is a website that applies the concept of wikipedia (community edited content) to the world of investing. We’ve got some great content, some very interesting expansions to the MediaWiki software, and the Search is pretty damned cool do (I built that). ;-)

If you are into investing, I encourage you to take a look

Published by nick on 07 Mar 2008

Is Microsoft changing it’s evil ways?

As a Yahoo! employee that stands emphatically against Microsoft’s hostile takeover, I’ve been pretty vocal about how awful Microsoft is because of their poor technology, their anti-open source stance, and their anti competitive history. So much so that Yahoo! management has asked me to “tone it down”. Ha. Ever since grade school, I do what I think is right, not what I am told to do.

Could I be wrong? Could Microsoft be changing it’s ways?

First, Microsoft announced that they were open-sourcing some of their platforms, a clear attempt at making-good with the open source community. I cautiously applauded this when it happened, even though I think that the timing was very convenient for appeasing Yahoos.

Today I ran across an article by Robert Scoble, where he highlights what good Microsoft has done in the last 6 months, and I agree the results are encouraging.

I just had dinner with a bunch of Italy’s top tech bloggers and technologists and Marc Canter. Plus I’ve been talking with people all day long. Microsoft hit major Internet home runs today with its announcements, based on what I’m hearing from formerly-skeptical developers.I haven’t heard this level of excitement about Microsoft’s Internet Strategy in years.

Interesting story, it’s worth a read. I support a change of heart by Microsoft, and I hope it’s genuine.

Not believing that Microsoft could really be trying to be a good citizen, I dug deeper and found an article by Dana Gardner, and he poses some interesting questions on what Microsoft’s ulterior motive may be:

And that raises the same old questions. Will the power increase to a point where the openness declines? Will the standards over time be increasingly set by the de facto marker leader? Will the Internet and its efficiencies work best for consumers and users, or those that can manipulate it best?

See the full story hereHmm. What are they up to? We will see. Most of the past 10 years of Microsoft’s business practices are marred with bad karma. If they are good citizens for the next 5, they can show the world that they have changed.

Published by nick on 02 Mar 2008

The most effective cure for electronic problems

Wii Icon

As a computer geek, I’m often consulted by my friends, family, and neighbors when anything electronic fails. People assume that because I wear glasses, I have some magic ability that has me more capable of fixing their microwave then they do. And they are right, I do. I have one valuable piece of information that fixes most electronic problems, more on that in a bit.

People in the computer industry are often hounded by those around them to fix their computer/electronic problems. Some guys get admired for their height, or their dashing good looks, the car that they drive, and how their hair seems to always be perfect. Girls look at them and say “Ooo, look at his hair, I bet he will take care of me.” or “He’s got big muscles, I bet he’s good in the sack”.

Me? Sigh. No. Girls look at me, a computer geek with glasses, and say, “Ohhh wow, I bet he can help me fix my computer!”

If they are hot nice enough, I usually will. I’m not looking for extra work or anything, but I do like helping people. Sometimes it does get tiring though, and the last thing we want to do after working with computers on fun stuff all day is to fix your broken computers. This sentiment is captured well by a T-shirt from ThinkGeek.com, which states, “No, I will not fix your computer”.

I have noticed that this has gotten better in recent years. Why?

  • Electronics are more reliable then they used to be. The bar for reliability in electronics continues to rise, although it’s still far below what it should be.
  • Computers are more reliable. Microsoft Windows sucks less than it used to, and more people are using Macs instead of PC/Windows. Macs are more reliable and easier to use. Often times when people come to me now with Windows problems, I’m obligated to remind them that I don’t have problems like they do because Macs “just work”.
  • The Geek Squad can be called.

So enough background, what is my secret? What is the most effective cure for fixing electronic problems? It’s a two step process.

  1. Turn it all the way off.
  2. Turn it back on.

Yep, that’s it. That’s my secret. A good portion of the time when electronics fail, simply resetting them to their original state will have them start working again. Now notice that I say “Turn it all they way off”. This includes unplugging it from the wall, or taking the batteries out. I mean all the way off.

I’ve had this be very successful on a number of different electronics.

  • Microwave that wouldn’t turn on
  • Printers with various issues (5+ times)
  • Fax machines that wouldn’t work
  • Washing machines with strange error codes
  • Televisions that wouldn’t turn on
  • DVD players with strange messages
  • Xbox and Xbox 360 that wouldn’t turn on
  • Playstation (1, 2, and 3) that were acting odd
  • Car navigation systems
  • Ipods that weren’t playing correctly
  • And of course, Microsoft Windows computers - rebooting Microsoft Windows has fixed 100+ problems for me. Linux and Apple also need to be occasionally rebooted, but 99% of problems can be fixed by restarting services, so there is no need to reboot the whole computer.

My family and friends know that before asking me to fix anything electronic, that they better have done this, because it will be the first thing I ask them: “Did you turn it off and back on again?”. ;-)

The next time you have something electronic fail, before calling up your friendly computer geek, try turning it all the way off, and then back off again, and see what happens. Comments and success stories welcome.