Start the Conversation with a Programming Standard

conversation.jpg

A common topic in my software engineering courses is: "How do I help my team increase the quality of our software?" There are several best practices we can use to reduce defects in our code and ensure that it has all the good "ilities" (Readability, Maintainability, Testability, etc). One of the easiest techniques is to create a Programming Standard document.

What Are The Benefits of Using a Programming Standard?

Many good things can happen when you draft up a programming standard. I think one of the best effects is that your team will start discussing best practices and quality. One or two people can create the document then present it to the group for discussion. If everyone starts abiding by the guidelines, it can add consistency to your code base, making it seem more like the work of one author. The person maintaining the code five years from now will love you for it.

Also, you may want to start doing code reviews at some point. Numerous studies show that finding and fixing defects early is much cheaper than discovering them after you release. Code reviews can help spot problems before you release to QA. If your team has already agreed on a programming standard, you can use it to evaluate code. The religious debates about curly brace placement will have already occurred, so you don't have to re-hash those discussions during each review.

How Do I Get Started?

My advice is to aim for a one or two page document. Break it up into a few sections (e.g. Naming Conventions, Comments, Error Handling). Include a brief description at the start of each section that explains why the topic is important. Try not to use too much strict language ("Thou shalt never...") and focus on general guidelines ("Avoid methods with more than X lines of code").

If you're looking for examples, the book Code Complete by Steve McConnell includes lots of checklist and well-researched rules.If you'd like to see the programming standard I created in class, send me a note.

Do you use a programming standard on your team? Is it helping?

Don't Repeatedly Check Websites - Get Notified

When email first became popular, people started forming a peculiar habit: they would repeatedly check for new email multiple times a day, like an info-addict. If they got a new email they were quite excited ("You got mail!"). If not, feelings of disappointment and regret ensued. Why should we spend so much time checking for things? Wouldn't it be better to know exactly when to check? Fortunately many services exist to help solve this problem. Email is an easy target so let's start there. If you use Gmail, I recommend these:

Gmail Notifier - Great for most users. It puts a little blue envelope in your system tray when you have new mail. Double click it to access your Gmail account.

Gmail Notifer Plus for Windows 7 - This notifier takes advantage of some new Windows 7 task bar features. It provides options when you hover over it, allowing you to preview and open new emails.

What About Other Email Providers?

Actually, my favoriate email notifier is Digsby, which handles all of your Instant Messaging needs in addition to notifications for social networking sites (Facebook, Twitter, MySpace and LinkedIn) and a variety of email providers: Hotmail, Gmail, Yahoo Mail, AOL/AIM Mail, IMAP, and POP accounts. I find there notification interface to be the most intuitive and useful.

Digsby Gmail Notification

What About Other Things I Check Too Much, Like Twitter?

One of my main gripes when I started using Twitter was that I wasn't notified when someone started talking to me. People converse with you on Twitter by "mentioning" you, which means they include your username with the "@" symbol in front ("@martymatheny" in my case) in their tweet. Twitter would email me if someone sent me a Direct Message, but not if they mentioned me. I didn't want to repeatedly check Twitter, so I started using Boxcar, which is an iPhone app. Boxcar kindly sends me a "push notification" on my iPhone when I'm mentioned, so I know when to engage. It can also notify you based on the results of any Twitter search query (e.g. "MyCompany").

Cool, What About Blogs?

The best way to check blogs and news sources is use an RSS reader, but that's a topic for another post. Do you have a favorite notification service?

Why Should I Use Twitter?

If you've spoken with me in the last year, I probably wanted to talk about Twitter.  I think it's an amazing resource, but most people struggle with the first and most important question:  "Why should I use it?"  A popular variation of this question is:  "Why should I care about what you had for breakfast?"

Let me dispel that rumor right now:  Twitter isn't just a bunch of people describing meals (although that occasionally happens).  There are people on Twitter right now talking about your favorite things in the world.  There are people you know, people in your city, thought leaders in your industry, and all sorts of folks who leave brief remarks every so often.  If you can find the right people to "follow" on Twitter, you'll be much more informed about the topics you love.

David Carr has a much more eloquent description of how he realized Twitter's value in today's New York Times.

OK, How Do I Get Started?

Create an account then start searching for people you know and topics you're interested in.  My advice is to focus on listening first, then start posting updates later.  You'll know you're following enough people when there's new stuff every time you check Twitter.  If there isn't new stuff, it's time to follow more interesting people.

I'll post some tips later about how to make Twitter a better experience by using advanced search, RSS and some great Twitter client software.  If you have any questions about getting started, feel free to send me a note.  Better yet, you can ask me on Twitter.

A Tech Podcast for Every Weekday

I spend the majority of each day at a desk, either in my office at work or at home. Both locations have lightning fast internet access and are great places to consume information. But what about the 50 minutes per day I'm commuting in my car? That time is also an opportunity to be informed, educated, and inspired. I picked up an audio-book habit in San Diego, where the commute is much longer. In 2009 my work buddies peer pressured me into checking out podcasts. Believe me, they are awesome and you should give'em a chance.

Every day before work I scan around for a decent podcast. Most of them are published weekly, so here's my typical weekly playlist:

Monday - This Week in Tech (TWiT)

Optimist Leo Laporte and "tech grouch" John C. Dvorak do a weekly round up of technology news on Sunday with a variety of internet-famous guests. With an almost 2 hour runtime, I rarely finish it, but the first half is usually great.

Tuesday - Hanselminutes

Scott Hanselman is very energetic and entertaining shill for Microsoft and the .NET platform. He's actually very objective and has insightful interviews with folks in the .NET community. Best part: he keeps is to about 20 minutes. Quick & informative.

Wednesday - Buzz Out Loud

A crew of CNET's analysts review the daily tech news. They keep up a quick pace and usually fill up 45 minutes with great, informed content. This one is available every weekday, so it's a great alternative if some other podcast flakes out that week (*cough* StackOverflow *cough*)

Thursday - StackOverflow

My favorite podcast. Joel Spolsky and Jeff Attwood (both internet-famous software bloggers) discuss the business of software, coding topics, and their awesome website (StackOverflow). Joel has great stories from his experience as a developer/entrepreneur, and occasionally back-peddles from his most recent, controversial blog posts. Jeff talks about his latest development effort on the site. This stuff is pure gold, and it's free!

Friday - diggnation

Alex Albrecht and Kevin Rose discuss tech and stories from the social news site Digg. They're are a lot of "dudes" and "bro's" thrown around, and banter that may be aimed a slightly younger audience. But, it's Friday. Relax a little, Mr. Worky-face, and enjoy the comedy.

Runner-ups

This Week in Startups - Jason Calacanis interviews .com entrepreneurs

Herding Code - 4 dudes grill a guest from the .NET community

I'm also planning on working through Scott Hanselman's list of .NET podcasts (http://bit.ly/7fwVSP) as a New Years resolution.

Do you have a favorite podcast? I would love to get your recommendation.