The Regenerate Web

facilitating the regeneration of software teams

User login

Syndicate

Syndicate content

Services


Add to Technorati Favorites

Project

- delivery (3)
- duration (1)
- effort (3)
- estimation (4)
- Iterative (1)
- measurement (1)
- metrics (1)
- Planning (2)
- PMI (1)
 - PMBOK
- Progressive Elaboration (1)
- risk (1)
- Rolling Wave (1)
- schedule (1)
- task (2)
- velocity (6)

Management

- Boss (1)
- consensus (1)
- influence (1)
- leader (5)
- meetings (1)
- Motivation (1)
- process (1)
- Time Span (1)

Browse archives

« February 2010  
Su Mo Tu We Th Fr Sa
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28            

Analysis

- abstraction (1)
- metaphors (1)
- modeling (3)
- requirements (5)
- research
- semantics (1)
- Analysis (1)

Who's online

There are currently 0 users and 1 guest online.

Joel on Software - Joel Spolsky

Syndicate content Joel On Software
Painless Software Management
Updated: 5 min ago

Why testers?

Tue, 2010-01-26 16:04

My sister got her kids a little puppy, and they’ve been trying to train it. To live with a dog in the house, you need to teach it not to jump on people, not to poop in the house, to sit on command, and to never, ever, ever chew on the iPad. Never. Good girl.

With dogs the main trick to training is that feedback has to be immediate. If you come home to discover that, hours before, the dog tipped over the garbage can in the kitchen, it’s too late for training. You can yell at her but she just won’t get what you’re going on about. Dogs are just not that smart.

For programmers, getting better at what you do requires quick feedback, positive and negative, on what you’ve just done. The faster you get the feedback, the faster you’ll learn. With long-cycle shrinkwrap software, it can take a year or more to hear feedback from customers.

That’s one of the reasons we have testers. A great tester gives programmers immediate feedback on what they did right and what they did wrong. Believe it or not, one of the most valuable features of a tester is providing positive reinforcement. There is no better way to improve a programmer’s morale, happiness, and subjective sense of well-being than a La Marzocco Linea espresso machine to have dedicated testers who get frequent releases from the developers, try them out, and give negative and positive feedback. Otherwise it’s depressing to be a programmer. Here I am, typing away, writing all this awesome code, and nobody cares. Boo hoo.

Who should be a tester? That’s tricky! Software testing is one of those careers that isn’t that well known, so a lot of people who would be great at testing and would probably enjoy it a lot never consider applying for jobs as testers.

Signs of a good tester:

  • Scientific
  • Loves a good puzzle, even the kind that takes days to solve
  • Likes to think about things methodically
  • Generally likes working with software and computers

You don’t have to be a programmer to be a tester. A lot of companies want testers to be programmers who write automated test suites. It seems more efficient that way. This reflects a misunderstanding of what testers are supposed to do, which is evaluate new code, find the good things, find the bad things, and give positive and negative reinforcement to the developers. Sure, automated test suites are a time saver, but testing software covers so much more than that. If you put too much emphasis on those scripts, you won’t notice misaligned text, hostile user interfaces, bad color choices, and inconsistency. Worse, you’ll have a culture of testers frantically working to get their own code working, which crowds out what you need them to do: evaluate someone else’s code.

A particularly terrible idea is to offer testing jobs to the programmers who apply for jobs at your company and aren’t good enough to be programmers. Testers don’t have to be programmers, but if you spend long enough acting like a tester is just an incompetent programmer, eventually you’re building a team of incompetent programmers, not a team of competent testers. Since testing can be taught on the job, but general intelligence can’t, you really need very smart people as testers, even if they don’t have relevant experience. Many of the best testers I’ve worked with didn’t even realize they wanted to be testers until someone offered them the job.

If you:

  • Love software and computers
  • Want to work on a software team, and
  • Don’t particularly like programming

you should consider being a tester. (We’re hiring! What a coincidence!)

