Wednesday, May 5, 2010

Brainstorming with Dale

Yesterday was a perfect day - 80km bike ride in the morning, and then some brainstorming about Agenda with my great friend (and former business partner), Dale Jeffries.




Early code is not just about solving a problem, but also figuring out what the problem really is.  Getting the problem right is the necessary first step in a successful project - it is surprising how often this is overlooked .

The key activity is rewriting the code again and again.  Each iteration brings new clarity and insight.  You start with what you imagine the problem is, and slowly the REAL problem starts to emerge from the fog.

But there comes a time to import new ideas.  I've gone far enough on this project that it's time to do a reality check.  Dale does that for me over cappuccinos at a local coffee shop.

No whiteboards, no computers, not even note paper.  We're not designing or solving or planning.  This is just a discussion about understanding the problem.



Dale is about the smartest guy I know.  He regularly pulls insights from some strange dimension of time and space that I've never visited.  And he has a gift for understanding people and moving to their side of the table.  We used to joke that there may be 100 ways to skin a cat, but Dale can talk the cat into skinning itself.

I'm an 'idea' person - I throw off ideas indiscriminately, like a stripper throwing off garments.  Some are great, most are stupid.  I have trouble telling them apart, and I rely on Dale for that.  (Luckily for my survival, my wife is also good at filtering out the really stupid ones.) 

Over the course of about two hours, Dale and I cover six broad ideas.




1) Packaged Applications
Users really want 'applications', for example tools to manage stock portfolios, organize medical records, or track sales funnels.  

Nothing particularly new in this, I plan on using my version of Agenda to organize links, articles and papers on dyslexia when I return to university.  I'm building it for my own use, and I'll add features until Agenda does what I need.

Dale pushes me to expand, and gives me a specific design task - take a real-world application, for example a Customer Service Management (CRM) app. Turn the design crank, and make sure the rewrite can handle the requirements for that app.   And figure how to build a CRM template and deliver it as a 'product'.

It's possible that no one will ever use this tool for CRM, but the review exercise will surely 'change the problem'.  And if a CRM drives out new requirements, then I'll probably run into the same requirements when I use the software myself.

I picked building a Sales Force Automation (SFA) tool as my real-world model, since I understand it better than CRM.  I'll update the conclusions here after I do the work.




2)  Data Import.
Many projects start with taking a dump of existing data and organizing it.  There are obvious techniques for this, like bulk imports from Excel or databases.  

Dale is also keen on clock-driven tasks, for example updating the dividend dates for a stock portfolio.   For my dyslexia 'use-case', that might mean going to Pubmed periodically looking for new papers with specific keywords.

These would clearly be 'programmer' plugins, they sound too complex for a user to build.  But if they are easy to build, then a collection of these plugins might grow quickly.

Dale has been playing with http://gist.com, which does this kind of data-gathering.   He connected it to his email, and it immediately started hunting down information about his contacts.   For example, it found a press release about his daughter (and even a photo of her).  Simple email addresses started to transform into full-featured profiles and news feeds.

What Dale loves is that his address book seems to be getting smarter each day.  New sources are being found, new data is being added even while he sleeps.





3) Integration with GMail and Google Calendar. 
Google is really good about providing API's for their applications.  There are already several 'Agenda'-like products that have integration to GMail - especially using their 'Sidebar Gadgets'.

Perhaps the slickest is http://todoist.com.  Check out this video... http://www.youtube.com/watch?v=ZMLMDdQ9Vg4

Google Calendar is a high priority for me, but GMail might have to wait.  We'll see how hard it is.




4) Full Multi-User Support
Since I'm building a web app, my app will be inherently multi-user.  I described how a user could publish a report by defining a read-only, public-access View in Agenda and mailing out a link to it.

Dale's instant insight was "You mean that your new Agenda is a tool for creating web content."  (Wow!  That changes everything.)

The key is to provide access rules and security at the view, section, or item level.  This item is private, that one can be shared with my team, the other is public.

As we talked around the security issues, an easy win popped up - build an 'import' plugin for the site's Joomla! user list.  As categories, these would let you assign visibility to a specific list of users.  There's also an implication about providing pre-built views as part of a plugin.

My original thinking was that there was an OWNER of a file, and that he could assign his views.  Now I realize that each ITEM has an owner. 




5) Item Blogs
When I was in sales many years ago, I used Agenda to track every 'touch' with my prospects.  But it was unwieldy.  I would find the item for my 'sales opportunity', and then I edited the attached Note with the 'touch'.   At the top, I inserted a date, time, and some text details.   Over time, some of these notes became quite large.

Agenda had no tools for managing these notes, not even a search.  And the real content of my customer relationships were hidden in them.  I was constantly losing things.

In retrospect, these notes looked like a blog, with the newest item at the top.   So I'm going to attach a blog to every item.  It will record 'touches' to that item, including system-initiated change records.   Instead of a big note, there will be small entries.

In a multi-user environment, items can be 'touched' by multiple users in a consistent way.   Blog entries will be searchable, and it is trivial to report on blog entries for items in certain categories or by date.   And, a blog entry can be 'promoted' to a full Item with a click (inheriting the categories of its parent).




6) Structured Items
There is only one kind of 'Item' - that's a central to the simplicity of Agenda. 

More specifically, Items are free-form text entries, limited to a few thousand characters.  But nothing says that an item can't have a 'form' associated with it that defines how to input and display it, and maybe how to parse it out into categories. 

For example, below is the bug-reporting screen from Adobe.  It wouldn't be hard to throw up a simple user-defined form like this, and save the individual fields into a tagged item.   Of course, that holds for blog entries as well.


Done properly, structured items will also simplify pulling complex category assignments out of the item

0 comments: