The Joel Test and Us

October 7th, 2010

So there’s this really smart guy. His name is Joel Spolsky. He’s written a lot of smart stuff over at joelonsoftware.com that makes a lot of sense. One of the things that he and a lot of other industry talking heads are big on is something called The Joel Test. It’s a test for programming groups that determines whether or not they’re doing things the right way. By following the 12 tests he puts forward, we can tell if a group of programmers is succeeding or failing in their main job, which is writing solid software.

Here are the 12 tests:

The Joel Test

1. Do you use source control?
2. Can you make a build in one step?
3. Do you make daily builds?
4. Do you have a bug database?
5. Do you fix bugs before writing new code?
6. Do you have an up-to-date schedule?
7. Do you have a spec?
8. Do programmers have quiet working conditions?
9. Do you use the best tools money can buy?
10. Do you have testers?
11. Do new candidates write code during their interview?
12. Do you do hallway usability testing?

But here’s the thing – he’s used to big, long-term software projects where there’s a large team that all works on the same thing. What happens when you need to apply this to small teams that works on lots of smaller projects? Well, some stuff has to change. Here’s how we at SCC|Digital see these guidelines and apply them to our own organization:

1. Do you use source control?
We use source control. We use it for everything. We use a system called Git, which is part of a new breed of distributed source control systems. What does that mean? It means that we don’t need to be on the network to commit, so we can do work from the train. It means we each can have our own branches of the code, and merge them together quickly when it comes time to deploy. While stuff like SVN and CVS may work when you have fewer, larger projects, we find that Git is much more convenient and reliable for small projects. Git makes us more productive.

2. Can you make a build in one step?
Our adaptation if this is – can you deploy your applications in one step? The answer to this is now yes. We use an open-source deployment system which means any time we need to deploy our apps we can do so literally at the click of a button. We also can roll back applications to previous versions, again with a single click, if we don’t like the results of the deployment.

3. Do you make daily builds?
Joel uses compiled languages. We don’t, so here’s our question – do you have a staging site? Something that mirrors the live environment so you can test your changes before they appear in public? We set this up for all the sites we administer. Nothing goes live without being vetted by both the programmer who wrote it and another pair of eyes. I can’t tell you how many times we’ve avoided disaster this way.