Need to hire a really great programmer? Want a job that doesn't drive you crazy? Visit the Joel on Software Job Board: Great software jobs, great people.

Categories: Technology

Rocket Surgery Made Easy

Mon, 2010-01-25 16:21

Steve Krug has written a follow up to his usability classic Don’t Make Me Think. The sequel, Rocket Surgery Made Easy, is a terrific, short, concise, fun guide to running simple “hallway” usability tests to improve the usability of your software and websites. Highly recommended.

 

Need to hire a really great programmer? Want a job that doesn't drive you crazy? Visit the Joel on Software Job Board: Great software jobs, great people.

Categories: Technology

A little less conversation

Fri, 2010-01-22 15:33

“As companies expand, the people within them start to specialize. At such a point, some managers will conclude that they have a ‘keep everyone on the same page’ problem. But often what they actually have is a ‘stop people from meddling when there are already enough smart people working on something’ problem.”

From my latest Inc. column: A Little Less Conversation

 

Need to hire a really great programmer? Want a job that doesn't drive you crazy? Visit the Joel on Software Job Board: Great software jobs, great people.

Categories: Technology

Secret language

Wed, 2009-12-30 10:01

Microsoft Careers: “If you’re looking for a new role where you’ll focus on one of the biggest issues that is top of mind for KT and Steve B in ‘Compete’, build a complete left to right understanding of the subsidiary, have a large amount of executive exposure, build and manage the activities of a v-team of 13 district Linux& Open Office Compete Leads, and develop a broad set of marketing skills and report to a management team committed to development and recognized for high WHI this is the position for you!”

This is ironic, to use the Alanis Morissette meaning of the word [NSFW video].

The whole reason Microsoft even needs a v-team of 13, um, “V DASHES” to compete against Open Office is that they’ve become so insular that their job postings are full of incomprehensible jargon and acronyms which nobody outside the company can understand. With 93,000 employees, nobody ever talks to anyone outside the company, so it's no surprise they've become a bizarre borg of "KT", "Steve B", "v-team", "high WHI," CSI, GM, BG, BMO (bowel movements?) and whatnot.

When I worked at Microsoft almost two decades ago we made fun of IBM for having a different word for everything. Everybody said, "Hard Drive," IBM said "Fixed Disk." Everybody said, "PC," IBM said "Workstation." IBM must have had whole departments of people just to FACT CHECK the pages in their manuals which said, "This page intentionally left blank."

Now when you talk to anyone who has been at Microsoft for more than a week you can’t understand a word they’re saying. Which is OK, you can never understand geeks. But at Microsoft you can’t even understand the marketing people, and, what’s worse, they don’t seem to know that they’re speaking in their own special language, understood only to them.

Need to hire a really great programmer? Want a job that doesn't drive you crazy? Visit the Joel on Software Job Board: Great software jobs, great people.

Categories: Technology

Let’s stop talking about “backups”

Mon, 2009-12-14 10:30

Is your desktop backed up?

Did you backup that server?

Are your backups on a different machine?

Do you have offsite backups?

All good questions, all best practices.

But let’s stop talking about “backups.” Doing a backup is too low a bar. Any experienced system administrator will tell you that they have a great backup plan, the trouble comes when you have to restore.

And that’s when you discover that:

  • The backed-up files were encrypted with a cryptographically-secure key, the only copy of which was on the machine that was lost
  • The server had enormous amounts of configuration information stored in the IIS metabase which wasn’t backed up
  • The backup files were being copied to a FAT partition and were silently being truncated to 2GB
  • Your backups were on an LTO drive which was lost with the data center, and you can’t get another LTO drive for three days
  • And a million other things that can go wrong even when you “have” “backups.”

The minimum bar for a reliable service is not that you have done a backup, but that you have done a restore. If you’re running a web service, you need to be able to show me that you can build a reasonably recent copy of the entire site, in a reasonable amount of time, on a new server or servers without ever accessing anything that was in the original data center. The bar is that you’ve done a restore.

Let’s stop asking people if they’re doing backups, and start asking if they’re doing restores.

