Programming

Why You Should Never Install a Release Candidate Operating System on a Production Machine

mushroom-cloud

Given that I’ve fully rebuilt my production laptop twice in the past week, I thought others might appreciate my story in case they ever get the crazy notion to run a release candidate OS on their primary machine.

Let me start at the beginning. Basically, my Thinkpad T61 laptop had been getting slower and slower over the past year. Vista was not helping. It only seemed to be sucking the life out of my once powerful machine.

With the recent release of Windows 7 RC, I thought I would give it a go and free myself from the clutches of Vista. After reading many positive reviews, I downloaded the Windows 7 install and went to work.

First I tried to install Windows 7 as an upgrade which leaves all of my existing applications intact. This seemed like the path of least resistance because the last thing I wanted to do was find all of my old application disks to reinstall them.

Unfortunately, it was not to be. The Windows 7 installer made it to about 75% then froze. I couldn’t move the mouse or do anything. After waiting for an hour and starring at the non-moving progress bar, I took the bold step of powering off the machine. I was expecting that my machine would be hosed (a technical term) when it came back up.

Luckily, it was smart enough to realize that the install failed and roll me back to Vista. So I was back at square one. The next day I tried the upgrade again. Don’t ask me why, I just thought it might work. It, of course, failed again at 75%.

So my options now were to just sit tight with Vista, or go for the fresh install on Windows 7. Given that I was already excited about having a new operating system (that’s what us geeks get excited about), I decided to double down and go for the fresh install.

I backed up everything to a USB drive and started the fresh Windows 7 install. The install itself was very straightforward. I booted from the Windows 7 disk and it finished the install in about a half hour.

After the my machine came up in Windows 7, it was beautiful. Everything just worked. There was no need to install any drivers and it was running fast! I thought that Microsoft had finally nailed this operating system thing. My celebration was premature…

On the first day, I began to notice some strange hard drive activity that would lock up the entire machine for about a minute. It was annoying but fairly innocuous because it only happened about twice a day. I could deal with it, but it seemed odd.

Everything else about Windows 7 was so good that I decided to press on and continue using it. I’m an optimist. Little did I know that the end was near.

After about a week of use my laptop with Windows 7, I was out at a client site just working like normal and it froze on me. The mouse stopped working and there was no way to get out of it. I had to power down the machine. I thought it was odd, but I was sure it would be fine after a reboot. I was wrong.

After it restarted, twenty minutes later it locked up again. Then forty minutes later, it locked up again. This was not going to work. I rolled back to old restore point and tried uninstalling software but to no avail. I had to conclude that Windows 7 RC was just not ready for primetime yet.

I didn’t want to go back to Vista, but I couldn’t stay with Windows 7 so I rebuilt my laptop with Windows XP. That’s right, an operating system from 2001 – it seems that Microsoft has not been able to make another solid OS. I’m hopeful that they will get the kinks out by the time it RTMs.

I also recently bought a mac mini in the that just happened to arrive during this week of windows chaos. I couldn’t help but notice the irony when I was rebuilding my laptop with XP (which seems so ancient) while the beautiful OS X was booting up right next to it….

Standard
Programming

Should You Be Doing Open Source?

key

Recently, I was re-reading the classic Getting Real by 37Signals and I ran across this quote:

When it comes to programmers, we only hire people we know through open source. We think doing anything else is irresponsible. We hired Jamis because we followed his releases and participation in the Ruby community. He excelled in all the areas mentioned above. It wasn’t necessary to rely on secondary factors since we could judge him based on what really matters: the quality of his work

Did you catch that? They only hire people that they know through open source.

In my head, I always wondered why anyone would want to work on open source and give away a product that they typically make their living on (ie – their programming skills). Doesn’t that devalue the craft? If I’m programming, don’t I want to billing for it?

I’m beginning to realize that there’s a flaw in this thinking. It assumes that money is the most important end-goal. But aren’t there other reasons that we work? Don’t even lawyers do pro-bono work for the right reasons?