4. Do you have a bug database?
It doesn’t matter what tool you use – Lighthouse, FogBugz, Redmine, homegrown, etc. – when requests come in, there needs to be an easy way to keep track of them and who’s assigned to what. When someone finds a problem, there needs to be a record of it so it isn’t forgotten about. We use Redmine. We love Redmine. We can’t live without Redmine. It integrates with our source control (#1). It keeps us on track.

5. Do you fix bugs before writing new code?
That shiny new contact form won’t be worth much if the whole site is down. We test our sites regularly and fix the problems we find first.

6. Do you have an up-to-date schedule?
1/3 of all software projects fail. They go over budget, they go over time. The only way to manage effectively is to keep track of where you are. This is the same no matter what kind of software you’re writing.

7. Do you have a spec?
A spec is a definition of what you’re trying to build. It’s a list of features and how they need to behave. It’s a sitemap, wireframes, and user flows, along with other documentation. We create Information Architecture (subject of a future post) documents for every site we create. This gets everyone on the same page with what’s to be done and how we’re going to do it. Creating these documents takes time, but it speeds up development in the end, as everyone involved in the project, from developers to designers and managers to clients, understands exactly what’s being done.

8. Do programmers have quiet working conditions?
Here’s one place where we must disagree with Mr. Spolsky. Web developers don’t just crank out code. They act as consultants, designers, support specialists, and general Mr. Fix-Its. We use QA procedures to make sure stuff doesn’t fall through the cracks and put on headphones when we need to, but we’re always available, which means sometimes things get loud. But then, that’s Advertising.

9. Do you use the best tools money can buy?
Interesting – in Web Development, as in life, we think the best things are free. Best web server? Apache – free. Best programming languages? Open source, and free. Best server operating system? Linux – free. We drop money on tools when we have to, but it’s not as often as you might think. We all work on Macs, which we believe are the best tools for the job, but nearly all the tools we use for development are free and open source.

10. Do you have testers?
Yup. We have a system in place that makes sure everything gets checked multiple times before it goes out the door. Then we check it once it’s gone out. Then we check it again a week later. And a week after that. That’s only responsible.

11. Do new candidates write code during their interview?
Yup. And get quizzed like crazy. Dreamweaver doesn’t get it done. The only way to build things right is to build them by hand, just as in every other craft.

12. Do you do hallway usability testing?
Yup. We make sure the Account Managers can use our sites. We make sure the Receptionist can use our sites. We try to make things simple for users, even when that makes our developer’s lives more complicated.

The Obligatory iPad Blog Post

February 4th, 2010

Wow, do people love to love – and love to hate – Apple products. Since it’ll be like breaking the law to not blog about the iPad, here goes.

It’s not perfect. It’s not that bad.

I was hoping the iPad would be more like a full-blown laptop with a tablet style interface (I was also hoping it would have a decent name). Since that’s not what Apple did, I have to judge iPad on what functions it performs and compare it to similar products, to the extent possible. The trick is to judge it on what is – not what I wished it would be.

As an owner of an iPhone, for me the key benefit of an iPad is the large format – so it only makes sense in my mind to compare it to a e-book reader or a net book. Mainly, an e-book reader. I’ve been considering an e-book reader recently, so it’s worth considering the comparison.

Given it’s price (relative to the competition) and functionality, I think the iPad is a much better value. The Kindle web browsing is very limited. You can’t use it to organize your life. You can’t add to your blog with one. You can’t watch video content. You can’t make a client presentation (not a good one, anyway). It’s black and white. In a nutshell, the iPad web experience is useful for more than purchasing e-Books and listening to mp3’s.

Apps aren’t coming for the kindle any time soon, and certainly not iPhone style apps. Given the 100’s of thousands of iPhone apps that just need to be adjusted with higher resolution graphics in order to be upgraded for the iPad, I predict those will come fast and furious.

The iPhone, and presumably the iPad, are built to last. The worst (non-water related) damage I’ve seen to an iPhone was this. It was dropped off of a 2nd story balcony onto a concrete parking lot, and still remains fully functional. All the things I’d use an iPad for, and then some, could be handled by my MacBook Pro – but I’m not about to bring that into a dusty woodshop or even remotely moist environment. The iPad is sealed tight as a bugs behind, so it’ll survive in environments my laptop (or netbooks) wouldn’t dare venture.

There’s a great deal of discussion about how “open” the iPad and other recent Apple devises, aren’t. While I have an opinion on this, the matter affects such a relatively small group of people that I won’t weigh in on that one. It’s a product for consumers, not developers (sadly).

There you have it. The iPad is an e-book reader on steroids. Lots of steroids.

Interface and Behavior

January 20th, 2010

Back in November I offered a tweet regarding a quote by Rory Sutherland, which went “The interface fundamentally determines the behavior”. This morning I lived the quote in a small way. Here’s what happened.

As is my standard practice, I play a little solitaire on the morning commute (by train) to just get my brain moving a little bit. Last night I left my iPhone at the office, so I used the solitaire game on my iPod instead.

The iPhone interface for this game is pretty great. Tap a card. Tap it’s destination. Done.

On the iPod, however, the interface is the scroll wheel and the center button. Scroll to the card you’d like to move (it scrolls in either direction through all the cards in the deck and on the table until you reach your destination). Tap the button to select. Scroll through all the cards between where you are and your destination. Tap the button again to drop the card.

Little habits form, like drop a card on the table and scroll really fast to the right to get back to the deck. But if you’re in the left column on the table, your trip would be much faster if you scroll in the opposite direction. Stuff like that. So, the interface is a bit cumbersome.

Normally, I can win a game before my 20 minute commute is over. It might take me 5-10 games to do it, but you can crank through a game really fast, abandon it once you know it’s a lost cause and start a new one without losing more than a few seconds. On the iPod, however, I could only manage to complete (abandon) one game and partially complete a second. The effect of the interface occurred to me when I realized I was thinking so much about being efficient in my use of the interface that I was making ill-advised moves.

So ends my completely anecdotal tale proving the wisdom of Rory Sutherland.

Google May Leave China

January 13th, 2010

Multiple news sources have reported that Google, after a series of major cyber attacks, has decided to stop censoring its content and is considering pulling its operations out of China all together.

The Google attacks have focus on gmail accounts of Chinese human rights activists, but also extend to a minimum of twenty other companies in the finance, internet, technology and other sectors.

If anyone is in a position to walk away from the Chinese market, I guess it’s Google. Good for them, I say.

That’s 3 Billion. With a “B”

January 13th, 2010

Every now and then you hear of an upcoming “iPhone Killer”. The next big thing.

Last week Apple announced that 3 Billion iPhone apps have been downloaded from the app store. It doesn’t look like anything is going to kill the iPhone any time soon. Read more here.

Church 2.0

January 13th, 2010

From The Times of London:

The congregation at St Lawrence Jewry in the City of London raised their mobiles and iPods above their heads and Canon Parrott raised his voice to the heavens to address the Lord God of all Creation. “May our tongues be gentle, our e-mails be simple and our websites be accessible,” he said.

Read the full story here.

Resumes Being Accepted

January 12th, 2010

Resumes are now being accepted for full and part-time positions and paid internships. Please send your resumes to digitaljobs@sccadv.com.

Requirements include:
Proficiency in PHP, MySQL, Flash/AS, Javascript/jQuery, tableless CSS, XHTML
Strong familiarity in Photoshop and Illustrator
Experience with web app frameworks such as CodeIgniter
“Whatever it takes” attitude

SCC Digital Begins Work on New Site

January 12th, 2010

With the completion of the new Schafer | Condon | Carter agency site imminent, SCC | Digital begins work on a revamped site for it’s own business unit.

The sccdigital.com domain has long been in use for behind the scenes purposes. Plans for the new site include a host of client tools, a digital content archive and even a few surprises.