Need to hire a really great programmer? Want a job that doesn't drive you crazy? Visit the Joel on Software Job Board: Great software jobs, great people.

Categories: Technology

Stack stats

Sun, 2009-12-13 17:57

The higher someone’s Stack Overflow reputation, the more likely they are to have submitted a CV to Stack Overflow Careers:

This is not entirely surprising, of course: the more time someone has invested in Stack Overflow, the more likely they are to (a) know about Stack Overflow Careers, (b) be willing to invest $29, after all the hours they’ve already sunk, and (c) have the confidence that their CV is going to impress the kind of employers that are using the site.

Still, the participation rate in Stack Overflow Careers is pretty impressive, and it somewhat confirms the claim we’re making to employers, which is that when you search for CVs on Stack Overflow, you are looking at some pretty gosh darn good programmers.

While I’m rattling on about statistics, here’s a little bit of data about Stack Overflow traffic itself that you may not have seen.

We use Quantcast to measure our traffic. Currently, they’re showing us as the 740th ranked site in the world (of all sites), with 6 million monthly unique visitors, 1.9 million from the US. And the growth is pretty steady, except for a couple of weeks at the end there which reflect the holiday season:

Comparing our traffic to our big competitor is difficult because they don’t use Quantcast, so we have to rely on Alexa, which has a reputation for particularly terrible data, but here’s what that looks like:

Are there any sites out there for programmers with more traffic than Stack Overflow? I haven’t found any, using the available data... even msdn.microsoft.com has less, according to Quantcast, but I find that hard to believe.

In either case, having decided that Stack Overflow was the biggest programming site in the world, I thought, “hey, it should be easier for us to get ads.” I asked our ad guy, Alex “DailyWTF” Papadimoulis, if Microsoft had bought any ads. They’re about to launch Visual Studio 2010, which is probably going to have the biggest marketing campaign (in dollars) in the history of developer tools, and you’d think they’d want to spend something at the biggest programming site in the world. Here’s what he wrote back:

“Microsoft is doing huge spends, but they’re going through McCann for the VS2010 launch (IIRC). Agencies really don’t like us. Now if we go to video units with fly-over… oh they’ll start loving us!”

What he’s referring to is the fact that we don’t accept any kind of animated ads on Stack Overflow, because, well, they’re evil, so we lose a lot of revenue from advertising agencies who are looking for the most aggressive possible ways to get in people’s faces. Whatever. Don’t care. We hate animated ads and I’m pretty sure our users do, too.

Need to hire a really great programmer? Want a job that doesn't drive you crazy? Visit the Joel on Software Job Board: Great software jobs, great people.

Categories: Technology

When and how to micromanage

Wed, 2009-12-09 20:49

“Like most entrepreneurs, Ryan and I are still learning about how to manage people and teams. And we’re both used to hiring very smart and dedicated people who will get things done to a high standard if you give them some general direction and set them free. But on this trip, we started to notice that this style of hands-off management, which works so well with our own staffs, just wasn’t working when we had outside vendors involved.”

From my December column in Inc.: “When and How to Micromanage

 

Need to hire a really great programmer? Want a job that doesn't drive you crazy? Visit the Joel on Software Job Board: Great software jobs, great people.

Categories: Technology

Programmer search engine

Wed, 2009-12-02 17:24

For as long as I’ve been in the industry, which is, I think, about 74 years now, the problem I’ve had with hiring programmers was not interviewing them or deciding if they’re smart—it’s been finding them in the first place.

What I’ve dreamed about is a programmer search engine.

The ideal programmer search engine would only include programmers who are actually looking for jobs. If you’ve ever emailed someone based on a resume you found through a traditional search engine, you’ve probably discovered that they’re not actually on the market.

It would only include people willing to work in your neck of the woods.

It would show you CVs right away, and, ideally, it would show you something about their programming skills besides the usual resume blahblah.

