I’ve become a big fan of Asana in the last few months, going from a casual user with a small group to incorporating more people. I call it “Facebook for getting s**t done.”
Still it has one major flaw, which is that it’s not designed for offline work–that is, if you’re on a plane, travelling, or otherwise have no internet connection. But part of the app’s charm is that it works a lot like Facebook, but focused on getting things done as a team, and that means an assumption that everyone’s always online when they’re working. It gets complicated if you try to also integrate tasks to do offline because you then have to deal with a lot of syncing issues, like if a manager or team leader wants to change the name of a task or reassign it while a team member is working on it offline. You might even have the awkward situation that a task has been reassigned to someone else in the interim, and then gets marked completed by two different people.
An interesting solution could be to take an idea from software engineering: semaphores or mutexes — but to adapt the concept.
The new idea would be that someone could “flag” a limited number of their assigned tasks as “take offline” temporarily. Those tasks would show up in their “My Tasks” section in the app, with some kind of icon indicating that they’re set to offline. And they would only be marked as offline for a specific time period–by default you’d get options like 1hr, 6hrs, one day. One day should be the maximum. If the tasks weren’t synced by the end of that period, then they would disappear from the app until it got synced again.
Also, if for example you went offline before a first flight of the day, completed a task while offline, and then went online again, the completed task would be synced and no longer be listed as “offline.”
This approach probably needs more workshopping but it could be an interesting way to offer offline functionality without complicated syncing methods.
The main downside is that Asana is built on top of the Luna framework, which is specifically designed around automatically updating things when data changes on the server. It’s hard to know how easy it would be to implement this kind of idea with a framework so dedicated to real time, and therefore how big the relative cost would be.