Google Chrome: First impressions

I had to do it. I installed Google’s new browser, Chrome.

My initial search for the download page was performed in IE8 Beta2’s Live Search bar (take that, Microsoft!) and I didn’t get the results I expected — surprise! Instead of a prominent download link, I was presented with several news stories and a link to Google’s little comic commentary about Chrome (which is a good read, by the way). So, I just went directly to Google and searched there, and of course they had the download link in the Sponsored Links sidebar as well as the first position below news results. I tried the search for “google chrome” also at Yahoo and AltaVista, just for kicks, and noted that the download link was near the middle of the first page of results. Odd, then, that it doesn’t appear in Microsoft’s Live Search results at all, don’t you think?

Anyway, I installed it and poked around the web a bit, paying special attention to sites like GMail and agentzh’s blog that are heavy on the Javascript. Overall, it worked well enough. I didn’t notice any drastic difference between my typical Safari 3.1 and Chrome, though it was quite snappy in GMail. Nice job, Google.

Of course, we all realize that in the end Google’s release of Chrome is a self-serving action. Better browser performance means they can push their apps harder, and improved perception of security and stability might make people more apt to use online spreadsheet and word processing tools. I applaud their efforts just the same, and I think we all hope this pushes Microsoft and Mozilla toward further innovation.

Software Development: It’s all in your head (from BarCamp GR)

Disclaimer:

These are my unfinished, unpolished thoughts, bound to be revised and rethought.  I publish them in the hope that they might spark your imagination and make you think, if only a little.

Sparks & motivation

This talk came about because a few things I’ve read and heard recently (particularly from Andy Hunt — see the link at the end) have resonated strongly with my own feelings that the software development community is, perhaps unknowingly, ignoring a few core skills. We tend to focus so much energy on creating, teaching, and learning new tools and methods that I think we may be losing focus on the other things that make us good software developers, namely our problem solving and design skills.

It’s not that tools are a bad thing — they are very important. But, does using Photoshop make me a designer? Does owning a wrench make you a plumber? So, then, neither does opening up Vi or starting up Eclipse really make anyone a software developer.

As Andy Hunt said in Pragmatic Podcasts: Andy Hunt on Pragmatic Wetware, “Software is developed in your head, and in the heads of your team members.”

Problem solving

I had a particularly interesting interview a short while ago. The first question I was asked, after introductions and obligatory handshakes, was to show how many snowflakes had fallen on Earth since the beginning of time. A dry-erase board and marker were the tools provided. At first their request sounded a bit odd, and it was a bit intimidating, but in retrospect it makes plenty of sense. A lot of what we do as software developers is break large, impossible-sounding problems down into smaller bits that are easier to understand and solve. Reassemble those pieces correctly and you’ll also solve the larger problem.

Tools or preferred development methodologies might have some impact on how you approach the task, but I think we’d find more similarities than differences. Consider that nearly all programming languages provide facilities for managing these smaller pieces. Whether they’re subroutines, functions, macros, or our favorites from OO (classes, methods, etc.), their purpose is to help you break things down into manageable chunks. Modern IDEs make it easy to manage large groups of files and dependencies.

Applied

It takes time to load up the context of a problem into your brain. And it only takes one disruption of the wrong type to blow it. To help the design process, I tend to:

  • Talk through it with someone else, possibly away from our desks to avoid interruption.
  • Put on headphones if I’m working alone in a distracting environment.
  • Take short breaks to let ideas settle and when you hit particularly troublesome parts.
  • Keep it simple. Resist the temptation to make things more complicated than they really need to be. Agile’s YAGNI concept falls under this idea, but is only one example.

Also, any code you don’t have to write yourself decreases the amount of information you have to load into your brain. Use libraries from CPAN, Ruby Forge, or wherever you prefer that have already been written and tested.

Design

Software developers actually do a lot of design work — we follow the same process as nearly any other designer:

  • Analyze the problem with the customer
  • Take the intended audience into account
  • Create a solution

So, there is a lot of creativity involved. This is one big reason why I really enjoy being a software developer.