Well, OK, that day is here, and I’m like a kid in a candy store. Nom nom. Announcing the other half of careers.stackoverflow.com: the employer’s side!

Right now, there are about 928 candidates on there. That’s a start. What’s more interesting is whether there’s a candidate who meets your needs.

Let’s say you’re searching for a full time Java programmer within 40 miles of Palo Alto. Right now there are 11 candidates listed. All but one are active on StackOverflow... one even has reputation over 4000 points.

Want a bit more choice? Check the box that indicates that you’re willing to relocate. Now there are 80 matches, all of whom have the legal right to work in the states. Candidates have a lot of flexibility indicating where they’re willing to work. Even if you need a Ruby on Rails programmer in Oklahoma City, as long as you’re willing to pay for relocation, you’ve got 7 choices. You’ve got 14 choices in London (with the legal right to work.) If you think that a Python programmer could learn Ruby, you’ve got 51 choices. There are plenty of choices whether you’re hiring in Tel Aviv, Sydney, Silicon Valley, or New York. There are four programmers in Copenhagen right now. No relocation required. All of them highly qualified, actually; any one of them would qualify to interview at Fog Creek.

Stack Overflow Careers is something of a chicken-and-egg business. We have to get a big audience of programmers and a big audience of employers all at the same time, and then it’s like a junior high school dance, with the boys on one side of the gym and the girls on the other side, and for a while you just sit there holding your breath to see if anyone will dance. We invited a few hundred employers as beta testers... these were the companies that have been listing jobs on StackOverflow over the last six months, and so far, they’ve found a few dozen candidates that they liked. Once it gets to that point, we’re out of the loop, so we don’t really know how many people are actually finding jobs, but please email me your success stories and failure stories so we can keep working to make it better.

In the meantime, Jeff and the StackOverflow crew have done something brilliant: they’ve made it possible to do searches and see how many candidates match even before you have to pay. So if you want to try it out but are afraid that there aren’t students looking for OCaml internships in Houston, you can try it, and find that there is, indeed, one. So, try it out right now. There’s no obligation, and we’re happy to give you your money back if you don’t think you got good value.

Need to hire a really great programmer? Want a job that doesn't drive you crazy? Visit the Joel on Software Job Board: Great software jobs, great people.

Categories: Technology

Upgrade your career

Thu, 2009-11-05 08:34

Do you like your job?

Do you enjoy the people you work with?

Would you want to have lunch with them? Every day? Alex Papadimoulis thinks that Fog
Tyler Griffin Hicks-Wright Creek’s free lunches are “cultish,” but everyone at Fog Creek loves them. Maybe it’s the mandatory brain implant we install in each new worker, but I like to think that we just enjoy eating together because we genuinely like each other and like spending time together. If you can’t imagine eating lunch every day with your coworkers, I hate to break it to you: you might not like them. Is it OK to spend most of your waking hours with people you don’t like?

Do you actually enjoy doing your job? If you wake up an hour early in the morning, do you think, “Yay! I can go in early and get another hour of work in!” Or does that sound ridiculous to you?

Are you learning? When was the last time you had to learn a new skill? Is this year kind of like last year, or are you doing something new, stretching yourself, challenging yourself to be better?

At one of the recent DevDays events, I asked the audience (almost 100% programmers) how many of them were incredibly satisfied with their job, found it fulfilling, and were treated well by their employers. Only about 25% of the hands went up. I asked how many people either hated their job and couldn’t wait to find something better, or were actually actively on the job market. Again, about 25%. The rest were somewhere in the middle: maybe they can tolerate their job, but they’re keeping an eye open for something better.

Who is this DevDays audience? They’re the elite of the elite of the best programmers out there. They’re the people who participate in Stack Overflow, the people who read, the people who are constantly trying to learn more about programming and software development. More than half of them paid their own money to attend a one day conference. They’re the most desirable software developers on the planet. And 75% of them are not delighted with their job.

That’s unacceptable. I’ve been saying for ten years that the top developers have a choice of where to work, and the top employers need to work harder to attract them, because the top developers get ten times as much work done as the average developers.

