Sunday, March 2, 2014

Dealing with Change

Change. Some embrace it, while others cling to what they know. That's one of the best and worst things about software. It's always changing, always evolving. Just think how far software has come in the last 20 years.

Back when Microsoft introduced Windows 95, it was a revolution. Rather than DOS, a text-based computer interface where users had to enter commands at a prompt, it offered a graphical user interface, also known as a GUI, where users could launch programs and open files from icons on a "desktop" or in other "folders". Looking back now, it seems like an obvious change, as it made computers more accessible to many people because it made the interaction more intuitive.

But here's the thing. There were still lots of people out there at the time who were used to the text-based interface. So how do you make sure those people don't feel alienated by this change? By making it so one of those icons can launch a command prompt where users can enter text commands as before.

It's a simple but important lesson in user interface design. Even if you think you're creating the next great user interface, you need to be able to take a step back and not forget about what people are used to. It's important to learn from things that didn't work, but perhaps just as important to not ignore what did work.

Since Windows 95, Microsoft's OS has undergone much more gradual evolution. Windows 98, 2000, XP, and 7 were all well received and just built upon the successes of previous versions. Windows ME and Vista received less popular reception, but in both cases Microsoft bounced back by fixing the problems of the previous version in the next version.

Now, while Microsoft was busy churning out the world standard OS for desktop computers, another industry started to to take off. The smartphone industry. Wisely choosing to participate in this market, Microsoft developed Windows Mobile, an essentially mini version of desktop Windows. It makes sense at first glance, as it minimizes the change and transition for someone used to Windows on their desktop computer. But in practice, which I can share from experience as I owned a Windows mobile smartphone for a couple years, it really didn't work so well. Windows just wasn't designed to work on such a small screen.

Meanwhile, Apple developed the IPhone, which was a great innovation in user interface design for a smartphone, and as such took the helm of the smartphone industry. Eventually Google jumped on board with Android, where they took lessons from the IPhone interface and built upon it, eventually swaying some people to switch from IPhone to Android phones and become Apple's main competitor. Then Apple launched the IPad, a cross between a smartphone and a desktop computer, and really started the tablet industry. Google followed them into this space with their own tablet devices.

So what did Microsoft do? They made Windows 8.

Now I'll be the first to tell you that I did not like Windows 8 when it came out, and I still really don't. My brother-in-law, a big Microsoft fan, even gifted me a copy of Windows 8 and I chose not to install it, instead keeping Windows 7. I use Windows 7 on my work computer too. Only recently did I start using Windows 8 for the first time, and that's only because I bought a new laptop that came with it pre-installed.

So what's the problem with Windows 8 exactly? For one thing, they introduced the whole "Metro" look, which many, including myself, felt was a step backward. Flattening things like scrollbars and removing color, gradients, and transparency from the color scheme and icons was certainly an odd choice. But I think the bigger issue is that they changed too much while also taking away key successes of their past versions, like the Start Menu.

There's another software company, Stardock, which is making $5 per install for a piece of software they created named Start 8, which simply restores a Windows 7 style Start Menu to Windows 8. I for one think it's great that this company decided to do this, as did some other groups that released free versions. I personally installed Start 8 on my new laptop and it's made the transition to Windows 8 much nicer for me. In fact, I've done everything I can to make Windows 8 look and feel like Windows 7.

It will be interesting to see what Windows 9 is like. Hopefully Microsoft will learn from their mistakes with Windows 8 and bounce back strong, like they did with Windows 7 after Vista. They just need to remember what made their OS so popular in the first place.

Now you may be wondering why I've spent all this time talking about Windows. After all, I said I was an Open Source programmer, so why not talk about Linux, the Open Source OS?

Here's the thing, and I hope the Open Source community will forgive me. I like Windows. It's been installed on every computer I've ever owned, along with Microsoft products like Office. And I'm willing to spend money for these programs even when there are free versions available, such as Open Office. But it's not because I think Windows is perfect, or even necessarily better than Linux. I have a lot of respect for all the people who have devoted themselves to building Linux and making it what it is today. The thing is...

I'm used to Windows and haven't wanted to change.

Go figure.

Saturday, March 1, 2014

Introduction

Let's face it. Driving can be a pretty mundane activity, particularly when taking road trips on the highway between major cities where the most your GPS has to offer you is to stay straight in 60 miles or something. It's important to have something to help pass the time besides listening to music and keeping your eyes on the road while occasionally glancing at the scenery; if there is any.

I like to pass the time by dreaming.

Now before you go and assume I'm asleep at the wheel, that's not what I mean. I'm a software programmer, and I dream in code.

I've been programming now for about 10 years, professionally so for 5 years since graduating from the University of Michigan back in December 2008 with a Bachelor's in Computer Science. In fact, tomorrow is my 5 year anniversary at the healthcare software company where I work as a full-time software developer. But I'm not here to talk about my job. I'm here to talk about something much more special than programming for a living. I'm here to talk about programming for fun.

Now you may think I'm crazy, and in some ways you'd be right. To enjoy losing yourself for hours into several pages of source code just to make something blink on a screen is certainly an odd thing to call fun, but I guess that's just how I'm wired. I'm always coming up with ideas for things I'd like to create, whether for myself or others, or sometimes because it should just exist. I also tend to be critical of software others have written, particularly in terms of the user interface they present. Sometimes I can't help but feel I could have created a better user interface myself, or at least I would have done a few things differently. I guess in some ways, I'm just never satisfied.

Before you get the wrong idea again, I have a good and fulfilling life. I have a secure job doing what I love for a living. I have a wonderful and supportive wife with whom I'll be celebrating our first wedding anniversary in April. I have a dog named Bowser (after a certain Italian plumber's nemesis) that, despite making this post take twice as long to write by constantly craving my attention, I still love a lot. I have great friends that help me socialize and take a break from the computer. And I have a comfortable and spacious condo I've owned for 3 years. So in that sense I'm quite satisfied.

However, in terms of the limitless potential that software provides this world, I know that we've only just scratched the surface, and even what we've made sometimes has a tendency to scratch us right back if you know what I mean. Companies that make software often focus on what makes them money, and sometimes the experience of end users isn't it. That's part of why I'm so passionate about user interface design. But I can only do so much to improve the user interface of my large company's software, and even then it's just one company in a sea of others that don't always spend the resources necessary to make good user interfaces.

That's what I love about Open Source programming. It's a community of people dedicating time and energy to create applications for the end user, not for money, but just because they can. And I am proud to consider myself one of them. I just wish I could do more.

The thing is, I have a lot of ideas. Not all of them are good, and my wife will be quick to tell me some of them are pretty bad actually, but I can't help but have them. Even the good ones are often left in my head or as a scribble in a text file on my computer aptly named TODO.txt.

I'm hoping starting this blog will be one of my good ideas. I'm sure my wife will be happy I have a place to share my ideas besides talking her ear off. It will also be a place to share stories of my experiences as a programmer and the joys (and sometimes headaches) it can bring. And maybe some of these ideas and stories can inspire others to take up the noble helm of Open Source programmer, whether to build upon my ideas or their own. Maybe someone who reads this will find themselves designing the next great software innovation the next time they go for a drive.

It's a nice thought, right?