One interesting thing I’ve noticed is that we software developers don’t really test the usability of our code. I would love to see someone put together a serious usability test of a few different languages or libraries — I think we would learn a lot about ourselves and put some concrete evidence behind coding standards and best practices.

Applied

Differences of opinion are okay. In fact, they’re a major contributor to success in any design task. Agile development encourages this through pair programming.

A lot of the time, we and our fellow team members are the most significant users of the classes and modules we write. At the very least, it’s going to be another developer using it. Be kind to yourself and the other users — put some serious thought into how users will interact with your code. Maybe even do usability testing.

For more…

Pragmatic Thinking and Learning by Andy Hunt

More reasons to attend BarCamp

If you’re still not convinced, here are a few more reasons why I think you should attend BarCamp Grand Rapids.

Gain a new perspective

Different people approach problems in design and technology from different angles. That’s a great part of being human — we’re all different. BarCamp provides an opportunity to share your approach and listen to the thoughts of other people. So pay attention. Paradigm shifts included free of charge.

Be a part of the community

Design and technology play a major role in companies across West Michigan, but how often do you really interact with these people outside your own company? We often share goals, challenges, and interests, and we all have a lot to share and a lot to learn. In short, forming community makes us all better at what we do. This is one of the times it’s good to be “one of those people.”

Get free stuff

There will be food, for sure, but rumor has it there may be other extras for the participants. Who doesn’t like free?

Practice, practice, practice communication

The best way to perfect something is to do it over and over again. And, truth is, very few of us have perfected the art of communicating with our fellow humans (especially some of us tech geeks…). So, come out and give a talk — it doesn’t have to be long. Share something you’ve been working on, or something you’ve observed about design and human behavior. We appreciate all contributions.

Meet people who appreciate your humor

It’s not everyone who understands how to turn a <div> tag into the perfect sippy cup for a toddler: 

div {
    overflow: hidden; /* Keep messes in check */
    padding: 1em; /* Don't hurt anyone */
    vertical-align: baseline; /* Keep it on the table */
}

Hope to see you there!

BarCamp Grand Rapids 3

It’s that time of year again. No, it’s not time to take the popup trailer out to the Lake Michigan beaches or brave the mosquitos for a weekend backpacking trip along the Manistee River Trail. It’s time to get ready for a different type of camp: BarCamp.

BarCamp Grand Rapids

BarCamp Grand Rapids is returning to Calvin College on August 15 and 16, 2008 for another two days of informative, informal, inverted conference. If past years are any indication, there will be plenty of food, tons of geeked-out conversation, and piles of new information that no one should miss. So, put it on your calendar, and we’ll see you there!

Check Your Facts!

Disclaimer: This is a bit of a rant. Not something I do often, but I feel this particular point is relevant and frustrating to a number of people besides myself.

I am getting tired of reading blatently wrong, un-researched, and yet boldly-declared information posted on the web. Not postings on puny personal blogs (like mine), those I can forgive. Instead, I’ve been seeing news items and statements on supposedly trustworthy sites that just don’t get the facts straight. This has been particularly and most recently true with the slew of press releases covering the release of Perl 5.10.

For example, take this article on LinuxDevices.com. Like several other press releases, they claim:

Just in time for Christmas, there’s a new version of perl, the first in over five years.

Perl 5.10 is not the first release in 5 years — it is the first feature release in that time. That is a big difference. There have been many stable releases since 5.8.0 that fixed bugs and improved Perl’s performance and stability, which paints an entirely different picture from what the article actually says. Their news item makes it sound as though Perl is an unsupported and inactive language, which is entirely untrue.

Also, the paragraphs comparing Perl to Python, Ruby, and PHP is laughable — and I’ve seen this exact text on several sites (eweek.com, for example). Yes, there are a lot more people using those languages today, and they are growing, but Perl still holds a formidable share of the dynamic language job market and that doesn’t appear to be changing rapidly. Don’t claim that Perl is a dying language unless you can show evidence.

Please check your facts before you post! It’s better to be correct than first.

(And FYI: Ruby is not a language “specially-made for use on the Web”.)