And yet, I still keep meeting ridiculously productive developers working in shitholes.

We’re going to fix this, right now. Thus, Stack Overflow Careers.

We’re going to completely turn the job market upside down, for the best software developers and the best companies.

This is a talent market. Developers are not even remotely interchangeable. Therefore, recruiting should work like Hollywood, not like union hiring halls of the last century.

In a union hiring hall, downtrodden workers line up like cogs, hoping to make it to the front of the line in time to get a few bucks for dinner.

In Hollywood, studios who need talent browse through portfolios, find two or three possible candidates, and make them great offers. And then they all try to outdo each other providing plush work environments and great benefits.

Here’s how Stack Overflow Careers will work. Instead of job seekers browsing through job listings, the employers will browse through the CVs of experienced developers.

Instead of deciding you hate your job and going out to find a better one, you’ll just keep your CV on file at Stack Overflow and you’ll get contacted by employers.

Instead of submitting a resume, you’ll fill out a CV, which links back to your Stack Overflow account, so that you can demonstrate your reputation in the community and show us all how smart you really are. To a hiring manager, the fact that you took the time to help a fellow programmer with a detailed answer in some obscure corner of programming knowledge, and demonstrated mastery, is a lot more relevant than the Latin Club you joined in school.

Employers can see how good you are at communicating, how well you explain things, how well you understand the tools that you’re using, and generally, if you’re a great developer or not. And they can see your peer reputation, so all that hard work you’ve been putting into helping people on Stack Overflow can karmically come back and help you upgrade your job to the latest, state-of-the-art, great place to work.

Stack Overflow has grown incredibly fast. After a year in business, it gets over a million page views most weekdays and currently stands as the 817th largest site on the Internet, according to Quantcast. It reaches 5.2 million people a month. But Stack Overflow Careers doesn’t have to be massive. It’s not for the 5.2 million people who visit Stack Overflow; it’s for the top 25,000 developers who participate actively. It’s not for every employer; it’s for the few that treat developers well and offer a place to work that’s genuinely fulfilling.

Read the FAQ, then go file your CV now, and upgrade your career.

Need to hire a really great programmer? Want a job that doesn't drive you crazy? Visit the Joel on Software Job Board: Great software jobs, great people.

Categories: Technology

Does Slow Growth Equal Slow Death?

Tue, 2009-11-03 19:50

My new Inc. column is up. “For a guy who wrote a book on how to hire great programmers, it’s mortifying how incompetent I’ve been at enlarging the sales team, which, right now, consists of one terrific account executive and a dog. (I’m just kidding. There’s no dog.)”

Need to hire a really great programmer? Want a job that doesn't drive you crazy? Visit the Joel on Software Job Board: Great software jobs, great people.

Categories: Technology

Figuring out what your company is all about

Sun, 2009-11-01 16:51

What is your company about?

Recently I got inspired by Kathy Sierra, whose blog Creating Passionate Users and Head First series of books revolutionized developer education. She kept saying the same thing again and again: help your users be awesome.

Kathy taught me that if you can’t explain your mission in the form, “We help $TYPE_OF_PERSON be awesome at $THING,” you are not going to have passionate users. What’s your tagline? Can you fit it into that template?

It took us nine years, but we finally worked out what Fog Creek Software is all about, which I’ll tell you in a moment, but first, some backstory.

In the early days, we were all about making a great place to be a software developer in New York City.

Yep, that was all there was to it. Almost every software job in the city was terrible. You had a choice of which kind of terrible. Want to wear a suit and work long hours under crummy conditions? Take a job at a bank. Want to report to a manic-depressive creative who demands that you stretch HTML in ways that would have you put to death, in certain countries? Take a job at a media company. Want to work 24/7 in a basement with water pipes dripping on your head and get paid in worthless stock options? Take your pick of the revenue-free dotcom startups.