Because while money is important, you can get a lot back from contributing to an open source project beyond the financial gain of closed source. Let’s take a look at some of the benefits:

  • Connections: As the 37Signals quote indicates, you meet a lot of interesting people doing open source. These people are usually passionate about what they do and very technically competent. It’s almost like getting an MBA where the people you meet can be important (or more important) to your future career than the material you produce.
  • Recognition: Would anyone have heard of DHH if it wasn’t for what he did with rails? What about RLS What about Linus Torvalds? Sometimes the way to make a name for yourself is to write great code and give it away to the world.
  • Skills: If you want to learn a new technology, the best way is to code something real with it. And what do you do if your employer is not using that technology? Find an open source project that is! That project will also most likely have highly skilled peers to learn from.
  • Contribution: Sometimes you look at your life and say, I’ve made money but what have I really added to the world? Open source gives you the opportunity to make that contribution to something you believe in.

Now, before anyone thinks I’m going to burn my copy of Atlas Shrugged, don’t worry I still plan to continue being a card-carrying capitalist and billable consultant. But I see no reason why a person can’t do both?

I plan to keep my eyes open for the right open source project. How about you?

Standard
Programming

Will You Code Until You Die?

A few months ago, I was stumbling through the various programming blogs and newsgroups and there was a thread about career progression in the tech world. Lots of people were talking about how to get into management, but one person had this to say:

I have no intentions of moving into management. I love coding and I intend to code until I die!

computerSkeleton

Wow! There’s something really powerful in that statement. It says I’ve found what I want to do with my life and I’m going to continue to do it for as long as I’m able.

But that’s a tough road to go down in many organizations. Often you start out as an individual contributor and as you move up the chain you start to manage people. Then you’re measured on how well your team is doing rather than what you do.

When looking at the org chart, it’s the people at the top (who manage lots of people) that generally have the most prestigious titles and make the most money. For better or worse, these people are seen as making more money for the company so they are considered more valuable.

Most companies just don’t have a career path for someone who wants to be a lifetime coder, and being an expert at coding is often not valued. This is especially true of companies whose main business is non-technical.

Software shops (eg – Microsoft, Google, and IBM) are probably more amiable towards the person that wants to spend their days coding. They do have titles like Distinguished Engineer, but even at those such places I doubt they ever make as much as senior VPs.

The Joy of a Craftsman

So there’s something wonderful about someone who says, I realize that it may limit my career and salary, but I love coding so much that I plan to continue to do it for the rest of my days. In my opinion, these are the true software craftsman — they code just for the love of the craft.

Having done both management and coding, I have to say there is something truly satisfying about cranking away on code. Building software is like creating a work of art and everyday you are working to make it better.

It’s great to be able to cross 5 bugs off your list at the end of the day or to run the software and see a new feature work. There’s definitely a sense that your days are not wasted and you are really doing something.

A Manager’s Life

Being a manager is more of a nebulous existence, you’re often in meetings and “communicating” whether in email, in docs, or in-person. You can spend a day fighting political battles and dealing with tough employees.

So at the end of the day, it can be less clear what you’ve accomplished. Also, if you moved up from the technical ranks, you have to be genuinely concerned about losing your technical skills because you don’t use them everyday anymore.

That said, the team you manage (depending on the quality of its members) can accomplish a lot more than an individual.  There’s something satisfying about seeing the team that you built come together and build a great application.

And let’s not forget, it’s the managers who often get remembered and rewarded rather than the individual contributors. No one’s heard of the designer that created the iPod’s distinct look but everyone knows Steve Jobs.

Choose Your Own Adventure

So which do you choose?

My advice is to stick with what you enjoy most because that’s what you’ll be best at and will make you the happiest even if it doesn’t have the highest pay or fancy title.

If you enjoy the thrill of learning the latest languages every five years and nothing makes you happier than staring a screen for three hours trying to identify a bug, then coding is for you. Just try to ensure you’re at a company that values skilled coders or possibly look into technical consulting.

If you are more of a people person and enjoy meetings, navigating office politics and removing roadblocks for a team, then you might be management material. A lot of the question boils down to whether you enjoy spending the majority of your time working with machines or people.

Neither is wrong as long as you don’t choose one or the other for the wrong reasons…

Standard