thredUP has been using Basecamp as our project management tool since before I started in September of 2010. We're an agile development team and it's important for us to have a collaboration tool to manage our user stories as well as organize our projects/sprints. Our sprints are two weeks long. We develop for the first 10 days, test the code on staging servers internally, iterate, deploy the code, reflect with a retrospective, and then move onto the next sprint. We move very fast and it requires a lot of organization.
All of our stories start in a 'Backlog' list, move to a 'Work in Progress' list when development has started, and finishes in 'Review'. Stories, which are essentially a task within a list, shuffle in and out of all these lists during a day and entire lists are often re-arranged to accommodate for a shift in priority. Tasks and list order stay in a constant state of flux and a vast majority of the communication that occurs during the chaotic flux resides in Basecamp...until recently.
After our CEO and CTO played with Asana privately for a month to explore its capabilities, our entire team switched over to their service at the beginning of the year. Based on the feedback from the team, it doesn't look like we're switching back anytime soon.
Comparison
First, let me go over the basics. Asana is free. Basecamp's prices range, but I believe we're paying something in the neighborhood of $149 per month.
Second, and more importantly, Asana is real-time. When a co-worker of mine is editing a task, note, project, etc. and I'm on Asana too, I can see all the changes happening live (like Google Docs). Basecamp doesn't have this feature and it's a shame. When there are 30 or 40 tasks within a project and one person is re-prioritizing, Basecamp becomes a synchronous tool that can't be used until the re-ordering is done for fear of conflicts. In Asana, everything is happening right in front of you so you can go about your business and work asynchronously with your co-workers.
The third advantage Asana has over Basecamp is the way they embrace HTML5 and JavaScript. Sure Basecamp uses AJAX for some of their tools, but Asana is built on top of their in-house Luna framework. For all intensive purposes, the experience is that once Asana loads in the browser, no page refreshes occur afterwards. I know this is the not the case (because they aren't using URL hashbangs), but it is indeed the experience. In addition to this, just about every element on the page is HTML5 draggable and editable. Any project or task can be re-arranged by dragging and text can be edited by simply clicking on it. There are no save or edit buttons, you simple just 'do'.
Lastly, the biggest edge Asana has on Basecamp is the UI. Sure it's pretty (see below), but its practicality is superior. In Basecamp, traversing through different projects is a huge pain. If you want to view a task's details, you start at your root dashboard and then you select a project to enter. Then you select the To-Do list you *think* the task you want is in. Then you select the task. Basecamp Dashboard -> Project -> To-Do List -> Task. 4 pages to see the details of the task (and you can't do any re-arranging once you get to the task). Asana took a different tack on project traversal. Asana's UI utilizes a sliding 3-pane layout. Projects on the left, lists of tasks in the middle, and task details on the right.
Asana makes traversing through projects, lists, and tasks a breeze. The sliding panes are not fixed widths either; whichever pane your currently focused in becomes larger and the other two dynamically slide to smaller widths.
There are other tools that Asana has that I'm still learning. For example, you can add tags to tasks. Our development team has split into 3 separate teams to tackle the projects at hand. We have a tag for each team and every task that is designated for a team receives the corresponding team tag. Why is this useful? Because you can sort by tags. Asana gives you the ability to have dynamic sorting, which is quite cool when you think about it. They also have a list of keyboard shortcuts and mark-up syntax that I'm learning so I can work even faster within Asana.
Downsides
It's hard to blame them since the company is so young, but unfortunately Asana does have some inadequacies. The first noticeable one is a lack of a developer API. We didn't use Basecamp's API often, but we did use it to scape every To-Do list for each sprint to determine our development team's point velocity - a useful tool when trying to determine how much our team can chew through in a given 2-week sprint.
Next, 37signals (the makers of Basecamp) offer a suite of products. Our development team uses one of their products called Campfire, which enables all of our developers to chat in real time. Because of Campfire's API, we're able to pipe in every GitHub commit into the chat so our developers know what code is being committed at all times. This is an incredibly useful feature that will keep us using Campfire regardless of whether we leave Basecamp for good.
Lastly, I've found Asana cumbersome for long-form discussions. The notes section for a task is small and comments on a task collapse after a certain size, which makes it hard to see everyone else's feedback chronologically. I'm sure that's by intent, but when we release our sprint testing steps internally to our team, they are typically long and detailed. Emails aren't a good alternative for testing steps and we avoid them like the plague as email threading quickly breaks down when there are 10-20 responses. Hopefully they will have something to alleviate that pain in the future. I know one thing is for certain, if Asana can continue to execute with the quality of their first public version, they are going to be a very promising company.