Why New York, then? There are lots of great product companies where software developers are treated very well in Redmond, Washington. But I was sick of trying to live in lesser cities. Sure, the Seattle area is beautiful, and green, and clean, and possesses great coffee, and I understand that there are even a couple of grocery stores open late now. But I’m staying in New York, because it’s the greatest city in the world.

I gave up the search, and decided to start a company with my buddy Michael Pryor. Making a nice place to work was our primary objective. We had private offices, flew first class, worked 40 hour weeks, and bought people lunch, Aeron chairs, and top of the line computers. We shared our ingenious formula with the world:

The tagline was “building the company where the best software developers want to work.” It was, to say the least, awkward. It didn’t make for a good elevator pitch. It didn’t really have the right format. “Abercrombie and Fitch: building the apparel store where the hottest teenagers will want to work.” Who cares? Not the hot teenagers, I’ll tell you that.

Anyway we accomplished that goal. Cross it off the list. What’s next? We needed a new mission statement.

And it has to be something of the form, “We help $TYPE_OF_PERSON be awesome at $THING.”

Bells went off. Everything we’ve done successfully has one thing in common: It’s all about helping software developers be awesome at making software.

That includes Joel on Software, Stack Overflow, all the books I’ve been writing, the conferences like DevDays and Business of Software, the Jobs Board and Stack Overflow Careers.

It includes our flagship product, FogBugz, which is all about giving developers tools that gently guide them from good to great. It’s the software implementation of the philosophy I’ve been writing about for a decade, lacking only one thing: the feature to replace exceptions with return values, while adding Hungarian prefixes to all variable names. THAT IS A JOKE, PEEPLE. Put DOWN the bazooka.

Helping you make more awesome software is why I write endlessly about what we’re doing at Fog Creek, despite the fact that people accuse me of shilling. I’m not writing to promote our products. You don’t have to buy our products to get the benefit of reading about my experience designing them and building them and selling them. I’m writing to share some of my experiences in case they can help you make better software.

Our focus on helping developers explains why one of our early products, CityDesk, flopped: it had nothing to do with software developers. And it explains why another of our products, Fog Creek Copilot, only found a market in the niche of software developers doing tech support.

So, here you go, the new tagline: “We help the world’s best developers make better software.”

Going through this exercise made it easy to figure out what belongs in future versions of FogBugz and what doesn’t. In particular, we’re adding source control and code review features to FogBugz, using Mercurial, the best open-source distributed version control system. Everything that helps developers make better software belongs in FogBugz: project planning, project management, bug tracking, and customer service.

It took almost ten years, but I think we finally got the mission for the next ten nailed.

Optional Advertainment: If you’ve got a moment, check out this 4½ minute trailer for Make Better Software, a new video training series we’ve been working on for more than a year. It’s the video edition of Joel on Software and fits perfectly with our agenda of helping developers make great software.

Need to hire a really great programmer? Want a job that doesn't drive you crazy? Visit the Joel on Software Job Board: Great software jobs, great people.

Categories: Technology

Adam Bosworth on standards

Sat, 2009-10-31 23:50
Adam Bosworth: “All successful standards are as simple as possible, not as hard as possible.” Required reading.

Need to hire a really great programmer? Want a job that doesn't drive you crazy? Visit the Joel on Software Job Board: Great software jobs, great people.

Categories: Technology

Capstone projects and time management

Mon, 2009-10-26 19:36

It is amazing how easy it is to sail through a Computer Science degree from a top university without ever learning the basic tools of software developers, without ever working on a team, and without ever taking a course for which you don’t get an automatic F for collaborating. Many CS departments are trapped in the 1980s, teaching the same old curriculum that has by now become completely divorced from the reality of modern software development.

Where are students supposed to learn about version control, bug tracking, working on teams, scheduling, estimating, debugging, usability testing, and documentation? Where do they learn to write a program longer than 20 lines?

Many universities have managed to convince themselves that the more irrelevant the curriculum is to the real world, the more elite they are. It’s the liberal arts way. Leave it to the technical vocational institutes, the red-brick universities, and the lesser schools endowed with many compass points (“University of Northern Southwest Florida”) to actually produce programmers. The Ivy Leagues of the world want to teach linear algebra and theories of computation and Haskell programming, and all the striver CS departments trying to raise their standards are doing so by eliminating anything practical from the curriculum in favor of more theory.

Now, don’t get me wrong, this isn’t necessarily a bad thing. At least they’re replacing Java with Scheme, if only because “that’s what MIT does.” (Too late!) And they are teaching students to think a certain way. And given how much the average CS professor knows about real-world software engineering, I think I’d rather have kids learn that stuff at an internship at Fog Creek.

Greg Wilson, an assistant professor at the University of Toronto, gave a talk at the StackOverflow DevDay conference in Toronto, which was entertaining, informative, and generally just a huge hit. We got to talking, and he told me about his latest brainchild, UCOSP, which stands for “All The Good Names Are Taken.”

It’s a consortium of 15 universities, mostly in Canada, which are organizing joint senior-year capstone projects. They’re setting up teams of a half-dozen undergraduates from assorted universities to collaborate on contributing to an open source project, for credit and for a grade. As soon as I heard about the program I volunteered to sponsor a team to make a contribution to Mercurial. Sponsoring a team consists of offering to pay for a trip to Toronto for all the undergrads to get organized, and providing a programmer to mentor the team.

Browsing around the UCOSP blog, I was reminded of why student projects, while laudatory, frequently fail to deliver anything useful. “One of the points of this course is to give you a chance to find out what it’s like to set and then meet your own goals,” Greg wrote. “The net result is pretty clear at this point: in many cases, students are doing less per week on this course than they would on a more structured course that had exactly the same content.”

College students in their final year have about 16 years of experience doing short projects and leaving everything until the last minute. Until you’re a senior in college, you’re very unlikely to have ever encountered an assignment that can’t be done by staying up all night.

The typical CS assignment expects students to write the “interesting” part of the code (in the academic sense of the word). The other 90% of the work that it takes to bring code up to the level of “useful, real-world code” is never expected from undergrads, because it’s not “interesting” to fix bugs and deal with real-world conditions, and because most CS faculty have never worked in the real world and have almost no idea what it takes to create software that can survive an encounter with users.

Time management is usually to blame. In a group of four students, even if one or two of the students are enterprising enough to try to start early in the term, the other students are likely to drag their heels, because they have more urgent projects from other classes that are due tomorrow. The enterprising student(s) will then have to choose between starting first and doing more than their fair share of the work, or waiting with everyone else until the night before, and guess which wins.

Students have exactly zero experience with long term, team-based schedules. Therefore, they almost always do crappy work when given a term-length project and told to manage their time themselves.

If anything productive is to come out of these kinds of projects, you have to have weekly deadlines, and you have to recognize that ALL the work for the project will be done the night before the weekly deadline. It appears to be a permanent part of the human condition that long term deadlines without short term milestones are rarely met.

This might be a neat opportunity to use Scrum. Once a week, the team gets together, in person or virtually, and reviews the previous week’s work. Then they decide which features and tasks to do over the next week. FogBugz would work great for tracking this: if you’re doing a capstone project and need access to FogBugz, please let us know and we’ll be happy to set you up for free. We can also set you up with beta access to kiln, our hosted version of Mercurial, which includes a code review feature.

I’ve been blaming students, here, for lacking the discipline to do term-length projects throughout the term, instead of procrastinating, but of course, the problem is endemic among non-students as well. It’s taken me a while, but I finally learned that long-term deadlines (or no deadlines at all) just don’t work with professional programmers, either: you need a schedule of regular, frequent deliverables to be productive over the long term. The only reason the real world gets this right where all-student college teams fail is because in the real world there are managers, who can set deadlines, which a team of students who are all peers can’t pull off.

Need to hire a really great programmer? Want a job that doesn't drive you crazy? Visit the Joel on Software Job Board: Great software jobs, great people.

Categories: Technology